情報I / コンピュータとプログラミング 3 / 6

アルゴリズムとフローチャート

アルゴリズムとフローチャート

料理のレシピのように、「何を、どの順番で行えば目的を達成できるか」を明確に示した手順をアルゴリズムと呼びます。プログラミングとは、アルゴリズムをコンピュータが実行できる形に書き表す作業です。この講義では、アルゴリズムの表し方と、その基本となる3つの制御構造を学びます。

アルゴリズムとは

アルゴリズムは「問題を解くための明確な手順」です。よいアルゴリズムの条件として、①手順が曖昧でないこと(明確性)、②必ず有限回で終わること(有限性)、③正しい結果が得られることが挙げられます。同じ問題でもアルゴリズムによって処理の速さが大きく変わるため、「どう解くか」の設計はとても重要です。

フローチャート(流れ図)の記号

アルゴリズムを図で表す代表的な方法がフローチャートです。主な記号は次のとおりです。

端子(角の丸い長方形)…「開始」「終了」を表す
処理(長方形)…計算や代入などの処理を表す
判断(ひし形)…条件によって流れを分岐させる
入出力(平行四辺形)…データの入力・結果の出力を表す
流れ線(矢印)…処理の順序を示す

3つの基本制御構造

どんなに複雑なアルゴリズムも、次の3つの構造の組み合わせで表現できます。

① 順次構造:上から下へ、処理を順番に実行する。
② 分岐構造(選択構造):条件が成り立つかどうかで、実行する処理を切り替える(「もし〜なら…、そうでなければ…」)。
③ 反復構造(繰り返し構造):条件が満たされている間、同じ処理を繰り返す。

📘 例 「テストの点数を入力し、60点以上なら合格、そうでなければ不合格と表示する」アルゴリズムをフローチャートにすると、
開始(端子)→ 点数を入力(平行四辺形)→ 点数≧60?(ひし形)→ Yesなら「合格」を表示、Noなら「不合格」を表示(平行四辺形)→ 終了(端子)
という流れになります。ひし形の判断記号から Yes / No の2本の矢印が出るのが分岐構造の特徴です。

探索のアルゴリズム — 線形探索と二分探索

たくさんのデータから目的の値を見つける「探索」には代表的な2つの方法があります。線形探索は先頭から1つずつ順番に調べる方法で、単純ですがデータが多いと時間がかかります(最悪でデータ数と同じ回数の比較が必要)。二分探索は、データが小さい順に整列(ソート)されていることを前提に、真ん中の値と比較して探す範囲を半分ずつに絞り込む方法です。100個のデータでも最大7回程度(27=128 ≧ 100)の比較で見つかり、データが多いほど威力を発揮します。

💡 ポイント
  • アルゴリズム=問題を解くための明確で有限な手順。
  • フローチャートの記号: 端子(開始・終了)、長方形(処理)、ひし形(判断)、平行四辺形(入出力)。
  • すべてのプログラムは順次・分岐・反復の3構造で書ける(構造化プログラミング)。
  • 二分探索は「整列済み」が前提。範囲を半分ずつに絞るので圧倒的に速い。

練習問題

  1. フローチャートで「条件による分岐」を表す記号の形を答えなさい。
  2. 二分探索を使うために、データが満たしていなければならない前提条件を答えなさい。
  3. 整列済みの1,000件のデータから二分探索で値を探すとき、比較は最大およそ何回必要か答えなさい。

解答・解説

  1. 解答:ひし形
    解説:判断(分岐)はひし形で表し、Yes/Noの2方向へ矢印が分かれる。処理は長方形、入出力は平行四辺形と区別して覚える。
  2. 解答:データが小さい順(または大きい順)に整列されていること
    解説:真ん中の値と比較して「左半分か右半分か」を判断するため、整列されていないと絞り込みができない。
  3. 解答:最大およそ10回
    解説:1回の比較で範囲が半分になる。210=1,024 ≧ 1,000 なので10回あれば必ず絞り込める。線形探索なら最悪1,000回かかるのと比べると大幅に速い。
🔒

続きは無料アカウントで読めます

このレッスンの続きと、AIに教えて学ぶ機能が使えます。登録は無料です。

無料でアカウントを作る ログイン

このレッスンのQ&A

読み込み中...