【第11回】 【micro:bit講座 第11回】ループ処理:繰り返しを使って効率よく動かそう!

MakeCode × micro:bit編

これまでのレッスンで、変数や条件分岐、そして配列を使ってたくさんのデータを上手に管理できるようになりましたね!

でも、プログラムを作っているときにこんなふうに思ったことはありませんか?

「同じメロディを何度も鳴らしたい!」

「棚の中身を1つずつ全部調べたいけれど、何行も同じブロックを並べるのは大変……」

そんな悩みを一発で解決してくれるのが、今回学ぶプログラミングの強力な魔法「ループ処理(繰り返し)」です!

ループの仕組みをマスターすれば、複雑な動きもたった数個のブロックでスッキリ効率よく動かせるようになります。

さっそく、繰り返し処理の便利な世界を一緒にのぞいてみましょう!

前回の宿題:答え合わせ

宿題ミッション:

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

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

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

宿題ミッション、上手にプログラミングできたかな?

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

図1挿入箇所

micro:bitのMakeCode画面:配列を使ってフルーツの名前と数を定義し、ボタンAが押されたときに「いちご」の位置を探して数値を表示するプログラムのブロック構成
図1:配列と変数を使って「いちご」の個数を取り出すプログラムの全体像

ブロック組み立て方

  1. 「最初だけ」ブロックを用意する
    • 変数を作るための準備として、「変数」カテゴリから「変数を作成する」を選び、棚に入れるフルーツの名前ぼくのフルーツ棚、そして いちごの位置 という3つの変数を作ります。
    • 「最初だけ」の中に、先ほど作った2つの配列ブロックをそれぞれ対応する変数に入れます。
      • 1つ目の配列:「ばなな」「りんご」「いちご」「みかん」「ぶどう」
      • 2つ目の配列:「1」「7」「9」「4」「5」
    • いちごの位置 の変数を「0」に初期化しておきます。
  2. 「ボタン A が押されたとき」ブロックを用意する
    • 「入力」カテゴリから「ボタン A が押されたとき」を配置します。
  3. 「見つかった場所」を検索して変数に入れる
    • 「変数」カテゴリから「変数 [いちごの位置] を [0] にする」を置き、値の部分に「高度なブロック」「配列」カテゴリにある「配列 の中で 〇 が見つかった場所」のブロックをはめ込み、「配列」に [棚に入れるフルーツの名前] 、「〇」に [“いちご”] をセットします。
  4. 結果を画面に表示する
    • 「基本」カテゴリから「数を表示 [0]」ブロックを使い、「0」に「高度なブロック」「配列」カテゴリにある「配列の 0 番目の値」のブロックをはめ込み、「配列」に [ぼくのフルーツ棚] 、「0」に [いちごの位置]をセットし、表示させます。

これで、ボタンAを押したときに配列の中から「いちご」を探し出し、その個数を画面に表示するプログラムの完成です!

ここがポイント!配列を使ったデータの取り出し方

前回の宿題では、2つの配列を使って「お目当てのデータがどこにあるか」を探し出すプログラムを作りました。

  • 「リストの中で〇〇が見つかった場所」ブロック
    • 指定した言葉(今回は「いちご」)が、配列の何番目(インデックス)に入っているかを自動で探し出して数字で教えてくれる便利なブロックです。
  • 「配列の〇番目の値」ブロック
    • 見つけた「場所(番号)」を使って、もう一つの配列(フルーツの数)から、実際の個数を取り出します。

このように、「場所(番号)を管理する変数」「配列」を組み合わせることで、たくさんのデータの中からピンポイントで欲しい情報を取り出すことができるんです!

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

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

今日のミッション:ループ処理をマスターせよ!

配列と変数を使いこなせるようになったら、次はいよいよプログラムを効率よく動かすための強力な武器、「ループ処理(繰り返し)」をマスターする番です!

同じコードを何度も書く必要がなくなると、プログラムは驚くほどスッキリし、複雑な動きも簡単に作れるようになります。

今回のレッスンでは、micro:bitの基本である「ずっと」動かす無限ループから、回数を決めたカウンターの活用、そして前回学んだ配列と組み合わせた応用テクニックまでを一気に駆け抜けます。

さあ、プログラミングの効率と楽しさが何倍にもアップするループの世界へ、一緒に出発しましょう!

ミッション1:同じ処理を「ずっと」動かす(無限ループ)

プログラミングの世界で最初に出会う代表的なループが、この「ずっと」ブロックです。

