【第10回】 【micro:bit講座 第10回】配列の応用:棚の番号と中身の入れ替えをマスターしよう!

MakeCode × micro:bit編

前回の講座では、バラバラだった変数をひとまとめにする「整理棚(配列)」の基本を学びましたね!

一つの名前でたくさんのデータを管理できるようになったことで、プログラムが一気にスッキリしたはずです。

でも、整理棚の便利さはこれだけではありません。

「棚の何番目に、どのデータが入っているんだっけ?」

「リストの中身を途中で別のものに入れ替えたい!」

こんなふうに、データを自由自在に操れるようになると、作れるゲームやアプリの幅が一気に広がります。

今回は、配列の「棚番号」の仕組みをしっかり理解し、リストの中身を自由に入れ替える具体的なプログラミングテクニックをマスターしましょう!

前回の宿題:答え合わせ

「ボタン B を押したとき、配列の0番目の値に5を足してLEDに表示する」という宿題ミッション、上手にプログラミングできたかな?

今回の答えとなるプログラムのブロック構成は、次のようになります!

microbitのMakeCode画面でボタンBが押されたときに配列の0番目の値に5を足してLEDに9を表示するプログラムの完成図
図1. 宿題の答えのプログラム: 「ボタン B が押されたとき」の中に、配列の0番目の値を取り出すブロックと「5」の足し算を組み合わせて、LEDに結果を表示するプログラムの完成形です。

ブロック組み立て方

  1. イベントブロック:イベントブロック:「入力」カテゴリから「ボタン A が押されたとき」を出し、AをBに変更します。
  2. 表示ブロック:「基本」カテゴリから「数を表示 [ ]」を、ボタンを押したときのブロックの中に挟みます。
  3. 計算ブロック:「計算」カテゴリから足し算([ ] + [ ])のブロックを出し、「数を表示」の数字を入れる場所にセットします。
  4. 配列から値を取り出す:「高度なブロック」>「配列」の中にある「[配列▼] の [0] 番目の値」というブロックを出し、[配列▼] の部分を [ぼくのフルーツ棚] にし、これを足し算の左側のボックスに入れます。
  5. 数字を足す:足し算の右側のボックスに、そのまま半角で「5」と入力します。

これで、「ぼくのフルーツ棚の0番目(りんごの数:4個)5」という計算になり、ボタン B を押すと LED に「9」がパッと表示されるはずです!

もし「9」が表示されなかったときは、以下のポイントを確認してみましょう。

  • 配列の番号が「0番」になっているかな?(1番にしていると、みかんの数を選んでしまうよ)
  • 「ぼくのフルーツ棚」の0番目に「4」が入っているかな?

自分のコードと見比べて、どこが違っていたかを確認するのも大切なプログラミングの勉強です。

バッチリ正解できた人は、自信を持って次のステップへ進みましょう!

今日のミッション:配列の「番号」と「中身の入れ替え」を攻略せよ!

前回の宿題で、配列の「0番目」からデータを取り出す方法がバッチリ分かったね!

でも、家族みんなのフルーツ棚をいじっているうちに、こんなふうに思ったことはありませんか?

  • ぼくのりんごあにのりんごを交換したい!」
  • いもうとにぼくのみかんをあげたい!」
  • いちごを5個買ってきたので棚にしまいたい!」

今回のレッスンでは、実際にこの3つの問題(プログラム)を作りながら、配列の応用テクニックを一気にマスターします。

今日のミッションは、「配列の棚番号の仕組みを理解し、リストの中身を自由に入れ替えるプログラムを作ること」

これができれば、君の作ったプログラムは、ただ決まったデータを表示するだけではなく、「自分で状況を変化させられるスマートなデータ」へと大きく進化します。

さっそく、配列の本当の力を手に入れる冒険に出発しよう!

ミッション1:配列の「棚番号(インデックス)」のルールを思い出そう!

前回のレッスンで、複数のデータをひとまとめにしておく「整理棚(配列)」を作りましたよね。

この整理棚には、入っているデータを順番に取り出すための「棚番号(インデックス)」がついていることや、番号が「0番」から始まることはバッチリ覚えているはず!

今回は、その整理棚をもっと便利に使うための「中身の入れ替え」「新しいデータの追加」に挑戦します。

人間はつい「1番目がりんご、2番目がみかん……」と考えてしまいがちですが、プログラムの世界では「最初(一番左)の棚は必ず『0番』」という大切なルールがあります。

