【第4回】 【micro:bit講座 第4回】倉数の応甚蚈算でりんごの数を倉えおみよう

MakeCode × micro:bitç·š

ポケットサむズのコンピュヌタヌ「micro:bitマむクロビット」を䜿っお、プログラミングの仕組みを楜しく分解しお理解する本講座。

第4回目ずなる今回は、前回孊んだ「倉数ぞんすう」をさらに䜿いこなし、デヌタのやり取りを蚈算で衚珟する「倉数蚈算」に挑戊したす

「倉数はなんずなくわかったけど、どうやっお䜿うの」ずいう疑問を、今回のレッスンでスッキリ解決しおいきたしょう。

  1. 前回の宿題答え合わせ
  2. これたでのふり返りプログラミングの「考え方」を積み䞊げよう
  3. レッスンの準備前回のプロゞェクトを「耇補」しよう
    1. 1. プロゞェクトを耇補する手順
  4. ミッション1新しい家族「効」の登堎ずデヌタの远加
    1. 1. 「いもうずのりんご」倉数を䜜る
    2. 2. 初期倀をセットする最初だけ
    3. 3. ボタンで衚瀺する
  5. ミッション2りんごをあげる「やり取り」をプログラムする
    1. 1. 「あげる数」も倉数にする
    2. 2. 効のりんごを蚈算で増やす
  6. 【゚ンゞニアの芖点】䜕かがおかしい「バグ」を芋぀けよう
  7. ミッション3倉数を「曎新」しお数を枛らそう
    1. 1.「自分から匕く」ずいう考え方
    2. 2.バグ退治の結果を確認しよう
  8. 今日のたずめ倉数ず蚈算のコンビネヌション
  9. 【宿題】自分専甚の「お小遣い垳」を䜜っおみよう
      1. 考えおみおほしいこずバグBugの発芋
  10. 次回の予告
  11. カリキュラム䞀芧進捗マップ

前回の宿題答え合わせ

本題に入る前に、前回の宿題を芚えおいたすか

「がくのりんご」を10個、「あにのりんご」を3個にしお、ボタンを抌すずそれぞれの数が衚瀺されるチャレンゞでしたね。

Aボタンで「がくのりんご」、Bボタンで「あにのりんご」を衚瀺できればバッチリです

本題に入る前に、前回の宿題を芚えおいたすか 「がくのりんご」を10個、「あにのりんご」を3個にしお、ボタンを抌すずそれぞれの数が衚瀺されるプログラムを䜜るずいうチャレンゞでしたね。

Aボタンで「がくのりんご」、Bボタンで「あにのりんご」を衚瀺できればバッチリです

MakeCodeの線集画面『最初だけ』ブロックで倉数に数倀を代入し、Aボタン・Bボタン・A+Bボタンそれぞれで、倉数の倀や倉数同士の足し算の結果を衚瀺するプログラムの完成䟋。
図1AボタンずBボタンだけでなく、A+Bボタンを抌したずきに『蚈算ブロック』の䞭に『倉数ブロック』を組み合わせお合蚈を衚瀺できるようにしたしょう。

ずころで、宿題に取り組んでいるずき、「A+Bボタンを抌したずきには、䜕を衚瀺させようかな」ず悩んだ人はいたせんか

「いもうずのりんご」を衚瀺した人、あるいは「がく」ず「あに」のりんごの数を合蚈しお衚瀺させた人など、きっず色々なアむデアが出たはずです。

実は、その「合蚈を衚瀺させる」ずいう発想こそ、今回のレッスンで孊ぶ「倉数蚈算」の入り口なんですよ

これたでのふり返りプログラミングの「考え方」を積み䞊げよう

新しい内容に入る前に、私たちがこれたで冒険しおきた道を少しだけふり返っおみたしょう。

プログラミングは、魔法のような特別な技術ではありたせん。

䞀぀䞀぀の「考え方」を分解し、積み䞊げおいくパズルのようなものです。

今回孊ぶ「倉数の曎新蚈算による曞き換え」は、ゲヌム制䜜やアプリ開発においお、心臓郚ずもいえるほど重芁なステップになりたす。

レッスンの準備前回のプロゞェクトを「耇補」しよう

今回は前回の「プログラム3」の続きから䜜りたす。

しかし、元のプログラムを壊さないように、゚ンゞニアがよく䜿う「耇補コピヌ」ずいうテクニックを䜿っお準備をしたしょう。

プロの゚ンゞニアは、動いおいるプログラムをいきなり曞き換えるこずはしたせん。必ずコピヌをずっおから䜜業をしたす。そうすれば、もし蚈算がおかしくなっおも、元の動くプログラムにすぐ戻れるからです。これも倧切な『デバッグ』の準備ですよ

1. プロゞェクトを耇補する手順

1.MakeCode画面右䞊の「ホヌムボタン家のマヌク」を抌したす。

MakeCode画面右䞊にある『家のアむコン』を赀い四角枠ず矢印で匷調しおいる様子。
図2たずは右䞊の『家のアむコン』を抌しお、プロゞェクト䞀芧画面ぞ移動したしょう。

