よく使う処理 :  桁分離ポインタソート| 探索


探索

いくつかの数値データから最大値や最小値、ある範囲内にある値、任意の値などを探し出す処理。 基本的には、繰り返し処理の中に条件分岐を置くことで探索できます。

例:1,4,3,5,7,6,2,8という8つの数値の中から3で割り切れる数を探索

探索と言っても目的によって探索条件が異なりますが、例えば、3で割り切れる数=3の倍数を探したいという場合を考えてみます。この場合の探索条件は「3で割った余りが0」です。この例は簡単なのでtk2000での実際の表示にコメント(文頭に//を入れた部分)を添えた形式で示します。
-------------------------------------------------------------------------------------------------
◆注釈:
   :・V[0001]〜V[0008]に、予めデータ1,4,3,5,7,6,2,8がこの順に入っている
   :・V[0009]	   は、判定用数値データを格納する変数
   :・V[0010]	   は、出力先の変数の番号を格納する変数
◆注釈:・V[0011]〜V[0018]は、見つかった「3で割り切れる数」を格納する変数
   :・V[0019]	   は、繰り返し処理を制御する変数(カウンタ)
   :                兼 データ格納変数の番号
   :とする
◆注釈:
◆変数の操作:[0010]代入, 11            // 出力先先頭変数の番号を代入
◆変数の操作:[0019]代入, 1            // 繰り返し制御用変数に1を代入(初期化)
◆繰り返し処理
 ◆変数の操作:V[0009]代入, 変数[V[0019]]の値   // 変数19番に入っている値を番号とする変数の
                          // 値を変数9番に代入
 ◆変数の操作:V[0009]剰余, 3           // その値を3で割った余りを求める
 ◆条件分岐:変数[0009]が0
  ◆変数の操作:[V[0010]]代入, 変数[V[0019]]の値 // 変数10番に入っている値を番号とする変数に
                          // 変数19番に入っている値を番号とする変数の
                          // 値を代入する(出力)
  ◆変数の操作:[0010]加算, 1           // 出力先変数の番号を1増やす
 :分岐終了
 ◆変数の操作:[0019]加算, 1           // 次のデータを判定するためにカウンタに1加算
 ◆条件分岐:変数[0019]が9            // カウンタに1加算して9になったということは
  ◆繰り返し処理の中断              // 既に最後のデータ(8つ目)も判定し終わった
  ◆                       // ということなので繰り返し処理終了
 :分岐終了
:以上繰り返し
-------------------------------------------------------------------------------------------------
このような具合です。「ポインタ」を使っている点がみそです。これを使わないと、繰り返し処理の中でカウンタが1の場合、2の場合、3の場合、…、8の場合のそれぞれを条件分岐で記述しなければならなくなり、処理の記述が非常に長くなります。というわけで、この例では「ポインタ」の効用も示しています。


ホームtkool2 → よく使う処理:探索