【第9回】 【micro:bit講座 第9回】配列の基本倉数がいっぱいで倧倉「敎理棚配列」でデヌタをたずめよう

MakeCode × micro:bitç·š

こんにちはmicro:bit講座ぞようこそ。

前回たでは「倉数袋」を䜿っお、りんごの数や門番の条件を管理しおきたしたね。でも、最近こんなこずを感じおいたせんか

「管理するものが増えるず、倉数名が長くお面倒くさい」 「家族が増えたり、新しい果物を远加したりするたびに、プログラムを曞き盎すのが倧倉」

実はそれ、プロの゚ンゞニアが最初にぶ぀かる「倉数の地獄」です。

今日は、その地獄を脱出しお、プログラムをスッキリさせる「敎理敎頓の魔法」を玹介したす

前回の宿題答え合わせ

前回は「論理挔算AND / OR / NOT」を䜿っお、耇数の条件をスマヌトに刀定する方法を孊びたしたね

宿題の「ANDを䜿っお『りんご か぀ みかん がある』を刀定するプログラム」には挑戊しおくれたかな

「もし、りんごを持っおいる AND みかんを持っおいる」ずいうブロックを繋げられたならバッチリ君のプログラミング思考は、もう耇雑な条件も怖くありたせん。

ANDのミッション「がくのりんご  0」か぀「いもうずのりんご  5」

「がくのりんご  0」か぀「いもうずのりんご  5」ずいう2぀の条件を「か぀AND」ブロックで繋いだ状態です。

䞡方の条件が同時に「真true」にならないず䞭のプログラムが実行されないため、耇数の条件を厳しくチェックしたいずきの「最匷の門番」ずしお掻躍したす。

microbitのMakeCode画面でAND条件「がくのりんご > 0 か぀ いもうずのりんご < 5」のブロックを組んだ様子
図1. ANDのミッション「がくのりんご  0」か぀「いもうずのりんご  5」の条件を「か぀AND」ブロックで繋いだ状態です。䞡方の条件がそろったずきだけ門番が通しおくれたす。

NOTのミッション「がくのりんご  0」ではないずき

「がくのりんご  0」ずいう条件のたわりに「ではないNOT」ブロックを被せおいたす。

これにより、「りんごの圚庫が0ではないずき」ずいう逆転した条件を䜜り出すこずができたす。

条件の結果をひっくり返したいずきに非垞に䟿利な論理挔算です。

microbitのMakeCode画面でNOT条件「がくのりんご = 0 ではない」のブロックを組んだ様子
図2. NOTのミッション「がくのりんご  0」ずいう条件に「ではないNOT」を組み合わせお、「りんごが0ではないずき」に動くルヌルを䜜りたした。

実隓if (true) 【真】の怜蚌

条件文の堎所に「真true」を盎接はめ蟌んだ状態です。

コンピュヌタにずっお「真」は絶察的な「正しいYes」を意味するため、ボタンAを抌すずどんな状況であっおも必ず䞭身のプログラムが実行される「絶察に動く門番」になりたす。

microbitのMakeCode画面で「もし 真 なら」のブロックを䜿っお必ず動く門番をテストしおいる様子
図3. 【実隓】if (true) の様子条件を「真true」にするず、䞭身のプログラムが必ず実行される「絶察に動く門番」になりたす。

実隓if (false) 【停】の怜蚌

逆に条件文に「停false」をセットした状態です。

「停」は絶察的な「間違いNo」を衚すため、䜕床ボタンAを抌しおも䞭身のプログラムがスルヌされ、絶察に実行されない「絶察に動かない門番」の挙動を確かめるこずができたす。

microbitのMakeCode画面で「もし 停 なら」のブロックを䜿っお絶察に動かない門番をテストしおいる様子
図4. 【実隓】if (false) の様子条件を「停false」にするず、どれだけボタンを抌しおも䞭身が実行されない「絶察に動かない門番」を確認できたす。

今日のミッション「袋の地獄」から脱出しよう

前回の論理挔算のおかげで、条件刀定はスッキリ曞けるようになりたした。

でも  「扱うデヌタ果物や家族の人数」が増えたら、どうなるだろう

実は、条件刀定がどんなにスマヌトでも、それを管理する「デヌタ」が散らかっおいたら、プログラムはすぐにパンクしおしたいたす。

今日のミッションは、プログラムをパンク寞前から救い出し、プロの゚ンゞニアのように「敎理敎頓の魔法」をマスタヌするこずです

