前回はマイクロビットに計算をさせてみた。前回行った計算は、いわゆる四則演算だが、コンピューターが行う計算には、四則演算とは異なる計算もあるのだ。今回は、条件式について解説していく。
サンプルプログラムのおさらい
くどいようだが、サンプルプログラムを書き出してみるぞ。
- 1行目 #Add your Python code here. E. g.
- 2行目 from microbit import *
- 3行目
- 4行目
- 5行目 while True:
- 6行目 display.scroll(‘Hello, World!’)
- 7行目 display.show(Image.HEART)
- 8行目 sleep(2000)
「Hello, World!」を流して、ハートを表示して、2秒待つ ということを繰り返すのだ。
グルグル回って表示を繰り返すのでしたね。
ここで問題だ。5行目の・・・
Trueって、なんだ?
5行目に「while True」とあるが、この「True」って、いったい何なのだ?ということだ。
うーん、「本当」ってことですか?
イエス!その通り!!じゃ、その反対は?
「嘘」・・・ですかね?
よく分かったね、赤トマト君。
グルグル回るループと一体何の関係が???
ループとの関係はひとまず置いておいて、この「本当」と「嘘」についてみてみよう。
コンピュータのプログラムでは、この「本当」と「嘘」を使って、いろいろなことを行うのだ。「嘘」というと、ちょっと悪いことをされているような気がするが、まぁ「合っている」「違っている」ぐらいの感覚だ。そして、パイソンでは、「本当」は「True」、「嘘」は「False」というようにあらわすことになっている。
うーむ、「True」って書いてあれば、合っていて、「False」って書いてあれば間違っている、ということですか。
そうだ。そして、コンピュータのプログラムでは、計算した結果がこの「True」または「False」になるような計算を行うことができるのだ。これを条件式というのだ。
なな、なんですか?いきなりハードルを上げないでくださいよ。
条件式??って、なんなのよ???
例えば不等号について考えてみよう。
「>」とか「<」とかですね。
「5 > 8」は正しいだろうか?
さすがにこれは、トマトの僕にもわかりますよ。間違いですね!
その通り!プログラミングでは、これを次のように書くことができる。
a = 2 > 4
この場合、「a」には「False」が格納される。
これ、なんか意味あるんスか?
このままではあまり意味がなさそうだが、例えば「2」が変数だったらどうなる?
a = b > 4
うーん、「a」も変数で、「b」も変数で・・・
2つも変数があるからとっても変!じゃなくて・・・
(とりあえずボケようとして、外したってところだな。)
変数は変わる数なので、「b」が変わって4より大きくなれば「本当」になる!
イエス!正解で~す!!
マイクロビットを動かして確かめよう
じゃぁ、具体的にプログラムで見てみよう。
- 1行目 #Add your Python code here. E. g.
- 2行目 from microbit import *
- 3行目
- 4行目 a=’false’
- 5行目 b=0
- 6行目
- 7行目 while True:
- 8行目 a=b>4
- 9行目 display.scroll(‘b=’)
- 10行目 display.scroll(b)
- 11行目 display.show(‘,a=’)
- 12行目 display.show(a)
- 13行目 sleep(1000)
- 14行目 b=b+1
これをマイクロビットに「Flash」すると、「b=0,a=False」と表示されて、だんだんbの値が増えていきますね。
bが5になると、あ、「a=True」と表示された!
プログラムの要点を解説するぞ。まず4行目で変数「a」を用意して「False」を入れておく。「false」でも「False」でも構わないが、「’」で囲っておくことを忘れないようにしてくれたまえ。
5行目は変数「b」に0を入れているのですね?
そういうことだ。前回は「a」に0を入れておいたが、今回は「b」に0を入れる。
そして、8行目が問題の計算式の部分だ。さっき出てきた「a=b>4」をそのまま打ち込んである。
ほんとにそのまんまですね。
9~12行目は変数「a」と変数「b」の中身を表示している部分だ。わかりやすいように毎回「b=」とか「a=」とかもつけて表示しているのだ。
最後の13行目で変数「b」の値を1づつ増やしているのだ。ループの中身は繰り返し実行される。この様子を表すと・・・
1回目 | b=0 | 「0>4」なので間違い | 「a」に’False’が格納される。 |
2回目 | b=1 | 「1>4」なので間違い | 「a」に’False’が格納される。 |
3回目 | b=2 | 「2>4」なので間違い | 「a」に’False’が格納される。 |
4回目 | b=3 | 「3>4」なので間違い | 「a」に’False’が格納される。 |
5回目 | b=4 | 「4>4」なので間違い | 「a」に’False’が格納される。 |
6回目 | b=5 | 「5>4」なので正しい | 「a」に’True’が格納される。 |
7回目 | b=6 | 「6>4」なので正しい | 「a」に’True’が格納される。 |
: | : | : | : |
インデントの部分がループの中身で、繰り返される、という訳ですね。
そして、「a=b>4」のように結果として「True(正しい)」または「False(間違い)」のような値が得られるものが条件式なのだ。
「>」は比較演算子の一種ですよ。
ちなみに「>」は、2つの値の大小を比べる役割を果たすので、「比較演算子」といわれる。
他にどんなものがあるのですか?
「<」は普通に使えるぞ。また、「≧」は「>=」、「≦」は「<=」とあらわす。代入ではなく等号の意味の「=」は「==」とあらわすぞ。
等号もちゃんとあるんですね。等号さん、仲間外れじゃなくて、良かったですね。
今回のまとめ
今回の内容をまとめておくぞ。
- 条件式は、結果が「True(正しい)」または「False(間違い)」となる式
- 2つの値を比べるのには、比較演算子を使う。
今回出てきた演算子
== | 等号 | 2つの値が等しいかどうかを調べる。 |
> | 不等号(>) | 左の値が右の値より大きいかどうかを調べる。 |
< | 不等号(<) | 左の値が右の値より小さいかどうかを調べる。 |
>= | 不等号(≧) | 左の値が右の値以上かどうかを調べる。 |
<= | 不等号(≦) | 左の値が右の値以下かどうかを調べる。 |
つづく
参考
プログラムを保存すると、ダウンロードフォルダーに「microbit_program(番号)」というファイルがどんどん作られていきます。これを整理する方法については、以下をご覧ください。
コメント