アルゴリズムの表現|順次・分岐・反復とフローチャート・アクティビティ図
**アルゴリズム**は、問題を解決するための手順です。プログラムは、アルゴリズムをプログラミング言語で書いたものです。共通テストでは、問題文で説明された手順を正しく読み取り、自分で実行してみる力が繰り返し問われます。
アルゴリズムとは
アルゴリズムは、次の条件を満たす手順です。
- 手順が明確:誰が行っても同じ結果になる(「適当に」「いい感じに」はだめ)
- 有限の手順で終わる:いつまでも終わらない手順はアルゴリズムではない
- 正しい結果が得られる:どんな入力でも、目的の答えが出る
料理のレシピも、手順が明確なら一種のアルゴリズムです。
3つの基本構造
どんなアルゴリズムも、次の3つの組合せで表せます。
| 構造 | 内容 | 例 |
|---|---|---|
| 順次 | 上から順に処理する | 材料を切る → 炒める → 盛り付ける |
| 分岐(選択) | 条件によって処理を変える | 点数が60点以上なら「合格」、そうでなければ「不合格」 |
| 反復(繰り返し) | 条件を満たす間、同じ処理を繰り返す | 全員分の点数を足し終わるまで、1人ずつ足す |
プログラムでは、分岐を条件分岐、反復を繰り返しで書きます(「変数・条件分岐・繰り返し」)。
アルゴリズムを図で表す
フローチャート(流れ図)
| 記号の形 | 意味 |
|---|---|
| 角の丸い長方形(端子) | 開始・終了 |
| 長方形(処理) | 計算や代入などの処理 |
| ひし形(判断) | 条件による分岐(Yes / No) |
| 上下の辺が斜めの台形(ループ端) | 繰り返しの始まりと終わり |
| 平行四辺形(データ) | データの入力・出力 |
アクティビティ図
UMLという表記法の一つで、処理の流れを表します。黒丸(開始)から始まり、角の丸い四角(アクション)を矢印でつなぎ、ひし形で分岐・合流し、二重丸(終了)で終わります。共通テストの試作問題などでも使われています。
状態遷移図
「待機中」「再生中」「一時停止」のような状態と、ボタンを押すなどの**きっかけ(イベント)**で状態が移り変わる様子を表す図です。自動販売機や信号機の動きを表すのに向いています。
手順を手で実行する
共通テストでは、問題文で説明された手順を自分で実行して表にまとめる問題がよく出ます。
例: 次の手順で、数の並び 5, 3, 8, 6 の最大値を求める。
- 最初の数を「最大」とする
- 次の数が「最大」より大きければ、「最大」をその数にする
- すべての数を調べ終わるまで、2を繰り返す
| 調べる数 | 比較 | 「最大」 |
|---|---|---|
| 5 | (最初の数) | 5 |
| 3 | 3 > 5 ではない | 5 |
| 8 | 8 > 5 | 8 |
| 6 | 6 > 8 ではない | 8 |
答えは 8 です。表にすると、途中の状態が一目で分かり、計算ミスを防げます。
本試験の例
- 2025年の本試験 第1問 問3:問題文の手順どおりにチェックディジットを計算し、どんな入力ミスなら見つけられるかを考える問題。
- 2025年の本試験 第3問:工芸品を「空き日が最も早い部員」に順に割り当てる手順を、表にまとめてからプログラムにする問題。
- 2026年の本試験 第3問:来訪者の到着時刻から、開始時刻・終了時刻・待ち時間を表にまとめ、その規則をプログラムにする問題。
どれも、手順を表で実行 → 規則を見つける → プログラムにするという流れでした。
アルゴリズムの効率
同じ結果が得られるアルゴリズムでも、処理の回数(速さ)が違うことがあります。
例: 1から n までの和を求める
| 方法 | 計算の回数 | n = 100 のとき |
|---|---|---|
| 1, 2, 3, … と順に足していく | n 回の足し算 | 100回 |
| 公式 n × (n + 1) ÷ 2 を使う | 掛け算1回・足し算1回・割り算1回 | 3回 |
データの探索でも、線形探索は最大 n 回、二分探索は最大約 log2n 回と、データが増えるほど大きな差が出ます(「探索と整列」)。
共通テストでの出題
- 手順の実行と表の完成:問題文の手順を自分で実行して、空欄の値を求める問題。毎年のように出ます。
- 手順からプログラムへ:表で見つけた規則を、プログラムの空欄に当てはめる問題(第3問)。
- 図の読み取り:フローチャートやアクティビティ図の空欄を埋める問題。
よくある間違い
- 手順を頭の中だけで追う:途中の値を表に書かないと、繰り返しの回数や値の更新を間違えやすくなります。
- 条件の境界を読み落とす:「より大きい(>)」か「以上(>=)」かで、結果が変わることがあります。
- 最後の1回を数え忘れる:繰り返しの終わり方(何回目で終わるか)を表で確かめましょう。
まとめ
- アルゴリズムは、明確で、有限で終わり、正しい結果が得られる手順
- 基本構造は順次・分岐・反復の3つ
- フローチャート・アクティビティ図・状態遷移図で手順や状態を図にする
- 共通テストでは、手順を表で実行してから規則を見つけるのが解き方の基本