前回は、サンプルプログラムの流れを一通り見てみた。まだまだ語り切れていない部分は多いが、プログラムがどういうものか、ということは垣間見ることができたのではないかと思う。
今回は、マイクロビットに足し算を行わせる方法についてみていこうと思う。
今回は、ふつうに始まりましたね。
うむ。ネタ切れだ。
ガホーン
マイクロビットで計算できるの?
ところで赤トマト君、コンピューターを日本語にすると、なんというか分かるかい?
「電子計算機」ですね。
その通り。では、マイコンは、なんというか分かるかい?
うーん、何だろう?
マイコンはマイクロコンピューターの略だ。日本語では、さしずめ「超小型電子計算機」といったところだな。
なるほど、ちっさいですもんね。名前に「計算機」とつくぐらいだから、計算もできるということになりそうですね。
ィエース。という訳で、実際に計算をさせてみよう。
どうやって計算させるの?
マイクロビットに計算をさせるには、どうすればいいか分かるかい?
うーん、分かった!お願いする!マイクロビットさん、どうか計算してください。
いやいや、相手はコンピューターだぞ。コンピューターに仕事をさせるには、プログラムを作ればよいのだ。
じゃぁ、計算させるプログラムを作ればよい、ということですね。まだプログラムを作れない、ただのトマトの僕には、どうすることもできない。
そう悲観するな。それをこれから覚えようとしているのだ。早速やってみよう。下のリンクをクリックして、パイソンエディターを開いてくれたまえ。
計算の答えを入れる場所を用意しよう。
まずは、計算の答えを入れる場所が必要となる。これには、変数と呼ばれるものを使う。
へ、へんすうですか?変な数?
お、調子が出てきたな。「変な数」ではなく、「変わる数」だ。中身が変わる数字の入れ物のようなものだ。今回は、「a」という名前の変数を用意する。
名前が付くのですか。ちょっと親しみがわいてきましたね。「a」さん、よろしくね。
名前には、半角を用いる。大文字と小文字は区別されるから要注意だ。
「a」さんと「A」さんは別の人ってことですか?
その通りだ。名前は1文字でなくてもよいぞ。例えば「Kotae」でもよいし、「tomato」でもよい。「tomaTo」と「tomato」は別の変数になるから気を付けてくれたまえ。
名前の途中に大文字が入ってもいいんだ。「toMato」さんとか、「ToMaTo」さんとか。
全て大文字の「TOMATO」さんでもいいぞ。
ふえぇ、「TOMATO」さん!トマトの親分って感じですね。
変数「a」をサンプルプログラムに追加してみるぞ。
- 1行目 #Add your Python code here. E. g.
- 2行目 from microbit import *
- 3行目
- 4行目 a=0
- 5行目
- 6行目 while True:
- 7行目 display.scroll(‘Hello, World!’)
- 8行目 display.show(Image.HEART)
- 9行目 sleep(2000)
4行目に「a=0」というのが追加されましたね。
これで「a」という変数が用意された。「=0」としているのは、「a」の中に0を入れる、ということだ。
「=0」としないとどうなるのですか?
試してみたら、エラーとなってしまった。マイクロビットに「Line4 NameError name a is not defined」と表示された後、何も表示されなくなってしまったぞ。
箱を用意したら、ちゃんと中身を入れておかないといけない、ということですね。
パイソンでは、そういうルールになっているようだな。実際に「a」に0が入っていることを確認してみよう。プログラムのハートを表示する部分を次のように修正してくれたまえ。
- 1行目 #Add your Python code here. E. g.
- 2行目 from microbit import *
- 3行目
- 4行目 a=0
- 5行目
- 6行目 while True:
- 7行目 display.scroll(‘Hello, World!’)
- 8行目 display.show(a)
- 9行目 sleep(2000)
「Image.HEART」を「a」に変更するのだ。これをマイクロビットにFlashすると、ハートの代わりに0が表示されるようになる。確認してみてくれ。
了解です!・・・0が表示されました!
いよいよ計算の部分を作ろう。
変数を用意できたので、次は計算を行う部分を作ろう。10行目に次の行を追加するのだ。
- 9行目 sleep(200)
- 10行目 a=a+1
あれ、なんか変ですよ。「a=a+1」って書いてありますよ。おかしくないですか?
良いところに気が付いたね。数学ではおかしな式だが、プログラミングでは、これで良いのだ。プログラミングでは、「=」は等号ではなく、代入という意味なのだ。
だ、代入ですか?
つまり、「a」の中に「a+1」を入れる、ということなのだ。
と、いいますと?
例えば「a」に5が入っていたとして、「a+1」は6なので、「a=a+1」が実行されると、「a」の中身は6になるのだ。
つまり、「a」の中身を1増やす、ということで良いでしょうか?
その通り!分かってきたようだね。では、試してみてくれたまえ。
インデントの入れ忘れにご注意
やってみました。あれ、0のままですよ。
どれどれ、見せてごらん。
- 1行目 #Add your Python code here. E. g.
- 2行目 from microbit import *
- 3行目
- 4行目 a=0
- 5行目
- 6行目 while True:
- 7行目 display.scroll(‘Hello, World!’)
- 8行目 display.show(a)
- 9行目 sleep(2000)
- 10行目 a=a+1
なるほど、インデントを入れ忘れたのだね。
インデント?なんすか、それ?
例えば9行目の「sleep」を見てごらん。書き始めが少し後ろに下がっているだろう。
あ、確かに。6行目の「while」より後の行はみんな少し後ろから書かれていますね。
これがインデントだ。日本語では、字下げともいうぞ。
値下げだったらうれしいですけど。
残念ながら値下げではない。字下げだ。6行目の「while」により、7行目以降が繰り返し実行される、ということを以前説明したが、覚えているね?
ィエース。オフコース。
この「while」の効果が及ぶのが、「while」以降のインデントされている行で、インデントされない行が現れると、それ以降は「while」の効果が及ばず、繰り返し実行されなくなるのだ。
じゃぁ、いつ実行されるのですか?
今回のプログラムでは、「while」は無限ループとなる。
サンプルプログラムの説明の回で言ってたやつですね。
無限ループからは出ることができないので、そのあとに書かれた行は永久に実行されることはないのだ。
うーん、恐ろしいですね。2度と出てこれないアリジゴクみたいですね。
インデントをどうやって入力するのか?
インデントはどうやって入れればよいのですか?
インデントの入力方法はいくつかある。例えばキーボードの左側にある「Tab」と書かれたキーを押すと入力することができる。
フムフム
ただ、この方法ではうまくインデントが機能しない場合がある。
それは困りますね!
いろいろ試した結果、一つのインデントにつきスペースを四つ入力するのが確実のようだ。
分かりました!インデントはスペース四つですね!
インデントを二つ、三つと入力する場合は、スペースを八つ、12個というように入力するのだ。それと、今回は「Hello,World!」の表示は不要なので、7行目の先頭に「#」を入れると表示されなくなるぞ。
- 1行目 #Add your Python code here. E. g.
- 2行目 from microbit import *
- 3行目
- 4行目 a=0
- 5行目
- 6行目 while True:
- 7行目 # display.scroll(‘Hello, World!’)
- 8行目 display.show(a)
- 9行目 sleep(2000)
- 10行目 a=a+1
やってみました。数字が増えていきますね!
「a=a+1」を「a=a+2」にしてみたり、「a=a-1」にしてみたりすると、いろんな計算をさせられることがわかると思うぞ。
掛け算、割り算はどうすればよい?
足し算、引き算は分かったのですが、掛け算、割り算はどうすればよいのですか?
掛け算は「*」、割り算は「/」を使えばよい。10行目を「a=a*2」とか、「a=a/5」とかにしてみてくれたまえ。
よし、やってみるぞ。「a=a*100」っと。なんか、0がずーっと表示されてしまいますね。
そういう時は、8行目を「display.scroll(a)」のようにすればよいぞ。
- 1行目 #Add your Python code here. E. g.
- 2行目 from microbit import *
- 3行目
- 4行目 a=0
- 5行目
- 6行目 while True:
- 7行目 # display.scroll(‘Hello, World!’)
- 8行目 display.scroll(a)
- 9行目 sleep(2000)
- 10行目 a=a*100
100とか、10000とか、数字が流れて表示されるので、分かりやすくなりました。
計算をするための記号「+」とか「-」とかは、演算子と呼ばれている。「=」も演算子の一種で、代入演算子という。
すごいですね。コンピューターって、計算機だったんですね。
今回のまとめ
今回の内容をまとめておくぞ。
- 変数は数値や計算結果などを入れておく箱のようなもの
- whileなどの効果が及ぶのは、インデントされている行
- インデント一つにつきスペースを四つ入力する。
- 計算には演算子を使う。
今回出てきた演算子
= | 代入演算子 | 変数に値や計算結果を格納する。 |
+ | 加算演算子 | 足し算を行う。 |
– | 減算演算子 | 引き算を行う。 |
* | 乗算演算子 | 掛け算を行う。 |
/ | 除算演算子 | 割り算を行う。 |
つづく
参考
プログラムを保存すると、ダウンロードフォルダーに「microbit_program(番号)」というファイルがどんどん作られていきます。これを整理する方法については、以下をご覧ください。
コメント