こんにちは!micro:bit講座へようこそ。
前回までは「変数(袋)」を使って、りんごの数や門番の条件を管理してきましたね。でも、最近こんなことを感じていませんか?
「管理するものが増えると、変数名が長くて面倒くさい!」 「家族が増えたり、新しい果物を追加したりするたびに、プログラムを書き直すのが大変!」
実はそれ、プロのエンジニアが最初にぶつかる「変数の地獄」です。
今日は、その地獄を脱出して、プログラムをスッキリさせる「整理整頓の魔法」を紹介します!
前回の宿題:答え合わせ
前回は「論理演算(AND / OR / NOT)」を使って、複数の条件をスマートに判定する方法を学びましたね!
宿題の「ANDを使って『りんご かつ みかん がある』を判定するプログラム」には挑戦してくれたかな?
「もし、りんごを持っている? AND みかんを持っている?」というブロックを繋げられたならバッチリ!君のプログラミング思考は、もう複雑な条件も怖くありません。
ANDのミッション:「ぼくのりんご > 0」かつ「いもうとのりんご < 5」
「ぼくのりんご > 0」かつ「いもうとのりんご < 5」という2つの条件を「かつ(AND)」ブロックで繋いだ状態です。
両方の条件が同時に「真(true)」にならないと中のプログラムが実行されないため、複数の条件を厳しくチェックしたいときの「最強の門番」として活躍します。

NOTのミッション:「ぼくのりんご = 0」ではないとき
「ぼくのりんご = 0」という条件のまわりに「ではない(NOT)」ブロックを被せています。
これにより、「りんごの在庫が0ではないとき」という逆転した条件を作り出すことができます。
条件の結果をひっくり返したいときに非常に便利な論理演算です。

実験:if (true) 【真】の検証
条件文の場所に「真(true)」を直接はめ込んだ状態です。
コンピュータにとって「真」は絶対的な「正しい(Yes)」を意味するため、ボタンAを押すとどんな状況であっても必ず中身のプログラムが実行される「絶対に動く門番」になります。

実験:if (false) 【偽】の検証
逆に条件文に「偽(false)」をセットした状態です。
「偽」は絶対的な「間違い(No)」を表すため、何度ボタンAを押しても中身のプログラムがスルーされ、絶対に実行されない「絶対に動かない門番」の挙動を確かめることができます。

今日のミッション:「袋の地獄」から脱出しよう!
前回の論理演算のおかげで、条件判定はスッキリ書けるようになりました。
でも……「扱うデータ(果物や家族の人数)」が増えたら、どうなるだろう?
実は、条件判定がどんなにスマートでも、それを管理する「データ」が散らかっていたら、プログラムはすぐにパンクしてしまいます。
今日のミッションは、プログラムをパンク寸前から救い出し、プロのエンジニアのように「整理整頓の魔法」をマスターすることです!
変数の袋がパンクしそう!?
プログラムを作っていると、最初は変数(袋)が少しで済みます。
たとえば「家族3人(ぼく、いもうと、あに)」が持っている「りんご」の数を記録してみましょう。
ぼくのりんごいもうとのりんごあにのりんご
うん、まだ袋は3つだから簡単ですね。
でも、ここに「ばなな」が登場したらどうなるでしょう?
ぼくのばなないもうとのばななあにのばなな
さらに「みかん」も追加してみます。
ぼくのみかんいもうとのみかんあにのみかん
ここへさらに、「おかあさん」と「おとうさん」も仲間入りしたら……?
おかあさんのりんごおかあさんのばななおかあさんのみかんおとうさんのりんごおとうさんのばななおとうさんのみかん

