前回で、1行実行するごとに表を1行足す書き方を身につけました。今回は繰返しです。ここでつまずく人がいちばん多いところですが、足すものは1つだけ増えます。
期間限定クーポンPR|Udemy の講座科目B オリジナル模試 3回分・60問42%OFF 1,500円第2部 定番処理の型 全26回A1-2繰返しのトレース一覧を開く
A1-1トレース表の書き方A1-2繰返しのトレースA1-3配列のトレースA2-1配列を全部見るA2-2最大・最小を見つけるA2-3探す(線形探索)A2-4入れる・消すA3-12次元配列の走査A3-22次元配列の集計A4-1文字列を1文字ずつA4-2文字列照合A5-1交換して並べるA5-2挿入ソートA6分割して並べるA7-12分探索A7-2ハッシュ表探索A8-1再帰とはA8-2再帰のトレースA9スタックとキューA10-1リストを読むA10-2リストの挿入と削除A11木構造A12木の巡回A13グラフA14AI・データを題材にしたプログラムA15コントロールブレーク処理
この回の内容を動画で見る
講義「トレース表の書き方」(全7分26秒)のうち、この記事の内容は 3分08秒ごろから始まります(再生するとそこから流れます)。
同じ行を、何度も実行する
endfor まで来ると、for の行に戻ります。だから goukei ← goukei + i の行は、4回実行されます。
ここが最初の分かれ道です。同じ行を2回目に実行しても、表の同じ行を書き直すのではありません。
表は書き直さない
A1-1 と同じです。前に書いた行は消しません。同じ行を2回目に実行したときも、書き直さずに下へ書き足します。
1周を1行にまとめる
とはいえ、1行実行するごとに1行書いていくと、4周で8行になります。10周する問題なら20行です。手が追いつきません。
そこで、繰返しのときは書く単位を変えます。
繰返しのトレース表
1周につき1行。その周が終わったときの値だけを書く。
いちばん左の列は「実行した行」ではなく「周」になります。
1周を1行にまとめる
整数型: goukei ← 0 / for (i を 1 から 4 まで 1 ずつ増やす) / goukei ← goukei + i
周が終わったときの値だけを書く
| 周 | i | goukei |
|---|---|---|
| はじめ | ー | 0 |
| 1周 | 1 | 1 |
| 2周 | 2 | 3 |
| 3周 | 3 | 6 |
| 4周 | 4 | 10 |
| 抜けたあと | 5 | 10 |
くり返しの中を何行実行しても、書くのは周のおわりの1行だけ
行数は、プログラムの行数ではなく周の数
表の行数は、プログラムの行数とは関係ありません。決まるのは周の数です。ここが、繰返しのないプログラムといちばん違うところです。
for に入る前の値も、1行目に書いておきます。上の表なら goukei が 0 の行です。
この行が無いと、1周目の計算が何から始まったのかが分からなくなります。
途中の値は、前の周から読む
繰返しの中の goukei ← goukei + i は、右側を先に計算してから左へ書き込むのでした(G2-3)。
その右側の goukei は、1つ上の行の値です。
2周目でやっていること
読む1周目の行にある goukei は 1、いまの i は 2
計算1 + 2 = 3
書く2周目の行の goukei に 3
1つ上の行を見る。これだけです。表を作っておけば、頭の中に前の値を置いておく必要がありません。
抜けるのは、範囲を超えたとき
4周目が終わったあと、もう一度 for の行に戻ります。i を1つ増やすと 5。「1 から 4 まで」を超えました。
抜けるのは、範囲を超えたとき
for (i を 1 から 4 まで 1 ずつ増やす)
4周まわったあと、何が起きるか
| 時点 | i | どうなるか |
|---|---|---|
| 4周のあと | 4 | for の行に戻って、i を1つ増やす |
| 増やすと | 5 | 「1 から 4 まで」を超えた |
| だから | 5 | 5周目は実行せずに抜けて、endfor の下の行へ進む |
抜けたあとに使われるのは goukei。その値を、表の最後の行に書いておく
i を1つ増やしてみて、範囲を超えていたら抜ける
だから繰返しを抜けて、endfor の下の行へ進みます。
表の最後に「抜けたあと」の行を1つ足しておきます。問われるのは、たいてい抜けたあとの値だからです。
上の例なら goukei は 10。これが出力されます。
抜けたあとの i(ここでは 5)も表には書いておきますが、抜けたあとの i の値そのものを問う問題は、まず出ません。問われるのは goukei のほうです。
実際に、1周ずつ動かしてみる
下のプログラムを、ボタンで1行ずつ進めてください。1周が終わるたびに、表が下へ1行増えるのが見えます。
繰返しがあるプログラムを追う
当サイトオリジナルの例題
ループ開始前
いま計算していること
変数の状態
出力
トレース表(進めると1行ずつ積み上がります)
つまずきポイントまとめ
| まちがえ方 | 正しい書き方 |
|---|---|
| 同じ行に戻ったので、表も同じ行を書き直す | 表は書き直さない。前の行は残して、下へ書き足す |
| 繰返しの中でも、1行実行するごとに1行書く | 繰返しでは1周を1行にまとめる |
for に入る前の値を書かない |
はじめの1行が無いと、何から始まったか分からない |
右側の goukei を、いまの行から読む |
右側の goukei は1つ上の行の値。i はいまの周の値 |
| 最後の周で終わりだと思う | もう一度 for に戻り、範囲を超えて抜ける。その行も書く |
次に読む
| A1-3 | 配列のトレース ─ その周に読んだ値を書く |
| A1-1 | トレース表の書き方 ─ 1行実行したら1行足す |
| G6-1 | 繰返し for ─ 何回まわるかの数え方 |
| 目次 | 基本情報技術者試験 科目B 攻略ガイド |
科目Bが難しいと感じたら、この順番で
読み方の基礎を固めてから、本番と同じ形の問題で試す。
まず、読み方の基礎
科目B 基礎講義
プログラムを1行ずつたどって、値の変わり方を見る。定番アルゴリズムの型をそろえる。
0円通常 2,600円先着100名・12月3日まで
講義の目次と無料の1本を見てから、Udemy で0円で受講できます
この記事で引用した資料
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では、引用した箇所の文言を改変していません(省略や補いがある場合は、その場に明記しています)。
本文の例題は当サイトのオリジナルです。

