これより、ビジュアル・プログラミングでの本格的なプログラミング技術解説に入っていきますので、これまでのプログラミング3要素(順次処理・分岐処理・反復処理)に加え、以下のような技術的な知識の習得が必要となります。(Scratch の基本的な操作方法やブロックの意味などは省略します。)
① イベント | |
プログラムは、勝手に実行されることはありません。何らかの“きっかけ”があってはじめて実行されます。例えば、「ボタンが押されたら」「9時になったら」「呼び出されたら」などのような“きっかけ”が必要です。 「イベント=きっかけ」と覚えてください。 |
|
② スプライト(Scratch特有) | |
Scratch 特有のスプライト(猫やリンゴなど)は、単純に画面上に表示されるキャラクターを意味するだけではなく、それぞれが別のプログラムということを表しています。 猫のスプライトなら猫に対するプログラムを作成し、リンゴはリンゴといった「別プログラム」という重要な概念です。 イベントの「メッセージ」を使って互いにやり取りすることで、連携したプログラムを作成することもできます。 |
|
③ 変数 | |
すべてのデータ形式(数値、文字、真偽、日付)を格納することができる入れ物です。主に一時的に保存され、中のデータも頻繁に変わることから「変数」と呼ばれます。変数に名前を付けたり、中身のデータを取り出すこともできます。 ・「すべてのスプライト用」 すべてのスプライトとステージが使用できる変数 ・「このスプライトのみ」 この変数を作成したスプライトだけが使用できる |
|
<変数の特性> ・変数とは、一時的にデータを格納するもの ・[変数]に10を代入すると[変数]の値は、「10」になる。 ・[変数]の値に対して、20を加えたい場合、そのまま[変数]に20を代入すると、上書きされて[変数]の値が、20になってしまうため、代入前に計算を行う。まず[変数]の現在の値を取り出してから、20を加え、それを再度、[変数]に代入して戻してあげる必要がある。 |
④ 同期 | |
●猫スプライト 1.緑の旗が押されたら 2.猫が[メッセージ1]を送って待つ ●林檎スプライト 3.林檎が[メッセージ1]を受け取った時 4.林檎を180度回す ●猫スプライト 林檎スプライトの「180度回す」が終了したら 5.猫が「こんにちは!」と言う … 同期 |
|
⑤ 非同期 | |
●猫スプライト 1.緑の旗が押されたら 2.猫が[メッセージ1]を送る。送ったら次の3へ 3.猫が「こんにちは!」と言う … 非同期 ●林檎スプライト 1.林檎が[メッセージ1]を受け取った時 2.猫の処理を待たず、林檎を180度回す |
|
⑥定義(関数) | |
【関数】消費税込みの金額を計算します。関数なので、呼び出せばいつでも実行できます。入力値の「100」を関数の引数として渡し、関数内で「100*1.1」を計算。結果をもとに「○と言う」を実行。 |
|
⑦デバッグ | |
[x座標]が50に等しければ、スプライトを10歩動かす。そうでなければ、20歩動かす。という処理の場合 この場合のデバッグ処理は 1.[x座標]そのものをステージ上に表示する 2.真の場合の[10歩動かす]が実行されたかを確認 3.偽の場合の[20歩動かす]が実行されたかを確認 ※[x座標]の値によって処理が分岐するため、この時の[x座標]の値が知りたい。 |
|
簡易的な方法では、「○と言う」ブロックを使用して、データ値が何か、処理がどこを通ったのかがわかります。 ① [x座標=50]の判定する場合、1つ前にブロックを挿入 この時点での[x座標]の値がわかる ②「もし~なら」の場合 真の場合:x座標値の表示と共に、真であることがわかる ③「もし~でなければ」の場合 偽の場合:x座標値の表示と共に、偽であることがわかる ※また、処理がそのまま進んでしまっては困る場合、以下のブロックを使用して、一時的に処理を止めることもできます。 |
|
⑧ 入力制御(入力チェック) | |
入力ボックスから、24を超えた数字が入力されることを想定してチェック処理を入れてはじきます。入力ボックスを使用する場合、こちらが数字を想定していても実際には、文字や全角の数字も入力できてしまうので、プログラム側でこのような制御が必要になります。 |
|
⑨ コメント | |
プログラムは自分で作成して自分だけが見るという範囲で考えがちですが、他の人が見たり、修正したりすることもあり得ます。それを想定して、プログラム内でこの部分は一体何をやっているのか分かりづらい、他の人が見た時に複雑な場合などに、コメントを付けて教えてあげる機能です。 |
|
⑩ エラー処理 | |
これまでのパソコン操作経験で、何度か遭遇することがあった「エラー」です。パソコン画面が固まったりするのも含まれますが、「エラーメッセージ」が画面上に表示されることがあります。 何がダメなのか分かりやすいメッセージもあれば、メッセージを読んでも「で、どうすればいいの?」と、冷淡なメッセージに不親切だなと思われたことも多々あったのではないでしょうか?これは、分かっている想定の範囲内のエラーと、想定外の何かが起こった場合の「例外処理」との2つが存在します。 設計者が想定できる範囲はあらかじめ、その後どのようにすればいいかメッセージに書いたり、制御処理を組み込んでおきます。例えば、「全角は入力できません。」「1~3の範囲で入力してください。」「ファイル形式が違います。」 それ以外の想定できない場合のエラーは、放置するとまったく原因が分からなくなり、復旧作業に多くの時間を要する事態になります。例えば、「Error Number: 3275」「予期せぬエラーが発生しました。」「正常に処理できませんでした。」 それを避けるために「例外処理」として、例えばそこまでの経路やデータを「ログ」というものに書き込んで、修正や復旧作業に役立てています。 |
▼続きはこちら
前掲のレジ精算のプログラムに対して、条件を追加したフローチャートを完成させましょう。 【課題】あなたは、スーパーで買い物をする。それをセルフではなく、 レジ係のいるレジで精算する。 【条件】ただし、割引対象の商品も […]
▼続きはこちら 前掲のレジ精算のプログラムに対して、条件を追加したフローチャートを完成させましょう。 【課題】あなたは、スーパーで買い物をする。それをセルフではなく、 レジ係のいるレジで精算する。 【条件】ただし、 […]
課題:あなたは各駅停車の電車に乗って、目的地A駅で降りる。 【指導1】前提条件として、『あなたと電車の動作をそれぞれ分けて描くこと。電車に乗ったところから スタートする。ただし、乗り換えはなく、A駅は終点ではない […]
課題:あなたは路線バスに乗って、目的地A停留所で降りる。 【指導1】前提条件として『あなたと路線バスの動作をそれぞれに分けて描くこと。路線バスに乗るところからスタートする。ただし、運賃は乗車時に支払い、乗り換えはなく、A […]
救命措置の流れ(AEDの使用と心肺蘇生) 次は、アンプラグド・プログラミングの題材にふさわしい「救命措置の流れ(AEDの使用と心肺蘇生)」です。順番が違った、やるべきことが抜けた、判断を間違えた場合、救える命も救えなくな […]
課題:あなたは横断歩道を“安全に”渡ります。 これまで、アンプラグド・プログラミングの課題の問題点を解消すべく、レーンやステップを組み合わせたフローチャートの描き方を述べてきましたが、次は、交差点の横断歩道を“安全”に渡 […]