【embotでプログラミングを学ぼう②-2】プログラムをまとめて箱に入れる:課題編
目次
- 【embotレベル】2
- 【プログラムの技】ファンクション
- 【主に使うプログラム】[function]、[start]、[end]
解説編で知ったプログラムの技を使って、次の課題に挑戦してみましょう。
課題「embotで『ぶんぶんぶん』を演奏しよう」
今回の課題は音楽演奏です。みなさんは「ぶん ぶん ぶ~ん はちがとぶ~」という曲を知っていますか?この「ぶんぶんぶん」の楽譜を用意したので、embotで演奏してください。「楽譜なんて読めないよ!」という方も大丈夫です。楽譜にはembotのプログラミングで使う音の名前「ドレミファソラシ」がカタカナで書いてあります。また、音符の形とプログラミングで使う音楽のブロックについて、重要なヒントを用意しました。
2つのヒントをもとに、暗号を解くようにして音符をプログラムブロックに置き換えていけば、楽譜通りの曲をembotで演奏できるはずです。この課題では、embotアプリで「レベル2」を選び、ファンクション(function)を2個以上作ることに挑戦してください。
<「ぶんぶんぶん」の楽譜>
<ヒント1:音符の形からわかること>
<ヒント2:使用するブロック>
プログラムの解説とポイント
楽譜とヒントを見ると、1つの音符を1つのプログラムブロックに置き換えられることがわかります。「ぶんぶんぶん」の楽譜には、全部で32個の音符が並んでいます。つまり、音を鳴らすブロックを32個つないで楽譜通りの順番で音と拍数を指定すれば、1曲分の演奏プログラムが完成するわけです。
ファンクション(function)を1個作って、32個のブロックを全部つないで入れることもできます。ですが、今回の課題では「ファンクション(function)を2個以上作る」という条件がありました。複数作ると、どんなメリットがあるのでしょうか?
ファンクション(function)には、箱に入れたプログラムを再利用できるという得意技があります。この特徴を活用して、工夫できることがないか、楽譜を見て作戦を立てましょう。
楽譜をよく見ると、同じメロディが2回使われている部分がA、B、Cの3箇所も見つかりました。
これらA、B、Cのメロディに対応するファンクション(function)を別々に作ることにします。プログラムを小さなグループにわけて、再利用すればとても便利です。
<複数のファンクションと再利用>
まずフローチャート画面に[function]ブロックを3個置き、1個目の[function]ブロックを開いてメロディAのプログラムを作ります。続いて2個目にメロディBのプログラム、3個目にメロディCのプログラムを作りましょう。[function]ブロックは、中身をプログラムした順に❶~❸の番号がつき、左下の「セーブリスト」エリアに登録されます。例えば1個目の[function]を再利用したいときは、この「セーブリスト」からドラッグしてフローチャート画面に配置します。
A、B、Cの3個のメロディに対応した[function]ブロックを、曲の順番通りに並べれば、1曲分のプログラムが完成します。
<フローチャート画面>
完成したプログラムをフローチャートで見てみましょう。[start]と[end]の間に、3種類の[function]を並べています。「ぶんぶんぶん」の曲の構成と同じ順番に並んでいます。
<3個の[function]のプログラム>
次に、各[function]ブロックの中のプログラムを見ていきましょう。音符を音ブロックに置き換えると以下のようになります。
1個目の[function]
2個目の[function]
3個目の[function]
フローチャート画面で[Function1](メロディA)→[Function2](メロディB)→[Function3](メロディC)→[Function3](メロディC)→[Function1](メロディA)→[Function2](メロディB)の順で並べれば、「ぶんぶんぶん」の演奏プログラムが完成です。
完成したプログラムの動画です。音しか鳴らないので動きがなくて地味ですが、スピーカーをONにしてご覧ください。
まとめ
長いプログラムをグループ分けしたり、繰り返し使える部分を見つけて再利用したりすることは、プログラミングをするときにとても大切な視点です。ファンクション(function)を使いこなして、プログラミングの効率をアップさせましょう!
つぎは、繰り返しのプログラムに挑戦します。
→【embotでプログラミングを学ぼう③-1】繰り返しの技で効率アップ:解説編