初めてのプログラム 7日目 完成電卓プログラム

2010/4/12 15412hit

初めてのプログラムシリーズも今日で最後。
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 + "です。")


入力し終わったらプログラムを実行して繰り返し計算して、=で今までの計算経過が表示されることを確認したら保存しよう。

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

前:iPhone OS4.0概略 次:Windows 7でブルースクリーン 解消か?

関連キーワード

[簡易言語][SmallBasic]

コメント

名前:名無しさん|投稿日:2013/08/12 09:58

俺の失敗作の文がやけに長い件
1日中突き通しでやったのに・・
Coins = 0

Restart:
OnlyCoins = 0
digpoints = 0
scores = 0
Quest = 1

pluses:
TextWindow.WriteLine("0 key is shop or restart")
getscoreafter:
TextWindow.Write(Quest + "+" + Quest + "=")
Checking = TextWindow.ReadNumber()

If Checking = 0 Then
TextWindow.WriteLine("0-7 key:restart,8 key is contine,9 key:shop")
TextWindow.Write(">")
WhichWay = TextWindow.ReadNumber()
If WhichWay = 8 Then
TextWindow.Clear()
TextWindow.Write(Quest + "+" + Quest + "=")
Checking = TextWindow.ReadNumber()
ElseIf WhichWay = 9 Then
TextWindow.WriteLine("Shops(Adding future)")
TextWindow.WriteLine("0 key is score drinks,other key is exit")
WhichWay = 0
buy2:
buy = TextWindow.ReadNumber()

If buy = 0 Then
TextWindow.WriteLine("what is size(0 key is small,cash50,80 scores,1 key is medium,cash180,400 scores,2 key is big,cash400,1000 scores,")
TextWindow.WriteLine("3 key

名前:名無しさん|投稿日:2013/09/04 19:30

唐突ですけどMath.Powerがよくわからない・・

名前:kenz|投稿日:2013/09/04 23:14

Math.pow(a, b);ですよ

名前:名無しさん|投稿日:2013/09/16 11:48

ステージ2も作ってみました。
>>TMS700

名前:名無しさん|投稿日:2013/09/19 16:32

おっと、レス違い。倉庫番風です

コメントを投稿する

名前URI
コメント