初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

人生一度はやってみよう MSX Basic 入門

5.変数と代入

 

ここまでの学習を振り返ってみると「なんかイメージと違う」感じではないでしょうか。

ここからプログラミングらしさが出てきます。
日常では縁のなかった概念が出てきますが、慣れてしまえば何てことないです。

まぁ、おもちゃを触るような感覚で楽しみましょう。

 

 

変数と代入の概念

変数(へんすう)代入(だいにゅう)について説明します。

次のプログラムと実行結果を見てください。

変数と代入の概念を知る

10行目は、変数Aに123を代入しています。
30行目では、変数Aの中身を表示しています。

 

変数とは箱のようなもので、数値や文字列など入れることができます。
そして、変数に入れることを代入と言います。

変数のイメージ

 

変数には数値用文字列用の2種類あります。
ご覧の通り、文字列用ではダラー(ドル記号)を付けなければいけません。
なお、代入で使っている記号はイコールです。

変数のイメージ

 

 

 

数値用の変数と代入のいろいろ

数値用の変数と、その代入パターンをいろいろとやってみます。
プログラムを入力して実際に試してみましょう。

新しくプログラムを入力するときにはnewで消しましょう。
プログラムの実行にはrunを使います。

代入の例

 

下図は上のプログラムのイメージです。
右辺から左辺へ代入されるのは数値そのものか、計算結果のみになります。

計算された結果のみ右辺から左辺へ代入される

 

次のプログラムを実行してみましょう。

代入の例

 

下図のイメージを見てください。
右辺で計算した結果のみを左辺に入れているのが分かると思います。

右辺から左辺へ1つの変数の内容を確認する

A=A+1などはカウントアップ方法としてよく使われます。

 

次のプログラムも試してください。
数値用の変数に文字列を入れたのでエラーになります。

数値用変数に文字列を代入するとエラーになる

Type mismatchとはデータの型が一致していないという意味です。

 

 

変数の名前について

基本的に変数の名前は自分で作れます。
ただし、ルールがあります。

・先頭は英文字
・2文字目からは英数字が使える
・予約語は使えない
・大文字、小文字の区別はない

予約語とはコンピュータが使っている、または、使う予定があるものです。
次の例を見てください。

変数の例

AAB12はOKですが
LISTではエラーになります。
LIST はプログラムを表示する命令としてすでに使われているのでダメなのです。
(注:名前によるエラーは必ず Syntax error になる訳ではありません)

 

どのような予約語があるのか、初心者のときは分からないですよね。
とりあえず、短めの名前を付けるようにしてください。

本当は名前から「何の変数なのか」が分かる方がいいです。
しかし、この環境は画面の表示文字数が少ないので長い名前にすると
プログラムが読みにくくなります。

 

 

文字列用の変数

文字列用の変数を見てみましょう。
名前の最後にダラー(ドル記号)を付けることで文字列用となります。

文字列用の変数の例

A$に msx、B$に basic を代入した例です。
C$には A$ と B$ を連結させたものを代入しています。
+(プラス)記号は文字列を連結させることができるのです。

それから文字列の特徴の話になりますが、プログラムをよく見てください。
ダブルクォーテーションで囲まれた中身(つまり文字列)は小文字のままです。
LIST 命令で表示したプログラムは大文字で表示されますが、文字列の内容は変わらないのです。

 

文字列用の変数に数値を入れてみます。
これはデータの型が一致していないためエラーになります。

文字列用の変数に数値を入れるとエラーになる

 

 

変数のあれこれ

次のプログラムを見てください。
変数Aには数値、A$には文字列を代入しています。

ダラーの有る無しで同じ名前でも別の変数

ご覧の通り、それぞれ別の変数として扱われます。
長いプログラムを作っていると、ダラーのつけ忘れで正常に動かなかった、なんてこともあるので注意が必要です。

 

以前、文字列について説明したとき、次の例を使いました。

文字列の説明で使用した画像

あのときは? helloの結果が 0 だった理由を説明しませんでした。
変数を学習した今、やっと説明できます。

これはhelloを変数として判断し、内容を表示したのです。
変数は何も代入しないと 0 となります。

 

次のプログラムを見てください。
変数HELLOの初期値が 0 だと分かります。

数値用変数の初期値は0