micro:bitの電源が入っている間、中にいれたブロックの命令を、上から下まで実行し終わったら一番上に戻って再びエンドレスで繰り返すという仕組みを持っています。

  • どんなときに使うの?
    • ボタンが押されているかを常に監視し続けるとき
    • 音楽やメロディをずっと鳴らし続けたいとき
    • ピカピカ光るアニメーションやゲームのメインループを作るとき
  • 気をつけておきたいポイント
    • 「ずっと」ブロックの中に入れた命令は、途中で止める指示がない限り永遠に終わりません。そのため、ゲームオーバーの判定や、特定の条件でループを抜け出す仕組み(フラグ管理など)とセットで使われることが多い大切なブロックです。

問題:ピカピカ光るお祝いライトを作ろう!

電源を入れている間、micro:bitの画面がチカチカと点滅しながら、メロディをずっと奏で続けるプログラムを作ってみましょう。

micro:bitのMakeCode画面:「ずっと」ブロックの中にアイコン表示、一時停止、表示を消す、一時停止を並べて画面を点滅させるプログラムと、「最初だけ」ブロックでメロディをバックグラウンドでずっと鳴らすプログラムの構成
図2:「ずっと」ブロックで画面をピカピカ点滅させ、メロディを鳴らすプログラムのブロック構成
【ブロックの組み立て方】
  1. 「ずっと」ブロックを置く
    • 最初から画面にある「ずっと」ブロックを使います。
  2. アイコンを表示して、待つ
    • 「基本」カテゴリから「アイコンを表示 [ ]」を「ずっと」の中に入れます。好きなアイコンを選びましょう。
    • 同じく「基本」カテゴリから「一時停止 (ms) [100]」をその下に入れます。これで「光っている時間」を作ります。ここでは[500]にしてみます。
  3. 画面を消して、待つ
    • 「基本」カテゴリから「表示を消す」ブロックをその下に入れます。
    • もう一つ「一時停止 (ms) [100]」を入れます。ここでも[500]にしておきます。これで「消えている時間」を作ります。
【プログラムの動きを確認してみよう】
  • micro:bitの電源を入れると、[アイコン表示] → [少し待つ] → [アイコンがを消える] → [少し待つ] という動きを1セットとして、これが一番上に戻って繰り返されます。
  • 結果として、画面がピカピカと点滅(チカチカ)しながら、メロディが流れ続けます。

「表示する」と「消す」を順番に繰り返すことで、「ずっと」ブロックが動いている様子がはっきりと確認できますね!

ミッション2:回数を決めて「くりかえし」実行する(カウンターの活用)

「ずっと」ブロックは無限に繰り返すのに便利ですが、プログラミングでは「指定した回数だけ繰り返す」という場面もよく出てきます。

たとえば、「画面に文字を3回点滅させたい」「配列のデータを順番に5回チェックしたい」といったときです。 ここで登場するのが、「カウンターを 0 から 4 まで変えて繰り返し」というブロックです!

  • カウンター(変数)の役割
    • このブロックを使うと、中身の数字(カウンター)が自動的に「0、1、2、3、4」と1つずつ増えながら、指定した処理を繰り返してくれます。
  • なぜ「4」までなの?
    • プログラミングの世界では、数を「0」から数えるのが基本ルールです。全部で5回繰り返したいときは、「0から4まで(0, 1, 2, 3, 4の合計5回)」と指定します。

数字が自動でカウントアップしていく仕組みが分かると、プログラムでできることが一気に広がりますよ! さっそく、実際にブロックを動かしてその動きを確認してみましょう。

問題:カウンターを使って数字を順番に表示しよう!

「カウンターを 0 から 4 まで変えて繰り返し」ブロックの動きを確かめるために、ボタンを押したときに、0から4までの数字を画面に順番に表示するプログラムを作ってみましょう!

micro:bitのMakeCode画面:ボタンAが押されたときに変数カウンターを使って5回繰り返すプログラムと、ボタンBが押されたときに「カウンターを0から4まで変えて繰り返し」ブロックを使って数値を表示するプログラムの構成
図3:カウンターを使って数値を順番に表示するプログラムのブロック構成

【ブロックの組み立て方】

1. ボタンA:変数と計算を使って5回繰り返す方法

  • 「ボタン A が押されたとき」ブロックを置く
    • 「入力」カテゴリから配置します。
  • 変数を「0」に初期化する
    • 「変数」カテゴリから「変数 [カウンター] を [0] にする」を置き、中にセットします。
  • 「くりかえし」ブロックと計算を組み合わせる
    • 「ループ」カテゴリから「くりかえし [5] 回」を配置します。
    • 中に「数を表示 [カウンター]」を入れます。
    • その下部に「変数 [カウンター] を [カウンター] + [1] にする」を置き、ループのたびに数字が1つずつ増えるように仕組みを作ります。

