| 2024年10月01日 | 公開 |
記事にふりがなを付けたいときは、次のチェックボックスをクリックしてください。
BASICでは、変数と呼ばれる、数や文字列を入れておける箱の様な物が使えます。数を入れておく箱を数値変数、文字列を入れておく箱を文字列変数といいます。この章では、変数の使い方について説明します。
まず、数の入れ物である、数値変数を使ってみましょう。下の画面26で、まずA=5ENTERと入力し、続いてPRINT AENTERと入力してください。さらに、PRINT A+2ENTERと入力してください。
A=5ENTER、PRINT AENTER、PRINT A+2ENTERと、3つの命令を入力してください。
そうすると、実行例52に示す表示になるはずです。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok A=5 ← 変数Aに5を代入する Ok PRINT A ← Aの値を表示させる 5 ← Aの値の5が表示される Ok PRINT A+2 ← A+2の計算結果を表示させる 7 ← 5+2の計算結果が表示される
A=5ENTERと入力すると、Aという名前の箱(数値変数)に、5という数字を入れます。
変数は、コンピュータ内に、たくさん作る事ができますので、それぞれを区別するために、名前を付ける必要があります。その名前の事を、変数名といいます。この場合、Aという変数名の数値変数を使っています。
変数名のAの後に、=と5を入力していますが、この=は、それに続く数字を、変数の箱の中に入れる事を意味しています。
つまり、A=5という命令は、「Aという数値変数に、5という数を入れなさい」という意味です。
この様に、変数の箱の中に数を入れる事を代入といいます。また、A=5の様な、変数に数を代入する命令の事を、代入文といいます。
A=5の代入文を実行しただけでは、本当にAに5が代入されているのか分かりませんので、続くPRINT AENTERで、Aに代入された数を確認しています。この様に、PRINT文を使えば、変数の内容(変数に代入された数)を画面に表示できます。
続いてPRINT A+2ENTERと入力すると、7と表示されますが、これは、A+2という数式の計算結果が表示されたからです。
数式の中に変数が使われている場合は、変数名が、その変数に代入されている値に置き換えられたうえで計算されます。
A+2の例では、変数名のAの部分が、Aに代入されている5という数に置き換えられて、数式が5+2と解釈されます。PRINT A+2を実行すると、5+2の計算結果の7が表示されるのです。
先程は、Aという変数を1つ使いましたが、今度は、AとBの、2つの変数を使ってみましょう。
下の画面27で、A=5ENTER、B=3ENTER、PRINT A,B,A+BENTERと、3つの命令を順に入力してください。
A=5ENTER、B=3ENTER、PRINT A,B,A+BENTERの3つの命令を順に入力してください。
そうすると、実行例53の様な表示になるはずです。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok A=5 ← 変数Aに5を代入する Ok B=3 ← 変数Bに3を代入する Ok PRINT A,B,A+B ← AとBとA+Bの値を順に表示させる 5 3 8 ↑ 5と3と5+3の計算結果の3つが順に表示される Ok
最初のA=5という代入文で、変数Aに5を代入しています。
次のB=3という代入文で、変数Bに3を代入しています。
最後のPRINT A,B,A+BというPRINT文で、Aに代入された値、Bに代入された値、A+Bの計算結果の3つを順に表示しています。
今回は、2つの数値変数を使いましたが、もっと変数を増やす事もできます。コンピュータのメモリ容量の制限があるので、いくつでも変数を増やせるわけではありませんが、普通の使い方で、変数の数が足りなくなる事はありません。
先程の例では、AやBという名前の変数を使いましたが、もちろん他の変数名も使えます。ただし、変数名を決める時には、守るべきルールがあります。
変数名の文字数ですが、何文字でも構いません。よって、AやBといった、一文字の変数名を使っても構いませんし、NAGAIHENSUMEIという具合に、変数名を長くしてもかまいません。
変数名にアルファベットを使う場合は、大文字と小文字を区別しません。
例えば、bとBは、同じ変数を表しています。また、ABcとaBCも同じ変数を表しています。
大文字と小文字を区別しない事を確認するために、次の画面28で、B=3ENTERと入力した後に、PRINT bENTERと入力してください。
まずB=3ENTERと入力し、続いてPRINT bENTERと入力してください。
そうすると、実行例54の様な表示になるはずです。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok B=3 ← 変数Bに3を代入する Ok PRINT b ← bの値を表示させる 3 ← Bとbは同じ変数なので、Bに代入した3が表示される Ok
変数名には、半角アルファベット(a~zとA~Z)、半角数字(0~9)、アンダースコア(_)、および漢字などの全角文字が使えます。例えば、A、ABC、ABC123、TARO_YAMADA、リンゴ等が変数名として使えます。
同じ文字でも、半角文字と全角文字は区別されます。例えば、AとAは、別の変数として扱われます。
変数名は、半角の数字で始まってはいけません。よって、1Aや123abc等は、変数名として使えません。使おうとすると、エラーになります。
+、-、*、/、"、'、;、:、^、=、<、>、?、,、.、$等の半角記号は、変数名として使えません。これらの記号であっても、全角文字なら変数名に使えます。ただし、全角であっても、÷は例外的に、変数名に使えません。
同じ変数に、何度も値を代入する事ができます。
下の画面29で、A=3ENTER、PRINT AENTER、A=5ENTER、PRINT AENTER、A=1ENTER、PRINT AENTERの、6つの命令を順に入力してください。
A=3ENTER、PRINT AENTER、A=5ENTER、PRINT AENTER、A=1ENTER、PRINT AENTERの、6つの命令を順に入力してください。
そうすると、実行例55の様な表示になるはずです。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok A=3 ← 変数Aに3を代入 Ok PRINT A ← 変数Aの値を表示 3 ← 直前に代入された値の3が表示される Ok A=5 ← 変数Aに5を代入 Ok PRINT A ← 変数Aの値を表示 5 ← 直前に代入された値の5が表示される Ok A=1 ← 変数Aに1を代入 Ok PRINT A ← 変数Aの値を表示 1 ← 直前に代入された値の1が表示される Ok
この例では、変数Aに、3、5、1の順で、3回値を代入しています。そして、代入するたびに、PRINT Aで、Aに代入されている値を表示させ、値を確認しています。
最初にA=3を実行した時点では、Aには3が代入されています。そのため、その直後にPRINT Aで値を確認すると、3が表示されます。
2回目の代入では、A=5で、Aに5を代入しています。この時点で、変数Aの内容は、3から5に変わります。直後のPRINT Aでは、そのため5が表示されます。
3回目の代入では、A=1で、Aに1を代入しています。この時点で、変数Aの内容は、5から1に変わります。直後のPRINT Aでは、そのため1が表示されます。
この様に、同じ変数に複数回の代入があった場合は、その時点で最後に代入された値が読みだされます。
下の画面30で、PRINT AENTERと入力してください。
PRINT AENTERと入力してください。
そうすると、実行例56の様な画面になるはずです。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok PRINT A ← 値を代入した事のない変数の値を表示 0 ← 0が表示される Ok
この様に、以前に値を代入した事のない変数を読み出すと、0が読みだされます。
ある変数に値を代入する時に、代入の直前のその変数の値を使う事ができます。
こういう話を聞いても、ほとんどの人は訳が分からないと思うので、まず、下の画面31で、A=6ENTER、PRINT AENTER、A=A+1ENTER、PRINT AENTERと、4つの命令を順に入力してください。
A=6ENTER、PRINT AENTER、A=A+1ENTER、PRINT AENTERと、4つの命令を順に入力してください。
そうすると、実行例57の様な表示になるはずです。
Syn BASIC Version 0.31α ©2021-2022 Hiroshi Tanigawa(Synapse) Ok A=6 ← 変数Aに6を代入 Ok PRINT A ← 変数Aの値を表示 6 ← 直前に代入された値の6が表示される Ok A=A+1 ← 変数Aに6+1の計算結果を代入 Ok PRINT A ← 変数Aの値を表示 7 ← 直前に代入された値の7が表示される Ok
最初のA=6で、変数Aに6を代入して、次のPRINT Aで、Aに代入された6を表示している所までは、お分かりいただけると思います。
次にA=A+1を実行していますが、初心者にはこの命令の意味が理解しにくいようです。ちょっと難しいかも知れませんが、大事な所なので、頑張って説明を聞いてください。
この命令の理解が難しいのは、数学の方程式と混同するからみたいです。
数学では、=の記号は、その記号の左側(左辺)と右側(右辺)が等しいという意味で使います。
そのため、A=A+1というコードを見ると、「変数Aの値とA+1という数式の計算結果が一致するなんてありえない」と思ってしまうみたいなのです。
しかし、BASICの代入文で=の記号を使う場合は、左辺と右辺が等しいという意味ではなく、=記号の右側の数式の計算結果を、=記号の左側の変数に代入する事を表します。
注:BASICでも、後に紹介するIF文で使う条件式の中では、=の記号は、左辺と右辺が等しいという意味になるので、余計に混乱します。C言語、C++、JavaScript等のプログラミング言語では、等しい事を表す記号は==で、代入を表す記号は=となっており、別の記号を使います。Pascalでは、等しい事を表す記号は=で、代入を表す記号は:=と、C言語などとは違う記号を使いますが、等しい事を表す記号と、代入を表す記号は、区別されています。BASICの様に、=の記号の意味を、文脈によって判断するプログラミング言語は、かなり少数派の様です。
A=6を実行した時点でAには6が代入されています。
この時A=A+1という命令を実行すると、まず=の右側のA+1という数式を計算します。この数式を計算する際に、変数のAは、Aに代入されている6という値に置き換えられますから、6+1が計算され、その結果は7になります。
次に、その計算結果の7という値が、変数Aに代入されます。
A=A+1の実行後にPRINT Aを実行すると、直前の代入で設定された値の7が表示されるのです。
この様に、Aに6が代入された状態で、A=A+1を実行すると、Aに新たに7が代入されますが、この状態で、もう一度A=A+1を実行すると、どうなるのでしょうか?
今度は、Aの値が7なのですから、A+1という数式は、7+1と解釈され、その計算結果の8がAに代入されます。
さらにもう一度A=A+1を実行すると、今度は8+1が計算され、9がAに代入されます。
この様に、A=A+1という命令が実行されるたびに、Aの値は、1ずつ大きくなります。
同様に考えると、A=A-1という命令は、Aの値を1減らす命令だという事が分かります。
また、A=2*Aなら、Aの値を2倍にする命令になります。
是非、先ほどの画面31で、A=A-1やA=2*Aの命令も試してみてください。
次のページでは、文字列変数の使い方と、INPUT文について説明します。