本記事では、Scratch(スクラッチ)3.0で使える「変数」関連のブロックを実例付きで分かりやすく解説しております。
「変数」関連のブロックは、一時的に値を保存することができたり、プログラムの状況に応じて保存した値を好きな様に変えることができたり、保存した値を使って計算したりと、とても便利なブロックです。
以下でもっと具体的に解説します。
Scratch(スクラッチ)のプログラミングを学ぶ上で、個々のブロックの本質を理解することはとても大事なことだと考えます。
お役に立てれば幸いです。
Scratch(スクラッチ)の基本的なことや全般的な内容に関しましては以下の別記事をご覧ください。
「変数」関連のブロックの解説(Scratch3.0)
本記事で解説する内容や押さえておきたいポイントは以下のとおりです。
- 変数とは
- 変数の作り方
- 変数関連のブロックのご紹介
具体的な使い方を実例をまじえて解説します。
変数とは
変数とは、プログラム内で使用する値を入れる箱と考えてください。
始めから用意されている「値ブロック」は便利だが自由度がない
Scratch(スクラッチ)で作るプログラムでは、色々な値を使います。
通常は、値は「値ブロック」の中に格納されていまして、「値ブロック」をプログラム内で使って利用します。
Scratch(スクラッチ)で用意されている「値ブロック」には、ステージ上のスプライトの位置を表す「x座標」や「y座標」、スプライトの「大きさ」、「タイマー」など、他にも色々用意されています。
これらの「値ブロック」は、必要な時にいつでも自分のプログラムで使用可能です。
初めの内は用意されている値ブロックで満足できますが、Scratch(スクラッチ)に慣れていくにしたがって何か物足りなくなっていくはずです。
例えば、
「○と聞いて待つ」ブロックを使って5個の質問をして、全部の質問が終わった後で5個の質問の「答え」を使って文章を作る
ようなプログラムを作りたいとします。
「○と聞いて待つ」ブロックの「答え」は、複数の回答を受けますと、次々に上書きされてしまいますので、最初に入力してもらった内容は2個目の回答をしてもらったタイミングで消えてしまいます。
この場合は、「1個目の質問の答え」、「2個目の質問の答え」・・・と5個の答えを保存するためのブロックがあればうまくいきそうですよね。
これを実現するのが「変数」なのです。
「変数」ブロックを使うことで値を自由に使えるようになる
変数を使うには、値を入れる箱を事前に作る必要があります。(宣言)
作るときには、その箱に名前を付けましょう。名前を付けることで、どの箱に何の値を入れるかわかりやすくなります。
箱を作ったら、箱の名前を指定して好きな値を入れます。(代入)
入れた値は、好きな時に値を利用することができます。(参照)
変数を使うことで、前の節で挙げました水色枠内のプログラムを作ることが可能になります。
例えば、「回答1」、「回答2」、「回答3」、「回答4」、「回答5」という名前の変数ブロックを用意して、質問の回答内容を1問回答が終わるたびに、それぞれの値を変数ブロックに入れます。
5問全ての回答がそろいましたら、5個の変数ブロックに入っている値を使って文章を作るプログラムを作れば完成です。
言葉だけでは分かりづらいと思いますので、簡単なプログラムを後ほどご紹介します。
変数の作り方・消し方・変数名の変え方
上の例題で出てきました変数を実際に作ってみましょう。
さらに「変数」ブロックを消したり、作った後で変数名を変える方法についても解説します。
変数の作り方
ためしに「回答1」と言う名前の、1個目の質問の答えを入れる変数を作成してみます。
コードエリアの「変数」カテゴリのところにあります「変数を作る」という四角いボタンを押して下さい。
画面が青くなって下のメニューが表示されます。
「新しい変数名」の入力欄に変数名を入力して「OK」ボタンを押しますと、入力した変数名の値ブロックができあがります。
変数名を「回答1」と入力して「OK」ボタンを押しました。
※「すべてのスプライト用」と「このスプライトのみ」は「すべてのスプライト用」を選択することをおすすめします。「このスプライトのみ」を選択しますと、別のスプライトで同じ名前の「変数」ブロックを作ることが可能となりますので、慣れてない方が利用されますとトラブルの元になります。とはいいましても、分かりやすくなる場合もありますので、理解できている方のみご利用になられた方が良いと考えます。
ブロックパレット内に「回答1」ブロックが作られているのが確認できます。
「回答1」ブロックの左側についている「✔(チェック)」は、付けることでステージエリア内に「変数」ブロックの値が常に表示されるようになります。
不要でしたらチェックを外してください。
作成した「変数」ブロックは自由にプログラムで使用することができます。
変数の消し方
「変数」ブロックを消す場合は、ブロックパレット内にある消したい「変数」ブロックにマウスポインタ―を置いて右クリックします。
下図のメニューが出ますので「変数”xx”を削除」を選択しますと、「変数」ブロックが消えます。
削除した「変数」ブロックをすでにプログラム内で使用しているは、一緒に削除されます。
後ほど解説します「△を〇にする」や「△を○ずつ変える」、「変数△を表示する」、「変数△を隠す」でも変数の削除は可能ですが、「変数」ブロックで削除する方が分かりやすく安全だと思います。
変数名の変え方
「変数」ブロックを作ったあとで名前が気に入らなくなったり、プログラムを作っていくうちに都合が悪くなった場合は、いつでも変数名を変えることができます。
「変数」ブロックを作ってすぐでしたら、消して作り直せばよいのですが、プログラム内ですでに使っている場合は、修正が大変ですよね。
場合によっては、修正ミスでプログラムの動きがおかしくなる可能性もあります。
変数名を変える場合は、ブロックパレット内の名前を変えたい「変数」ブロックにマウスポインタ―を置いて右クリックします。
下図のメニューが出ますので「変数名を変更」を選択してください。
「変数名を変更」ウインドウが表示されますので、新しい変数名を入力して「OK」ボタンを押して下さい。
これで、ブロックパレットの変数名もスクリプトエリア内のすでに使っている「変数」ブロックの名前も変えることができます。
後ほど解説します「△を〇にする」や「△を○ずつ変える」、「変数△を表示する」、「変数△を隠す」でも変数の名前を変えることは可能ですが、「変数」ブロックで行う方が分かりやすく安全だと思います。
変数関連のブロックのご紹介
変数関連のブロックは、上でご紹介しました値ブロックの「変数」ブロックを含めて5種類あります。
順に解説していきます。
「変数」ブロック
すでに解説しました「変数」ブロックについて補足させてください。
「変数」ブロックの形状は値ブロックです。
他の値ブロックとは異なってまして、ブロックに格納されている変数の値を教えてくれるだけでなく、お好きな値を格納することができます。
格納できる文字は、半角文字、全角文字、記号などScratch(スクラッチ)で扱える文字でしたらなんでも大丈夫だと思います。
全ての文字を試したわけではありませんが、今まで色んな値を入れていて、おかしな表示になったことはありません。
「変数」ブロックに値を入れる場合は、次にご紹介しますブロックを使用します。
「△を○にする」ブロック
「△を○にする」ブロックは、△部分に指定した変数に○部分の値を入れることができます。
「△を○にする」ブロックはスタックブロックです。ブロックの上下に色んなブロックを重ねられます。
ブロックに指定可能な値は以下のとおりです。
指定する場所 |
---|
(←赤枠部分) |
入力方法 |
プルダウンメニュー |
指定する内容 |
変数名 変数名を変更 変数”xx”を削除 |
単位 |
なし |
入力する文字種 |
なし |
備考 |
特記無し |
指定する場所 |
---|
(←赤枠部分) |
入力方法 |
手動、値ブロック |
指定する内容 |
変数に入れる値をセットする |
単位 |
なし |
入力する文字種 |
半角文字、全角文字、記号など何でも |
備考 |
特記無し |
プルダウンメニューを開きますと、現在使用可能な「変数」ブロックの一覧が表示されます。
表示された中から目的の変数を選択してください。
※「変数名を変更」と「変数”xx”を削除」は、ここでは使用しません
ブロック内の右の○部分に値を入れますと、「変数」ブロックにその値が入ります。
「変数の作り方」のところで作成した「回答1」ブロックに「こんばんは」という文字を入れてみましょう。
「回答1」ブロックに入れた文字をネコスプライトが答えてくれました。
「△を○ずつ変える」ブロック
「△を○ずつ変える」ブロックは、実行するたびに変数に指定した数が足されていきます。
「△を○ずつ変える」ブロックはスタックブロックです。ブロックの上下に色んなブロックを重ねられます。
ブロックに指定可能な値は以下のとおりです。
指定する場所 |
---|
(←赤枠部分) |
入力方法 |
プルダウンメニュー |
指定する内容 |
変数名 変数名を変更 変数”xx”を削除 |
単位 |
なし |
入力する文字種 |
なし |
備考 |
特記無し |
指定する場所 |
---|
(←赤枠部分) |
入力方法 |
手動、値ブロック |
指定する内容 |
・使用する変数を指定 ・変数の値を変化させる数を指定 |
単位 |
なし |
入力する文字種 |
変化させる数は半角数字 |
備考 |
もし変数に数字以外が入力されていた場合は 変数の値は0として扱う |
「△を○ずつ変える」ブロックは、△部分に指定した「変数」ブロックの値に○に指定した数値を足します。
〇にマイナスの数値を指定することで、結果的に数値を引き算することも可能です。
Scratch(スクラッチ)に用意されてます演算ブロックをご存知の方でしたら、「○+△」ブロックや「○-△」ブロックを使えば良いのでは?、と思われる方もいらっしゃるかもしれませんね。
たしかにおっしゃる通りかもしれません。
違いを実感していただくために、実際にプログラムを作ってみましたのでご覧ください。
九九の三の段を表示するプログラムを例に説明してみます。
最初は「△を○ずつ変える」ブロックを使用した例です。
ステージエリア上部の緑旗アイコンをクリックしてプログラムを起動した後、ステージ内をマウスでクリックするたびにネコスプライトが九九の三の段を言ってくれます。
プログラムの下の方で「変数を1ずつ変える」ブロックを使用しました。
「9回繰り返す」ブロックで、変数を1ずつ増やしながら三の段の言う処理を9回繰り返しています。
次は「○+△」ブロックを使用した例です。違いは「変数を(変数+1)にする」ブロックの部分だけです。
いかがでしょう。
「△を○ずつ変える」ブロックを使った方が、見ただけで変数を1ずつ増やしていってるんだな、ということが分かりやすいと思いませんか?
プログラムを作成してすぐの場合は、どちらの方法でも良いとは思いますが、10年後にプログラムを見返したときに、どちらの方が分かりやすいでしょうか。
他人がプログラムを見たときに、どちらの方が理解しやすいと思いますか。
とはいいましても、あなたがお使いになりたいブロックをご利用になるのが一番ですね。
「変数△を表示する」ブロックと「変数△を隠す」ブロック
最後は「変数△を表示する」ブロックと「変数△を隠す」ブロックです。
ブロックパレット内の「変数」ブロックの左側に「✔(チェック)」がありまして、チェックを入れますと変数の値がステージエリア内に表示されることは上の方で説明しました。
「変数△を表示する」ブロックと「変数△を隠す」ブロックは、それをプログラム内で行うためのブロックになります。
つまり、「変数△を表示する」ブロックが実行されますとステージエリア内に変数の値が表示され、「変数△を隠す」ブロックが実行されますと表示されていた値が消えます。
ゲームなどのプログラムを作成して、ゲーム中は得点を表示させて、終わると表示を消す、などのようなことが実現できます。
5つの質問の答えを合わせて文章を作るプログラム
変数関連ブロックのまとめとしまして、最初に例題として書きましたプログラムを実際に作ってみましょう。
「○と聞いて待つ」ブロックを使って5個の質問をして、全部の質問が終わった後で5個の質問の「答え」を使って文章を作る
質問の内容や数、作る文章を変えてみたりして、色んなプログラムを作ってみてください。
1つの例を挙げさせていただきます。
ステージエリア上部の緑旗アイコンをマウスでクリックして実行してみてください。
まとめ
これからScratch(スクラッチ)を始められる方は、変数ブロックの必要性を実感できないかもしれませんが、プログラミングに慣れてくるといつかきっと変数ブロックのありがたみが分かるようになると思います。
変数カテゴリのブロックの使い方を理解して楽しいプログラムを作ってみましょう!
本サイトでは他にもScratch(スクラッチ)に関する記事を公開しております。
よろしかったらご利用ください。
最後までお読みいただきありがとうございました!
(参考)
困ったときはいつもこのサイトを参照しています
コメント