❐ ⅲ for ループ

⒈ ループを使う

ループを使って、1つの関数を繰り返し呼び出します。
波かっこの中に、1つの列をクリアするためのコードを入力し、ループを繰り返す回数を入力します。

解答例

解説

for i in 1 ... 5{
    moveForward()
    moveForward()
    collectGem()
    moveForward()
}
5回ループ {
     前に進む
     前に進む
     宝石を取る
     前に進む
}

⒉ 4辺でループする

今回は4回のループなので、
for ループの数字は 4 になります。
波かっこの中に、書いてあるコードを入れます。

解答例

解説

for i in 1 ... 4 {
    moveForward()
    collectGem()
    moveForward()
    moveForward()
    moveForward()
    turnRight()
}
4回のループ {
     前に進む
     宝石を取る
     前に進む
     前に進む
     前に進む
     右を向く
}

⒊ 端まで行って戻る

中央の地点から各スイッチに移動して、スイッチを順に入れます。
4辺 全て同じ条件なので、4回のループで完成します。
1つのパターンを作って、波かっこに入れて繰り返します。

解答例

解説

for i in 1 ... 4 {
    moveForward()
    moveForward()
    toggleSwitch()
    turnRight()
    turnRight()
    moveForward()
    moveForward()
    turnRight()
}
4回のループ {
     前に進む
     前に進む
     スイッチを入れる
     右を向く
     右を向く
     前に進む
     前に進む
     右を向く
}

⒋ ワープしてループして

ワープを通る繰り返しのパターンを見つけます。
5つの宝石があるので、シンプルなパターンを5回繰り返して全ての宝石が取れるように工夫して見ます。

解答例

解説

for i in1 .... 5 {
    moveForward()
    turnLeft()
    moveForward()
    moveForward()
    collectGem()
    turnRight()
}
5回のループ {
    前に進む
    左を向く
    前に進む
    前に進む
    宝石を取る
    右を向く
}

⒌ 3つの分かれ道

横の一列を1つのパターンとして考えます。

解答例

解説

func Forward7() {
    moveForward()
    moveForward()
    moveForward()
    moveForward()
    moveForward()
    moveForward()
    moveForward()
}
for i in 1 ... 3 {
    moveForward()
    moveForward()
    turnRight()
    Forward7()
    toggleSwitch()
    turnRight()
    turnRight()
    Forward7()
    turnRight()
}
7歩進む Forward7() の定義 {
    前に進む
    前に進む
    前に進む
    前に進む
    前に進む
    前に進む
    前に進む
}
3回のループ {
    前に進む
    前に進む
    右を向く
    Forward7() の実行
    スイッチを入れる
    右を向く
    右を向く
    Forward7() の実行
    右を向く
}

⒍ 右にも左にも
動作をいくつかのパターンに分解して見ます。
・宝石を取る
・前に進む(取った後、スイッチを入れた後)
・スイッチを入れる
これを定義して、ループする。

解答例

解説

func Gem2() {
    turnRight()
    moveForward()
    collectGem()
    moveForward()
    collectGem()
    turnRight()
    turnRight()
}

func Forward3() {
    moveForward()
    moveForward()
    moveForward()
}

func Swich2() {
    toggleSwitch()
    moveForward()
    toggleSwitch()
    turnRight()
    turnRight()
    moveForward()
    moveForward()
    turnLeft()
    moveForward()
}

for i in 1 ... 3 {
    Gem2()
    Forward3()
    Swich2()
}
宝石2つを取る Gem2() を定義 {
    右を向く
    前に進む
    宝石を取る
    前に進む
    宝石を取る
    右を向く
    右を向く
}

3歩進む Forward3() の定義 {
    前に進む
    前に進む
    前に進む
}

スイッチを2回入れる Swich2() の定義 {
    スイッチを入れる
    前に進む
    スイッチを入れる
    右を向く
    右を向く
    前に進む
    前に進む
    左を向く
    前に進む
}

3回のループ {
    Gem2() の実行
    Forward3() の実行
    Swich2() の実行
}

⒎ 4つの場所に4つの宝石
ステージを眺めると、4つのパターンで構成されています。

パターンを見つけて分解し、関数とfor文を作る練習をしましょう。
まずは、宝石のまとまりとワープの位置に注目しましょう。
ひとまとまりの宝石を集めて次の場所に移動するパターン

解答例

解説

for i in 1 ... 4 {
    moveForward()
    collectGem()
    moveForward()
    collectGem()
    turnRight()
    turnRight()
    moveForward()
    turnRight()
    moveForward()
    collectGem()
    turnRight()
    turnRight()
    moveForward()
    moveForward()
    collectGem ()
    moveForward()
}
4回のループ {
    前に進む
    宝石を取る
    前に進む
    宝石を取る
    右を向く
    右を向く
    前に進む
    右を向く
    前に進む
    宝石を取る
    右を向く
    右を向く
    前に進む
    前に進む
    宝石を取る
    前に進む
}

コメント