プログラミング超基本 配列って何?

  • このエントリーをはてなブックマークに追加

効率よくプログラミングを行うには避けては通れない配列。文字面だと並べるということですが、プログラミングでは並べるというより集まりという意味が強いです。慣れるとじゃんじゃん使いたくなります。でもやりすぎには注意を--。

配列は集合住宅

配列は間取りがすべて同じの1階建てアパートと思ってください。わかりやすく1階建てということにしました。横長のアパートをイメージしてください。各部屋には識別するために順番に部屋番号が付されています。
配列は「変数の集まり」で、各変数をアパートで言えば部屋となります。
配列に収めている各値の部分を配列の要素と呼び、変数と同様な使い方をします。配列では要素ごとに番号が付されています。アパートの部屋番号に相当するのが要素番号やインデクサといい、位置を特定して中に収めている値が利用できるようになります。
各要素はデータ型を同じとしてください。ちょっと意味深な記載ですが、余計なことは考えずに。

必ず宣言する

プログラムでは「この名前で配列を使用しますよ」と宣言してください。 このときに配列内で使用できる個数が決められます(用途によっては省略可)。
例えばVBの場合、

Dim a(6) as Integer

とした場合は整数型の配列で要素(個数)が7個という意味です。 各要素に値を代入するときは

a(1)=25
a(2)=41

などのようにします。括弧の中の数字は要素番号とかインデクサと呼ばれます。注意してもらいたいのは、配列の要素番号はゼロスタートということです。0から6までで要素数が7個の配列ということです。

JavaScriptはどうでしょう。

var arrList = new Array(6);

これで、要素数が6個の配列が宣言されます。あれ? 気付きました? VBとJavaScriptでは宣言で使用した 6 という数字の意味合いが違ってきます。VBでの数字は”最大使用できる要素番号”を指定することになっていて、JavaScriptでは収録できる要素数となっています。ですから、両者で要素数の違いが出て来るのです。お恥ずかしいながらオラはa(6)に数字が収められるからVBでは要素番号の1がスタートだと思い込んでいました。たまにC系と間違えてa(0)でもエラーが起きないことにバグだとしばらく認識していました。いやいや恥ずかしい。

代表的な使い方

var array_list;
array_list=new Array(5);
 
for(i=0;i<array_list.length;i++)
{
    array_list[i]=i*10;
}

array_listという変数を宣言して、配列として初期化しています。
for文で i を0から配列の要素数より1つ小さい数のあいだ繰り返し処理をおこなっています。
結果として各要素の以下の通りになります。

array_list[0]には値 「0」 が入る。
array_list[1]には値 「10」 が入る。
array_list[2]には値 「20」 が入る。
array_list[3]には値 「30」 が入る。
array_list[4]には値 「40」 が入る。

インデクサは「0」から始まるので最大値は「4」、要素数は5です。

やってはいけないこと

配列にすれば変数を集合体のように扱って名前(配列名)一つだけで複数の変数を宣言するより便利だ

だからと言って「要素番号の1に年齢」、「2にテストの点数」、「3に車の所有台数」・・・という使い方はしないように。確かに整数の集まりではありますがまとまりがないですし、上記で示した繰り返し処理には不適切です。配列の要素に収める各基準を統一し繰り返し処理などで利用できるような使い方でなければ意味がありません。
例えば生徒の算数のテストの点数を全て配列に収めて「10点以下はC」「11点から50点はB」・・・のように要素の内容(収めている値)によって何かの処理を行いたいという使い方にしてください。
トリッキーな使い方はしないように。上記の 要素番号の1に年齢、2にテストの点数、3に車の所有台数 を入れるというようなときは、もう少しプログラミングが上達したらclassを使えば良いでしょう。classについては、そのうちかみ砕き記事を投稿します。

まとめ

同じような処理を行いたいときには、配列に値を入れて繰り返し処理をすることが簡素なコーディングとなります。簡素なコーディングは他の人からみれば解読しやすいものです。そのうち皆さんも人のコーディングを目にすることがありますが、簡潔に書いていないとムカムカしてきます。なので、自分自身も日頃から読みやすいコーディングを書くように心がけてください。

SNSでもご購読できます。