06 アルゴリズムと流れ図

【知識】

アルゴリズム=処理の手順。「まず何をして、次に何をして…」を1つずつ記述したもの。 表現には流れ図(フローチャート)擬似言語を使う。

3つの基本制御構造(これがすべての基本)

① 順次
処理1 処理2
上から順に実行
② 選択(分岐)
条件 Yes 処理1 No 処理2
条件で処理を選ぶ
③ 繰返し(ループ)
条件 Yes 処理 No
条件が続く間くり返す
流れ図のお約束:流れは上から下へ。判断(ひし形)の Yes は真下No は右へ出てから下へ進む。繰返しは Yes で処理 → 条件の手前へ戻り、No で下(=ループの外)へ抜ける。

主な流れ図記号

記号意味
端子(角丸長方形)開始・終了
処理(長方形)処理内容
判断(ひし形)条件で流れが分かれる
ループ端繰返しの始端・終端
データ(平行四辺形)入出力

多重ループ(2次元配列を扱う)

繰返しの中に繰返しが入った構造。九九表のような2次元データで使う。

ループ1(外側): i を 1→9
    ループ2(内側): j を 1→9
        i × j を出力
    ループ2 終了
ループ1 終了
前判定ループ(始端に条件):1回も実行されないことがある。
後判定ループ(終端に条件):必ず1回は実行される。← ひっかけ頻出。

【速解法・読み方のコツ】

鉄則:「森を見て、次に木を見る」

流れ図やプログラムは、いきなり1行ずつ細かく追うと迷子になる。まず全体(森)→ 次に中身(木)の順で読む。

ステップ1:森を見る(ループの外枠だけ)
中の処理はいったん無視して、ループがどこからどこまで回るかだけをつかむ。

ステップ2:木を見る(1回のループの中身)
全体像がつかめたら、次にループ1回で何をしているかを1つだけ丁寧に確認する。

例:九九表なら「森=i を 1→9、j を 1→9 の二重ループ(=81回)」→「木=1回で i×j を1つ出力」。 この順で見れば、細かい計算を全部追わなくても構造が理解できる。

その他のコツ

  1. 変数の初期値を最初に押さえる(i←1 など)。
  2. ループの継続条件終了条件かを見分ける。
  3. 分岐(ひし形)は Yes/No どちらへ進むかを必ず確認。
  4. 迷ったら変数の値を表にして1周ずつ手で追う(トレース)。

【演習】理解度チェック

Q1 ★ループのトレース

次の手順を実行したとき、変数 s の最終値はいくつか。

s ← 0
i を 1 から 5 まで 1 ずつ増やしながら繰返す:
    s ← s + i
繰返し終わり
▶ トレース表を見る
i12345
s1361015
解説を表示

正解:ウ(15)

1+2+3+4+5 = 15。変数の値を表にして1周ずつ追うのが確実(上のトレース表)。

▼ 解説つきの類題を探す:過去問道場・分野別「アルゴリズム」

Q2 ★前判定と後判定

繰返しに入る前から条件が偽だった場合、ループ内の処理はそれぞれ何回実行されるか。
(前判定ループ・後判定ループの組み合わせ)

解説を表示

正解:イ

「後判定は最低1回動く」はひっかけの定番。始端/終端どちらに判定があるかを必ず見る。

▼ 解説つきの類題を探す:過去問道場・分野別「アルゴリズム」

Q3 ★流れ図のトレース

次の流れ図を実行したとき、出力される x の値はいくつか。
(判断の Yes は真下、No は右へ出て下へ進む。ループは条件の手前へ戻る。)

x ← 1 i ← 1 i ≦ 3 ? Yes x ← x × 2 i ← i + 1 No 出力 x
解説を表示

正解:ウ(8)

「森を見る」=i を 1→3 まで回すループで、1回ごとに x を2倍にする、という骨組み。変数を表にして1周ずつ追う

判定前の i1234
i ≦ 3 ?YesYesYesNo → 出力へ
x(×2 後)2488

x は 1 → 2 → 4 → 8 と3回2倍され、i が 4 になったところで No で下(ループの外)へ抜けて 8 を出力
ひっかけ:エ 16 は「4回2倍」(i ≦ 4 と読み違えた場合)。条件は i ≦ 3 なので2倍は3回。

▼ 解説つきの類題を探す:過去問道場・分野別「アルゴリズム」


【練習リンク】