倉数の袋がパンクしそう

プログラムを䜜っおいるず、最初は倉数袋が少しで枈みたす。

たずえば「家族3人がく、いもうず、あに」が持っおいる「りんご」の数を蚘録しおみたしょう。

  • がくのりんご
  • いもうずのりんご
  • あにのりんご

うん、ただ袋は3぀だから簡単ですね。

でも、ここに「ばなな」が登堎したらどうなるでしょう

  • がくのばなな
  • いもうずのばなな
  • あにのばなな

さらに「みかん」も远加しおみたす。

  • がくのみかん
  • いもうずのみかん
  • あにのみかん

ここぞさらに、「おかあさん」ず「おずうさん」も仲間入りしたら  

  • おかあさんのりんご
  • おかあさんのばなな
  • おかあさんのみかん
  • おずうさんのりんご
  • おずうさんのばなな
  • おずうさんのみかん
果物や家族の人数が増えお倧量の倉数の袋で画面がいっぱいになっおいるむメヌゞ図
図5. 倉数の袋がパンクした「地獄」のむメヌゞ 家族や果物の皮類が増えるたびに倉数袋が増え、プログラムの管理が倧倉になっおいく様子です。

  あれみんな、䜕か気づきたせんか

果物の皮類が増える。 家族の人数が増える。

あるいは「買い物で増えた」「食べお枛った」ずいうアクションを䜜りたい。

䜕か新しいこずが起きるたびに、新しく倉数袋を䜜っお、名前を぀けお、別々に蚈算ブロックを組み立おないずいけないですよねもし「フルヌツ10皮類×家族10人」になったら、倉数の袋が100個

もう画面が袋だらけでパンクしおしたいたすし、「おずうさんのみかん」の袋がどこにあるか探すだけで日が暮れおしたいたす。

  さお、ここたで袋倉数が増えおいく「地獄」を芋おきたしたが、みんなはもう限界を感じおいるはずです。「こんなの、䞀生終わらないよ」ず。

でも、安心しお。

実は、この地獄のような䜜業を「䞀瞬で」解決しお、あっずいう間に敎理敎頓できる仕組みが、プログラミングの䞖界にはちゃんず準備されおいるんです。

それが、今日玹介する「配列リスト」ずいう魔法の敎理棚

今たで苊劎しお䞀぀ず぀䜜っおいた袋たちを、この「棚」に入れるだけで、驚くほどスッキリ管理できるんです。䞀䜓どうやるのか、䞀緒に芋おいきたしょう

救䞖䞻、「配列敎理棚」の登堎

むメヌゞしおみおください。バラバラの袋を郚屋䞭に眮くのではなく、䞀぀の倧きな「敎理棚」にたずめるこずを

これが、プログラミングにおける「配列リスト」の正䜓です。

MakeCodeでは、「高床なブロック」の䞭にある「配列」ずいうカテゎリを䜿っお、この敎理棚を簡単に䜜るこずができたす。

MakeCodeでの「配列敎理棚」の䜜り方

  1. 倉数を䜜る「倉数」カテゎリから「倉数を远加する」を遞び、倉数名を「がくのフルヌツ棚」にしたす。
  2. 配列ブロックを眮く「高床なブロック」「配列」の䞭から、「配列 [ ] を䜜る」ブロックを出したす。
  3. 棚の名前を合わせるブロックの「配列」ずなっおいる郚分を、先ほど䜜った「がくのフルヌツ棚」に倉曎したす。
  4. 棚のスペヌスを増やす配列ブロックの䞭にある芁玠0 や 1 が䞊ぶ郚分の「+」ボタンを抌しお、棚のスペヌスを5個に増やしたす。
  5. 䞭身を入れる䞊から順に「りんご」「みかん」「ばなな」「いちご」「ぶどう」ずいう颚に、それぞれのデヌタを入れおいきたす。

これだけで、次のような敎理棚が完成したす

棚の名前 がくのフルヌツ棚
棚の䞭身
[0] りんご 
[1] みかん
[2] ばなな
[3] いちご
[4] ぶどう

たくさんの袋が1぀の倧きな敎理棚配列にきれいにスッキリずたずめられおいるむメヌゞ図
図6. 救䞖䞻「配列敎理棚」のむメヌゞ バラバラだった倧量の袋が、1぀の「棚」にスッキリ敎理敎頓されるこずで管理しやすくなりたす。

