プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

3号プログラミング覚え書き(1) 変数編

久しぶりにプチコン3号でプログラミングする時に、結構忘れている細かいことがあるので、それらをまとめておく。

◆変数関係

・変数名の長さに制限はない
 プチコン3号においては変数名の長さに制限はない。

・大文字・小文字は区別されない
 つまり、ABCとabcは同じ変数名となる。

・$や%や#をつけると違う変数となる
 例えば、AとA%とA#とA$は別ものとなる。
 ただし、Aと配列Aは同じ。
  VAR A, A%, A#, A$ '<-問題なし
  VAR B, B[9] '<-エラーになる
 すなわち、$や%や#は名前の一部だと思えばよい。

・変数にはグローバルスコープとローカルスコープがある
 スコープ(変数の有効範囲)にはグローバルとローカルの2つがある。
 グローバルはDEFで囲まれていない一番外側のコードを表す。
 ローカルはDEFで囲まれているコードを表す。
 DEF内においてVAR/DIMで宣言された変数は、グローバルにある変数とは別ものになる。

・DEF内でローカルスコープで宣言されていない変数を参照するとグローバルスコープを参照する
 DEF内で宣言されていない変数名を参照すると、自動的にグローバルスコープにある変数を参照する。
 すなわち、グローバル側からはローカルにある変数を参照できないのに対し、
 ローカル側からはグローバルにある変数を参照することができる。

・ローカルスコープは一つのDEF内でのみ通用する
 関数Aから関数Bが呼び出されているような状況でも、関数Bが参照できるローカルスコープは関数Bの中だけ。
 呼び出し元の関数Aの変数を
 次のサンプルコードで示す。

VAR A$="ZZZ"
SUB1
PRINT A$       '<- "SUB2"と表示される
END

DEF SUB1
  VAR A$="SUB1"
  SUB2
  PRINT A$       '<- "SUB1"と表示される
END

DEF SUB2
  A$="SUB2"
END

 実行結果は次のようになる。

SUB1
SUB2