配列を活用しよう
プログラムでデータを扱うためには「変数」を使います。通常の変数は1つの値のみを扱います。
これに加え、MakeCodeエディターでは、「配列」という機能が用意されています。この配列を上手に使うとプログラミングの幅が広がります。具体例を示しながら、配列の活用法を紹介します。
複数のデータを扱う配列を使ったプログラムを開発する
(本ページ作成 2021.06.05)
【プロジェクト例】班メンバーの平均身長を求めよう
具体的な配列の利用例として、数人の班メンバーの「平均身長」を求める場合を考えてみましょう。
図のような6名の子どもたちの班を例にして話を進めましょう。
ちなみに、平均の求め方はご存知ですよね。平均は次の式で求めることができます。
平均 = (集計したいデータの総和) ÷ データの個数
図の子ども達の場合、平均は次の値になります。
(142.6 + 140.4 + 139.5 + 143.7 + 138.3 + 141.1) ÷ 6 = 140.9 cm
micro:bitのプログラムで平均を求める方法を考えてみましょう。
「仕切つき変数」=配列?
6人の子どもの身長のデータをコンピューターで扱う方法として、今回は「配列」を使います。
配列は多くのプログラミング言語で用意されている機能で、MakeCodeエディターでは、変数のタイプの1つとして「配列」の機能が使えます。
通常の変数は、1つの変数で1つの値だけを扱うことができますが、配列は「仕切で区切った容器」のようなイメージで、複数の値を納めることができます。1つ1つの区画を「要素」といいます。
配列の要素に納められた値を扱うときは、「配列のn番目の値」というように扱います。注意したいのは、最初の値は「0番目の値」と、0から数えます。
また、配列の要素の数を返す機能や、配列の要素を追加したり削除する機能などが用意されています。
身長のデータの処理を配列を使うと、「n番目の子どもの身長の値」といった感覚で扱うことができます。
MakeCodeエディターでの配列の利用方法
実際にMakeCodeエディターで配列を扱う方法を説明します。配列関係のブロックは、道具箱の「高度なブロック」をクリックし、「配列」の中に納められています。
配列を用意し、名前をつける
「配列」に納められている「変数(配列)を(この要素の配列)にする」を、作業領域内の「最初だけ」に入れます。
配列には「数値」を扱うものと、「文字列」を扱うものの2種類がありますので、どちらのタイプにするかはあらかじめ決めておくことが必要です。
配列には通常の変数と同じように名前をつけることができます。初めは「配列」「文字列の配列」という名前になっています。これを次の方法で、名前を変更します。
子どもたちの身長のデータを納める変数なので、「配列」から「Shintyo」に名前を変更します。
配列に値を納める
配列「Shintyo」に、子どもたちの身長データを納めてみましょう。
身長142.6cmの子どもから順に値を入れていきますが、要素の数は右の「+」をクリックすると増やすことができます。不要な要素は「-」で消すことができます。5つくらいまでは横に伸びていきますが、6を超えると縦になります。6名の身長データを納めた時は図のような状態になります。
配列の要素の指定方法と値の読み取り
配列に納めたデータを利用する方法を説明します。
今回の例では配列には6個の要素が含まれています、それぞれ「○番目の要素」という感じで指定しますが、一番最初の要素を「0番目」として数え始めます(コンピューターでは0から数え始めることが多い)。日常生活と違いますので気をつけましょう。
n個の要素がある場合、最後の要素は「(n-1)番目の要素」となります。
配列中の要素の値を読み取るときは「(配列)のx番目の値」ブロックを使います。xの部分は数値または変数で指定します。
配列の要素の数を調べる
配列の要素の数のことを、「配列の長さ」といいます。次の「配列の長さ(配列)」ブロックを使って配列の長さを取得します。今回の配列「Shintyo」の長さは「6」となります。
平均の求めてみよう
いよいよ6名の子どもたちの身長の平均を求めてみましょう。
平均を求めるためには、「総和を求める」「総和を要素数で割る」という二段階の手順が必要です。
総和を求める
平均を求めるため、まずは6名の身長を足し合わせた総和を求めます。
Excelだったら、「SUM関数」という便利な機能がありますが、MakeCodeエディターにはありませんので、電卓で計算する要領で、配列に納められている値を順に足し合わせるという方法を取ります。
初期値0の変数Goukeiを用意し、配列Shintyoの0番目の要素から足し合わせるというやり方です。
方法その1~カウンター付ループ
最初に「カウンター付ループ」ブロックを使った総和の求め方です。
上の図でわかるように総和を求めるには「配列の要素を順に足していく」という処理を行います。繰り返しを行うブロックは「道具箱>ループ」の中に納められています。
その中に「変数(カウンター)を0~(x)に変えてくりかえす」ブロックがあります。このブロックの中では、変数カウンターの値が、1周目は「0」・2周目は「1」・・・と変わりながら繰り返し処置が行われます。
この「カウンター付ループ」を使って、配列の総和を求めてみましょう。
○最初に、変数Goukeiを「0」にする
○繰り返しごとに変わる変数の範囲は「0」~「配列の長さ-1」とします。
○繰り返し内では、「変数Goukeiと、配列Shintyoの(カンター)番目の値の和」を改めて変数Goukeiの値とする処理を行います。
これをコードにすると、次のようになります。繰り返しが終了時には、変数Goukeiには配列の総和が納められています。
方法その2~配列専用ループ
MakeCodeエディターには、配列専用の繰り返し処理ができるブロックも用意されています。
これは、配列の要素を順に変数「値」に入れて、ブロック内の処理を繰り返すというものです。6人の子どもの身長を納めた配列Shintyoであれば、繰り返しごとの変数「値」は図のようになります。
この「配列専用ループ」を使って、配列の総和を求めてみましょう。
○最初に、変数Goukeiを「0」にする
○繰り返しの対象となる配列を指定します。繰り返す回数は配列の要素数となります。
○繰り返し内では、「変数Goukeiと、変数『値』の和」を改めて変数Goukeiの値とする処理を行います。
配列専用なので、すっきりしたコードになります。
平均を計算するプログラム
総和を求めることが出来れば、平均を求めるのはもう少しです。
繰り返し処理が終わった後、変数Goukeiを配列Shintyoの要素数で割った値を、変数Heikinに納める処理を行います。
平均値を繰り返し表示させるため、「ずっと」ブロック内に、「数を表示(Heikin)」を配置します。
カウンター付ループを使ったプログラム例
総和を求めるために「カウンター付ループ」を使ったプログラム例は次です。
リンク先:https://makecode.microbit.org/_A4KF8sM6eV4V
配列専用ループを使ったプログラム例
総和を求めるために「配列専用ループ」を使ったプログラム例は次です。
リンク先:https://makecode.microbit.org/_W127uPDYaPYW
実行例
「配列専用ループを使ったプログラム」の実行例を示します。
求めた平均値「140.93」を示しています(正確な計算値は、140.933333・・・ですが、小数点以下第2位まで表示)。
まとめ
今回は、配列の利用例として、6名の子どもの身長の平均を求めてみました。
このプログラムを使うと、人数が増えたり、身長が変わったときも、配列の要素を変えるだけで対応することが出来ます。
このように、同じような事がらの複数データを扱うときなどに、配列を使うと便利です。