【発展編】18-b スマート・セキュリティ(2)

Q1. ☆問題☆

ワークブックでは「動作検証」という言葉が出てきたよね。作ったものが正しく動くかどうかを確かめることをいうんだ。さて、次のうち、動作検証をするときにやらないほうがよいことはどれかな。考えられるものをすべて選ぼう。

  • 一度だけでは「たまたまうまくいった」ことも考えられるので、何度か同じ条件で動作検証をする。
  • できるだけいろいろな条件で動作検証をしたほうがよいので、思いつくことを思いつく順に試してみる。
  • 動作検証してうまくいかないときには、プログラムを消してさいしょから作り直すほうがよい。
  • 動作検証してうまくいかないときには、うまくいかない理由が見つかるような実験をするとよい。
  • いろいろな条件を試すときには、一度にひとつだけしか条件を変えない。

正解

  • 一度だけでは「たまたまうまくいった」ことも考えられるので、何度か同じ条件で動作検証をする。
  • できるだけいろいろな条件で動作検証をしたほうがよいので、思いつくことを思いつく順に試してみる。
  • 動作検証してうまくいかないときには、プログラムを消してさいしょから作り直すほうがよい。
  • 動作検証してうまくいかないときには、うまくいかない理由が見つかるような実験をするとよい。
  • いろいろな条件を試すときには、一度にひとつだけしか条件を変えない。

解説

当たり前かもしれないけれど、動作検証するときには、考えられる条件はすべて試した方がよい。動作検証した結果、「うまくいかない」ことがわかれば、そこを直さなければいけない。そんなことを考えると、正しいもの、正しくないものがみえてくるよね。

一度だけでは「たまたまうまくいった」ことも考えられるので、何度か同じ条件で動作検証をする。
その通り。「たまたまうまくいく」ことも考えられる。例えば、「反射光の強さが25より大きいとき」にはある動作をするようにプログラムしたとしよう。動作検証してうまくいったとしよう。けれども、そのときには反射光の強さが26でうまくいったものの、光の当たり具合では24になってしまってうまくいかない、ということがある。だから、何度か試して「本当にうまく動くのか」を確かめるほうがよいんだ。

できるだけいろいろな条件で動作検証をしたほうがよいので、思いつくことを思いつく順に試してみる。
「できるだけいろいろな条件で動作検証をしたほうがよい」は正しいけれども、「思いつくことを思いつく順に試してみる」はできるだけやらない方がよい。あとから,どのような条件で試したのかをふり返ることができるように、「このような条件で試す」と整理してから試してみるほうがよいんだ。

動作検証してうまくいかないときには、プログラムを消してさいしょから作り直すほうがよい。
これはやらないほうがよい。もちろん、全然うまくいかなければさいしょから作り直すこともあるかもしれない。その場合でも、うまくいかなかった理由を確かめてからのほうがよいよね。それをしないで作り直しても、また同じことになってしまうかもしれないよ。

動作検証してうまくいかないときには、うまくいかない理由が見つかるような実験をするとよい。
その通り。先ほどの「反射光の強さが25より大きいとき」の例では、反射光の強さで動きを変えているのだから、そのあたりがあやしい……それを確かめるための実験をしよう……と考えるだろう。なんのために動作検証を行うのかを考えてみよう。

いろいろな条件を試すときには、一度にひとつだけしか条件を変えない。
これは、意外とできない人が多い! めちゃくちゃに条件を変えてしまい、さいしょに作ったものがどんなものだったかがわからなくなってしまうことはないかな。くり返しになるけれども、動作検証をするときには、「うまく動かなかったときにはその理由を考える」ことも大事。条件を1つだけ変えてうまくいくようになったのならば、その「条件」の部分がうまくいかない理由だった、とわかるよね。

3

Q2. ☆問題☆

「モーター」をオンにしても、その後ろにプログラミングブロックがなければ動かなかったよね(だからワークブックでは、何も書いていないループブロックを入れている)。その理由として正しくないと考えられるものを、次の中から1つ選んでね。

  • ステアリングブロックは、ループブロックとあわせると「車を走らせ続ける」という意味になるから。
  • 「モーターオン」だけでは、いつまでオンにしていればいいかわからないから。
  • 「モーターオン」にしても、次にブロックがなければ、すぐにプログラムが終わってしまい、動いていないようにみえるから。

正解

  • ステアリングブロックは、ループブロックとあわせると「車を走らせ続ける」という意味になるから。
  • 「モーターオン」だけでは、いつまでオンにしていればいいかわからないから。
  • 「モーターオン」にしても、次にブロックがなければ、すぐにプログラムが終わってしまい、動いていないようにみえるから。

解説

ループブロックに「中に書かれた命令をくり返す」以外の意味はないよ。

「モーターオン」だけでは、いつまでオンにしていればいいかわからないから。
「モーターオン」にしても、次にブロックがなければ、すぐにプログラムが終わってしまい、動いていないようにみえるから。
が正しい。

image-1

Q3. ☆問題☆

写真のようにカードを改造して、カードにもっとたくさんの情報がつめこめるようにしてみたよ。でも残念ながら、今回作った「カードリーダー」ではこのカードを読ませても今までと同じだけの情報しか読むことはできない。その理由としてもっとも正しいものを選んでね。

  • プログラムを改造しないと、このカードの情報を読むことはできないから。
  • カードを入れる部分の長さを長くしないと、このカードをすべて読むことはできないから。
  • このカードを入れると、カラーセンサーがこわれてしまうから。
  • このカードを入れても、モーターが動いてくれないから。
  • このカードを入れても、タッチセンサーがおされないから。

正解

  • プログラムを改造しないと、このカードの情報を読むことはできないから。
  • カードを入れる部分の長さを長くしないと、このカードをすべて読むことはできないから。
  • このカードを入れると、カラーセンサーがこわれてしまうから。
  • このカードを入れても、モーターが動いてくれないから。
  • このカードを入れても、タッチセンサーがおされないから。

解説

このカードをおくまで入れても、根元の部分の色は読めないよね。だから、これまでと同じだけの情報しか読むことはできないよ。

それでは、どうすれば情報量を増やすことができるのだろうか。例えば「カードを入れる部分の長さを長くする」ことも方法のひとつだし、
カードを2枚読むようにプログラムを作り直せばもっとたくさんの情報を読むこともできるよね。