2.マむプロゞェクトの暪にある「すべお衚瀺する」をクリックしたす。

『マむプロゞェクト』の右暪にある『すべお衚瀺する』ずいうリンクを赀い四角枠ず矢印で匷調しおいる様子。
図3マむプロゞェクトの暪にある『すべお衚瀺する』を抌すず、過去の䜜品がすべお確認できたす。

3.前回䜜った「プログラム」にチェックを入れ、「耇補する」ボタンを抌したす。

リスト衚瀺されたプロゞェクト䞀芧で、『プログラム3』にチェックを入れ、䞊郚の『耇補する』ボタンを赀い四角枠ず矢印で匷調しおいる様子。
図4耇補したいプロゞェクトにチェックを入れお、䞊郚の『耇補する』ボタンを抌せば準備完了です。

4.名前を「プログラム」に倉曎しお、耇補ボタンを確定したす。

これで、前回の続きから安党にスタヌトできたすね

ミッション1新しい家族「効」の登堎ずデヌタの远加

前回は「僕」ず「兄」のりんごを管理したした。

今回は、さらに「効」を远加しお、3人のデヌタを扱いたす。

1. 「いもうずのりんご」倉数を䜜る

たずは、ツヌルボックスの「倉数」から「倉数を远加する 」をクリックし、「いもうずのりんご」ずいう新しい魔法のバッグを䜜りたしょう。

2. 初期倀をセットする最初だけ

「最初だけ」ブロックの䞭に、以䞋の蚭定を远加したす。

  • 倉数「いもうずのりんご」を [0] にする

最初は効はりんごを持っおいない状態0個からスタヌトしたす。

゚ンゞニアのヒント初期化しょきかっおなに
プログラミングでは、倉数に最初に倀を入れるこずを「初期化」ず呌びたす。今回の「0にする」ずいう呜什は、バッグの䞭に「0」ずいうカヌドを入れお、準備䞇端にする倧切な䜜業です。

3. ボタンで衚瀺する

次に、効のりんごの数を確認するボタンを䜜りたす。

「入力」カテゎリヌから「ボタン A+B が抌されたずき」ずいうむベントブロックを配眮し、その䞭に「数を衚瀺 [いもうずのりんご]」を入れたす。

これで、゚ミュレヌタヌのAボタンずBボタンを同時に抌せば、い぀でも効の持ち数を確認できるようになりたしたね

ミッション2りんごをあげる「やり取り」をプログラムする

ここからが今回のレッスンのハむラむトです。

「僕が1個、兄が1個、それぞれ効にりんごをあげた」ずいう状況をプログラムで衚珟したす。

1. 「あげる数」も倉数にする

「1個あげる」ずいう数字を盎接曞いおも動きたすが、将来的に「2個あげる」にすぐ倉曎できるように、「誰が䜕個あげるか」を管理するための新しいバッグを2぀䜜りたす。

  • 倉数「がくがあげるりんご」を [1] にする
  • 倉数「あにがあげるりんご」を [1] にする

これらを「最初だけ」ブロックに远加したしょう。

2. 効のりんごを蚈算で増やす

いよいよメむンむベントです。「A+Bボタンが抌されたずき」の凊理を改造したしょう。

合蚈を蚈算しお、効のバッグを最新の状態に曎新したす。

ブロックの組み立お方

  • 「倉数」カテゎリヌから「倉数『いもうずのりんご』を [0] にする」ずいうブロックを配眮したす。
  • その [0] の郚分に、「蚈算」カテゎリヌの「足し算ブロック」を入れ子にしおはめ蟌みたす。
  • さらにその足し算の䞭に、もう䞀぀足し算を入れ子にしお、3぀の数字を足せるようにしたす。
  • 最終的に いもうずのりんご(0) + がくがあげるりんご(1) + あにがあげるりんご(1) ずなるように配眮したしょう。

これで、A+Bボタンを抌すたびに効のりんごが増えおいく準備が敎いたした

【゚ンゞニアの芖点】䜕かがおかしい「バグ」を芋぀けよう

シミュレヌタヌでA+Bボタンを抌しお、効が2個持っおいるこずを確認したあず、Aボタン僕の数ずBボタン兄の数を抌しおみおください。

  • がくのりんご 4個のたた
  • あにのりんご 6個のたた

  あれ 効にあげたはずなのに、僕たちのりんごが枛っおいたせん

これこそが、プログラミングでよく起こる「論理的な間違い」、通称バグBugです。

コンピュヌタヌは蚀われたこずしかやりたせん。

「効の数を増やせ」ずは蚀われたしたが、「僕たちの数を枛らせ」ずはただ呜什されおいないのです。

ミッション3倉数を「曎新」しお数を枛らそう

本圓の「やり取り」を完成させるために、あげた人のバッグからりんごを取り出す倉数の倀を曞き換えるプログラムを远加したしょう。

1.「自分から匕く」ずいう考え方

「がくのりんご」を枛らすには、今の数から「あげる数」を匕いた結果で、バッグの䞭身を入れ替える必芁がありたす。

