変数を使ってみよう
「変数」という物を使ってACSを動かしてみましょう。


整数や文字列を画面に出力することはできましたが、出力する値は「その場限り」の物で、持ち運びができませんでした。
(7 + 8という値なら他の場所で7 + 8を出力するためには再度7 + 8をACSに記入しなければなりませんでした。)
要所要所で同様の記述(print(d:7 + 8)やprint(d:1 + 2)など)をすれば回避できますが、それでは応用の利かないACSになってしまって、これでは不便です。
整数を「持ち運び・値の変更」を可能にする物が必要です。
「持ち運び・値の変更」を可能にするのが、変数という概念です。
変数を使うことによってACSに複雑な動作をさせることが可能です。
次のACSを書いてみましょう。


#include "zcommon.acs"

Script 1 ENTER
{
//変数aの宣言
int a;
//aに30を代入
a = 30;
//aの値を画面に出力
print(d:a);
}


が表示されるはずです。


int a;

a = 30;

print(d:a);
のように、行の最後に";"(セミコロン)が書いてありますが、通常、ACSを記入するときは(C言語でも)行末にセミコロンを記入する必要があります。
セミコロンは「ここでひとまず宣言を終わります。」を主張する役割を持っています。
(正確には、行末ではありませんが、行末にセミコロンを書いておけばとりあえずは大丈夫です。)

#inlucdeとかScriptとか{}の部分にはセミコロンを付けてはなりません。


さて、最初の赤い字の部分に注目してみましょう。

int a;

と書かれていますが、これは「int型(整数型)の変数aを宣言する。」と言う意味です。
(整数の値が格納可能な変数です。)
つまり、この宣言によって整数を扱うことのできる変数aがACSに生成されます。

さて、int型(整数型)の変数aが宣言されました。次にこの変数に整数を代入します。

a = 30;

の部分で、変数aに30という値を代入しています。

最後の赤い字の部分を見てましょう。

print(d:a);

と書かれていますね。printはゲーム画面に指定された文字や数字を出力する役割を果たしているのでしたね。
さらに、d:は「次に示す整数を画面に出力せよ」という指令でした。
ここでは、変数aが、自身に格納された30という値をprintに渡しています。
このように、変数は普通の数字のようにも扱えます。(厳密には違いますが・・・)

(※:お気づきかもしれませんが、ACSは左から右へ、上から下へ進んでいきます。)

←イメージ

例のように、変数を宣言するときには

(変数の型) (変数の名前);

と書きましょう。(変数の型については後ほど詳しく紹介します。とりあえずint型だけ覚えていれば今の所十分です。)
※セミコロンを忘れないで下さい。


変数についてもう少しだけ詳しく紹介します。
変数aが宣言されたとき、コンピュータのどこかに変数aのためのスペースが確保されます。
このスペース(変数a)に値を入れることもできますし、変数の名前を記述することによってACSが値を呼び出すこともできます。
このような仕組みをとることで、値を「持ち運ぶ」ことが可能になります。しかも中身をいつでも自由に変えることができて、「値の変更」も可能になります。
変数による恩恵はすぐに実感できると思います。では、先に進みましょう。


次の様なACSも作ってみましょう。


#include "zcommon.acs"

Script 1 ENTER
{
//変数aとbの宣言
int a;
int b;

//aに30を代入
a = 30;

//bにa+20(=50)を代入
b = a + 20;

//bの値を画面に出力
print(s:"b is ",d:b);
}


と表示されます。

今回は変数aだけでなく、変数bも宣言されました。

int a;
int b;

と書くのは長ったらしいので、

int a,b;

と一度に宣言することもできます。
さらに、「値が30の変数aを宣言する」といったこともできます。その場合、

int a = 30;

と書くこともできます。このことを変数の初期化と言います。
ACSでは変数の初期化を行わなかった場合、その変数に自動的に0が代入されます。
もちろん、

int a=30,b;

と書くことも可能です。(この時点で、変数bの値は0です。)

b = a + 20;

の部分を見てみましょう。ここでは、「a+20の値をbに代入する」と言う動作を行っています。
"=" は「左辺と右辺が等しい」という意味ではなく「右の内容を左に代入」という意味です。

30 = a;

と逆に記述してもダメです。

また、次に示すようなACSも成り立ちます。


#include "zcommon.acs"

Script 1 ENTER
{
//変数aの宣言(1で初期化)
int a = 1;

//aにa+1(=2)を代入
a = a + 1;

//aの値(2)を画面に出力
print(s:"a is ",d:a);
}


このように、

a = a + 1;

と言う文が成り立つことに注意しましょう。
ここからも、数学の"="とは意味が違うことがわかりますね。


変数を宣言するとき、基本的にはどんな名前でも宣言できますが、次の様な規則があります。
(無視して次の章に進んでいただいても現時点ではかまいません。)
・変数の名前の先頭は数字ではない文字である必要がある。
・名前の先頭でない限り、変数の名前に数字を持ってきても良い。
・スコープ(後に解説)がぶつかり合う所で、同じ名前の変数名(や関数名など)を宣言してはならない。
・ACSを構成するキーワードと同じ名前は与えられない。(includeやScriptなど)
数字ではない文字とは、アルファベットの小文字と大文字とアンダースコア"_"を指します。(a〜zとA〜Zと_)
3つ目の規則は後で紹介しますが、要するに、他の物と区別できなくなるような名前を変数に付けてはならないと言う意味です。
(もちろん、同じ名前の変数を宣言してもダメです。)
次の様な変数名は宣言できます。

Variable
_variable
_a2
a2

次の様な変数名は宣言できません。
2a
(先頭文字は数字でない文字である必要がある。)
SCRIPT
(ACSを記述する上で必要となるキーワードを変数名には持ってくることができない。)
Sin
(関数Sinと名前が同じになる。)

注意:ACSでは大文字と小文字を区別しません。つまり、次のような変数名、関数名は同一と見なされます。

Aとa

VariableとVaRiAbLe

ScriptとscriptとSCRIPT

Sinとsin


まとめ

・各行末にはセミコロンを書く。
・変数は値を「持ち運び」してくれる。
・変数に自由に値を入れることもできるし、値を取り出すこともできる。
・変数は普通の値のようにも使用することができる。(変数の名前を記述することで、変数の値を引き出せる。)
・変数は (変数の型) (変数の名前); で宣言する。
・"=" は右の内容を左に代入する役割を果たす。
・変数の命名には規則がある。


Home Back Next