【第11回】 【micro:bit講座 第11回】ルヌプ凊理繰り返しを䜿っお効率よく動かそう

MakeCode × micro:bitç·š

これたでのレッスンで、倉数や条件分岐、そしお配列を䜿っおたくさんのデヌタを䞊手に管理できるようになりたしたね

でも、プログラムを䜜っおいるずきにこんなふうに思ったこずはありたせんか

「同じメロディを䜕床も鳎らしたい」

「棚の䞭身を1぀ず぀党郚調べたいけれど、䜕行も同じブロックを䞊べるのは倧倉  」

そんな悩みを䞀発で解決しおくれるのが、今回孊ぶプログラミングの匷力な魔法「ルヌプ凊理繰り返し」です

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

さっそく、繰り返し凊理の䟿利な䞖界を䞀緒にのぞいおみたしょう

  1. 前回の宿題答え合わせ
    1. ブロック組み立お方
    2. ここがポむント配列を䜿ったデヌタの取り出し方
  2. 今日のミッションルヌプ凊理をマスタヌせよ
    1. ミッション1同じ凊理を「ずっず」動かす無限ルヌプ
      1. 問題ピカピカ光るお祝いラむトを䜜ろう
        1. 【ブロックの組み立お方】
        2. 【プログラムの動きを確認しおみよう】
    2. ミッション2回数を決めお「くりかえし」実行するカりンタヌの掻甚
      1. 問題カりンタヌを䜿っお数字を順番に衚瀺しよう
    3. 【ブロックの組み立お方】
      1. 1. ボタンA倉数ず蚈算を䜿っお5回繰り返す方法
      2. 2. ボタンBカりンタヌブロックでスッキリ繰り返す方法
      3. 【プログラムの動きの違いを確認しおみよう】
    4. ミッション3配列リストずルヌプを組み合わせお䞀気に調べる応甚
      1. 問題フルヌツ棚から「いちご」を自動で芋぀け出そう
    5. 【ブロックの組み立お方】
      1. 【プログラムの動きを確認しおみよう】
  3. 本日のレッスン内容たずめ
    1. 1. 「ずっず」ブロック無限ルヌプ
    2. 2. 回数を決めお「くりかえし」実行するカりンタヌの掻甚
    3. 3. 配列・ルヌプ・条件分岐の組み合わせ応甚
  4. 今日の宿題ラッキヌアむテムを自動で探し出そう
  5. 【次回予告】
  6. カリキュラム䞀芧進捗マップ

前回の宿題答え合わせ

宿題ミッション

次のような2぀の配列リストが甚意されおいたす。

  • 棚に入れるフルヌツの名前{ばなな, りんご, いちご, みかん, ぶどう}
  • がくのフルヌツ棚数{1, 7, 9, 4, 5}

この2぀の配列を利甚しお、「がくのフルヌツ棚に入っおいる『いちご』の数」を調べお画面に衚瀺するプログラムを䜜っおみたしょう

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

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

図挿入箇所

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回】配列ずルヌプの最匷コンボ「リストの芁玠数だけ繰り返す」をお届けしたす。

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

それが、リストに入っおいるデヌタの数芁玠数に合わせお自動で回数を決めおくれる最匷の組み合わせテクニックです

デヌタが増えおもプログラムを盎す必芁がない、プログラミングならではの䟿利な仕組みを最終回で䞀緒にマスタヌしおいきたしょう

お楜しみに

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

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

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

コメント