step7:変数を使ってみよう
そろそろスクリプトが長くなってきましたよね。こうなると、複雑で読 みにくくなってくることがあります。そんな時に便利なのがコメントで す。コメントとは、スクリプトの中に注釈として好きな文字を入れてお くこと。でも、それが命令と勘違いされては困るのでコメントの書き方 にもルールがあります。たとえば、
; この行はコメントでーす
mes "メッセージ"; この部分はコメントでーす
のように使います。つまり
「;(セミコロン)」の後はコメントになり、無視される。
ということです。「;」の後には命令を書こうが、文章を書こうがスク リプトの実行には何の影響もありません。ですから、
exec "notepad" ; メモ帳を起動
のように気軽に注釈をつけておくことが可能です。こうすれば、後でス クリプトを見直した時にも、どの行で何が行なわれているかが解りやす くなるので、おすすめですよ。
さて、それでは本題の「変数を使ってみよう」に入りましょう。 そもそも変数って何なんだー、って思うでしょう。いままでは、たとえ ばカレントポジションを変更したければ、
pos 150,80 ; カレントポジションを(150,80)に変更
のように数値を指定していました。これを変数というもので置きかえる ことができます。すると、
x=150 ; 変数xに150を代入
y=80 ; 変数yに80を代入
pos x,y ; カレントポジションを(x,y)に変更
こうなります。これでも、カレントポジションは(150,80)に変更されま す。ええーーー?? どうしてーー??
変数はよく、「いれもの」にたとえられます。数値を記憶しておく、「 いれもの」です。「いれもの」には名前をつけておきます。たとえば、
「x という名前のいれもの」
「いれもの」には当然、中に何かを入れることができます。
「xといういれものに100という数字を入れる」
といった感じで、中に数字を入れておくことができます。この「いれもの」が、すなわち変数。だから、上の言葉は、
「xという変数に100という数字を入れる」
ということだと思ってください。これをスクリプトで書くと、
x=100
になります。このように変数(いれもの)に数字を入れることを「代入」 と呼びます。代入を行なうと、変数に数字が記憶され、それ以降はその 変数を数字のかわりとして使うことができるようになります。
「代入」とは、変数に数値を覚えさせること
「代入」は、「変数名」+「=(イコール)」+「数値」で行なう
というのをよく覚えておいてください。
hensu
|
=
|
1234
|
|
|
|
|
|
変数名
|
|
代入する数値
|
代入だけは、他の命令と違って書き方が特殊ですが、算数の式と似てい るのでわかってしまえば簡単です。 変数名は、英文字(20文字以内)の名前をつけたもので、 覚えさせられる数値は、「123」のような整数値か、「1.5」のような小数値になります。
変数名には、さらにルールがあります。命令と同じ単語は使ってはいけ ません。命令か変数かわからなくなっちゃいますからね。あと、前に説明したラベルと同じ名前を使ってもいけません。
変数は好きな時に代入することができ、スクリプトの中で何度でも変更 することができます。1つの変数が覚えているのは1つの数値だけです から、最後に代入した数値が常に記憶されてることになります。 たとえば、
hen=150
cls 1
hen=50
のようなスクリプトは、1行目で変数henに150という数値を代入しまし たが、3行目には変数henは50に変更されています。この時点ですでに前 に代入した150は消えてなくなってしまいます。
でもここで言っているだけでは、やっぱりいまひとつ解りませんよね。 そこで、変数の記憶している数値を実際に確かめてみましょう。 前に出てきた「mes」命令でそれができます。「mes」命令は、
mes "文字列"+変数名
で文字列の後に変数の内容を表示できるのです。「+(プラス)」の記号 を使うことで文字列と変数名をどんどんつなげることもできます。 これを使った、次のようなスクリプトを入力してみましょう。
hen=150
mes "現在の変数henの数値は、"+hen+"です。"
hen=50
mes "現在の変数henの数値は、"+hen+"です。"
stop
このスクリプトを実行してみると…。
現在の変数henの数値は、150です。
現在の変数henの数値は、50です。
というように表示されます。 つまり、2行目の時点では変数henは150という数値を記憶していました が、3行目に新しく代入があったので、4行目では変数henは50という数 値になっていたのです。
さあ、ここまでわかったところで、もともとの例になっていたスクリプ トに戻ってみましょう。
x=150
y=80
pos x,y
というスクリプトは結局、
pos 150,80
と指定しているのと同じことなのです。 数字の代わりに、名前を使ってるだけなんじゃないかー。と思うかもし れません。いやいやしかし、これは実はとても応用のきく便利なものな のです。そのカギを握るもの。それが数式です。
いままでパラメータとして数値を入れる場所には、100とか20とかいう 数を直接書いていました。そしてさらに、それ以外に変数を書いてもい いということも覚えましたね。でもでもしかし、いやいや実は、 数式を書いてもよかったのです。 えーーー?? 今度は数式?? また別な要素が?? と思うのは間違いで、数字と変数を計算式とおり混ぜて書くことができ るということなのです。それが数式。つまり、
数式とは、数値と変数、またはそれらを計算式でつなげて書くこと
なのです。計算式とは、つまり
1+1
とか、
125+200-32
とか。いわゆる、算数の式です。だから、
pos 150,100
じゃなくて、
pos 100+50,50*2
でもいいのです。これも「150,100」と同じことになります。 いやいやちょっと「50*2」って何?? と思うでしょう。HSPでは、計算 で使う記号が次のようになっているのです。
「+」は足し算
「-」は引き算
「*」は掛け算(×)
「/」は割り算(÷)
キーボードには「×」「÷」といった記号がないので、かわりに別の記 号を使っています。だから、「50*2」は50掛ける2のこと。これに変数 をまぜることができるわけですから、
x=30
y=100
pos x,y
mes "1.ばんめ"
pos x,y+50
mes "2.ばんめ"
のように、使用できます。この例だと、(30,100)と(30,150)にメッセー ジが表示されます。しかもこの場合、「もうちょっと全体を上にずらし たい…」という時に、2行目のy=100を、y=80などに変更するだけで、2 つのメッセージの場所をいっきに変更することができるというわけ。 この例だとメッセージが2つだけだから楽だけど、これが10行くらいあ るメッセージだとしたら、いちいち「pos」命令の数値を変更していく 苦労と比べるとすごく便利になりますよね。
数式はさらに、変数の代入でも使うことができます。
x=5
y=10
z=x*8/y
のように使ってみたり、
hen=0
hen=hen+1
のように使います。上の例では、1行目で変数henは0が代入されていま す。でも2行目でどうなっちゃうんでしょう?? 2行目で変数henに代入される前の時点での変数henは、0です。それに1 を足したものを、ふたたび変数henに代入するわけですから、変数henは 1になります…と、そんな複雑に考えなくても、
hen=hen+1 は、変数henの内容に1を足す
というように覚えておくだけでOKです。このように、もとの変数の値を 計算によって変化させる…というパターンはよく使うことが多いので、 決まり文句だと思って覚えてしまってもいいでしょう。 さあ、だいたいの変数の使い方、理解できましたか?? この次のパートでは、さらにその応用を説明していきましょうね。