回答(5件)

こんにちは。 このコードが、本来何をしたいのか、フローチャートの構造から考察すると、 入力したAの変数が、10以下の間、Bが+3している。 Aが10を超えたとき、変数Bをプリントしたら、、、、==> プログラムは停止 させるようなフローチャートなのでしょうね。 だとしたら、 30 IF A<=10 THEN GO TO 40 ELSE PRINT B は 30 IF A<=10 THEN GO TO 40 ELSE Goto 65 に修正 行の追加 65 PRINT B という対策になります 言語はともかく、「コロン記号」なんて学習してないでしょうし 65が嫌なら、70にして、end は、80にしてください。

この回答はいかがでしたか? リアクションしてみよう

これは無限に答えが出るように自分がそのように作っただけですよね 60行を消すと繰り返しがなくなるので1回だけになります ・無限に答えが出る ・最初の答えだけになる それをするプログラムだからそうなります 結局、何をしたいプログラムなのかが分からなければ修正も出来ません

無限に続くのは 30行目 40行目 50行目 と処理して 60行目の処理で 30行目に戻れ という処理が書かれているからです なので60行を消すと 50行目の次に 70行目を処理して プログラムが終了します

VisualBasicとありますが、これはBasicだと思われます。その前提で解説します。 60行目で30行に移動させてることが原因です。30行目でIf文により条件分岐させていますが、その内容が「40行目に移動するか、Bを表示させるか」しかありません。ですのでプログラムは「条件に関わらず最後まで実行」されます。そして「60行目で再び30きあに移動する」を繰り返してしまいます。 もし、「Bを表示してプログラムを終了したい」のであれば30行目を次のように書き換えて下さい 30 IF A<=10 THEN GO TO 40 ELSE PRINT B : GOTO 70 これで「Bを表示してさらにコロン以降を実行する」ことができます。条件を満たしていれば「40行目に移動する」のでコロン以降は実行されません。 コロンは「1行で複数の命令を書く」ことができます。

動きを確認すると 10, 20行で A と B を入力 30行で A が 10 以下なら 40行へそうでなければ B を出力 40行で A に 2 を加算 50行で B に 3 を加算 60行で 30行に戻る → 無限ループ なぜ無限に出力されるのか GO TO 30 によってプログラムがループします 30行で A がまだ 10 以下なら 40行に行き、A を増やして B も増やす A が 10 を超えると、30行で B を PRINT します その後、60行の GO TO 30 によって再び 30行に戻る → 再度条件判定 → B を出力 A は増え続けるので常に A > 10 → PRINT B が繰り返される → 無限出力 つまり、60行の「GO TO 30」がループを作っているため条件を満たす限り繰り返し B が出力され続けるわけです 60行を削除した場合 30行 → 40行 → 50行 → 次の行が「GO TO 30」ではなく 70行(END)に進む よってループせず、一度だけ計算・出力されてプログラム終了 結果として「条件により最初の答えだけ」が出ます 60行の GO TO 30 が無限ループを作っているので 削除するとプログラムは一度だけ実行され終了する 無限ループと一回実行の違いはこの行による制御の違いです