トップ->アルゴリズム入門

アルゴリズム入門内検索

目次
アルゴリズムトップ
0. はじめに

1. アルゴリズム
   1. アルゴリズムとは
   2. 当ページの範囲
   3. 良いアルゴリズム
   4. フローチャートの書き方(記号)
   5. フローチャートの書き方(構造)
   6. 順次構造
   7. 分岐構造
   8. 反復構造

2. 順次構造
   1. 代入
   2. 計算
   3. 入力
   4. 出力
   5. 練習問題1
   6. 練習問題2

3. 分岐構造
   1. 条件分岐
   2. 単一分岐
   3. 練習問題1
   4. 多重分岐
   5. 複合条件
   6. ケース(多方向分岐)
   7. 練習問題2
   8. 練習問題3

4. 反復構造
   1. 反復構造の種類
   2. 前判定型
   3. 後判定型
   4. 練習問題1
   5. 練習問題2
   6. 練習問題3
   7. 多重反復処理(ネスト)
   8. 練習問題4
   9. 練習問題5

5. 配列
   1. 配列とは
   2. 練習問題
   3. 2次配列
   4. 練習問題
   5. 素数を求める,その1
   6. 素数を求める,その2

6. 検索・ソート
   1. サブルーチン
   2. シーケンシャルサーチ
   3. バイナリサーチ
   4. 練習問題
   5. ルックアップテーブル
   6. ソートとは
   7. 選択法
   8. 交換法
   9. バブルソート
   10. 挿入法
   11. クイックソート
   12. 処理速度の比較

7. 文字列
   1. 文字と文字列
   2. 文字列処理
   3. 文字列のコピー
   4. 練習問題
   5. 文字列の比較
   6. 文字列の連結
   7. 文字列の検索



トップ-> アルゴリズム入門:6章.検索・ソート-> 6-1.サブルーチン

←前ページへ : トップへ : 次ページへ→



6章:検索・ソート



  検索、ソートはよく使われる手法である。「検索」「ソート」といった特別のフローチャート の書き方があるわけではない。今までの反復処理や配列、分岐構造を組み合わせただけである。 しかし、ソートの方法はいろいろなアルゴリズムがあり、その場に一番ふさわしいものを選ぶ 必要がある。(ホントか?) というわけで、この章ではソートの基本である 検索を紹介し、その後、ソートのアルゴリズムを紹介する。

6-1.サブルーチン

  サブルーチン(言語によってはモジュールとも言う)とは、同じ処理を何回も繰り返す処理を ひとまとめにしておくことによって、アルゴリズムやプログラムを何度も書く手間を省くことや 他のプログラムを作る際に、同じアルゴリズムやプログラムを再利用することで、バグが出る危 険性を最小限に押さえることを目的としている。

  • 同じ処理を何度も呼び出す際に、同じことを何度も書く手間を省く
  • 同じ処理を他のプログラムで書く際に、既存のアルゴリズムやプログラムを再利用するこ とで、バグの発生を押さえる
    →能率、信頼性の向上


 サブルーチン(モジュール)を作る際の注意点を以下にあげる。

  • 基本的に1つのサブルーチンには1つの機能しか書かない
  • サブルーチンの入り口と出口はそれぞれ1つ
  • サブルーチンの名前は一目で機能がわかるように命名する
  • 「Aというサブルーチンを呼び出すためにはBというサブルーチンを呼び出していることが前提」 というのは避ける※1




・サブルーチンの書き方
  サブルーチンの入り口にその名前、出口に「exit」と書く。



・サブルーチンの呼び出し方



※1
  例えば外部の装置を利用するようなプログラムの場合、最初に外部装置を初期化するプロセスが必要になります。 例えば測定装置ならば、初期化関数を呼び、測定開始関数を呼び出すといった流れになると思いますが、測定開始関数は 初期化関数が呼ばれていることが前提となっています。こういうプログラムの場合は、初期化がきちんとされたかをフラグを 用意しておき、測定関数ではそのフラグを見て初期化されていれば測定を行いますし、初期化されていないで呼ばれた場合は エラーを返すようにします。このようにすることで、測定関数は初期化関数が呼ばれていても呼ばれていなくてもきちんと 動作するようになります。(エラーを返すというのも立派な処理です。)

  他の例を挙げますと、例えばデータを検索する場合、バイナリーサーチでは、 この前提条件として、データはソートされていないといけないというのがあります。つまりソートされていないのに この関数が呼ばれますときちんと動作しないのです。そこでフラグを利用するなり、この関数の最初にソートされて いるかをチェックするなりの方法で、ソートされていない場合でもエラーを返すかソートを実行するかなどの方法で 対処する必要があります。


←前ページへ : トップへ : 次ページへ→