激凹みから立ち直る方法

 たびたびの質問で失礼します。
現在、BASICでプログラムを作成しているのですが、ループの命令の仕方がわからず困っています。
 流れとしては
1→2→3→4→5→2→3→4→5→2→3→4→5→2→3→6
(数字は各命令の一まとめ)
としたいのです。FOR~NEXT を使えばいいとは思うのですがどなたかアドバイスをお願いいたします。

A 回答 (8件)

#7です。


記入ミスがあったので修正します。
 
30 READ N(I)   です。
    • good
    • 0

プログラムの構成を、(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(配列)とデータの数値を変えることにより、別の流れを自由に作ることが出来ます。
    • good
    • 1

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の先頭行にすれば動くかと思います。
    • good
    • 0

まず「繰り返しの規則性に注目」します、今回の場合は、


「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 (処理終了)

こんな感じでよろしいのではないかと思います。
    • good
    • 0

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。
    • good
    • 0

こんにちは。



[2]->[3]->[4]->[5]
([]で命令の一まとまりを表しています)
という繰り返しが3回ありますので、次の例はどうでしょうか?


[1]
for i=1 to 3
[2]
[3]
[4]
[5]
next i
[2]
[3]
[6]
    • good
    • 0

もうすこし質問を詳しくして頂きたいと思い補足要求をさせて頂きました。



流れの後の(数字は各命令の一まとめ)というのがよく分からなかったです…。
for文の繰り返しをしたい回数なのでしょうか?それとも
for文の中で使いたい数字のことなのでしょうか?

補足をよろしくお願いします。

この回答への補足

 説明不足で申し訳ありません。
数字は、大体10行ぐらいの計算式が入っています。乱数を使っての計算結果を求めています。

補足日時:2003/01/07 22:08
    • good
    • 0

ループの仕方は、


For a=1 to 5
next a

といった感じですが、
ループの仕方が特殊なので、その仕様をまとめたほうがいいですね。

最後の 2→3→6 が 特殊。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!