TIPS:配列をリストのように使う
プチコン3号では、配列にPUSH、POP、SHIFT、UNSHIFTなどの命令が追加され、これらを使うと配列を一次元リスト(以下リスト)のように扱うことができます。
要素数を気にせずに使うことができますので、要素数が不定の場合にはこの使い方がおすすめです。
以下に使い方をまとめておきます。
●配列の宣言
配列は要素0個の配列として宣言してしまいます。
DIM A$[0]
●配列の要素を追加する
PUSHで配列の最後に要素を追加します。
PUSH A$,"プチコン3ごう" PUSH A$,"では" PUSH A$,"はいれつを" PUSH A$,"あつかえます"
●配列を自作関数(命令)に渡す
引数に[]なしで変数名を書くと、自作関数(または命令)に配列全体を渡すことができます。
逆にOUT句以降の変数には渡すことができないので注意が必要です。
LPRINT A$ DEF LPRINT _L$[] VAR _I FOR _I=0 TO LEN(_L$)-1 ? _L$[_I] NEXT END
●要素をクリアする
要素数を0個の状態に戻すには、要素数の回数だけPOPします。
WHILE LEN(A$) Z$=POP(A$) WEND
●途中に要素を挿入したり、削除したりする
直接該当する命令はないので、COPYをうまく使って当該の処理を実装します。
下記をご覧ください。
上記をまとめたプログラムは以下のとおりです。
'配列の宣言 DIM A$[0],B$[0],C$[0] '要素を追加する PUSH A$,"プチコン3ごう" PUSH A$,"では" PUSH A$,"はいれつを" PUSH A$,"あつかえます" LPRINT A$ ? '要素を挿入する INS=2 COPY B$,0,A$,0,INS PUSH B$,"リストのように" COPY B$,LEN(B$),A$,INS,LEN(A$)-INS LPRINT B$ ? '要素を削除する DEL=3 COPY C$,0,B$,0,DEL COPY C$,LEN(C$),B$,DEL+1,LEN(B$)-DEL-1 LPRINT C$ ? '配列の要素の数を0にする WHILE LEN(B$) Z$=POP$(B$) WEND PUSH B$,"いじょうです" PUSH B$,"ありがとうございました" LPRINT B$ END '文字列配列の要素をPRINT DEF LPRINT _L$[] VAR _I FOR _I=0 TO LEN(_L$)-1 ? _L$[_I] NEXT END
配列をリストっぽく使う実例としては、私の「スマイルボタンに登録して使うセーブ/ロードツール」
(http://d.hatena.ne.jp/eidaht/20141205/1417797702)
の中でメニュー表示に使っています。
あと、挿入と削除を自作関数(または命令)にするといい感じかもしれないです。
いろいろと活用してみてください。