whileループ 1. 条件を決めてコードをループする

繰り返しに新しいコマンドが追加されます。あらかじめ決まった回数繰り返すforと違って、ある条件がtrueである間は繰り返す、というifとforを組み合わせたようなものです。

のように書きます。条件式はif文と同じで、trueかfalseのどちらかの結果になるisBlockedやisOnGemなどが入ります。もちろん前節で学んだ論理演算子、!、&&、||などを組み合わせることも可能です。

と書けば、まず行き止まりかどうか判定し、行き止まりであれば{}の処理を実行します。終わったらまたwhile文の最初に戻り、もう一度行き止まりかどうか判定します。つまり、この条件式は中身の処理を繰り返す間にいつかはfalseにならなければなりません。でなければwhileループが永遠に繰り返されて先に進まなくなるからです。例えば、

であれば、向きをかえている間にいつかは正面が行き止まりではなくなり、先へ進めることになります。
また最初から条件がfalseの場合は{}の中は一度も実行されずにスルーされる事も憶えておきましょう。

ステージはシンプルな一本道です。最後に開スイッチがあることは決まっていますが、その途中にある閉スイッチがいくつあるかは実行の度に変化するので、繰り返し回数を書かなければならないfor文は馴染みません。そこで、「ある条件がtrueの間繰り返す」while文の出番なわけです。この場合、「開スイッチに出くわすまではmoveForward()で進む」ということになります。言い換えれば、「開スイッチの上でない」がtrueになることが{}の中を実行する条件です。しかしisOnOpenSwitchは「開スイッチの上である」なので、trueとfalseを逆転させるNOT演算子(!)を活用しましょう。

改善希望!役に立った! (+2 rating, 8 votes)
読み込み中...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です