グローバル変数とローカル変数 | Scrachとロボットプログラミング
全てのプログラミング言語にもつ機能に「変数」があります。そして、その「変数」にもプログラミング全体にわたって有効な「グローバル変数」と関数やループなど一部の機能の中だけで有効な「ローカル変数」があります。スクラッチにはこの「グローバル変数」や「ローカル変数」があるのかどうかを検証してみます。
スクラッチ(Scratch)における変数は2種類
結果的にいうと、スクラッチには「グローバル変数」も「ローカル変数」もありません。
しかし、スクラッチ独特の考えで「そのスプライト専用変数」と「すべてのスプライトに有効な変数」の2種類があります。
つまり、スクラッチ(Scratch)でのプログラミングは基本的にスクラッチごとに記述していくプログラムなので、変数もスプライトごとに切り分けて考えていきます。
2種類の変数の作り方と見分け方
まずはここからスクラッチを起動しスプライトをいくつか用意します。
スプライトの増やし方は、スプライトエリアのアイコンをクリックしスプライトをどんどん追加していくだけです。
今は取り急ぎ上記のように5つのスプライトを用意しました。
新規に変数を作る
それではスクラッチの機能によって、変数を作っていきます。
最上段の「変数を作る」ボタンをクリックし変数作成画面を表示します。
この時のダイアログの下部分に表示されている「すべてのスプライト用」か「このスプライト用」がスクラッチでの変数の2種類の指定です。
では、まずはすべてのスプライト用を選択して変数を作ってみましょう。
変数名はわかりやすく「全変数」としてみます。
そうすると変数の表示部分にひとつ全変数ブロックが追加されています。
では次に一番左側のスプライトをクリックした状態にして変数をもう一つ作ってみましょう。
変数名を「スプライト1の変数」とし、「このスプライトのみ」を選択しOKボタンをクリックします。
スプライト1の変数ができました。
次にスプライト1とは異なる他のスプライトを選択してみてください。
ここでは隣のABBYを選択しました。
そうすると変数部分に先ほど作った「スプライト1の変数」が見当たらなくなり、全変数のみが表示されます。
これで、まずは2つの変数の違いが判りました。
全変数をプログラムで実験します
スプライト1に次のプログラムを作ります。
他のスプライトには下記のプログラムを作ります。
そして、スクラッチのスタートフラグをクリックしてください。
全スプライトが一斉になんですか?と言います。
しかし、スプライト1の変数はほかのスプライトから見ることができないため結局スプライト1のプログラムでしか使用することができない変数ということになります。