この「0番からスタートする」棚の番号をしっかりと指定しながら、3つの問題に挑戦していきましょう!

ミッション2:3つの問題を解決するプログラムを作ってみよう!

ここからは、実際にMakeCodeでブロックを組み立てながら、3つの問題に挑戦します。

棚の中身を取り出して確認する方法や、中身を入れ替える(スワップする)テクニックを一気に身につけよう!

問題1:「ぼくのりんごにとあにのりんごを交換したい!」(中身の入れ替え)

まずは、あにの棚にあるりんごと、ぼくのりんごを入れ替える(スワップする)プログラムです。

実は、2つの棚のデータを直接そのまま入れ替えようとすると、片方のデータが消えてしまうという落とし穴があります。

そのため、プログラミングでは「一度別の変数(一時的な入れ物)に記憶させてから入れ替える」というテクニックを使います。

microbitの画面とMakeCodeの編集画面。変数「りんごのかず」を使い、配列「ぼくのフルーツ棚」と「あにのフルーツ棚」の0番目の値を一時的に保存しながら入れ替えるブロックプログラムの全体像。
図2:変数を使ってあにの棚とりんごの数を入れ替えるプログラム (※直接入れ替えるとデータが消えてしまうため、一度変数「りんごのかず」に記憶させてからスワップしています)

ブロックの組み立て方

  1. 一時的に覚える:「変数」カテゴリから「変数 りんごのかずぼくのフルーツ棚0 番目の値にする」ブロックを置き、入れ替える前にぼくのりんごの数をしっかり覚えておきます。
  2. 一つ目を書き換える:「高度なブロック」>「配列」の中にある「ぼくのフルーツ棚0 番目の値を あにのフルーツ棚0 番目の値にする」ブロックを使い、ぼくの棚にあにのりんごを入れます。
  3. 二つ目を書き換える:最後に、あにの棚のほうには、最初に覚えておいた「変数 りんごのかず」を入れます。
  4. 結果を表示する:「数を表示」ブロックを使って、入れ替えたあとの「ぼくのフルーツ棚」と「あにのフルーツ棚」の値をそれぞれ確認してみましょう!

これで、ボタン A を押したときに、ぼくのりんごとあにのりんごがパッと綺麗に入れ替わるようになりますよ!

問題2:「いもうとにぼくのみかんをあげたい!」(値の確認と移動)

次は、ぼくの棚にあるみかんをいもうとに分けるプログラムです。

ここでは、「棚からデータを取り出して確認する」ブロックと「中身を書き換える」ブロックを組み合わせて使います。

microbitのシミュレーター画面とMakeCodeの編集画面。変数「みかんのかず」を使い、配列「ぼくのフルーツ棚」の1番目の値(みかん)をいもうとのフルーツ棚に渡しつつ、自分の棚の数から減らすブロックプログラムの全体像。
図3:変数を使ってぼくのみかんをいもうとに分けるプログラム (※ぼくの棚の1番目にあるみかんの数を変数に記憶させ、いもうとの棚に渡すと同時に、自分の棚の数から引き算して減らしています)

ブロックの組み立て方

  1. みかんの数を覚えておく:「変数」カテゴリから「変数 みかんのかずぼくのフルーツ棚1 番目の値にする」ブロックを置き、あげる前にぼくの棚にあるみかんの数をしっかり覚えておきます。
  2. いもうとの棚に渡す:「高度なブロック」>「配列」の中にある設定ブロックを使い、「いもうとのフルーツ棚1 番目の値を ぼくのフルーツ棚1 番目の値にする」として、いもうとにみかんを渡します。
  3. 自分の棚の数を減らす:自分の棚(ぼくのフルーツ棚の1番目)の数から、あげた分(みかんのかず)を引く計算ブロックを組み込んで、残りの数を更新します。
  4. 結果を表示する:「数を表示」ブロックを使って、「いもうとのフルーツ棚」と「ぼくのフルーツ棚」の1番目の値をそれぞれ確認してみましょう!

ボタン A を押して、いもうとの棚にちゃんとみかんが渡ったかLEDで確認してみましょう!

問題3:「いちごを5個買ってきたので棚にしまいたい!」(新しいデータの追加)

最後は、新しく買ってきた「いちご」を整理棚の仲間入りさせるプログラムです。

リストに新しいデータを後ろからピタッとくっつける便利なブロックを使います。