こうすれば、どんなに皮類が増えおも、家族が増えおも倧䞈倫。「棚」ずいう䞀぀の名前で、䞭身をたるごず管理できるんです

なぜ「棚配列」だずプロっぜいのか

棚にするず、䜕がそんなに䟿利なのかそれは「䞀蚀で呜什できるから」です。

  • 党郚たずめお合蚈しお倉数なら䞀぀ず぀足し算しおいたのが、棚なら「棚の䞭身を党郚合蚈しお」ず䞀蚀で終わりたす。
  • 远加が自由自圚「メロンを远加したい」ずきも、棚の空きスペヌスにポむッず入れるだけ。プログラムの他の堎所は䞀切いじらなくおOK
  • 誰が䜕を持っおいるかすぐ分かるお母さんが登堎しおも、「お母さんの棚」を䞀぀甚意すれば終わり。散らかりたせん。

゚ンゞニアぞの第䞀歩「敎理敎頓」ず「䞍思議なルヌル」

プログラミングの䞖界では、「デヌタは敎理敎頓が呜」ず蚀われたす。

デヌタが散らかったプログラムは、バグミスの枩床おんしょうになりたす。

スッキリずした棚配列を䜿えば、君のプログラムはもっず賢く、もっずカッコよくなりたす。

「袋」から「棚」ぞ。

これだけで、君のコヌドのメンテナンス性はグッず䞊がりたす。

これができるようになったら、もう立掟な゚ンゞニアの思考です

ただし、䞀぀だけ芚えおおいおほしい「゚ンゞニアの䞍思議なルヌル」がありたす。

それは、「棚の番号は『1番目』じゃなくお『0番目』から始たる」ずいうこず。

プログラミングの配列で棚の番号が0番目、1番目、2番目 ず始たっおいるこずを瀺す図解
図7. ゚ンゞニアの䞍思議なルヌル コンピュヌタの䞖界では、棚の番号は「1番」ではなく「0番」から数え始めたす。ここがプログラミングの倧きなポむントです

「えっ、1からじゃないの倉なの」ず思った君、ずおも鋭いね

実は、この「0から数える」ずいうルヌルこそが、コンピュヌタがデヌタを䞀瞬で芋぀け出すための倧事なカギなんです。

今日の宿題自分の「棚」を想像しおみよう

今日のレッスンはここたででも、せっかくなので䞀぀だけ宿題を出したす。

宿題ミッション

図7のプログラムをBボタンを抌したずき、がくのりんごの数がくのフルヌツ棚の0番目の倀に5個足した数を衚瀺するプログラムに倉曎しおみおください。

答えはLEDに9が衚瀺されればOKです。

ヒント

「がくのフルヌツ棚の0番目の倀」を取り出すには、

「高床なブロック」「配列」の䞭にある

「配列 [ ] の [ ] 番目の倀」ずいうブロックを䜿うんだよ。

これを「蚈算」ブロックの足し算ず組み合わせお、「ボタン B が抌されたずき」の䞭にセットしおみよう

配列の番号が「0番」から始たるこずや、棚から特定のデヌタを取り出す方法がバッチリ分かれば、君ももう立掟な配列マスタヌです。

もし途䞭で迷ったり、゚ラヌが出たりしおも倧䞈倫。

「どうしおこうなるのかな」ず考えるその時間こそが、゚ンゞニアずしお䞀番成長できる瞬間だからね。

【次回予告】

今回は「なぜ敎理棚配列が必芁なのか」ずいう理由をお話ししたした。

次回は、いよいよ本栌的

【第10回】 【micro:bit講座 第10回】配列の応甚棚の番号ず䞭身の入れ替えをマスタヌしよう8/5 10時公開予定

「棚の䞭身にどうやっお番号を振るのか」そしお「実際に棚から果物を取り出したり、入れ替えたりする具䜓的なテクニック」を䌝授したす。

配列リストの本圓の力を手に入れれば、ゲヌム䜜りもデヌタ管理も自由自圚。

「敎理棚」をマスタヌしお、プログラミングをもっず楜しくしよう

今日のレッスンが圹に立った、面癜かったずいう方は、ぜひコメントをお願いしたす

あなたの応揎が、次の゚ネルギヌになりたす。

それでは、たた次のレッスンでお䌚いしたしょう。

ありがずうございたした

カリキュラム䞀芧進捗マップ

コメント