プログラムって、いきなり書き始めるんですか?
いや、まずは手順を整理するんだ。そのときに使う図が流れ図(フローチャート)。決まった記号を矢印でつなぐだけだから、料理のレシピを図にする感覚で読めるよ。
流れ図は「手順の地図」
流れ図(フローチャート) は、処理の手順を 記号と線(矢印) で表した図です。上から下へ、左から右へ流れるのが基本です。文章で書くより、どこで分かれて、どこをくり返すか がひと目でわかります。
カップ麺の作り方 を手順にすると
- ふたを半分あける(処理)
- お湯がわいているか?(判断)→ わいていなければ待つ(繰返し)
- お湯を線まで注ぐ(処理)
- 3分待つ(処理)
主な記号
流れ図の記号は JIS(日本産業規格)で決められています。試験に出るのは次の記号です。
| 記号 | 名前 | 意味 |
|---|---|---|
| 角の丸い長方形 | 端子 | 流れ図の開始と終了 |
| 長方形 | 処理 | 計算や代入などの処理 |
| ひし形 | 判断 | 条件によって進む道を分ける |
| 平行四辺形 | データ | データの入力・出力 |
| 角を切った長方形(上下ペア) | ループ端 | 繰返しの始まり(ループ始端)と終わり(ループ終端) |
| 両側に縦線のある長方形 | 定義済み処理 | 別の場所で定義された処理を呼び出す |
「←」は代入の記号です。x ← x + 1 は「x に1を足した値を、新しい x にする」という意味。算数の「=」とは違うので、「x = x + 1 なんてありえない」と悩まなくて大丈夫です。
3つの基本構造
どんなに複雑な手順も、次の3つの組み合わせで表せます(構造化定理)。
| 構造 | 意味 | 流れ図での形 | カップ麺の例 |
|---|---|---|---|
| 順次 | 上から順に1つずつ実行する | 処理を縦に並べる | ふたをあける → お湯を注ぐ |
| 選択 | 条件によって実行する処理を選ぶ | 判断(ひし形)で道を分ける | 辛口なら別添の粉を入れる |
| 繰返し | 条件を満たす間、同じ処理をくり返す | 判断から上に戻る線、またはループ端 | お湯がわくまで待つ |
流れ図をたどってみよう(トレース)
1から5までの合計 を求める流れ図を読んでみましょう。
変数の値の変化を表にまとめながらたどる作業を トレース といいます。
| 回数 | 判断時の i | i ≦ 5 ? | 合計 ← 合計 + i | i ← i + 1 |
|---|---|---|---|---|
| 1回目 | 1 | Yes | 0 + 1 = 1 | 2 |
| 2回目 | 2 | Yes | 1 + 2 = 3 | 3 |
| 3回目 | 3 | Yes | 3 + 3 = 6 | 4 |
| 4回目 | 4 | Yes | 6 + 4 = 10 | 5 |
| 5回目 | 5 | Yes | 10 + 5 = 15 | 6 |
| ― | 6 | No → 抜ける |
出力されるのは 15 です。
i が 6 になったとき、もう一回足しちゃいそうです…。
そこがよくあるミスだね。判断のひし形を通るたびに条件を確かめるのがコツ。表に「判断時の値」の列を作ると、抜けるタイミングを間違えにくくなるよ。
「以下(≦)」と「未満(<)」で繰返しの回数が1回変わる。条件が i < 5 なら、i = 5 のときは No になり、合計は 1 + 2 + 3 + 4 = 10 になる。
試験に出るポイント
- 記号:端子(開始・終了)、処理(長方形)、判断(ひし形)、データ(平行四辺形)、ループ端(角を切った長方形)
- 3つの基本構造は 順次・選択・繰返し
←は代入。右辺を計算してから左の変数に入れる- トレースは 変数の値を表に書きながら 1手ずつ進める
- 繰返しの条件は「以下」「未満」を読み分け、終わるときの値に注意する