2. ボタンB:カウンターブロックでスッキリ繰り返す方法

  • 「ボタン B が押されたとき」ブロックを置く
    • 「入力」カテゴリから配置します。
  • 「ループ」からカウンターのブロックを選ぶ
    • 「ループ」カテゴリから「変数 [カウンター] を [0] から [4] に変えてくりかえす」のブロックを、「ボタン B が押されたとき」の中に入れます。
  • 数を表示するブロックを入れる
    • 「基本」カテゴリから「数を表示 [カウンター]」をループの中に入れます。

【プログラムの動きの違いを確認してみよう】

  • ボタンAは、変数と計算(+1)を組み合わせて自分で回数とカウントアップを管理する少し本格的な方法です。
  • ボタンBは、専用のループブロックを使うことで、変数の初期化や +1 の計算をしなくても自動で「0から4まで」数えてくれるため、とてもスッキリ短いプログラムで同じ処理が作れます!

micro:bitのどちらのボタンを押しても、画面に「0、1、2、3、4」の数字が1つずつ順番に表示されていきます。

ミッション3:配列(リスト)とループを組み合わせて一気に調べる(応用)

今回のレッスンの大本命となるのが、この「配列」と「ループ(繰り返し)」、そして「条件分岐(もし〜なら)」の3つを合体させた応用プログラムです!

これまでのレッスンで、私たちは以下のことができるようになりました。

  • 配列:複数のデータをまとめて管理する
  • ループ:処理を何度も繰り返す
  • 条件分岐:もし〜なら、という判断をさせる

これら個別の技術を組み合わせると、コンピューターの得意な「大量のデータを高速で自動処理する」という真価を発揮させることができます。

  • 具体的にどんな動きをするの?
    1. 「カウンターを使った繰り返し」を使い、棚の0番目から最後の番目までを順番に指し示すようにします。
    2. ループの中に「もし [配列の〇番目の値] が [いちご] なら」という条件分岐を入れます。
    3. 条件にぴったり一致したときだけ、見つかったことを画面に表示したり、数え上げたりするアクションを起こさせます。

手作業で1つずつ確認しなくても、コンピューターが瞬時に棚の中身をすべてチェックしてお目当ての果物を見つけてくれる、非常に実用的なプログラムの完成です! ここまでマスターできれば、プログラミングの基礎力はグッとレベルアップしていますよ。

問題:フルーツ棚から「いちご」を自動で見つけ出そう!

前回の宿題で作った「フルーツの棚(配列)」と、今回の「カウンターを使った繰り返し」、そして「もし〜なら」の条件分岐をすべて組み合わせて、棚の中を自動でチェックしてお目当ての果物を探し出すプログラムを作ってみましょう!

micro:bitのMakeCode画面:「最初だけ」ブロックでフルーツの配列や変数を初期化し、「ボタンAが押されたとき」ブロックの中でループと条件分岐を組み合わせて「いちご」を自動で探して数値を表示するプログラムの構成
図4:配列、ループ、条件分岐を組み合わせてお目当ての果物を自動で見つけ出すプログラムのブロック構成

【ブロックの組み立て方】

  1. 「最初だけ」ブロックで配列と変数を準備する
    • 「変数」カテゴリから「変数 [棚に入れるフルーツの名前] を [配列] にする」を置き、配列の中に "ばなな", "りんご", "いちご", "みかん", "ぶどう" を設定します。
    • 同じように「変数 [ぼくのフルーツ棚] を [配列] にする」を置き、中に 1, 7, 9, 4, 5 を設定します。
    • 変数「いちごの位置」を [0] にするブロックを下部に入れます。
  2. ボタンが押されたときのトリガーを用意する
    • 「入力」カテゴリから「ボタン A が押されたとき」を配置します。
  3. カウンターを使った繰り返しで棚を順番にチェックする
    • 「ループ」カテゴリから「変数 [いちごの位置] を [0] から [4] に変えてくりかえす」のブロックをボタンAの中に入れます。
  4. 「もし〜なら」でいちごを探す条件分岐を入れる
    • 「論理」カテゴリから「もし [true] なら」のブロックをループの中に入れます。
    • 条件の「true」の部分に、比較ブロック([ ] = [ ])をはめ込みます。
    • 左側に「配列」カテゴリの「[棚に入れるフルーツの名前] の [いちごの位置] 番目の値」をセットし、右側に「文字列」カテゴリの ” ” を置き、テキストの "いちご" をセットします。
  5. 見つかったときの処理を入れる
    • 「もし」の中身(条件に一致したとき)に、「基本」カテゴリから「数を表示」を置き、「[ぼくのフルーツ棚] の [いちごの位置] 番目の値」をセットします。

【プログラムの動きを確認してみよう】

  • micro:bitのAボタンを押すと、プログラムが自動でフルーツ棚を0番目(ばなな)から順にチェックしていきます。
  • 「いちご」を見つけた瞬間だけ、その棚に入っている数(「9」)を画面にピュッと表示してくれます!

