【発展編】19-a Swift Playgroundsの世界へようこそ

Q1. ☆問題☆

EV3アプリにできて、Swift Playgroundsにできないことは、次のうちどれかな。もっともてきせつなものを選んでね。

  • 超音波センサーを使う
  • アイコンをならべてプログラムを作る
  • BluetoothでiPadとEV3をつなげる
  • 音をならす
  • モーターやセンサーが感知した数字をiPadで確認する

正解

  • 超音波センサーを使う
  • アイコンをならべてプログラムを作る
  • BluetoothでiPadとEV3をつなげる
  • 音をならす
  • モーターやセンサーが感知した数字をiPadで確認する

解説

使ってみて、「アイコンをならべてプログラムを作る」ことはSwift Playgroundsにできないことはわかったよね。
それ以外のものは、EV3アプリでもSwift Playgroundsでもできるんだ。

ただ、例えば、使える音はSwift Playgroundsのほうが少ないとか、EV3のキャンセルボタンでプログラムを止めることができないとか、
細かなところでちがいがある。けれども、Swift Playgroundsでしかできないこともあるから、これからの内容を楽しみにしていてね。

Q2. ☆問題☆

次のプログラムでは、「1秒間、Aにつないだモーターを、100のパワーで動かす」ことができるよね。

ev3.motorOn(forSeconds:1, on:.a, withPower:100)

それでは、「Cにつないだモーターを10秒間、50のパワーで動かす」ためには、どのプログラムを書けばいいのかな。次の中から選んでね。

  • ev3.motorOn(forSeconds:10, on:.c, withPower:50)
  • ev3.motorOn(forSeconds:5, on:1, withPower:.c)
  • ev3.motorOn(forSeconds:.c, on:10, withPower:50)
  • ev3.motorOn(forSeconds:50, on:10, withPower:.c)

正解

  • ev3.motorOn(forSeconds:10, on:.c, withPower:50)
  • ev3.motorOn(forSeconds:5, on:1, withPower:.c)
  • ev3.motorOn(forSeconds:.c, on:10, withPower:50)
  • ev3.motorOn(forSeconds:50, on:10, withPower:.c)

解説

英語の単語がわかるようになってくると、プログラムの意味がわかりやすくなるよ。

Secondsは「秒」という意味だよ。
Powerは「パワー」だよ。

だから、「10秒」ならば「forSeconds:」の数字を変えなければならないし、「50のパワー」ならば「withPower:」の数字を変えなければならない。
そのようなことを考えながらプログラムを作っていこう。

Q3. ☆問題☆

ミッション3で作ったプログラムには

ev3.motorOn(on: .a, withPower: 50)

と書かれていたよね。forSeconds: を書かなくてもよかったのかな。次の説明で、もっともふさわしいものを選んでね。

  • 本当は書かなければならなかった。だから、ワークブックにのっていたプログラムはまちがいだが、たまたまうまく動いている。
  • 本当は書かなければならなかった。ただし、直前に実行したプログラムで書いてあれば、次のプログラムには書かなくてもよいため、うまくうごいている。
  • この場合は書かなくてもよい。書かないと、EV3アプリでいうところの「モーターオン」になるため、問題はない。
  • この場合は書いてはいけない。書いてしまうと、プログラム全体が動かなくなってしまう。
  • この場合は書いてはいけない。書いてしまうと、Lモーターがこわれてしまう。

正解

  • 本当は書かなければならなかった。だから、ワークブックにのっていたプログラムはまちがいだが、たまたまうまく動いている。
  • 本当は書かなければならなかった。ただし、直前に実行したプログラムで書いてあれば、次のプログラムには書かなくてもよいため、うまくうごいている。
  • この場合は書かなくてもよい。書かないと、EV3アプリでいうところの「モーターオン」になるため、問題はない。
  • この場合は書いてはいけない。書いてしまうと、プログラム全体が動かなくなってしまう。
  • この場合は書いてはいけない。書いてしまうと、Lモーターがこわれてしまう。

解説

ワークブックには、EV3アプリで作ったらどのようなプログラムになるのかをのせてあるよね。
モリーを走らせる部分は、Lモーターブロックが「モーターオン」になっている。

このとき、Lモーターブロックで指定しているのは、
・Aにつないだモーターを動かす
・パワーは50
ということだけなのはわかるかな。

一方、Swiftのプログラムも
ev3.motorOn(on: .a, withPower: 50)
と、「Aにつないだ」「パワーは50」しか書いていない。つまり、EV3アプリでもSwiftでも、同じことをしていることがわかる。

だから、正解は
この場合は書かなくてもよい。書かないと、EV3アプリでいうところの「モーターオン」になるため、問題はない。
だよ。