……あれ?みんな、何か気づきませんか?
果物の種類が増える。 家族の人数が増える。
あるいは「買い物で増えた」「食べて減った」というアクションを作りたい。
何か新しいことが起きるたびに、新しく変数(袋)を作って、名前をつけて、別々に計算ブロックを組み立てないといけないですよね?もし「フルーツ10種類×家族10人」になったら、変数の袋が100個!
もう画面が袋だらけでパンクしてしまいますし、「おとうさんのみかん」の袋がどこにあるか探すだけで日が暮れてしまいます。
……さて、ここまで袋(変数)が増えていく「地獄」を見てきましたが、みんなはもう限界を感じているはずです。「こんなの、一生終わらないよ!」と。
でも、安心して。
実は、この地獄のような作業を「一瞬で」解決して、あっという間に整理整頓できる仕組みが、プログラミングの世界にはちゃんと準備されているんです。
それが、今日紹介する「配列(リスト)」という魔法の整理棚!
今まで苦労して一つずつ作っていた袋たちを、この「棚」に入れるだけで、驚くほどスッキリ管理できるんです。一体どうやるのか、一緒に見ていきましょう!
救世主、「配列(整理棚)」の登場!
イメージしてみてください。バラバラの袋を部屋中に置くのではなく、一つの大きな「整理棚」にまとめることを!
これが、プログラミングにおける「配列(リスト)」の正体です。
MakeCodeでは、「高度なブロック」の中にある「配列」というカテゴリを使って、この整理棚を簡単に作ることができます。
MakeCodeでの「配列(整理棚)」の作り方
- 変数を作る:「変数」カテゴリから「変数を追加する」を選び、変数名を「ぼくのフルーツ棚」にします。
- 配列ブロックを置く:「高度なブロック」>「配列」の中から、「配列 [ ] を作る」ブロックを出します。
- 棚の名前を合わせる:ブロックの「配列」となっている部分を、先ほど作った「ぼくのフルーツ棚」に変更します。
- 棚のスペースを増やす:配列ブロックの中にある要素(
0や1が並ぶ部分)の「+」ボタンを押して、棚のスペースを5個に増やします。 - 中身を入れる:上から順に「りんご」「みかん」「ばなな」「いちご」「ぶどう」という風に、それぞれのデータを入れていきます。
これだけで、次のような整理棚が完成します!
棚の名前: ぼくのフルーツ棚
棚の中身:
[0] りんご
[1] みかん
[2] ばなな
[3] いちご
[4] ぶどう

こうすれば、どんなに種類が増えても、家族が増えても大丈夫。「棚」という一つの名前で、中身をまるごと管理できるんです!
なぜ「棚(配列)」だとプロっぽいのか?
棚にすると、何がそんなに便利なのか?それは「一言で命令できるから」です。
- 全部まとめて合計して!:変数なら一つずつ足し算していたのが、棚なら「棚の中身を全部合計して!」と一言で終わります。
- 追加が自由自在!:「メロンを追加したい!」ときも、棚の空きスペースにポイッと入れるだけ。プログラムの他の場所は一切いじらなくてOK!
- 誰が何を持っているかすぐ分かる!:お母さんが登場しても、「お母さんの棚」を一つ用意すれば終わり。散らかりません。
エンジニアへの第一歩:「整理整頓」と「不思議なルール」
プログラミングの世界では、「データは整理整頓が命」と言われます。
データが散らかったプログラムは、バグ(ミス)の温床(おんしょう)になります。
スッキリとした棚(配列)を使えば、君のプログラムはもっと賢く、もっとカッコよくなります。
「袋」から「棚」へ。
これだけで、君のコードのメンテナンス性はグッと上がります。
これができるようになったら、もう立派なエンジニアの思考です!
ただし、一つだけ覚えておいてほしい「エンジニアの不思議なルール」があります。
それは、「棚の番号は『1番目』じゃなくて『0番目』から始まる」ということ。

