アルゴリズム:問題を解く「手順」
アルゴリズムは、問題を解くためのはっきりした手順。料理のレシピのようなものです。基本は 順次・分岐・繰り返し の3つで、これを図にしたものがフローチャートです。
このページで学べること
- アルゴリズムとは何かがわかる
- 順次・分岐・繰り返しの3つの基本構造がわかる
- フローチャートの読み方がわかる
前提知識
3つの基本構造
| 構造 | 意味 | 例 |
|---|---|---|
| 順次 | 上から順に実行 | 顔を洗う → 着替える → 朝食 |
| 分岐(条件) | 条件で処理を分ける | 雨なら傘を持つ/そうでなければ持たない |
| 繰り返し(反復) | 同じ処理を何度も | 1から5まで順に足していく |
始め・終わりは角丸、処理は長方形、条件(分岐)はひし形で表し、矢印で流れをつなぎます。ひし形からは「はい/いいえ」の2方向に分かれます。
「野菜を適当に切る」というレシピでは、人によってできあがりが変わります。コンピュータはもっと厳しく、解釈の余地があると動けません。「適当に」「いい感じに」といった指示は実行できないのです。
だからアルゴリズムでは、誰がたどっても・何度たどっても同じ結果になるように手順を書きます。使う部品を順次・分岐・繰り返しの3つだけに絞っているのも、この3つでどんな手順も表せることが分かっているからです。道具が少ないほど、あいまいさの入りこむすきがなくなります。
図でイメージする(分岐のフローチャート)
例題(くわしい手順)
例題1:繰り返しで合計を求める
「1 から 5 までの合計を求める」手順を、順にたどってみます。
- 準備:合計を入れる箱を 0 にする(初期化)。
- 繰り返し:1,2,3,4,5 を順に、箱の値にたしていく。
- 箱の値は 0→1→3→6→10→15。合計は 15。
- 確かめる:1 + 2 + 3 + 4 + 5 = 15 で、たどった結果と一致します。
アルゴリズムは「順次・分岐・繰り返し」で表せます。これは繰り返しでたし込む例です。
例題2:分岐で大きいほうを選ぶ
2つの数 a と b のうち大きいほうを選ぶ手順を考えます。a = 7、b = 12 のときはどうなりますか。
- 比べる(分岐):「a は b より大きいか?」を判定します。
- 両方の枝を書く:はいなら答えは a、いいえなら答えは b。そうでない場合も必ず書きます。
- あてはめる:7 は 12 より大きくないので「いいえ」。答えは 12。
- 確かめる:a = 20、b = 12 なら「はい」で答えは 20。どちらの枝も正しく動きます。
分岐では「そうでなければ」の枝も必ず書きます。片方だけだと、条件を満たさないときに何も起きず、答えが決まりません。等しいとき(a = b)にどうなるかも確かめておきます。
アルゴリズムの3つの基本
| 構造 | 意味 | 例 |
|---|---|---|
| 順次 | 上から順に実行する | 手順を1つずつ |
| 分岐 | 条件で処理を分ける | 80点以上なら合格と表示 |
| 繰り返し | 同じ処理をくり返す | 5回たし込む |
どんなに複雑なプログラムも、この3つの組み合わせで表せます。フローチャートで整理できます。
よくある間違い
アルゴリズムはだれがやっても同じ結果になる必要があります。「いい感じに」ではなく、はっきりした手順にします。
条件(ひし形)からは「はい」と「いいえ」の両方の流れが必要です。片方だけだと処理が止まります。
「いつ終わるか」を決めないと無限に繰り返し(無限ループ)になります。終了条件を必ず入れます。
練習問題
まず自分で考えてから解説を開きましょう。
「雨なら傘を持ち、そうでなければ持たない」は、3つの基本構造のどれですか。
解答・解説を見る
答え:分岐(条件)
「雨か?」という条件で処理が2つに分かれています。フローチャートではひし形で表します。
つまずいたら → 「条件で処理を分けるのが分岐」(本ページ 3つの基本構造)に戻りましょう。
同じ処理を決まった回数くり返す構造を何といいますか。
解答・解説を見る
答え:繰り返し(反復)
「10回くり返す」「終わりまでくり返す」のように、同じ処理を何度も行う構造です。
つまずいたら → 「同じ処理を何度も行うのが繰り返し」(本ページ 3つの基本構造)に戻りましょう。
「合計に1、2、3、4、5を順に足す」を繰り返しで実行すると、合計はいくつになりますか。
解答・解説を見る
答え:15
合計を0から始め、1→3→6→10→15 と足していきます。
「合計に次の数を足す」処理を、数がなくなるまで繰り返す——これが反復の考え方です。
つまずいたら → 「箱を0にしてから、順にたし込む」(本ページ 例題1)に戻りましょう。
同じ手順で「2, 4, 6 の合計」を求めると、いくつになりますか。
解答・解説を見る
答え:12
箱を0にして順にたす:0→2→6→12。
合計を求める手順は「0から始めて順にたす」の繰り返しです。同じ手順が、数がちがっても使えるのがアルゴリズムの利点です。
つまずいたら → 「たす数を変えても手順は同じ」(本ページ 例題1)に戻りましょう。
よくある質問
Q. アルゴリズムとは何ですか?
問題を解いたり目的を達成したりするための、はっきりした手順のことです。料理のレシピのように、順番に実行すれば同じ結果が得られます。
Q. アルゴリズムの基本構造は?
順次(上から順に実行)、分岐(条件で処理を分ける)、繰り返し(同じ処理を反復)の3つです。これらを組み合わせて複雑な処理を作ります。
Q. フローチャートはなぜ使うのですか?
手順を図にすると、順序と分かれ道が一目で分かり、書く前に間違いを見つけられます。記号は「開始・終了」「処理(長方形)」「条件(ひし形)」の3つを覚えれば読めます。
Q. プログラミングの前にアルゴリズムを学ぶ意味は?
言語が変わっても手順の考え方は変わらないからです。「順次・分岐・繰り返し」の3つが分かっていれば、どの言語でも同じ流れで書けます。
次に学ぶ内容
高校「情報I」〜ITパスポート相当の範囲を参照し、オリジナルに作成(実在試験問題の転載はありません)。正確性は編集方針にそって確認しています。