9.変数の利用(5/18)



ここまでで計算をする事が出来るようになりましたが、たかだか数値同士の加減乗除が出来るようになっても面白ないですよね。そこで、プログラムの中でも重要な機能である「変数」を使い、よりプログラムらしいものを作ってみようと思います。
変数意味は前章で行ったので、ここでは実際に使ってみましょう。
変数は数字の入る箱のようなものであり、その変数を計算式の要素にすれば、中身の数字で計算を行います。変数に数字を入れるには、イコール”=”を挟んで左側(左辺と呼びます)に変数、右側(右辺と呼びます)に代入する値を記述します。例えば「HEN」という名称の変数に数字”123”を入れる場合は、
HEN=123

と記述します。数字”123”を”3”を掛けるとすれば、

123*3

というのと、

HEN=123
HEN*3

は同じ結果が得られます。
前章のプログラムを応用し、「HEN」という名称の変数に数字を入れ、その変数を画面に表示します。

CH=G@SETUP(640,480,8,1)
G@FONT(0,0,0,3,"MSゴシック")
HEN=123
G@PRINT(CH,0,0,STR(HEN))
LOOP
G@FLIP()
ENDLOOP

どうですか、3行目の”HEN=123”で代入した数字が表示されますよね。
ここで代入する値となるイコール”=”の右辺には、単純に数字1字を書くだけではなく、計算式を書く事が出来ます。
例えば次に示すプログラムの場合、「(123-55)*(22+45-8)」の結果が「HEN」という名称の変数に代入されます。

HEN=(123-55)*(22+45-8)

また、右辺には変数を記述する事も出来ます。例えば、

HEN=(10*15)-(43/2)

というのと、

A=10
B=15
C=43
D=2
HEN=(A*B)-(C/D)

は同じ結果が得られます。
変数を利用する為の基本はこれだけです。後は、この組み合わせだけです。

では、ここで説明してきた変数の利用法を覚えて何が嬉しいのでしょうか?
この嬉しい点をハッキリさせておく事は物事を勉強してゆく上で非常に気になる事であり、重要な事だと思います。次に私が考える幾つかの利用法をあげてみます。

@演算回数の低減
例えば「”2+4*3”にそれぞれ”5”を加減乗除をする」場合、単純に考えれば次のようになります。
(2+4*3)+5
(2+4*3)−5
(2+4*3)*5
(2+4*3)/5
この計算では12回(演算子数)の演算が行なわれますが、この計算を人間の手で行うとすればどうするでしょうか?
多分、”2+4*3”の部分はどれも同じなので最初に1度だけ演算してしまい、その結果に加減乗除をする事で演算回数を減らそうと考えると思います。
ANS=(2+4*3)
ANS+5
ANS−5
ANS*5
ANS/5
最初の1行で”2+4*3”の結果を変数”ANS”に代入した後、同変数に対して加減乗除を行う事で、演算回数を6回に減らす事ができます。
このように演算回数を減らす事で処理速度の向上に貢献させます。

A計算式の柔軟性
これはこれまでに何度も説明してきた事などで簡単に済ませますが、ようは、ユーザーの入力などの外部要因によって計算式の要素を変化させたい場合に使用する場合です。
例えばユーザーが押したキーボードの番号(各ボタンに番号が割り振られている事は前にも書きましたよね)を計算式に反映したいとかね。
これまで計算式を例に色々な例を挙げてきており、今回も「キーボードの番号を計算式に反映」とか書きましたが、同じように外部要因でプログラムの動きを変えたい場合もこの方法を利用します。これはプログラム上では、もっとも重要な変数の利用法であり、プログラムの神髄であります。

B計算結果の保存
例えば、貴方が仕事で電卓を使い計算した結果を10分後に利用するとします。さらにその10分間の間には同じ電卓で別の計算をしなくてはならない場合、貴方なら計算した結果をどうしますか?まあ、記憶力に相当の自信がある人でない限り、結果をメモ用紙にでも待避しておく事でしょう。
これと同じように、プログラム上で計算した結果を後で使う事が分かっている場合、待避しておくのに変数を利用します。

C複雑で長い計算式を分かりやすくする
例えば「((1+2*3/4)−5)*6」、「(7−8/(9*10)−11)*12」、「13*(14+(15*16))」の各計算結果を足し算する場合、単純に「((1+2*3/4)−5)*6+(7−8/(9*10)−11)*12+13*(14+(15*16))」という、やけに長い計算式を作った場合、ぱっと見で人間が計算するのは面倒です。だって、計算式の左から右まで一度に見て計算の順番を理解するのは大変ですものね。
まあ、プログラムで同じような記述をしたものをコンピュータでに計算させるのならば、大した問題ではありません。コンピュータはいともたやすく結果を出す事でしょう。
でも、プログラムするのが人間である為、こんな見づらい計算式ではプログラムミス(バグ、不良)を作り込んでしまう原因になります。プログラムを作っているときでさえ混乱してしまいがちなのに、1週間後、1ヶ月後に同じプログラムを見直したらパニックに陥るかもしれません。
こんなプログラムはプロの世界では失格ですし、ホビープログラマとしても誉めれたものではありません。では、どうしたらよいのでしょうか?
色々な方法が考えられるでしょうが、もっとも簡単解決方法は、計算式を分割する事です。
例えば3つの計算式を個々に計算し結果を変数に入れておき、最後に3つの結果を足し算するようにしたらどうでしょう。
A=((1+2*3/4)*6
B=(7-8/(9*10)-11)*12
C=13*(14+(15*16))
HEN=A+B+C
どうですか、ちょっとは見やすくなったでしょうか?
ここら辺の感覚は個人差がありますので、自分にとって一番理想的なものを試行錯誤してみるのも良いでしょう。
後、各計算式に注釈(計算式の説明)を付け加えておけば、よりベターでしょう。