「えっ、1からじゃないの?変なの!」と思った君、とても鋭いね!
実は、この「0から数える」というルールこそが、コンピュータがデータを一瞬で見つけ出すための大事なカギなんです。
今日の宿題:自分の「棚」を想像してみよう!
今日のレッスンはここまで!でも、せっかくなので一つだけ宿題を出します。
図7のプログラムをBボタンを押したとき、ぼくのりんごの数(ぼくのフルーツ棚の0番目の値)に5個足した数を表示するプログラムに変更してみてください。
答えはLEDに9が表示されればOKです。
「ぼくのフルーツ棚の0番目の値」を取り出すには、
「高度なブロック」>「配列」の中にある
「配列 [ ] の [ ] 番目の値」というブロックを使うんだよ。
これを「計算」ブロックの足し算(+)と組み合わせて、「ボタン B が押されたとき」の中にセットしてみよう!
配列の番号が「0番」から始まることや、棚から特定のデータを取り出す方法がバッチリ分かれば、君ももう立派な配列マスターです。
もし途中で迷ったり、エラーが出たりしても大丈夫。
「どうしてこうなるのかな?」と考えるその時間こそが、エンジニアとして一番成長できる瞬間だからね。
【次回予告】
今回は「なぜ整理棚(配列)が必要なのか」という理由をお話ししました。
次回は、いよいよ本格的!
【第10回】 【micro:bit講座 第10回】配列の応用:棚の番号と中身の入れ替えをマスターしよう!(8/5 10時公開予定!)
「棚の中身にどうやって番号を振るのか?」そして「実際に棚から果物を取り出したり、入れ替えたりする具体的なテクニック」を伝授します。
配列(リスト)の本当の力を手に入れれば、ゲーム作りもデータ管理も自由自在。
「整理棚」をマスターして、プログラミングをもっと楽しくしよう!
今日のレッスンが役に立った、面白かったという方は、ぜひコメントをお願いします!
あなたの応援が、次のエネルギーになります。
それでは、また次のレッスンでお会いしましょう。
ありがとうございました!
カリキュラム一覧(進捗マップ)
- 【第0回】 【micro:bit講座 第0回】準備編:MakeCodeでプログラミングの第一歩を踏み出そう!
- 【番外編】保護者の皆様へ:中学生のプログラミング教育、親として大切にしたい「失敗の教え方」
- 【第1回】 【micro:bit講座 第1回】基本の操作:MakeCodeでmicro:bitを動かそう!
- 【第2回】 【micro:bit講座 第2回】計算の基本:計算ブロックで電卓を作ろう!
- 【第3回】 【micro:bit講座 第3回】変数の仕組み:変数という「魔法のバッグ」を使いこなそう!
- 【第4回】 【micro:bit講座 第4回】変数の応用:計算でりんごの数を変えてみよう!
- 【第5回】 【micro:bit講座 第5回】変数の実践:もっと便利に!変数で計算を自動化しよう!
- 【第6回】 【micro:bit講座 第6回】条件分岐の基本:IF文で「もし〜なら」をプログラミングしよう!
- 【第7回】 【micro:bit講座 第7回】IF文のネスト(入れ子):条件の中に条件を入れ、より緻密な判断をしよう!
- 【第8回】 【micro:bit講座 第8回】論理演算(AND / OR / NOT):複数の条件をスマートにまとめよう!
- 【第9回】 【micro:bit講座 第9回】配列の基本:変数がいっぱいで大変!「整理棚(配列)」でデータをまとめよう!
- 【第10回】 【micro:bit講座 第10回】配列の応用:棚の番号と中身の入れ替えをマスターしよう!(8/5 10時公開予定!)
- 【第11回】 【micro:bit講座 第11回】ループ処理:繰り返しを使って効率よく動かそう!(8/12 10時公開予定!)
- 【第12回】 【micro:bit講座 第12回】配列とループの最強コンボ(「リストの要素数だけ繰り返す」)(8/19 10時公開予定!)
- 【第13回】 【micro:bit講座 実践編 第1回】マイクロビットで数当てゲームを作ってみよう!ゲームの仕様・設計からはじめよう! (仮)(8/26 10時公開予定!)
- 【第14回】 【micro:bit講座 実践編 第2回】マイクロビットで数当てゲームを作ってみよう!制約をクリアする設計変更 (仮)(9/2 10時公開予定!)
- 以降


コメント