Casio Basic コマンドリファレンス
Casio fx-5800P、fx-9860GII、fx-CG20、fx-CG50 で確認をとっています。Casio fx-FD10 Pro では互換性はあると考えられますが、実機で確認していないので「可能性」としてご覧ください。最終更新: 2017/01/03
fx-5800P配列変数 Z[ ]
◆ 概 要:
インデックス付き変数。多くの高級言語でいう 配列 と似ている。
Z[ ] の
[ ] 内に1以上の整数のインデックスを入れて使う。 インデックスに0(ゼロ)や負の整数を指定するとエラーとなる。
配列変数は、通常の変数と同様に数値のみを代入可能 (文字列には対応していない)。
変数領域を確保してから使用する必要があり、変数の数を指定して領域確保する。メモリが許す限りの領域を確保できるが、
配列変数を多く確保すると、その分プログラム領域が減る。
◆ 領域確保
50→DimZDimZ は
[SHIFT] [・] と入力する。
この例では、50個の
配列変数を確保し、
Z[1]、Z[2]、・・・ Z[49]、Z[50] を使える
※ 領域確保を行うと、各
配列変数は0で初期化されます。
◆ 領域解放
0→DimZ0個の領域確保をすれば、領域解放となる。
◆ インデックス
数値や変数を使える。1以上の整数を返す式も使える。
配列変数をインデックスにすることもできる。※ fx-9860GII や fx-CG20/CG50 の場合、搭載 Casio Basic には配列変数が無いので、配列変数の代わりに行列かリストを使う。リストよりも行列の方が処理が速いので、行列の使用を勧める。
プログラム事例fx-5800P では、インデックス付き変数という配列変数の特性を活かした使い方があります。
参照テーブル(但し1次元)としての使い道が最もふさわしいと思われます。但し、配列変数を使う場合は、
アクセス速度が非常に遅いことを十分に留意する必要があります。実行速度が必要な場合は配列変数の利用は最小限にすべきです。
キーコードに対応するテンキーの値を返す事例 [2015/04/30 修正]87→DimZ
1→Z[35]:2→Z[36]
3→Z[37]:4→Z[21]
5→Z[22]:6→Z[23]
7→Z[31]:8→Z[32]
9→Z[33]:0→Z[25]Do
Getkey→K
Locate 1,1," "
Locate 1,1,Z[K]
LpWhile K=0
0→DimZ
これを実行すると、押したテンキーの値が表示されます。「
入力命令: ?」 以外の方法で、テンキー入力を得る一例です。
この方法の利点は、入力を自在に操れる点にあります。入力のエコーバックをさせたくない、入力のエコーバックを自由な位置に表示したい、テンキーを入力させ ONE、TWO、・・・と対応する内容を表示させる...など、自在な入力機能を実現可能です。
フィボナッチ数列の1項から50項までの総和を計算する事例フィボナッチ数列は、
・1項と2項がそれぞれ1
・3項目以降は、「1つ前」と「2つ前」の項の和になる
1 1 2 3 5 8 13 21 34 55 ...と続く
100→DimZ1→Z[1]:1→Z[2]
2→S
For 3→I To 50
Z[I-2]+Z[I-1]→Z[I]
S+Z[I]→SNext0→DimZ
S◢これを実行すると、正解の
2147483646 が表示されます。
配列変数へのアクセス速度配列変数へのアクセスは、通常変数に比べて大変遅いことがわかっています。
通常変数を使ったプログラム0→A
1000→C
Lbl 0
A+C→A
Dsz C
Goto 0
A◢これを実行すると、約15秒で結果A (500500) が表示されます。
配列変数を使ったプログラム1→DimZ
1000→C
Lbl 0
Z[1]+C→Z[1]
Dsz C
Goto 0
Z[1]◢これを実行すると、約50秒で結果 Z[1] (500500) が表示されます。
この実験結果では、配列変数への入出力は、通常変数に比べて3倍近く時間がかかります。従って配列変数へのアクセスが頻繁なプログラムは動作が非常に遅くなることに留意すべきです。
応援クリックをお願いします。励みになるので...