Swift Playgrounds

コードを学ぼう1【ループをネストする】解答例と解説

ループをネストする

解答例

while !isBlocked {
  while !isOnGem {
    moveForward()
  }
  collectGem()
  turnLeft()
}

解説

whileループをネストします。
『ネスト』とは、

繰り返し実行されるコードブロック(ループなど)の中に別のコードブロックを入れること

ですね。
この課題にはすでにその型が用意されているので、付け足してみましょう。
最初に、大きな枠で考えられる『!isBlocked』を作ります。
真ん中に向かって進み、行き止まりがゴールだからです。
その中に、『!isOnGem』で、またwhileループを作ります。
左折したい場所に、いつも宝石があるので、それを条件にするわけです。
『宝石上にいない間は前進』していき、『isOnGem』になると宝石を集め、左折します。

ゴールすると、以下のメッセージが現れます。

気をつけてください。whileループのブール条件がいつまでも当てはまると、
コードが無限ループで永遠に実行され、コンピュータがフリーズしてしまいます

恐ろしや。。。

要点まとめ

・whileループを作るときは、無限ループにならないように気をつけよう