abwiki @ ウィキ (ActiveBasic非公式wiki)内検索 / 「配列」で検索した結果

検索 :
  • 配列
    配列とは、添字付きの変数のこと。 例えば、オセロの盤を考えたとき Dim ban[9,9] As Long と宣言することで ban[0,0]-ban[9,9]までの変数を使える。 魅力1 配列を使うことで処理の見通しをよくすることができる。 Dim a1 As Long Dim a2 As Long ... Dim a100 As Long こんな感じで宣言すると、それぞれ代入するときも100行必要になってしまいますよね? Dim a[100] As Long For a[0]=1 To 100 a[a[0]]=a[0] Next 2行で済むなんて素敵ですよね! 魅力2 文字列を扱う Cとかの文字列はByte型配列を用意して、最後に0を入れることで文字列と呼んでいるにすぎないので、 a c t i v e B a S i c...
  • ステップ15 「Byte配列で行う文字列操作」
    ...場するのか、Byte配列の変数。メモリ確保、解放などの処理が必要ないため、比較的単純な構造をしています。こちらもコツさえつかんでしまえば、扱いはとても簡単です。C言語を経験したことがあるかたなら、以下のプログラムが同等のものであるといえば、一発で理解できるでしょう。 Dim a[100-1] As Byte イコール char a[100]; ActiveBasicでは、Win32APIなどを通し、Windowsアプリケーション開発を行う場合は、なるべくByte配列を利用することを推奨します。ここから以下は、Byte配列の変数を利用した文字列操作の方法を紹介します。 Byte配列のデータ構造 Byte配列の文字列は、定義した範囲内の長さを持つ、 NULL終端の非常にシンプルな構造をしています。NULLとは、文字コード0のデータのことを意味します。 ...
  • 異次元殺法
    ポインタと配列と構造体の三点セットを使えば、ありとあらゆるデータ構造を実現できるでしょう。 Dim ppp As **Byte これでpppはダブルポインタになります。ポインタのポインタってこと。 ppp = calloc(SizeOf(*Byte) * ARRAY_MAX) これでARRAY_MAX個のポインタ配列ができる。 つまりDim app[ELM(ARRAY_MAX)] As *Byteと同じ。 ppp[0]="平井公彦" ppp[1]="〒106-0032, 東京都港区六本木" ppp[2]="j" ppp[3]=0 こんな感じでリテラルを突っ込んだり ppp[4]=malloc(5000) のように動的配列をつくったり、その使い方は無限大! 配列のポインタ 上の例はポインタの...
  • 文字列処理
    ... 1 byte型配列を使おう! #N88BASICDim mes[123] As Byte'123バイト確保lstrcpy(mes, "平井公彦")'mesに文字列をコピーlstrcat(mes," 私は彼が好きです")'mesに連結wsprintf(mes+lstrlen(mes), "%d",100)'100を文字列にして追加Print MakeStr(mes) なんということのないコードだが、配列にデータをコピーしているのであふれにように中尉。 おしりがNULなのでmes[8]=0などと直接値を代入しててもおk 2 ポインタ #N88BASICDim p As *ByteConst A="平井公彦"Const B="松嶋絵美&...
  • 分布数えソート
    ...げることもできる。 配列の参照が順を追って行われないため、仮想記憶上で大量のデータを整列しようとするとクイックソートより遅くなる場合がある。 プログラミング掲示板「ソートロジック大会」なども参照のこと Const MAX = 100'分布の上限値Const MIN = 0'分布の下限値Sub distsort(n As Integer, a As *Integer, b As *Integer)Dim i As Integer, x As IntegerDim count[MAX - MIN] As Integer' 度数分布の配列'度数分布の初期化For i = 0 To MAX - MINcount[i] = 0Next i'度数分布の数えFor i = 0 To ncount[a[i] - MIN] = coun...
  • 選択ソート
    ...以下のとおり。 配列の最小値を探し出し先頭の値と交換する 上記交換した先頭を除いた部分配列より最小値を探し出し、2番目と交換する 以降、同様にして3番目、4番目・・・を求めていく プログラミング掲示板「ソートロジック大会」なども参照のこと TypeDef keytype = IntegerSub selectsort(n As Integer, a As *keytype)Dim i As Integer, j As Integer, k As IntegerDim min As keytypeFor i = 0 To n - 1min = a[i]k = i'未整列範囲の最小値を求めるFor j = i + 1 To nIf a[j] min Thenmin = a[j]k = jEnd IfNext j'値の入れ替えa[k] = a[...
  • String型
    ...る。 文字列は要は配列のことである。
  • Dim
    ...8BASICのように配列を宣言するためのものではない 名前変えればいいのにね。Varとか。
  • FAQ
    ... Q 多次元の配列を動的に割り付けるのはどうしたらよいか? |A たいていポインターの配列を割り付けて、それぞれのポインターを動 的に割り付けた"列"に初期化するのが一番の解決策である。以下に 2 次元配列の例を挙げる。 Const nrows = 5 Const ncolumns = 6 Dim i As Long, array1 As **Long array1 = malloc(nrows * SizeOf(*Long)) For i=0 To nrows-1 array1[i] = malloc(ncolumns * SizeOf(Long)) Next Q コンパイルは通るのに実行すると落ちる。なんで? |A 1.配列の添字がオーバーしている 2.ヌルポインタにアクセスしている 3.RaiseException()...
  • C言語への移行
    ...[11];//ABの配列は0から指定した値まで。Cの場合は指定した個数の配列 unsigned long *q; ポインタ AB Dim m As DWord Dim i As *DWord i = VarPtr(m) SetDWord(i, 333) m = GetDWord(i) m = AddressOf(Sin) As *DWord C unsigned long m, *i; i = m; *i = 333; m = *i; m = (unsigned long *)sin; 構造体 AB Type 構造体名 a As Long End Type C typedef struct { long a; } 構造体名; 列挙 AB Enum 名前 AAA=0 BBB End Enum C enum { AAA=0, BBB, } 条件式 AB...
  • マージソート
    ...#039;整列させる配列Dim work[N / 2 + 1] As SORT'作業用の配列Sub mergesort(first As Integer, last As Integer)Dim middle As IntegerDim i As Integer, j As Integer, k As Integer, p As IntegerIf first last Thenmiddle = (first + last) / 2'再起呼び出しmergesort(first, middle)mergesort(middle + 1, last)'p = 0For i = first To middlework[p] = a[i]'同じ構造体であれば等号でOKp = p + 1Next ii = middle + 1j = 0k = fir...
  • 記号
    ...ているが たとえば配列の添字は[と]で表したり 関数は()をつけて変数と区別する。とか。 ABとかのBASICでは青州除算は\だがCでは剰余を意味したりするので要注意。
  • ラディックス・ソート
    ...造として、Byte型配列(数値ないし文字列)のポインタを格納したDWord型配列とした。 プログラミング掲示板「ソートロジック大会」なども参照のこと Const UCHAR_MAX = 255Sub radixsort(n As Integer, length As Integer, a As *DWord, work As *DWord)Dim i As Integer, j As IntegerDim count[UCHAR_MAX] As IntegerDim pByte As *Byte' 桁数分繰り返しFor j = length - 1 To 0 Step -1'初期化For i = 0 To UCHAR_MAXcount[i] = 0Next i'出現文字のカウントFor i = 0 To npByte = a[i]coun...
  • リバーシを作ろう(1)仕様規格を決めよう
    ...って楽をする。だから配列として10x10にする。 先手(黒)=1,後手(白)=2,何もない=0,壁=6 思考 開放度理論と盤に予めつけた点数とランダムでコンピュータ ウェイトをわざといれる インタフェスー #console 入力はa1とかc3とか。
  • バブルソート
    ...(n^2)である。 配列の先頭から隣通しを比較して逆順であれば交換する。これを交換できなくなるまで続ける。 プログラミング掲示板「ソートロジック大会」なども参照のこと TypeDef keytype = IntegerSub bubblesort(n As Integer, a As *keytype)Dim i As Integer, j As Integer, k As IntegerDim x As keytypek = n - 1While k = 0j = -1'番兵のセットFor i = 1 To k + 1'隣通しの比較と交換If a[i - 1] a[i] Thenj = i - 1x = a[j]a[j] = a[i]a[i] = xEnd IfNext ik = jWendEnd Sub
  • ステップ20 「プロセス デバッガによるデバッグに挑戦」
    ... 無限ループで配列要素が大きくなりすぎるという誰でも予想がつくバグを潜ませておきましたが、予想通り出ましたね、「アプリケーション エラー」。Win9x系のOSでは、「不正な処理」がでているのではないでしょうか? ここでは余裕な顔をしていられますが、これが自分の力作プログラムで起こったのであれば、面白いはずがありません。 では、どう対処するのか それは、これらのボタンが解決してくれます。左から、「デバッグ実行」、「デバッグ コンパイル」というコマンドとなり、メニューの「ベーシック」からも利用することができます。 大概の場合はデバッグ実行(ビックリマークのほう)で事足りてしまうので、初めての方はデバッグ コンパイルのほうはあまり考えなくてよいです。 では、先ほどのおかしなプログラムを開いた状態で、デバッグ実行をしてみましょう。 すると、ア...
  • ウインドウにファイルをドラックドロップする方法
    ...9;FileName配列にファイルパスを1つ格納 DragQueryFile(hDrop,0,FileName,MAX_PATH) '使用後はドラッグ&ドロップに関する情報を解放 DragFinish(hDrop)fpath=MakeStr(FileName)msgbox hMainWnd,fpath,"File Path"End Sub 複数のファイルを受け取る場合も同様。 複数行の場合、引数に-1を指定して行数を得てから、すべての行を得る。 num=DragQueryFile(hDrop,-1,Fname,MAX_PATH)for i=0 to numDragQueryFile(hDrop,i,Fname,MAX_PATH)next i
  • テトリスをつくろう
    ...てどうするか。答えは配列の読み込む順番を変えれば良い。 回転したときに当たり判定をチェックすること。
  • 基本
    ...何だ? 文字列処理 配列 ポインタ 異次元殺法 コールバック関数って何? ファイルを扱う Win32APIの招待 アイコンエディタを使いこなそう テキストエディタを使いこなそう デバッガを使いこなそう 初心者 とりあえず実行ファイル作りたいんですけど。 とりあえず文字ベースの窓作って何か表示してみたいんですけど。 とりあえずグラフィカルな窓作って何か表示してみたいんですけど。 とりあえず一般的なウインドウを作ってみたいんですけど。 DLLの基礎 とりあえずDLL作ったりしたいんですけど。 AB実力テスト オブジェクト指向で遊ぼう オブジェクト指向入門 クラスを作ってみよう コンストラクタ、デストラクタ マルチプルインスタンス カプセル化 継承とコンポジション 仮想関数 UMLって何? デザインパターンって何? クラスライブラリの設計(1)
  • AB実力テスト
    ...n,mを整数としkを配列とする。初期値としてmより小さいk[0]を与え次の計算を繰り返すことで乱数を得られる。 k[i+1] = (n * k[i]) mod m 乱数を100個作り表示するプログラムを作れ 問6 文字列s2の中の任意の文字に等しい文字をs1から除去する関数squeezse(s1, s2)を作れ 問7 モンテカルロ法によって円の面積及び円周率を求めよ 問8 CIRCLE命令,LINE命令を活用しお月見団子を描け。余裕があればドラえもんに挑戦するのも良い 問9 0度から90度まで1度刻みでSin,Cos,Tanを求め、それをシーケンシャルファイルに保存せよ。 また、ファイルから値を読み込み表示せよ。 問10 今までの知識を活用し雑誌掲載依頼が来る程度のフリーソフトを作成せよ。 解答例
  • 逆写像ソート
    ...値が重複する場合、別配列 next[i] を用いてその並びを記述する(ex:a[i] = a[j] = a[k] ⇒ next[i] = j, next[j] = k, next[k] = -1) index[x] -1のとき、a[index[x]] を書き出す プログラミング掲示板「ソートロジック大会」なども参照のこと Const MAX = 100Const MIN = 0Sub mapsort(n As Integer, a As *Integer, b As *Integer, next As *Integer)Dim i As Integer, j As Integer, x As IntegerDim index[MAX - MIN + 1] As Integer' index[]の初期化For x = 0 To MAX - MINinde...
  • クイックソート
    ... このように配列を約二分割して、自分自身を再帰的に整列する(分割統治)。しかしながら、うまく二分割できない場合(例えば、一方に1個、もう一方に残り全て)は実行時間がn^2に比例する。よって、実行速度は入力データに対する分け目の値xの選び方に左右される。a[first]やa[last]などはほとんど整列したデータに弱い。下で示した中央の値をとる方法以外に、 a[first]、a[last]、a[(first+last)/2]の中央値をとる a[first]、a[last]間の乱数をとる なども考えられる。 プログラミング掲示板「ソートロジック大会」なども参照のこと 分割統治 データをいくつかに分割して、その一つ一つについて自分自身を再帰的に適用すること TypeDef keytype = Integer'Sub quicksort(a...
  • Win32プログラミング講座 for AB4.24
    ...ップ15 「Byte配列で行う文字列操作」 ステップ16 「RPGのマップ移動機能を作る①」 ステップ17 「RPGのマップ移動機能を作る②」 ステップ18 「RPGのマップ移動機能を作る③」 ステップ19 「DOS窓で動くコンソール アプリケーションの作成」 ステップ20 「プロセス デバッガによるデバッグに挑戦」 ステップ21 「ステータスバーを使う①」 ステップ22 「ステータスバーを使う②」 ステップ23 「ステータスバーを使う③」 ステップ24 「ツールバーを使う①」 ステップ25 「ツールバーを使う②(ボタンが浮き出すフラットツールバー)」 ステップ26 「ツールバーを使う③(ホットイメージ)」 ステップ27 「メモリ監視ツールを作る①」 ステップ28 「メモリ監視ツールを作る②(設定をレジストリに保存)」 ステップ29 「WAVEファイルを再...
  • ヒープソート
    ... ヒープソートは配列添え字を1から使用するのが自然とのこと プログラミング掲示板「ソートロジック大会」なども参照のこと TypeDef keytype = IntegerSub heapsort(n As Integer, a As *keytype)Dim i As Integer, j As Integer, k As IntegerDim x As keytypek = n / 2Doi = kx = a[i]j = 2 * iWhile j = nIf j n And a[j] a[j + 1] Then j = j + 1If x = a[j] Then Exit Whilea[i] = a[j]i = jj = 2 * iWenda[i] = xk = k - 1Loop While k 0While n 1x = a[n]a[n]...
  • 基本的な演算子には何があって、どう使うの?
    ...new[] newの配列バージョン。 new[ELM(100)] A delete 破棄。newで生成したクラスを開放(破棄)する。使い終わったらきちんと開放しなきゃ、他のクラスの生成が難しくなる。 delete A
  • ステップ24 「ツールバーを使う①」
    ...BBUTTON構造体配列へのポインタ iNumButtons As Long, _ ボタンの個数 dxButton As Long, _ ボタンの幅 dyButton As Long, _ ボタンの高さ dxBitmap As Long, _ 一つのボタンに対するビットマップの幅 dyBitmap As Long, _ 一つのボタンに対するビットマップの高さ uStructSize As DWord _ TBBUTTON構造体のサイズ ) As DWord これらのパラメータでは、ボタンやビットマップの違いに注意しながら記述していきましょう。 ツールバーのウィンドウハンドルが戻り値になります。 ボタンごとの情報を格納するのがTBBUTTON構造体...
  • ステップ22 「ステータスバーを使う②」
    ...が格納されたLong配列へのポインタを指定します。 また、各パーツへ文字列を設定するときには、SB_SETTEXT メッセージを使うわけですが、wParam部分にパーツ番号を指定する点をおさえておくと良いでしょう。 作ってみよう! ステップ21で作成したプログラムがある場合は上書き方式でプログラムを加工してみて下さい(変更点は太字の部分)。ない場合は、新規にプロジェクトを作成し、ウィンドウ(MainWnd)を用意しておきましょう。 あと、MainWndの大きさ(幅)をあらかじめ広げておくとよいでしょう。 ---------------------------------------------------------------------------- イベント プロシージャ ------------------------------...
  • データベースとは?
    ...ライブラリを介して、配列を操作 するような感覚でテーブルを操作可能なデータベースも存在する。 他にはAPIを言語仕様に含むデータベース言語として発達したxBaseのようなデータベースもあるし、 VBマクロが使えるOffice製品のAccessのような種類のデータベースもある。 Web検索エンジン等では、SQLを使わずインデクスと値の二要素に基づく大規模な高速テーブル を用いている。これはSQLがデータベースの全てではない事を示す好例であり、検索にとって SQLでは必要以上の機能を持ち、かつ、サーバーの追加というスケールメリットが生かせず、 SQLのクエリー自体、処理速度が遅い為である(SQL言語自体,インタプリタである)。
  • ファイルを扱う
    ...)'buf配列から5byte分のデータをファイルへ書き込むrtn=WriteFile(hfile,buf,5,VarPtr(rlen),ByVal NULL)CloseHandle(hfile) b1.txt hello IniFile
  • オブジェクト指向入門
    ...作ったオブジェクトは配列機能を持つもんやけど、単に変数を配列として作るより 進化してん。 なんでやったら、配列データと手続き(clear)が一緒になってて一つのクラスとして定義されとる。 今回はclearちうプロシージャだけやけど、配列操作に便利ええ関数が他にもあれば便器...おっとちゃうわ、便利や。 newしてクラスからオブジェクトを作る行為は、動的にメモリを確保するmallocに近いとも 言えるちうわけや。 単にクラスを使う場合と、動的にクラスからオブジェクトを作る方法があんねんと覚えて おきまひょ。こら用途によって区別するちうわけや。 クラスについてもう少し考えてみよう。 例えば、整数型というクラスCIntがあったとして、 CInt.Maxsize CInt.to_double CInt.to_strings Dim obj As CIn...
  • ステップ18 「RPGのマップ移動機能を作る③」
    ...マップ配置図の二次元配列データDim MapArray[MAX_MAPY-1,MAX_MAPX-1] As Long ↑先頭部分では、マップ配置図用の配列変数の定義を追加しています。 Sub DrawMap() Dim x As Long, y As Long Dim num As Long Dim tempX As Long, tempY As Long Dim i As Long 'マップチップの配置を記載したファイルをオープン Open "map.csv" For Input As #1 'マップチップを読み込む For y=0 To MAX_MAPY-1 For x=0 To MAX_MAPX-1 Input #1,num ...
  • Gotoによる最適化;分岐予測およびキャッシュヒット率の向上
    ...ージャへのポインタを配列へ保存、参照する場合 などがある。その他、オブジェクト指向言語のVirtual関数などが該当する。 分岐先アドレスが間接参照となっているので、予測しにくいからだ。 これらを使うと、分岐予測が失敗し、パイプラインが失速する。(PentiumMに搭載されている分岐 予測回路では、ループ条件下では間接参照時でも高い確率で予測されるらしい) コードを最適化する場合は注意が必要だ。 ABはコンパイラなので多少関係があるが、コンパイラ最適化に頼らずifやgotoステートメントで パイプラインをどれだけストールさせずにコードを書けるかは興味あるテーマである。
  • B木
    ...は、兄弟ノードでの再配列を行う。兄弟ノードがそれぞれM個のデータしか持っていない場合はこれを統合し、ページをひとつ減らす。 #N88BASICConst M = 1' 1ページのデータ数の上限の半分TypeDef keytype = Integer' 探索のキーの型Type page' ページの定義 n As Integer' データ数key[2 * M] As keytype' キーbranch[2 * M] As *page' 他ページへのポインタEnd TypeDim root = NULL As *page' B木の根 Dim key As keytype' キーDim done As Long' 論理型の変数(Long型で代用)Dim deleted As LongDim und...
  • @wiki全体から「配列」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索