だてしむソフトウエア開発室>挑戦!HSP>一から始めるHSP(5)
| 12.HSPに数字を記憶させよう・・ | ▲top |
|---|
コンピュータとは本来、計算をする機械です。HSPも例外ではなく、計算をすることができます。このセクションからはHSPにおける計算についての説明をしますが、その前に計算に必ず必要となる「変数」と「代入」について説明します。
変数というのは、データを一時的に記憶することができる、コンピュータ内にある仮想的な箱のようなものです。イメージにするとこんな感じでしょうか。(^^;)

変数には名前がつけられていて、ちなみに、その名前を「変数名」といいます。変数は変数名を使って、いつでもデータを参照したり、変更する事ができます。また、変数はスクリプトが終了したり、新たに中身が書き換えられたりするまでは、基本的にその内容を保持しています。用途としては、計算結果を記憶したり、ユーザーからの入力を保存したり、ソフトウエアに必要な情報を記憶したり(例えば小遣い帳ソフトなら「金額」とか)、HSPの状態を見たりすることができます。まさに、ソフトを作る上で必要不可欠な機能なのです。
さて、HSPでは変数をどのように作成し、どのように使うのでしょうか。サンプルスクリプトを実行しながら、変数について説明していきます。
▼変数の作成&内容の表示
まず、次に示すスクリプトを見てください。
1:
2:
3:a=10
print a
stop;変数aに10を代入
;変数aの内容を表示
;ウインドウはそのままスクリプトの1行目から、見慣れない表現が出てきました。数式のような表現ですが、これは
「aという名前の変数に10を記憶させる」
という意味です。イメージにして示すとこんな感じでしょうか。
このように変数にデータを記憶させることを「代入」といいます。HSPでの代入のさせ方は
変数名 = 内容
という書き方をします。ここで注意しなければならないのは、左側はつねに代入先の変数名ということです。数学のように左右を取りかえれはいけないのです。これは「=」(イコール)を「←」(左矢印)と置き換えてみると解りやすくなります。
変数名 ← 内容
サンプルスクリプトの1行目は「a←10」となり、まさしく「変数aに10を代入」って感じです。(^^)
さて、2行目のprint命令も、これまでとは違った書き方です。print命令のパラメータに変数名を書くことによって、変数の中身を画面に表示します。
さあ、実際にスクリプトを実行してみましょう。
実行結果:
このように、変数aに代入した内容「10」が表示されました。
さて、次は変数の内容の書き換えについて説明します。
▼変数の内容の書き換え
今度は、こんなスクリプトを実行してみましょう。
1:
2:
3:
4:a=10
a=50
print a
stop;変数aに10を代入
;変数aに50を代入
;変数aの内容を表示
;ウインドウはそのまま実行結果:
1行目で「変数aに10を代入」した後、2行目で同じ変数aに「50を代入」しています。既にデータの入っている変数に対して、再び代入をすると変数は新しいデータに上書きされます。実行結果を見ても、2行目で代入された50という値が表示されています。
プログラム言語が初めての方には少し概念的に難しいかもしれませんが、変数の代入について理解できたでしょうか?
HSPで変数に数値を代入するときに、一つ気をつけておかなければならないことがあります。それは、HSPでは整数値しか代入できないということです。基本的に小数を含む数値は代入できない(小数の代入はエラーとなる)ので、気を付けてください。(小数を扱うためには拡張DLLを使う必要があります)
変数は変数名を変える事によって使い分けられ、変数名は最高で1024個まで使う事ができます。また、変数はラベルと同様、大きなスクリプトとなると数十個〜百個単位で扱うことになります。後で混乱しないように分かりやすい変数名を付けてあげてください。
最後にHSPではラベルと同様に変数名を付けるときのルールがあります。変数を使うときは次の点に注意してください。
変数名のお約束 |
|
さあ、次はHSPに計算をさせてみましょう。(^^)
| 13.HSPに計算させてみよう・・ | ▼next |
▲top |
|---|
ここでは、HSPでの計算(四則演算)について説明します。
HSPでは足し算・引き算・掛け算・割り算・剰余(割り算の余り)の各計算ができます。各演算に使う記号は次の通りです。
演算の種類 |
記号 | 例 |
|---|---|---|
| 足し算 | + | 13+5 (答:18) |
| 引き算 | - | 7-9 (答:-2) |
| 掛け算 | * | 8*5 (答:40) |
| 割り算 | / | 10/5 (答:2) |
| 剰余(割り算の余り) | \ | 13\5 (答:3) |
| ( ) かっこ | ( ) | 2*(3+4) (答:14) |
▼数式の代入
では、次のサンプルを実行してみてください。
サンプル:
1:
2:
3:a=1+2+3+4
print a
stop;変数aに1+2+3+4の結果を代入
;変数aを表示
;ウインドウはそのままこのスクリプトの1行目には代入の中に数式が含まれています。前のセクションでやってみたように、代入の「=」(イコール)を「←」(左矢印)に置き換えてみましょう。
a ← 1+2+3+4
すなわち数式「1+2+3+4」の計算結果がaに代入されることになります。ちなみに実行結果はこんな感じです。(^^;)
実行結果:
▼変数を含む数式の代入
今度は、こんなサンプルを実行してみてください。
サンプル:
1:
2:
3:
4:a=10
b=a*5
print b
stop;変数aに10の結果を代入
;変数bにa×5の結果を代入
;変数bを表示
;ウインドウはそのままこのスクリプトの2行目には代入の中に「変数を含んだ数式」が含まれています。これも、代入の「=」(イコール)を「←」(左矢印)に置き換えてみましょう。
b ← a*5
このとき式中の変数は「変数の中身」と置き換えられます。変数aには1行目で10が代入されているので
b ← 10*5
すなわち数式「10*5」の計算結果がbに代入されることになります。つまり実行結果はこうなるわけです。(^^;)
実行結果:
▼数式を命令のパラメータに指定する
先程と少しだけ違う形のサンプルです。
サンプル:
1:
2:
3:a=10
print a*5
stop;変数aに10の結果を代入
;a×5の結果を表示
;ウインドウはそのまま先程のサンプルと違って、print命令で数式がパラメータとして指定されています。このようにすると、数式の結果がパラメータとして命令に渡されます。つまり、「a*5」の計算結果である「50」がprint命令のパラメータとなり、print命令はそれを表示します。
実行結果:
print命令だけでなく、一般に命令のパラメータに式を用いた場合、まず式の中身が計算されてから、その結果がパラメータとして用いられます。
例) wait 100*a ;a秒停止
見たところ、「HSPの式」は普通の「数学で使う式」とさほど変わらないように思えますが、「HSPの計算」と「数学の計算」の異なる部分として気を付けなければならないことが2つあります。それは・・
これらは演算速度の高速化のための仕様ですが、これを把握していないと思わぬミスをしてしまいます。特に複雑な計算をする場合では注意してください。ちなみにHSPで小数点演算や高度な計算を行ないたい場合は、拡張DLLを使った方法があるのでそちらを参照してください。