microbitのシミュレーター画面とMakeCodeの編集画面。配列「ぼくのフルーツ棚」の最後に変数「いちごのかず(5)」を追加し、追加された2番目の値を確認して表示するブロックプログラムの全体像。
図4:新しいフルーツ(いちご)のデータを配列の最後に追加するプログラム (※「追加する」ブロックを使い、ぼくのフルーツ棚の一番後ろに新しく「いちご」のデータを仲間入りさせています)
ブロックの組み立て方
  1. 変数の準備:「最初だけ」ブロックの中で、あらかじめ「変数 いちごのかず5 にする」を作っておきます。
  2. 追加ブロック:「高度なブロック」>「配列」の中にある「ぼくのフルーツ棚 の最後に いちごのかず を追加する」というブロックを取り出します。
  3. 結果を確認する:「数を示す」ブロックを使って、「ぼくのフルーツ棚2 番目の値」(新しく追加された場所)を表示し、きちんと「5」がしまわれているか確認してみましょう!

これで、ボタンを押したときに整理棚の一番後ろに「いちご」のデータが新しく追加されます。

このように、配列の番号を指定して中身を自由自在に書き換えたり増やしたりできるようになると、プログラムの中でデータをどんどん動かせるようになり、作れるゲームやアプリの楽しさが何倍にも広がりますよ!

本日のレッスンのまとめ

お疲れ様でした!本日のレッスンでは、配列(整理棚)の応用テクニックとして、「棚番号(インデックス)の活用」「変数を使った中身の入れ替え(スワップ)」「新しいデータの追加」をマスターしました。

今日の重要なポイントを振り返ってみましょう!

1. 配列の棚番号は「0番」からスタートする!

  • プログラミングの世界では、整理棚の最初(一番左)の番号は必ず「0番」から始まります。
  • 番号を正しく指定することで、自分が調べたいデータを正確に取り出すことができます。

2. 変数を使った中身の入れ替え(スワップ)

  • 2つの棚のデータを直接そのまま入れ替えようとすると、片方のデータが消えてしまう落とし穴があります。
  • 一度「変数(一時的な入れ物)」に元のデータを記憶させてから書き換えることで、安全にきれいにデータを入れ替えることができます。

3. リストの最後にデータを追加する

  • 「最後に [ ] を追加する」というブロックを使うと、新しく買ってきたフルーツなどのデータを、整理棚の一番後ろにピタッと仲間入りさせることができます。

配列の番号を指定して中身を自由自在に書き換えたり増やしたりできるようになると、プログラムの中でデータをどんどん動かせるようになり、作れるゲームやアプリの楽しさが何倍にも広がります。

今日のテクニックをぜひ自分のプログラムでも試してみてくださいね!

今日の宿題:配列を使ってお目当てのフルーツの数を探そう!

今日のレッスンで学んだ「配列の番号(インデックス)」の仕組みを使って、少し頭を使う実践的なプログラミングの宿題に挑戦してみましょう!

宿題ミッション:

次のような2つの配列(リスト)が用意されています。

  • 棚に入れるフルーツの名前{ばなな, りんご, いちご, みかん, ぶどう}
  • ぼくのフルーツ棚(数){1, 7, 9, 4, 5}

この2つの配列を利用して、「ぼくのフルーツ棚に入っている『いちご』の数」を調べて画面に表示するプログラムを作ってみましょう!

ヒント:
  • 場所を固定しない:
    「いちごは2番目だから『2』と直接書く」のではなく、「いちご」という名前が何番目にあるのかを自動で見つけるようにするのがポイントです!
  • 便利な配列ブロックを使おう:
    MakeCodeの「高度なブロック」>「配列」の中には、配列の中から「指定したデータが何番目にあるか」を探してくれるブロックが用意されています。
  • 「文字列」ブロックを使おう:
    探したい名前を指定するときは、「文字列」カテゴリの中にある “ ” ブロックを組み合わせて使います。いろいろなブロックを触って、試行錯誤しながら見つけてみよう!

プログラムが完成したら、実際にボタンを押して「いちごの数(この場合は「9」)」が正しく表示されるか試してみてくださいね。次回のレッスンで答え合わせをしましょう!

【次回予告】

配列の番号を指定してデータを自由にいじれるようになったね!

次回は、【第11回】ループ処理:繰り返しを使って効率よく動かそう!をお届けします。

「同じ動作を何回もさせたいとき」や「たくさんのデータを順番に処理したいとき」に大活躍する、プログラミングの強力な魔法「繰り返し」を一緒にマスターしよう!

お楽しみに!

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

ありがとうございました!

カリキュラム一覧(進捗マップ)

コメント