5日目はGoTo文について
初めてのプログラム 4日目 SmallBASICで四則演算プログラムを改良して繰り返し計算が出来るようにするよ
今までプログラムは上から下に流れて終わるだけだったけれど
GoTo文を使うと、プログラムの処理を好きな場所へ飛ばすことが出来る。
SmallBasicを起動したら
昨日保存した4_Shisokuを開いて、
名前を付けて保存で「5_Dentaku」で保存する。
+-*/に=を加えて=が押されるまで計算する方法を選ぶ処理に戻るようにする。
戻る場所を指定するには戻る位置にラベルをセットする。
ラベルのセットの仕方は
ラベル名に続いてコロン「:」を入力する。
今回は計算する方法を選んでね、の直前に戻したいので
TextWindow.WriteLine("計算する方法を選んでね [+ - * /]")
の前にラベルを追加する。
ついでに、計算する方法に[=}も追加しておこう
ReStart:
TextWindow.WriteLine("計算する方法を選んでね [+ - * / =]")
ReStartに戻る処理を追加する。
計算を行ったら計算結果を元の値に代入する処理を追加する。
プログラムの最後に
x=a
をセットする。
このままだと、計算する方法におかしな値が入ってきた場合や、いきなり=を押した場合
aに値が入らないので、xを入力時にaにも同じ値を代入するようにする
x = TextWindow.ReadNumber()
の下に
a=x
を追加する。
計算後ReStartに戻るので
プログラムの最後に
GoTo Restart
を追加する。
次に=を押した処理の追加する。
=が押されると計算結果を表示してプログラムを終了するようにする。
プログラムの最後に=が押されたときに飛ぶラベルを追加して計算結果を表示するようにしよう。
ラベル名はEqualにする。
プログラムの最後に
Equal:
TextWindow.WriteLine("計算結果は" + a + "です。")
を追加する。
=が押されたときだけEqualへ飛ぶ処理を追加するのでif文を使う。
TextWindow.WriteLine("計算する方法を選んでね [+ - * /]")
f = TextWindow.Read()
の下に
If f = "=" Then
Goto Equal
EndIf
を追加する。
プログラム全体は次の通り
TextWindow.WriteLine("元の値を入れてね")
x = TextWindow.ReadNumber()
a = x
ReStart:
TextWindow.WriteLine("計算する方法を選んでね [+ - * / =]")
f = TextWindow.Read()
If f = "=" Then
Goto Equal
EndIf
TextWindow.WriteLine("計算する値を入れてね")
y = TextWindow.ReadNumber()
If f="+" Then
a = x + y
TextWindow.WriteLine(x + "+" + y + "=" + a)
ElseIf f="-" Then
a = x - y
TextWindow.WriteLine(x + "-" + y + "=" + a)
ElseIf f="*" Then
a = x * y
TextWindow.WriteLine(x + "*" + y + "=" + a)
ElseIf f="/" Then
a = x / y
TextWindow.WriteLine(x + "/" + y + "=" + a)
Else
TextWindow.WriteLine("計算できないです")
EndIf
x=a
Goto ReStart
Equal:
TextWindow.WriteLine("計算結果は" + a + "です。")
入力し終わったらプログラムを実行して繰り返し計算できること
=を押すと計算結果が表示されてプログラムが終了できることを確認しよう

初めてのプログラム 6日目 SmallBASICでべき乗計算