第4章 配列を利用しよう 本文へジャンプ
ホーム 第1章 第2章 第3章 第4章 第5章 第6章 命令一覧表

4−1 たくさんの変数を一度に使うときには「配列変数」が便利

 「配列」は、一列に並んだ箱にさまざまなデータが入っているようなものです。


 番号で区別して多くのデータを簡単に扱うことができます。

 今から配列を使ったときと、使わないときの違いをみていきます。

 まずは、配列を使わずにテストの合計の計算をしてみましょう。

例題4−1
一之瀬は、30

二屋は、70

三橋は、25

四ノ宮は、50

五代は、80

六本木は、34

七瀬は、73

合計点は、一之瀬+二屋+三橋+四ノ宮+五代+六本木+七瀬

合計点を表示。

 実行すると362が表示され、確かに合計点が求まります。

 しかしこれだと、合計点を計算する式が大変です。

 人数が多ければ多いほど、長くなってしまいます。

 そこで、配列変数を使います。

例題4−2
点数¥0は、30

点数¥1は、70

点数¥2は、25

点数¥3は、50

点数¥4は、80

点数¥5は、34

点数¥6は、73

合計点は0

番号を0から6まで繰り返す

  合計点は、合計点+点数¥番号

合計点を表示。

 繰り返しの使い方は覚えていますね。

 このように配列変数を使うと、合計や平均を計算することが簡単にできます。

 これは、『変数名
\番号(インデックス)』で別々の変数にアクセスできるので、簡単にたくさんのデータを扱えるからです。

 便利な配列変数ですが、データをセットするとき、

 配列¥0は、値1

 配列¥1は、値2

 ………

のように書いていくのは、とても面倒です。

 そこで次のようにすると、もっと簡単に配列変数を書けます。

例題4−3
点数は「30
70
25
50
80
34
73

合計点は0

番号を0から6まで繰り返す

  合計点は、合計点+点数\番号

合計点を表示。

 例題4−3のように「 」に一行ずつ値を書いていくと、その一行が配列変数の一要素となります。

 「 」内は、半角数字でないといけないですし、空行を入れると、その空行を一要素として判断してしまい、想定外の結果が出るので注意が必要です。

 しかし、書くのはずっと楽になります。

リスト部品に配列を表示すると、下のようになります。


 配列をリスト部品に表示してみましょう。

 命令は、

(名前)とはリスト

と書きます。

例題4−4
点数は「30
70
25
50
80
34
73

成績リストとはリスト

成績リストのアイテムは点数

 また、配列を便利に扱うための命令がいくつか用意されています。

 「配列合計」の命令を使うと、配列の要素内の数値を足してくれるので、今までの合計点を表示するプログラムは、次のように書くこともできます。

例題4−5
点数は「30
70
25
50
80
34
73

合計点は、点数の配列合計。

合計点を表示。

 どうですか?簡単ですよね?

 最初のプログラムとこのプログラムは、同じ結果が出てきます。

 次に、『配列数値ソート』の命令を使ってみましょう。

 これは、配列変数の中にある値を昇順に並び替えてくれる機能を持っています。

例題4−6
点数は「30
70
25
50
80
34
73

ソート前と表示

成績リストとはリスト

成績リストのアイテムは点数

ソート後と表示。

成績リスト2とはリスト

点数を配列数値ソート

成績リスト2のアイテムは点数

 上にソート前の点数、下にソート後の点数が表示されました。

 配列の基本的なところがわかったら、二次元配列変数の説明です。

4−2 2次元の配列変数

 今までの配列は1次元配列といい、縦だけだったのに対して、二次元配列は縦×横の二次元の表であると考えられます。

 どのようなものになるか、次のプログラムを書いて実行してみましょう。

例題4−7
パスタ料理\0,0=「名前」

パスタ料理\0,1=「値段」

パスタ料理\1,0=「ミートソーススパゲッティ」

パスタ料理\1,1620

パスタ料理\2,0=「スパゲッティナポリタン」

パスタ料理\2,1920

パスタ料理\3,0=「山菜パスタ」

パスタ料理\3,1690

パスタ料理\4,0=「シェフのおススメパスタ」

パスタ料理\4,1950

パスタ料理を表示。

 上のように表示されましたね。

 今までの配列変数を《変数名¥番号》と書くのと同様に、二次元配列変数は《変数名¥行
, 列》と書きます。

 しかし、この書き方はやはり面倒なので、一次元配列のときと同じように一括で書くことができます。

 違うところは、一行に
カンマで区切って書いていくところです。

 ここでは、「(名前)、(値段)」と書きます。

例題4−8
パスタ料理は「名前,値段
ミートソーススパゲッティ,620
スパゲッティナポリタン,920
山菜パスタ,690

シェフのお勧めパスタ,950

パスタ料理を表示。

 実行すると同じ結果が出てきます。

 一次元配列のときと一緒ですね。

 二次元配列は、一次元配列よりも多くの性格の違うデータを扱えるようになります。

 2列だけではなく、3列4列と扱うデータがあれば、カンマで区切って書くだけで増やすことができます。

 ところで、一次元配列のときはリストを使って、表示しましたね。

 二次元配列では、リストの代わりにグリッドを使うと見やすくなります。

 命令は、

(名前)とはグリッド

と書きます。

 ためしに、上の二次元配列をグリッドに表してみましょう。

例題4−9
パスタ料理は「名前,値段
ミートソーススパゲッティ,620
スパゲッティナポリタン,920
山菜パスタ,690
シェフのお勧めパスタ,950

パスタ料理グリッドとはグリッド

パスタ料理グリッドのアイテムはパスタ料理

 また、二次元配列のデータの中で、好きなデータだけをピックアップしたいときがあれば、『表ピックアップ』命令を使います。

例題4−10
パスタ料理=「名前,値段
ミートソーススパゲッティ,620
スパゲッティナポリタン,920
山菜パスタ,690
シェフのお勧めパスタ,950

山菜パスタはパスタ料理の0から「山菜」を表ピックアップ。

山菜パスタを表示。

  これは、パスタ料理の0列目から「山菜」という文字を含む行を、ピックアップして表示するというプログラムです。

 『表ピックアップ』命令を使うと、配列の中の指定した列から任意の文字を含んだ行を選び出してくれます。

4−3 ハッシュとは…

 配列に似た機能でハッシュ機能があります。

 配列変数は《配列¥番号》で配列の中の要素を表していましたが、ハッシュは『ハッシュ@キー名』で表します。

 ではハッシュを使ってみましょう。

例題4−11
田中とはハッシュ

田中@「国語」は80

田中@「数学」は40

田中@「社会」は92

田中@「理科」は67

田中を表示。      

 国語=80のように縦に表示されていったと思いますが、これだけだと配列とあまり変わりません。

 配列変数が番号を使ってデータにアクセスするのに対して、ハッシュは、文字を使ってデータにアクセスするので、ユーザーが入力した科目を表示するというプログラムを作ることができます。

例題4−12
田中「国語」は80

田中「数学」は40

田中「社会」は92

田中「理科」は67

「国語、数学、社会、理科のなかで、知りたい科目は?」と尋ねて、科目に代入。

田中科目を表示。

 これを実行して、国語と入力すると、80が表示されます。
 
 また、数学と入力すれば、
40が表示されます。

 このようにハッシュを使うと、好きなデータをキーによって取り出すことができます。

 では、ハッシュをもう少し使ってみましょう。

 ハッシュを使ってアンケートの集計もできます。

 次に示すのは、
10人に行なった納豆の好き嫌いに関するアンケート集計プログラムです。

例題4−13
アンケートは「好き
嫌い
好き
好き
嫌い
好き
好き
嫌い
嫌い
好き」

結果は「」

番号を0から9まで繰り返す

 キーは、アンケート[番号]

 キーを表示。

 結果@キーは、結果@キー+1

「――結果――

{結果}」を表示。

 集計の結果が表示されましたか?


 このプログラムは、まず配列変数「アンケート」に好きか嫌いかを代入して、「繰り返す」構文で変数「キー」に好きか嫌いかを入れて、結果@好き、結果@嫌いそれぞれの数を集計していきます。

 また、『アンケート[番号]』は『アンケート¥番号』と同じ意味です。

 配列とハッシュをうまく使えば、いろいろなプログラムを扱うことができるようになります。

                         演習問題