前回、条件分岐(if・elseif・else)を整理しました。今回は、疑似言語のもう一つの基本構造である「繰り返し処理」を整理します。
繰り返し処理とは
繰り返し処理は、同じ処理を、条件を満たしている間、何度も実行する仕組みです。疑似言語では、主にforとwhileという2つの形で表現されます。
forによる繰り返し
forは、「決まった回数」や「決まった範囲」を繰り返すときによく使われます。疑似言語では、次のような形で書かれます。
for(iを1から10まで1ずつ増やす) 処理 endfor
この場合、変数iが1から10になるまで、1ずつ増えながら処理が繰り返されます。iが10を超えた時点で繰り返しが終わり、次の行に進みます。
whileによる繰り返し
whileは、「条件が成立している間」繰り返すときに使われます。回数が決まっていない場合や、ある条件を満たすまで処理を続けたい場合に向いています。
while(条件) 処理 endwhile
forと違い、whileでは繰り返しの回数があらかじめ決まっていません。条件を満たさなくなった時点で、繰り返しが終わります。
トレースするときの注意点
繰り返し処理をトレースするときは、次の2点を必ず確認するようにしています。
- 繰り返しの前に、変数がどんな値からスタートしているか
- 1回の繰り返しごとに、変数がどう変化していくか
特にwhileの場合、変数の更新を忘れると、条件がいつまでも成立したまま、無限に繰り返される(無限ループ)ように見えてしまいます。問題文の中で、変数がどこで更新されているのかを見落とさないことが大切です。
forとwhileの使い分けの感覚
自分の中では、「繰り返す回数がはっきり決まっているならfor、条件次第で回数が変わるならwhile」という感覚で区別するようにしています。問題文を読むときも、まずこの感覚で見分けてから、細かい条件を確認するようにすると、構造をつかみやすくなりました。
練習してみた感想
繰り返し処理は、1回分の処理の流れを追うだけならそれほど難しくないのですが、「2回目、3回目でどう変わるか」を続けて追ううちに、頭がこんがらがることがありました。表を作って、繰り返しごとの変数の値を書き出す練習をしたことで、格段に追いやすくなりました。
次回は、科目Aに戻り、待ち行列理論(M/M/1)の公式を覚えるコツを整理します。
