【はじめてのプチコン】配列とFORループ | りょうのゲーム塾

りょうのゲーム塾

再開、準備中。

チェックポイント
【注意】この記事は前回のサンプルのヒントとなる記事です。
同じ敵の複製(問題編)を先に呼んでくださいね^^


プログラムで扱うデータには同じ種類のデータが複数存在する場合があります。
そのときに使用するのが配列です。
では配列についてサンプルで学んでみましょう。


ここでは2つのサンプルをみていただきます。
内容は3つの商品の金額を入力し合計金額を表示するプログラムです。
ただし今回の場合は少し条件があります。
プログラムはいろんなことができるのでなにも配列が必要なわけではありまあせん。
あくまでも配列の使用方法を確認するためのサンプルなので3つの商品の金額を入力したあとに合計金額を計算するものと限定します。

では配列を使わないサンプルプログラムです

■プログラム
0001 ' sample
0002 INPUT KINGAKU1
0003 INPUT KINGAKU2
0004 INPUT KINGAKU3
0005 GOUKEI = KINGAKU1 + KINGAKU2 + KINGAKU3
0006 PRINT GOUKEI
0007 END


確かに大した苦労もいりません。
商品の金額を入力する変数に金額を入力し合計した後で表示する。
簡単なものです。

ではもし商品が3個じゃなく1000個だったら?
どうします?
1000個も変数に入力して合計しますか?

たぶんこの時点でほとんどの人が面倒だと感じるでしょう。

コンピュタでの作業にはこの様な作業の方が多いのです。
そのために配列があります。

配列とは同じ種類の変数を複数作成し利用するものです。
例えば今回は商品の金額がそうですよね。

配列は普段の変数と違うので予め使用することを宣言する必要があります。
宣言方法は下記の通りです。

DIM 変数名(必要数)

今回の場合は商品の金額を KINGAKU1,KINGAKU2,KUNGAKU3 に入力していましたがこれはすべて商品の金額という同じ種類の値でした。
しかし変数名がすべて違うので面倒だったのです。
そこで配列は同じ名前の変数を必要な数だけ作成してくれます。
今回は金額が3つ必要なので宣言は下記のようになります。

DIM KINGAKU(3)

宣言した配列を使うのは変数の後にかっこをつけて配列の何番目を使うのかを記述します。
上記の場合 KINGAKU という変数が3つ作られました。
使用できる変数は下記の3つです。

KINGAKU(0)
KINGAKU(1)
KINGAKU(2)

コンピュータの場合順番は0から始まります。
3つあるんで0番目、1番目、2番目の3つとなります。

ではこの配列を使用した場合サンプルはどう変わるでしょうか?

■プログラム
0001 ' sample 2
0002 CLEAR
0003 DIM KINGAKU(3)
0004 INPUT KINGAKU(0)
0005 INPUT KINGAKU(1)
0006 INPUT KINGAKU(2)
0007 GOUKEI = KINGAKU(0) + KINGAKU(1) + KINGAKU(2)
0008 PRINT GOUKEI
0009 END


0002行目の CLEAR は配列を使用したときに2回目以降でエラーがでます。これはプチコンの仕様のようです。
私は始めて経験しました。

配列を宣言し各配列に金額を入力し合計を計算します。

ん?
最初のサンプルとあまり変わらないし、逆に面倒になったんでは?

このままだとそうなりますね。

そこでこのサンプルは進化します。

■プログラム
0001 ' sample 2
0002 CLEAR
0003 DIM KINGAKU(3)
0004 FOR I=0 TO 2
0005 INPUT KINGAKU(I)
0006 NEXT I
0007 GOUKEI = 0
0008 FOR I=0 TO 2
0009 GOUKEI = GOUKEI + KINGAKU(I)
0010 NEXT I
0011 PRINT GOUKEI
0012 END


ここではループ処理でよく使われる FOR 文が使われています。
書式は

FOR 変数名=初期値 TO 終値 STEP 増分

  繰り返す処理

NEXT 変数名

使用する変数名はループの際のインデックスとして使用できます。
NEXT の後に書かれる変数名は当然 FOR 文で記述した変数名と同じです。

0004 FOR I=0 TO 2
0005 INPUT KINGAKU(I)
0006 NEXT I


これは変数Iの値が0から2まで1ずつ増えていくという意味です。
実際には

最初のループでは I の値は0です。
次のループでは I の値は1です。
次のループでは I の値は2です。
I が終値になったのでループは終了です。

言い換えれば

最初のループでは I の値は0です。
 KINGAKU(0)の入力をします。
次のループでは I の値は1です。
 KINGAKU(1)の入力をします。
次のループでは I の値は2です。
 KINGAKU(2)の入力をします。
I が終値になったのでループは終了です。

後の FOR 文も同様です。

ここまで来るとなんとなくわかったかもしれません。
少々書き方が面倒にはなりましたが FOR 文によるループを使えば同じ処理が複数回実行できるということです。

例えばこのサンプルで1000個の商品を計算する場合は配列を1000個にしループの終値を999に変更すればいいだけです。

ここまでくればこのやり方がいい方法であることが理解できたのでは?