コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
スケさん ◆YJjXHENp4drH
2018/2/27 10:27
配列変数で、
DIM A$[30]
FOR I=0 TO 30
A$[I]=""
NEXT
するとA$[I]でエラーになるんですがどうしたらいいですか?

コメント

アバター
あんちもん 2018/2/27 11:13 ◆8qCJSJ1bKTIQ
DIM A$[30]で用意される配列変数A$は、A$[0]からA$[29]までの30個だけです(0の分を数え忘れていませんか?)。FOR I=0 TO 30 としてしまうと、I==30の時にDIM命令で使用が宣言されていない31個目の配列変数A$[30]が出来てしまうので、エラーが発生してしまいます。
FOR I=0 TO 29 とすれば解決すると思います。
FORループの終わりにNEXTを書くのもお忘れなく。
アバター
キルル2 2018/2/27 13:48 ◆rGE712Ruejv7
forループで配列を操作するときは終了値を操作するのが一般的です
あんちもんさんが言っているように、0 to 29にしましょう
30という数字を使いたいときは、whileループに変えるのがオススメです
アバター
こういち 2018/2/27 14:54 ◆ou0jbJnEJ0Kb
場合によっては使う変数が1つ減る点と速度面でWHILEは優秀ですが、ほぼ好みの問題ですね。STEP使えば済みますし。
例:
FORの場合
VAR L,I
DIM A$[30]
L=LEN(A$)
PRINT L
FOR I=0 TO L-1
 COPY A$,""
NEXT I

WHILEの場合
DIM A$[30]
VAR I=LEN(A$)
PRINT I
WHILE I
 I=I-1
 COPY A$,""
WEND
アバター
はる 2018/2/27 17:20 ◆75Vh4SY8TdKS
DIM A$[30]を、
DIM A$[31]にするか、
FOR I=0 TO 30を、
FOR I=0 TO 29にします。


説明

A$[I]はIが30のとき、
A$[30]になります。
DIM A$[30]された後のA$の配列添字は、
0〜29(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
16,17,18,19,20,21,22,23,24,25,26,27,28,29)
だけしか使えないので、
30だと、Subscript out of rangeになってしまいます。



最後に、
NEXTを追加します。


説明

BASICはPython等とは違い、
FORループを終わらせるのには、
PHP等のようにそれがコンピュータに分かるように、
終わりの所に書く必要があります。
PHPでは}と書くように、BASICではNEXTを書く必要があります。
アバター
こういち 2018/3/13 18:37 ◆ou0jbJnEJ0Kb
ツララさん
確かにあの例はWHILEの長所が最大限生かせてない例です。
WHILEはDEF~ENDでNを引数として渡すときなどループする回数が事前に決まっているときに真価を発揮すると思います。
DEF SCLR S$,N
 WHILE N
  N=N-1
  COPY S$[N],""
 WEND
END
ただ、前にも言ったとおり好みの問題なので好きなやつを使うべきです。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -