❐ ⅱ 関 数・・コードを学ぼう1


⒈ 新しい挙動を作る
これまでに使ったコマンドだけで右を向くには、turnLeft() コマンドを3回入力しなくてはいけません。

解答例

解説

moveForward()
moveForward()
moveForward()
turnLeft()
turnLeft()
turnLeft()
moveForward()
moveForward()
moveForward()
collectGem()
前に進む
前に進む
前に進む
左を向く
左を向く
左を向く
前に進む
前に進む
前に進む
宝石を取る

⒉ 新しい関数を作る
func を使って右に曲がるための関数を新しく定義します。

解答例

解説

func turnRight() {
    turnLeft()
    turnLeft()
    turnLeft()
}
moveForward()
turnRight()
moveForward()
turnRight()
moveForward()
moveForward()
turnRight()
moveForward()
moveForward()
moveForward()
moveForward()
turnRight()
moveForward()
toggleSwitch()
turnLeft()
moveForward()
turnRight()
moveForward()
turnLeft()
moveForward()
右に曲がる turnRight の定義 {
左を向く
左を向く
左を向く
}
前に進む
右に曲がる
前に進む
右に曲がる
前に進む
前に進む
右に曲がる
前に進む
前に進む
前に進む
前に進む
右に曲がる
前に進む
スイッチを入れる
左を向く
前に進む
右に曲がる
前に進む
左を向く
前に進む


⒊ 集めて、切り替えて、繰り返す
繰り返しのパターンをまとめた gemAndSwich(宝石を取って スイッチを入れる) と言う名前の関数を定義しました。

解答例

解説

func gemAndSwich {
     moveForward()
     collectgem()
     moveForward()
     toggleSwitch()
     moveForward()
}
gemAndSwich()
turnLeft()
gemAndSwich()
moveForward()
turnLeft()
gemAndSwich()
turnLeft()
gemAndSwich()
gemAndSwich の定義
    前に進む
    宝石を取る
    前に進む
    スイッチを入れる
    前に進む
}
gemAndSwich の実行
左を向く
gemAndSwich の実行
前に進む
左を向く
gemAndSwich の実行
左を向く
gemAndSwich の実行

⒋ 往復する
宝石3個を取る gem3 と言う名前の関数を新たに定義しました。

解答例

解説

func gem3() {
     collectGem()
     moveForward()
     collectGem()
     moveForward()
     collectGem()
}
gem3()
turnRight()
moveForward()
turnRight()
gem3()
turnLeft()
moveForward()
turnLeft()
gem3()
gem3 の定義 {
    宝石を取る
    前に進む
    宝石を取る
    前に進む
    宝石を取る
}
gem3 の実行
右を向く
前に進む
右に曲がる
gem3 の実行
左を向く
前に進む
左を向く
gem3 の実行

⒌ パターンをネストする
solveStair(階段をクリア)関数と
turnAround(後ろを向く)関数を定義して、
solveStair 関数の中で turnAround 関数を呼び出します。

解答例

解説

func turnAround() {
     turnLeft()
     turnLeft()
}

func solveStair() {
     moveForward()
     collectGem ()
     turnAround()
     moveForward()
     turnLeft()
}

solveStair()
solveStair()
solveStair()
solveStair()
turnAround の定義
    左を向く
    左を向く
}

solveStair の定義
    前に進む
    宝石を取る
    turnAround の実行
    前に進む
    左を向く
}

solveStair の実行
solveStair の実行
solveStair の実行
solveStair の実行

⒍ 並んだ階段
コードを実行して、solveRow(列をクリア)関数を呼び出すと何が起こるかを確かめます。
solveRow()関数にcollectGemTurnAround()関数を更に追加して、1列をクリアします。

解答例

解説

func collectGemTurnAround() {
     moveForward()
     moveForward()
     collectGem()
     turnLeft()
     turnLeft()
     moveForward()
     moveForward()
}

func solveRow() {
     collectGemTurnAround()
     collectGemTurnAround()
}

solveRow()
turnRight()
moveForward()
turnLeft()
solveRow()
turnRight()
moveForward()
turnLeft()
solveRow()
collectGemTurnAround() の定義 {
    前に進む
    前に進む
    宝石を取る
    左を向く
    左を向く
    前に進む
    前に進む
}

solveRow() の定義
    collectGemTurnAround()の実行
    collectGemTurnAround()の実行
}

solveRow()の実行
右に曲がる
前に進む
左を向く
solveRow()の実行
右に曲がる
前に進む
左を向く
solveRow()の実行

⒎ パターンを探す
swich1() swich2() と2つの関数を定義しました。

解答例

解説

func swich1() {
    moveForward()
    moveForward()
    toggleSwitch()
    turnRight()
    turnRight()
    moveForward()
    moveForward()
}
func swich2() {
    moveForward()
    moveForward()
    toggleSwitch()
    moveForward()
    moveForward()
    toggleSwitch()
    turnRight()
    turnRight()
    moveForward()
    moveForward()
    moveForward()
    moveForward()
}
swich1()
turnRight()
swich2()
turnRight()
swich1()
turnRight()
swich2()
swich1() の定義 {
    前に進む
    前に進む
    スイッチを入れる
    右に曲がる
    右に曲がる
    前に進む
    前に進む
}
swich2() の定義 {
    前に進む
    前に進む
    スイッチを入れる
    前に進む
    前に進む
    スイッチを入れる
    右に曲がる
    右に曲がる
    前に進む
    前に進む
    前に進む
    前に進む
}
swich1()の実行
右に曲がる
swich2()の実行
右に曲がる
swich1()の実行
右に曲がる
swich2()の実行

コメント