3つの技術が組み合わさることで、一気に本格的なプログラミングの仕組みになりましたね!

本日のレッスン内容まとめ

今回は、プログラムを効率よく、そして強力に動かすための「ループ処理(繰り返し)」と、これまでの技術を組み合わせた応用テクニックを学習しました。

1. 「ずっと」ブロック(無限ループ)

  • 特徴: 電源が入っている間、中の命令をエンドレスで繰り返し実行します。
  • 主な用途: ボタンの常時監視、アニメーション、ゲームのメインループなど。
  • ポイント: 途中で止める指示がない限り永遠に続くため、フラグ管理や条件分岐とセットで使います。

2. 回数を決めて「くりかえし」実行する(カウンターの活用)

  • 特徴: 指定した回数だけ処理を繰り返す仕組みです。
  • カウンターの仕組み: プログラムの世界では「0」から数えるのが基本ルールのため、5回繰り返したいときは「0から4まで」と指定します。
  • メリット: 変数や計算を自分で組み立てる方法と、専用のカウンターブロック([0] から [4] まで変えてくりかえす)を使う方法があり、後者を使うと非常にスッキリ短いコードになります。

3. 配列・ループ・条件分岐の組み合わせ(応用)

  • 特徴: 「配列(複数のデータ管理)」「ループ(繰り返し)」「条件分岐(もし〜なら)」の3つを合体させた、実用的な自動検索プログラムです。
  • 仕組み: カウンターを使って棚のデータ(0番目〜最後の番目)を順番に自動チェックし、お目当てのデータ(例:「いちご」)に一致したときだけ特定の動作(数値を表示するなど)をさせることができます。
  • メリット: 手作業で1つずつ確認しなくても、コンピューターが大量のデータを一瞬で高速処理してくれます。

ループ処理をマスターしたことで、micro:bitでできることの幅がグッと広がりましたね!

次のレッスンではさらに発展した内容に挑戦していきましょう。

今日の宿題:ラッキーアイテムを自動で探し出そう!

今回のレッスンで作った「フルーツ探しプログラム」をベースにして、自分で決めた「ラッキーアイテム」を宝箱(配列)の中から自動で見つけ出すプログラムを作ってみましょう!

宿題ミッション:

次のような2つの配列(リスト)と、探したいアイテムを入れる変数を用意して、自動チェックプログラムを完成させてください。

  • おもちゃの名前(文字列の配列)["けん玉", "こま", "カード", "ヨーヨー", "ビー玉"]
  • ぽいんと(数値の配列)[10, 30, 50, 80, 100] (※ポイントは好きな数字でOK!)
  • ほしいおもちゃ(変数)"ビー玉" (※あとから手動で変更できるようにします)

Aボタンを押したときに、宝箱の配列を0番目から順番に自動でチェックします。

変数「ほしいおもちゃ」に入っている名前(今回は「ビー玉」)と一致したときだけ、対応する「ぽいんと」を画面に表示させてください!

ヒント:
  • 探したいものは「変数」に入れておこう
    • 「もし〜が “ビー玉” なら」と直接ブロックに書くのではなく、新しく「ほしいおもちゃ」という変数を作り、そこに "ビー玉" をセットしておきましょう。こうすることで、探すアイテムを他のもの(”こま” など)に簡単に変更できるようになります。
  • カウンターを使って2つの配列を同時にチェック!
    • 「ループ」カテゴリの「変数 [カウンター] を [0] から [4] に変えてくりかえす」を使います。このカウンターの数字を配列の「〇番目」にはめ込むと、おもちゃの名前とポイントをズレることなく同時に調べることができます。
  • 条件分岐「もし〜なら」の組み立て方
    • 「論理」カテゴリの比較ブロック [ ] = [ ] を使います。左側に [おもちゃの名前] の [カウンター] 番目の値 を入れ、右側に変数 [ほしいおもちゃ] をセットして比較してみましょう!

配列、ループ、条件分岐の3つをセットで使うと、宝探しゲームのような面白いプログラムが一気に作れるようになります。

ぜひお家のパソコンやタブレットでチャレンジしてみてくださいね!

【次回予告】

次回は、いよいよ基礎編の最終回【第12回】配列とループの最強コンボ(「リストの要素数だけ繰り返す」)をお届けします。

これまでのレッスンで、「配列」と「ループ」の組み合わせを学びましたが、実はもっとスマートで強力な方法があります。

それが、リストに入っているデータの数(要素数)に合わせて自動で回数を決めてくれる最強の組み合わせテクニックです!

データが増えてもプログラムを直す必要がない、プログラミングならではの便利な仕組みを最終回で一緒にマスターしていきましょう!

お楽しみに!

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

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

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

コメント