- 締切済み
n88 Basic に関して(ループ)
たびたびの質問で失礼します。 現在、BASICでプログラムを作成しているのですが、ループの命令の仕方がわからず困っています。 流れとしては 1→2→3→4→5→2→3→4→5→2→3→4→5→2→3→6 (数字は各命令の一まとめ) としたいのです。FOR~NEXT を使えばいいとは思うのですがどなたかアドバイスをお願いいたします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- Wesley
- ベストアンサー率33% (1/3)
#7です。 記入ミスがあったので修正します。 30 READ N(I) です。
- Wesley
- ベストアンサー率33% (1/3)
プログラムの構成を、(1)数字の読み込み→(2)サブルーチンの行き先処理→(3)各サブルーチン→(4)最後に数字データでまとめてみました。 10 DIM N(16) 20 FOR I=1 TO 16 30 READ N(16) 40 NEXT I 50 FOR I=1 TO 16 61 IF N(I)=1 THEN GOSUB 81 62 IF N(I)=2 THEN GOSUB 82 63 IF N(I)=3 THEN GOSUB 83 64 IF N(I)=4 THEN GOSUB 84 65 IF N(I)=5 THEN GOSUB 85 66 IF N(I)=6 THEN GOSUB 86 70 NEXT I 80 END 81 PRINT "(1)" :RETURN 82 PRINT "(2)" :RETURN 83 PRINT "(3)" :RETURN 84 PRINT "(4)" :RETURN 85 PRINT "(5)" :RETURN 86 PRINT "(6)" :RETURN 90 DATA 1,2,3,4,5,2,3,4,5,2,3,4,5,2,3,6 このプログラムで、81~86のサブルーチンを、(各命令の一まとめ)で置き換えれば、求めるものが出来ると思います。また、DIM(配列)とデータの数値を変えることにより、別の流れを自由に作ることが出来ます。
N88BASICですかぁ~幼稚園の頃からやってたのでうろ覚えになりますが↓ではないでしょうか? 10 (1)の処理 20 FOR I=1 TO 3 30 (2)の処理 30 (3)の処理 40 IF I=3 THEN 80 50 (4)の処理 60 (5)の処理 70 NEXT 80 (6)の処理 90 END これが一番スマートかと思います。 ちなみに処理が長い時は10~90の数字が増えますが THEN 80 の 80 を処理6の先頭行にすれば動くかと思います。
- mbr
- ベストアンサー率50% (2/4)
まず「繰り返しの規則性に注目」します、今回の場合は、 「1」で始まり「2→3→4→5」を3セット実行し「2→3→6」で終わっているようなので… 1000 gosub 1100 1010 for i=1 to 3 1020 gosub 1200 1030 gosub 1300 1040 gosub 1400 1050 gosub 1500 1060 next 1070 gosub 1200 1080 gosub 1300 1090 goto 1600 1100 (1の処理) 1190 return 1200 (2の処理) 1290 return 1300 (3の処理) 1390 return 1400 (4の処理) 1490 return 1500 (5の処理) 1590 return 1600 (6の処理) 1700 (処理終了) こんな感じでよろしいのではないかと思います。
- imogasi
- ベストアンサー率27% (4737/17069)
2次元配列のT(i,j)でコントロール用のテーブルを作る。 iはフェーズ。問題の1,2・・はサブルーチン化する。 (1)(2)(3)(4)(5)(6)<--サブi=1..1..1..1..1..1..0 ルーチン i=2..0..1..1..1..1..0 の別 i=3..0..1..1..0..1..0 i=4..0..1..1..0..0..1 (以下省略) (・・はOKWEBでの桁ズレを防ぐために入れただけ。ないものとして読んでください。) For i=1 to 4 Gosub s1 Gosub s2 Gosub s3 Gosub s4 Gosub s5 Next i として Gosub のs1,s2,...s5の各先頭ステップに If T(i,1)=0 then Exit sub (処理) Return 0がテーブルに立っていると、処理をせず素通りさせる。 Exit subはないだろうから、Returnの前の点にGoto。
- 0shiete
- ベストアンサー率30% (148/492)
こんにちは。 [2]->[3]->[4]->[5] ([]で命令の一まとまりを表しています) という繰り返しが3回ありますので、次の例はどうでしょうか? [1] for i=1 to 3 [2] [3] [4] [5] next i [2] [3] [6]
- ryo-3
- ベストアンサー率37% (13/35)
もうすこし質問を詳しくして頂きたいと思い補足要求をさせて頂きました。 流れの後の(数字は各命令の一まとめ)というのがよく分からなかったです…。 for文の繰り返しをしたい回数なのでしょうか?それとも for文の中で使いたい数字のことなのでしょうか? 補足をよろしくお願いします。
- taknt
- ベストアンサー率19% (1556/7783)
ループの仕方は、 For a=1 to 5 next a といった感じですが、 ループの仕方が特殊なので、その仕様をまとめたほうがいいですね。 最後の 2→3→6 が 特殊。
補足
説明不足で申し訳ありません。 数字は、大体10行ぐらいの計算式が入っています。乱数を使っての計算結果を求めています。