繰返しのトレース|1周を1行に書く【基本情報技術者試験 科目B】

現行FE シラバス Ver9.2 準拠擬似言語の記述形式は2022年から変更なし最終更新 2026-08-28

前回で、1行実行するごとに表を1行足す書き方を身につけました。今回は繰返しです。ここでつまずく人がいちばん多いところですが、足すものは1つだけ増えます。

第2部 定番処理の型 全27回

A1-1トレース表の書き方A1-2繰返しのトレースA1-3配列のトレースA2-1配列を全部見るA2-2最大・最小を見つけるA2-3探す(線形探索)A2-4入れる・消すA2-52つの配列を突き合わせる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ファイル処理

まず、通しで見る

1分半ほどの動画です(音声つき)。繰返しのトレースで間違えるのは、だいたい次の2つです。同じ行に戻ったとき、表をどう書くのか。そして、いつ繰返しを抜けるのか。1 から 4 まで足すプログラムを1周ずつ動かすと、この2つが目で分かります。

動画で追いかけるのは、この6行です。

整数型: goukei ← 0
整数型: i

for (i を 1 から 4 まで 1 ずつ増やす)
  goukei ← goukei + i
endfor

goukeiの値 を出力する

出力は 10 です。1 から 4 までを足した合計です。動画では、これを1周ずつ動かします。

繰返しのトレース(1分40秒・音声つき)

再生できないときは、この下の図と説明で同じ内容を追えます。

ここから、同じ内容を1つずつ確かめていきます。

同じ行を、何度も実行する

次のプログラムを追います。1 から 4 までを足すだけのものです。

整数型: goukei ← 0
整数型: i
for (i を 1 から 4 まで 1 ずつ増やす)
  goukei ← goukei + i
endfor
goukeiの値 を出力する

endfor まで来ると、for の行に戻ります。だから goukei ← goukei + i の行は、4回実行されます。

ここが最初の分かれ道です。同じ行を2回目に実行しても、表の同じ行を書き直すのではありません。実行するたびに、表の下に新しい1行を足します。前に書いた行は、そのまま残します。

同じ行を何度実行しても、前に書いた行は残す

endfor まで来たら for の行へ戻る。それでも表は、周ごとに1行ずつ増えていくだけ

1周おわり

周 i goukei
はじめ ー 0
1周 1 1

2周おわり

周 i goukei
はじめ ー 0
1周 1 1
2周 2 3

4周おわり

周 i goukei
はじめ ー 0
1周 1 1
2周 2 3
3周 3 6
4周 4 10

表は書き直さない。下に1行足す

表は、下に1行ずつ足していく

前回と同じです。前に書いた行は消しません。同じ行を2回目に実行したときも、書き直すのではなく新しい1行を足します。

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

くり返しの中を何行実行しても、書くのは周のおわりの1行だけ

行数は、プログラムの行数ではなく周の数

表の行数は、プログラムの行数とは関係ありません。決まるのは周の数です。ここが、繰返しのない前回といちばん違うところです。

はじめの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 「4 まで」なので、もう1周ぶん進める
次に進めると 5 「1 から 4 まで」を超えた
だから 5 抜けて、endfor の下の行へ進む

抜けたあとの i は 5。表の最後に書いておくと、空欄で聞かれても答えられる

1周ぶん進めてみて、範囲を超えていたら抜ける

だから繰返しを抜けて、endfor の下の行へ進みます。

抜けたあとの値も書く

表の最後に「抜けたあと」の行を1つ足しておきます。問われるのは、たいてい抜けたあとの値だからです。

上の例なら goukei は 10。これが出力されます。

実際に、1周ずつ動かしてみる

下のプログラムを、ボタンで1行ずつ進めてください。for の行に戻るたびに、表が下へ1行増えるのが見えます。

繰返しがあるプログラムを追う

当サイトオリジナルの例題


ループ開始前

いま計算していること

まだ計算していません

変数の状態

トレース表(進めると1行ずつ積み上がります)

つまずきポイントまとめ

まちがえ方 正しい書き方
同じ行に戻ったので、表も同じ行を書き直す 表は書き直さない。実行するたびに、下に1行足す
1行実行するごとに1行書く 繰返しでは1周を1行にまとめる
for に入る前の値を書かない はじめの1行が無いと、何から始まったか分からない
右側の値を、いまの行から読む 右側は1つ上の行の値
最後の周で終わりだと思う もう一度 for に戻り、範囲を超えて抜ける。その行も書く

次に読む

A1-3 配列のトレース ─ 表に列をつくる、まとめる、減らす
A1-1 トレース表の書き方 ─ 1行実行したら1行足す
G6-1 繰返し for ─ 何回まわるかの数え方
目次 基本情報技術者試験 科目B 攻略ガイド

この記事で引用した資料

いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。

本文の例題は当サイトのオリジナルです。

Copied title and URL