プログラミング初心者の子供に何を教えたらいいの?とお悩みの保護者のためのScratch(スクラッチ)の入門講座。Scratchで猫の動かし方はわかったけど・・・次にどんなことをしたらいいの?という疑問にお答えするシリーズです。
今回は「変数」について解説します。プログラミングで欠かせない変数。使いこなせるよう、頑張ってくださいね。
1. 変数って何?
変数ってプログラミングしていると当たり前のようにでてきますが、子供たちには馴染みのない言葉。
子供たちにわかりやすく説明できるように解説してみます。
1-1. 変数とは?
変数とは、値(あたい)を入れる箱のようなものです。値(あたい)には、数値や文字列などがあります。また、変数の箱には名前がつけられるようになっていて、変数の箱の名前のことを「変数名」といいます。
下の図は変数名がaの箱に、3という値が入っています。変数に値を入れることを「代入」と言います。下の図は「変数aに3を代入した」状態、と言うことができます。
Scratchで変数を使う時は、スクリプトタブのデータというところから「変数を作る」ボタンを押して変数を作ります。
1-2. 変数の表示とスライダーの最大値・最小値
変数を作ると、ステージ上に変数が表示されます。ステージ上に表示された変数のことをScratchでは変数モニターといいますが、ここではそのまま「変数」と呼びます。変数ブロックの横のチェックボックスを外すと、変数は表示されなくなります。
ステージ上の変数をダブルクリックしてみます。
すると、変数名が消えて大きな表示になりました。
もう一度、この変数をダブルクリックしてみます。すると、また表示が変わり、今度はスライダーが表示されました。
このスライダーのツマミ(丸いところ)をドラッグしてみると・・・
なんと、変数の値が変わりました!
また変数のところを今度は右クリックしてみると、メニューが表示されました。変数の見た目はダブルクリックもしくは、右クリックのメニューで変えることができます。
また、スライダー表示の時の最小値と最大値も右クリックのメニューで設定することができます。試しに設定してみたいと思います。メニューの「スライダーの最小値と最大値を設定」を選択すると、スライダーの範囲を設定するダイアログが表示されました。最初は0と100が設定されていましたが、これを1と10に変えてみます。
スライダーのツマミが一番左にあるとき変数には1が入りました。スライダーのツマミを徐々に右にしていくと値が大きくなり、一番右側の時には10が入りました。
変数は、ドラッグすることで置く場所を変えることができます。
1-3. 変数の種類
変数を作る時のダイアログに、「すべてのスプライト用」「このスプライトのみ」「クラウド変数(サーバーに保存)」が選択できるところがありました。
「すべてのスプライト用」は、他のスプライトもこの変数を使用できます。正確な名称はグローバル変数と言います。「このスプライトのみ」は、変数を作ったスプライトしか使うことができません。正確な名称はローカル変数と言います。
「クラウド変数」はScratchサイトのサーバー上に保存できる変数です。例えば、Scratchでゲームを作って公開した時、そのゲームをプレイして高得点を出した人の得点を保存したいときなどに使われます。クラウド変数には数値しか登録できません。また、Scratchのオフライン版ではクラウド変数は使用できません。
大人用のプログラミング言語では、特別な理由がない限りはローカル変数(このスプライトのみ)を使うように教えられます。複数人で大規模な開発を行う時などにグローバル変数を使うことで、間違って変数の値を更新するプログラムを作ってしまって余計な不具合を生んでしまう恐れがあるからです。
ですが、Scratchでお子さんが作品を作る時は、グローバル変数(すべてのスプライト用)を使うことの方が多いです。Scratchでは大規模な開発をすることはありませんし、いろいろなスプライトから変数にアクセスできるようにしておいた方がやり直しが少なくて済むと思います。
ローカル変数を使った方が良い、特殊なケースもあります。それはクローンごとに変数を使い分けたい場合です。それはまた別の機会に解説したいと思います。
1-4. 変数に値を入れる
変数の値を入れるには、以下のブロックを使います。
文字を入れるところに値を返すブロックを入れることもできます。
Scrathcの変数は文字列も使えますし、数値も使えます。「全角の数字」は数値ではなく文字列の扱いになるので気をつけてください。子供達には「全角」意味が伝わりづらいので「日本語の数字」と言って説明するときもあります。
試しに全角の数字「4」を入れてみます。
そして、計算ブロックで次のような式を作ってみます。
もし「数値」と認識されればこのブロックをクリックすると、4+2=6という答えが返ってくるはずです。クリックすると結果は・・・「2」が返ってきました。
数値でないものは計算できないので、変数のところは無視されてしまいました。子供達はこの全角数字のところで、よく間違えるので、計算がおかしいときは気をつけてみてくださいね。
変数に数値を使うときは、次のブロックも使えます。変数の中の数値を同じ数づつ増やすことができるブロックです。
また、先ほど紹介したスライダーを使って、変数に数値を代入することもできますよ。
2. 変数を使ったプログラム
変数の使い方がわかったところで、変数を使った簡単なゲームを作ってみたいと思います。
2-1. 得点に変数を使う
まずは、簡単なゲームから。変数にゲームの得点を入れてみたいと思います。さるが落ちてくるバナナをキャッチすると1点入るというゲームです。
まず、さるの動きをプログラミング。猿は左右の矢印キーで動かします。
つぎにバナナのプログラムです。
まず最初に、変数「得点」を作りましょう。緑の旗を押したら得点が「0」になるようにします。「得点を0にする」のブロックを入れないと、何度もゲームをする場合に得点が前の続きから増えていってしまいますので気をつけましょう。
また、0.1秒ごとにクローンを作るようにします。
続いてクローンされた後のプログラムです。上から落ちてくるプログラムをつくります。そして、さる(Monkey2)に触れたら「得点を1ずつ変える」で得点が1点づつ増えていきます。
2-2. 答えを変数に入れる
マウラーローズという図形があります。ある数式で描ける図形なのですが、数式の中のnとdという変数の値を変えると、描く図形が変わります。マウラーローズの作り方についてもまた別の記事でご紹介したいと思います。
今回は、変数に代入する部分だけをピックアップして解説します。
黄色いスプライトのプログラムです。「●●と聞いて待つ」というブロックを使って数値を入力してもらうようにします。その「答え」を変数nと変数dに代入しています。
「答え」と変数を使うと、クイズプログラムも作れますよ。
3. Scratchの変数を使った面白プログラム
Scratchならではの変数を使った面白いプログラムがありますので、いくつかご紹介したいと思います。
(1)スライダーで変数を変えると模様が変わる
スライダーの変数の値を変えて、緑の旗を押すと模様が変わります。
https://scratch.mit.edu/projects/219699168/
自由に変数の値を設定しても大丈夫なプログラムではスライダーを使うのがオススメです。
(2)ただひたすらクッキーをクリックするだけのゲーム
変数がたくさん使われていて、画面にも変数を表示しています。またクラウド変数がHighScoreとして使われているのでクラウド変数の使い方も参考になります。
https://scratch.mit.edu/projects/15496794/
4. まとめ
今回は、変数の使い方と使用例について解説しました。
Scratchでは変数に何が入っているか見てわかりやすいので、子供たちもつまずくことなくマスターできると思います。
変数の「見た目」が変えられることを知っていると、プログラミングの幅が広がると思います。見た目のところはぜひ覚えておいてくださいね。
他の方の作品を見て、変数をどう使っているのか知るのも効果的だと思います。変数を使っていろいろなプログラミングにチャレンジしてみてください。