プレイ日記
つまり、DIM C[MX*MY]は 「変数Cの箱に変数MYとMXを入れますよ」ってことなのか? 最初のコードにMX=6:MX=5(変数MXの正体は6、MXは5)ってかいたから いいんだよな、変数は簡単に言えばX=1 Y=2とかそういう意味だと思うから
3そうだね
プレイ済み
返信[1]
親投稿
ツララ LongIceSword
ああ、VAR命令の使い方で VAR A=3 みたいな書き方がしてる人が多かったりするのでちょっと混乱してる感じですね。 しょぼーんさんが説明してくれてましたけどOPTION STRICTを使うと「定義」していない変数をプログラム中で使うとエラーが出るようになるんですけど、変数と配列は定義の仕方と言うか書式がちょっと違うんですな。 変数は定義と一緒に代入処理を書いてもエラーにならないんですけど 配列は定義の時に決めるのは配列名とサイズであって、配列中での変数に当たる部分に代入は出来ないんですな。 DIM A[8] と定義したとして、実際にはA[8]を使おうとすると範囲外エラーが出るのは経験済みですかな? 配列は変数をまとまった箱の集まりとして扱う仕組みなので、指定には「これ」だけじゃなく「これ」の「どこ」っていうワンクッション挟まるってことだけ覚えておくといいかも。
0そうだね
プレイ済み
返信[2]
親投稿
say sayer.exe
違う違う 変数Cと言う箱をMX*MY個用意すると言う意味
6そうだね
プレイ済み
返信[3]
親投稿
ツララ LongIceSword
もちろん配列も添字の「どこ」っていう情報が不要な命令に使う時は配列名だけでいい場合もあるので (例:COPY コピー先配列,コピー元配列 とか) 色々試して慣れるのが一番かと。
0そうだね
プレイ済み
返信[4]
親投稿
スー thanks_0u0
変数は1個の箱で、配列は箱がいっぱいくっついた棚みたいな感じです。おちゃめさんはロッカーに例えてましたね(・u・) また、DIMは箱やロッカーを使う命令ではなく、用意する命令です。 なので、DIM C[MX*MY]は、「箱MXの中身と箱MYの中身をかけた個数のロッカーCを用意してね」という意味になります。 MX=6、MY=5のときは、6かける5で30個分のロッカーが用意されます。 ロッカーを使う際は、C[0]〜C[29]の番号を指定して、C[0]=1、のように使ってください。
5そうだね
プレイ済み
返信[5]
親投稿
ツララ LongIceSword
画面のプログラムで言うとDIM命令で配列の定義時に添字の数値に変数を使っていますけど もし配列の定義の前に MX=6:MY=5 っていう代入処理が無いとMXもMYも中身がデフォルトの0のままなので 配列C[]のサイズは0で、C[0]すら何らかの方法でサイズを拡張してやらないと使えない状態になってしまうんですな。
3そうだね
プレイ済み
返信[6]
親投稿
Godot orz_127
「MX=5:MY=6:DIM C[MX*MY]」はCの番号付き変数を30個用意したと言うことです。 ちなみに「DIM C[MX,MY]」だと 微妙に意味が違うので研究してみてると良いかも。 2次元配列と言うのになります。
1そうだね
プレイ済み
返信[7]
親投稿
基本的に数値で何か値を渡すところは変数で書いても変数の値が渡せます。(文字渡す場合でも文字列変数で渡せます) SPSET の 500も変数に置き換えられるし、配列要素数も変数で渡せます。 DIM は変数の宣言だけど、[]が付くと配列変数の宣言になって、[]の中の数だけ変数が使えるようになります。 []の中で書かれた変数同士の計算なので、 6x5=30個の Cという名前の配列変数が使えるようになります 配列を使う場合は C[1]=1000 みたいな感じで、何番目の変数を使うかをカッコ付きで指定します。 配列を一気に渡す場合は C だけを渡すけど、プチコン命令表の「数値配列」と書かれてる引数に渡す場合などに使います。 配列の C だけ渡せば、勝手に配列の数を増やしてくれる命令の方が特別なのです(GLOADはDIM C[0]した C を渡すと配列足りないので勝手に増やして返す)
1そうだね
プレイ済み