わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

whileとforの実行の順序

 いきなりですが問題の前に背景説明です.次のプログラムコードをご覧ください.

while (条件) {
    処理
}

 これは,“条件,処理,条件,処理,…,条件”の順に実行し、条件の評価が偽となったときに,繰り返し処理を終えます.
 ここからが問題です.次のプログラムコードの場合,実行の順序はどのように表されるでしょうか.whileループの事例の“・・・”に当たるものを,解答してください.

for (初期化; 条件; 更新) {
    処理
}

 いつもと違って,正解を後回しにします.forループに慣れないうちは,“初期化,条件,更新,処理,初期化,条件,更新,処理,…,条件”と勘違いしがちです.これは間違いです.初期化と条件の次は,処理のところを実行し,それから更新(i++など)です.
 先週のオンライン授業で動画を視聴してもらい,確認問題として解答してもらったところ,上記とは別の誤答---完全な×ではないけれど,○とするわけにはいかない答案---が2種類,ありました.
 一つは,“初期化,条件,…,条件”です.簡潔でいいですね.でも正解にはできません.更新と処理が,繰り返しにおいてどのように実行するのかが,読み取れないのです.
 もう一つは,“初期化,条件,処理,更新,…,条件”です.はじめは見過ごしていましたが,この答案を何度も見るうちに,手が止まり,最初の学生から答案を読み直す必要に迫られました.
 というのも“初期化,条件,処理,更新,…,条件”だと,“初期化,条件,処理,更新,初期化,条件,処理,更新,…,初期化,条件”という解釈ができてしまうのです.繰り返しごとに,初期化の式を評価する,という解釈です.もちろん違います---もしそうだと,for (i = 1; i <= 10; i++)が無限ループになってしまいます.
 といったところで正解例です.“初期化,条件,処理,更新,条件,処理,更新,…,条件”です.視聴してもらったスライドにも,このように書いていました.