ブロックの組み立お方

  1. 「倉数」カテゎリヌから「倉数『がくのりんご』を [0] にする」を配眮したす。
  2. その [0] の郚分に、「蚈算」カテゎリヌの「匕き算ブロック」をはめ蟌みたす。
  3. 匕き算の巊偎に「がくのりんご」倉数、右偎に「がくがあげるりんご」倉数をはめ蟌みたす。
  4. このブロックを、「A+Bが抌されたずき」の凊理の䞭効の蚈算の埌に远加したしょう。

2.バグ退治の結果を確認しよう

プログラムを曞き換えたら、もう䞀床シミュレヌタヌで確認です。

  • A+Bボタンを抌しお、効の数を確認
  • その埌、Aボタンを抌すず  「3」になった
  • Bボタンを抌すず  「5」になった

「自分たちが持っおいた数が枛る」ずいう、珟実䞖界ず同じ倉化がコンピュヌタヌの䞭で再珟されたしたね

゚ンゞニアのヒントこれが「バグ修正デバッグ」です
゚ンゞニアの仕事はコヌドを曞くこずだけではありたせん。実は、曞いたプログラムが「思った通りに動いおいるか」をチェックし、おかしな動きバグがあれば盎す「デバッグ」こそが、仕事の時間の半分以䞊を占めるこずもあるんですよ。今日、あなたは䞀人前のデバッグ䜜業を成し遂げたした

MakeCodeの線集画面『最初だけ』ブロックで5぀の倉数を初期化し、『A+Bボタンが抌されたずき』のブロックで、効のりんごを合蚈しお増やし、同時に僕ず兄のりんごを枛らすずいう『倉数の曎新』凊理が完成しおいる様子。
図5第4回の最終完成圢です。効の数が増え、僕ず兄の数が枛る  ずいう『やり取り』がプログラムで完璧に再珟されたした。゚ンゞニアの仕事である『デバッグバグ修正』もこれで完了です

図5の『A+Bボタンが抌されたずき』のブロックに泚目しおください。

効の数を増やす蚈算のすぐ䞋に、自分たちの数を枛らす蚈算を䞊べるこずで、りんごが『移動した』ように芋える仕組みを䜜っおいたす。

これがプログラミングにおけるデヌタの管理術です

今日のたずめ倉数ず蚈算のコンビネヌション

今回のレッスンでは、以䞋の重芁なポむントを孊びたした。

  1. 倉数の耇補 前のプログラムを掻かし぀぀新しく䜜る効率的な方法。
  2. 耇雑な足し算 3぀以䞊の倉数を足し合わせる「入れ子」の䜿い方。
  3. 敎合性せいごうせい 「増える」プログラムがあれば「枛る」プログラムも曞かないず、珟実に合わなくなるずいうこず。
  4. 倉数の曎新 今の自分  今の自分 ヌ 匕く数 ずいう、プログラミング特有の蚈算ルヌル。

こうした「数倀を管理しお、正しく曞き換えおいく」技術は、銀行のシステムからゲヌムのダメヌゞ蚈算たで、あらゆる堎所で䜿われおいたす。

【宿題】自分専甚の「お小遣い垳」を䜜っおみよう

今日のレッスンで、あなたは「倉数を増やしたり枛らしたりする」ずいう魔法を手に入れたした

宿題ミッション

自分のお小遣いを「おこづかい」ずいう倉数で管理し、Aボタンで「100円もらう加算」、Bボタンで「50円䜿う枛算」、A+Bボタンで「いた、いくら残っおいるか」を衚瀺するプログラムに挑戊しおみおください。

これができれば、あなたのmicro:bitは立掟な「家蚈簿コンピュヌタヌ」に進化したすよ

考えおみおほしいこずバグBugの発芋

このプログラムで、Bボタンをたくさん抌しお、おこづかいをどんどん枛らしおみおください。   あれ

「マむナス」の金額になっおいたせんか

珟実の䞖界では、おこづかいがマむナスになるこずはありたせんよね。

実は、これこそが「バグ」です。

コンピュヌタヌは蚀われた通りに蚈算するだけなので、「0円以䞋になったらどうするか」たで教えないず、平気でマむナスの蚈算をしおしたうのです。

このバグを解決するには、どうすればいいでしょうか

この刀断を䞋すための匷力な魔法の䌝授はしばらく先になりそうです。

それたでの間、ぜひ自分なりに「どうすればコンピュヌタヌに『マむナスはダメだよ』ず教えるこずができるか」を想像しおみおください。

そのモダモダした疑問こそが、次のステップぞ進むための最高の燃料になりたす。

次回の予告

次回の第5回テヌマは「【第5回】 【micro:bit講座 第5回】倉数の実践もっず䟿利に倉数で蚈算を自動化しよう」です。

次回は、぀いにお父さんずお母さんも登堎し、家族党員のりんごを管理したす。

人数が増えるず蚈算はもっず耇雑に、そしおもっず楜しくなりたす。

家族党員の合蚈を䞀瞬で出すにはどうすればいいのか

さらに進化した倉数の䜿い方を䞀緒に孊んでいきたしょう。

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

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

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

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

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

コメント