繰り返しで変数をつかって回数を数える方法 | Scrachとロボットプログラミング
プログラミング言語の中には、同じ処理を何回も繰り返して行う方法に繰り返し処理(ループ)という方法があります。
繰り返し処理(ループ)は、同じまたは類似の操作を何度も書かずに済むため、プログラムの量を減らし、プログラムの効率を向上させます。また、コードを記述する量が少ないため、開発時間も短縮されます。また、同じ処理を何度も何度も記述することで起こる入力ミスによるエラーを回避できプログラムの信頼性も上がり、変更などがあった際も簡単に修正ができます。
スクラッチ(Scratch)にも、PythonやC,Javaなどの一般的なプログラミング言語と同じように繰り返し処理を行う方法があります。
スクラッチ(Scratch)における繰り返し処理命令
スクラッチ(Scratch)における繰り返し処理を行うコマンドは、制御の中に2つある「10回繰り返す」と「ずっと」というコマンドです。
10回繰り返す
10回繰り返すコマンドは、このブロックで囲った範囲の処理を「10回繰り返し」ます。ただし、10の部分を任意の数字に変えることで何回でも好きな回数繰り返すことができます。
例えばクムクムロボットのLEDの「赤、緑、青」の点滅を繰り返したいときには下記のような記述になります。
このプログラムは、赤点滅-緑点滅-青点滅という処理を5回繰り返す動きになります。
ずっと
ずっとはプログラミング関係者の間では「無限ループ」と呼び、つまり無限に繰り返す動きになります。
つまり、このプログラムは終わりがないため、繰り返すブロックの下部分には、10回繰り返すのようなでっぱりがありません。
次にはプログラムは続かないという意味です。
何回目なのかがスクラッチ(Scratch)ではわからない
この二つの繰り返し「10回繰り返す」と「ずっと」は、確かに同じ処理を何回も繰り返すことができるのは便利なのですが、このままでは今が一体何回目なのかがわかりません。
C言語やPythonやJavaなど、他の言語では実はこれは簡単にできてしまうのです。例えばPythonで記述する場合は….
#このコードはサンプルなので動きません
for i in range(5):
led.on('赤')
led.off('赤')
led.on('緑')
led.off('緑')
led.on('青')
led.off('青')
Pythonではこのように書いて5回同じ処理をさせるのですが、このように記述することで for i in range(5) と書かれた i によって今は何回目かを自然に把握できるのです。
同じようにC言語では…
int i:
for(i=0;i<5i++){
led.on('赤');
led.off('赤');
led.on('緑');
led.off('緑');
led.on('青');
led.off('青');
】
同じようにC言語ではこのように書いて5回同じ処理をさせるのですが、このように記述することで for(i=0;i<5;i++)と書かれたiによって今は何回目かを自然に把握できます。
スクラッチ(Scratch)はCやPythonのように、いちいち面倒でぱっとだれもが見て理解しにくい書き方をせず、5回繰り返す!10回繰り返す、ずっと繰り返す!と指定するだけで簡単に繰り返すことができるのでとてもわかりやすく単純でいいのですが、回数を数えることができません。
どんな時回数を数えたいのか?
例えば、ロケット発射のプログラム….10.9.8.7……と、10から0までカウントダウンをさせながらその数をクムクムに喋らせたい!と思ったとき、クムクムの数を喋るコマンドと繰り返しを組み合わせて下記のようなプログラムを作ってみましたが、これでは数がいくつかわからないので、何を喋らせてどうしたらよいのか行き詰ってしまいます。
PythonやC言語のようにい i が使えればいいのですが…. i がどこにもありません。
iを作って回数を数える
こんな時使うテクニックは「変数」です。
変数とは 変=変わる 数 という意味で、変化していく数を表します。
実は数ではなくても文字でもいいのですが、プログラムを作っていく中で、変化する数や文字を扱う方法を変数と呼び、これはスクラッチ(Scratch)だけではなくC言語もPythonもすべてのプログラミング言語に用意されている機能なのです。
実は前述したCやPythonで使っていた i も変数なのです。
スクラッチでも、この iを作って 数を数えてみましょう。
変数を使う
使い方は、コード-変数をクリックしコマンドを表示します。
一番上の「変数を作る」ブロックをクリックし、ひとつ「i」という変数を作ってみましょう。
この画面のOKをクリックするとiという変数が下記のように作られます。
カウントダウンプログラムを作る
とにかく下記の通りのプログラムを作ってみましょう!
プログラムの説明
1つめのブロックでは自分で作った i という変数を11にしています。
これをプログラミング用語では「変数の初期化」と呼びます。
つまり、変数を作って、一番最初の数を決めるということです。
2つめのブロックは繰り返すブロックで、囲った処理を11回繰り返します。
第1回目の処理です….
繰り返すブロックの1つ目の処理は、iを-1ずつ変える….つまり i の数字を-1する動きになります。
一番最初に i は11で初期化されているので、初めて繰り返すが回ってきたとき i-1 となり1は10となります。
4つ目のブロックはそのiを桁読みでクムクムロボットが読み上げます。
第一回目は「10=じゅう」と読み上げるはずです。
3つめのブロックが終わると第2回目の処理として3つ目のブロックで1を-1しますから、iは今度は9に変わります。
そして4つ目のブロックで「9=きゅう」としゃべります。
そして第3回目=8,第4回目=7、第5回目=6、第6回目=5、第7回目=4、第8回目=3、第9回目=2、第10回目=1、第11回目=0となり、合計11回で10~0までのカウントダウンができるようになります。
変数名を変える
実は変数はプログラマーがほとんど好きな数だけ作ることができ、その変数の名前は i とかではなく pとか oとか、または kaisu とか…いろいろ好きな名前を付けることができるのです。
スクラッチではとてもわかりやすいように、日本語を使うこともできます。
例えば、下のプログラムは i を「カウント数」に変えたプログラムです。
スクラッチ(Scratch)の変数名の変え方
変数名を変える場合、作った変数のブロックの上で右クリックを行い、変数名を変更というメニュを選択し名前を入力します。