初めてのプログラムシリーズも今日で最後。
7日目は複数の値を保存できる配列について
初めてのプログラム 6日目 で作った計算プログラムを改良して、
最後に今までの計算の流れが表示されるようにするよ
そのためには今までの計算結果を全て記憶しないと行けない。
そんな時に便利なのが配列
配列は複数の変数が集まったようなもので、配列名と添え字を指定するとそれぞれに異なる値を代入できる。
配列をつかうことで複数の値を一つにまとめて管理できるよ
配列は次のように書く
配列名[添え字] = 値
例えば
a[1] = 1
a[2] = 3
とすると
a[1]には1がa[2]には3が代入される。
実際に作ってみよう
SmallBasicを起動したら
昨日保存した6_Bekijoを開いて、
名前を付けて保存で「7_List」で保存する。
今回は配列をc、添え字をiとする。
まずは、配列に値を代入させるために添え字を管理する変数を作る。
a=x
の下で新しい変数jに0を代入しよう
変更前
a=x
変更後
a=x
j=1
画面に計算の途中経過を表示している部分をそれぞれ
配列に値を入れるようにしよう。
変更前
a = x + y
TextWindow.WriteLine(x + "+" + y + "=" + a)
変更後
a = x + y
c[j] + "+" + y + "=" + a
TextWindow.WriteLine(c[i])
jには1を代入したので
配列c[1]に、計算結果が代入されるよ。
でも、このままでは2回目の計算を行ったときに上書きされてしまうので、添え字を1加算しておく
変更前
a = x + y
c[j] + "+" + y + "=" + a
TextWindow.WriteLine(c[i])
変更後
a = x + y
c[j] + "+" + y + "=" + a
TextWindow.WriteLine(c[i])
j = j + 1
これで2回目の計算では配列c[2]に計算結果が代入されるようになる。
引き算、かけ算、割り算、べき乗についても同様の処理を入れる。
次に、配列の値を全て表示するプログラムを作る。
配列に入っている計算結果を繰り返し表示するので6日目のFor文が使える。
繰り返すのは配列に入っている要素数分。
要素数を求めるにはArray.GetItemCount(配列名)を使用する。
変更前
TextWindow.WriteLine("計算結果は" + a + "です。")
変更後
For i = 1 To Array.GetItemCount(c)
EndFor
TextWindow.WriteLine("計算結果は" + a + "です。")
Forの中で配列c 添え字iの値を出力する処理を追加する。
For i = 1 To Array.GetItemCount(c)
TextWindow.WriteLine(c[i])
EndFor
TextWindow.WriteLine("計算結果は" + a + "です。")
プログラム全体は次の通り
TextWindow.WriteLine("元の値を入れてね")
x = TextWindow.ReadNumber()
a = x
j = 1
While f <> "="
TextWindow.WriteLine("計算する方法を選んでね [+ - * / ^ =]")
f = TextWindow.Read()
If f <> "=" Then
TextWindow.WriteLine("計算する値を入れてね")
y = TextWindow.ReadNumber()
If f="+" Then
a = x + y
c[j] = x + "+" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
ElseIf f="-" Then
a = x - y
c[j] = x + "-" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
ElseIf f="*" Then
a = x * y
c[j] = x + "*" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
ElseIf f="/" Then
a = x / y
c[j] = x + "/" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
ElseIf f="^" Then
If y >= 0 Then
a = 1
For i = 1 To y
a= a * x
EndFor
EndIf
c[j] = x + "^" + y + "=" + a
TextWindow.WriteLine(c[j])
j = j + 1
Else
TextWindow.WriteLine("計算できないです")
EndIf
x=a
EndIf
EndWhile
For i = 1 To Array.GetItemCount(c)
TextWindow.WriteLine(c[i])
EndFor
TextWindow.WriteLine("計算結果は" + a + "です。")
入力し終わったらプログラムを実行して繰り返し計算して、=で今までの計算経過が表示されることを確認したら保存しよう。

これで初めてのプログラムシリーズはおしまい。
駆け足だったけれど、コレまでの応用で簡単なゲームを作ったりも出来るよ
今後はより実践的な絵を描いたりアニメーションするプログラムとかも紹介して行けたらと思ってます。