Scratchで変数と四則演算コマンドを使って1桁電卓を作った

Scratch
完成した1桁電卓

<写真1:完成した1桁電卓>

教科書にしている『10才からはじめるプログラミング』(創元社)も既に50ページに進んだ。

今回は「変数」と「計算」を勉強する。変数は数値や文字などを入れる箱だ。計算は加減乗除の四則だけでなく、平方根や絶対値、三角関数、対数、指数、切り捨て、四捨五入など結構豊富にあるのには驚いた。

今回は教科書の説明を一通り読んだ後、教科書から少し離れて、学んだことを参考にして自分なりのプログラムを考えてみることにした。

超簡単な電卓を作ってみたくなった

変数と計算を学んだら、電卓を連想したので、作ってみたらいい練習になると思った。

数字やアルファベットのスプライトがライブラリーにあるので、0から9までの数字やアルファベットの文字を使えば電卓らしく見える。

四則演算などの記号は、コスチュームエディターで作ることにした。

電卓に必要なスプライトたち

<写真2:電卓に必要なスプライトたち>

演算記号ボタンを作る

数字の0から9と、アルファベットはライブラリーにあるが、「+」や「-」などの演算記号はないので、自分で絵を描いて作ることにした。

黒色で正方形の枠を描いて、その中に赤色で記号を入れてみた。

最初は加減乗除の4つでいいかと思ったが、どうせなら除算の余りや平方根も追加した。

演算記号ボタンのスプライトを作る

<写真3:演算記号ボタンのスプライトを作る>

変数を2つ作った

1桁電卓で使う変数は、計算結果を表示するディスプレイ代わりの「sum」と、演算のモード(加減乗除などの区別)用の「Caluculate Mode」の2つ。

表示する変数sumの大きさがもっと大きくできれば電卓っぽくなって良いと感じたが、これ以上大きくできないので仕方がない。

変数には、数値だけでなく文字や文字列も入れることが出来る。

変数の値を設定したり変化させたりできるコマンドも揃っている。

変数を2つ作った

<写真4:変数を2つ作った>

スプライトにコードを書く

数字ボタン0のコード

数字の0は特別な数字だから、1から9とは少し違ったコードになった。

0は加減しても変化なしだが、0で乗除すると0になる。

0は加減と乗除の2つの場合分けなので、「if ~ then ~ else ~」の制御ブロックを使った。

Scratchの制御ブロックは直感的で分かりやすい。

数字ボタン0のコード

<写真5:数字ボタン0のコード>

数字ボタン1-9のコード

1-9までの数字は数値を変えるだけで同じコードになる。

選択された演算モードに従って、各数値で加減乗除すればいい。

平方根以外の5つの演算モードを場合分けするため、「if ~ then ~」制御も5つ用意した。

Scratchには、他の言語にある「case」などの多数の場合分け用のコマンドはなかったので、if文を多用する必要があった。

数字ボタン1-9のコード

<写真6:数字ボタン1-9のコード>

クリアボタンCのコード

アルファベットの「C」を、計算結果sumを0に戻すクリアボタンにした。

このボタンをクリックすると、変数sumを0に戻すと同時に、演算モード用の変数Caluculate Modeを「+」にセットするようにした。

初期モードは「+」にするのは、演算される数値をそのまま変数sumに入力できるようにするためだ。

クリアボタンCのコード

<写真7:クリアボタンCのコード>

四則演算記号ボタンのコード

四則演算記号ボタンのコードは単純に、変数Caliculate Modeの値を各モードにセットして記憶させるだけだ。

四則演算記号ボタンのコード

<写真8:四則演算記号ボタンのコード>

平方根ボタンのコード

平方根ボタンは他のモードと少し設定が異なる。

モードの設定ではなく、変数sumに入力された数値を平方根に変換するようにした。

平方根ボタンのコード

<写真8:平方根ボタンのコード>

サイコロ代わりのアトランダムボタンRのコード

電卓の機能とは関係ないが、教科書の方にランダムな数値を発生させるコマンドの説明があったので、1-6の数値を発生させて表示するR(1-6)ボタンを追加した。

サイコロの代わりになれば良いと思って(^^;)

サイコロ代わりのアトランダムボタンRのコード

<写真9:サイコロ代わりのアトランダムボタンRのコード>

この1桁電卓を作ってみて、普通の電卓のように、数字を連続して打って、10桁以上の数値を入力するにはどうしたらいいのか?と思った。

Scratchにはキーボードからの入力を記憶するコマンドはあるのだろうか?

Scratchで10桁以上で使える電卓は作れるのか興味が湧いた。

プログラミングで、追加の数値を打つタイミングで、入力済みの数値を10倍して桁を上げていく操作をすれば10桁以上の数値を入力できるかもしれない。今回はここまでにしよう。疲れた。

コメント

タイトルとURLをコピーしました