新しく発言する EXIT インデックスへ
goto文を使わずに数字を入力したいのですが

  goto文を使わずに数字を入力したいのですが 樫木 秀樹 2006/07/13 13:07:19 
  外側にもう1対、DO~LOOPを追加したら? 諏訪 雄治 2006/07/13 14:47:00 
  INPUT文をループの中に入れてみてはどうでし... 荒田浩二 2006/07/13 21:50:19 
   └諏訪様、荒田様 樫木 秀樹 2006/07/14 00:21:04 

  goto文を使わずに数字を入力したいのですが 樫木 秀樹 2006/07/13 13:07:19  ツリーへ

goto文を使わずに数字を入力したいのですが 返事を書く
樫木 秀樹 2006/07/13 13:07:19
次のプログラムを goto文を使わずに、
数字の入力を繰り返すようにしたいのですが、
どのようにすれば良いのでしょうか。

SET WINDOW -200,200,-200,200
!DRAW grid(20,20)

10 INPUT PROMPT "数字を入力してください。":a

DO

SELECT CASE a
CASE 1
SET AREA COLOR 2
DRAW disk WITH SCALE(100)*SHIFT(60,0)
CHARACTER INPUT s$
IF s$=CHR$(13) THEN CLEAR
EXIT DO !enterが押されたら終了する


CASE 2
SET AREA COLOR 3
DRAW disk WITH SCALE(50)*SHIFT(30,0)
CHARACTER INPUT s$
IF s$=CHR$(13) THEN CLEAR
EXIT DO !enterが押されたら終了する


END SELECT
LOOP
GOTO 10
END

  外側にもう1対、DO~LOOPを追加したら? 諏訪 雄治 2006/07/13 14:47:00  ツリーへ

Re: goto文を使わずに数字を入力したいのですが 返事を書く
諏訪 雄治 2006/07/13 14:47:00
外側にもう1対、DO~LOOP を追加したら?
EXIT DO は、1段づつしか効かない。

SET WINDOW -200,200,-200,200
!DRAW grid(20,20)
DO
10 INPUT PROMPT "数字を入力してください。":a

DO

SELECT CASE a
CASE 1
SET AREA COLOR 2
DRAW disk WITH SCALE(100)*SHIFT(60,0)
CHARACTER INPUT s$
IF s$=CHR$(13) THEN CLEAR
EXIT DO !enterが押されたら終了する


CASE 2
SET AREA COLOR 3
DRAW disk WITH SCALE(50)*SHIFT(30,0)
CHARACTER INPUT s$
IF s$=CHR$(13) THEN CLEAR
EXIT DO !enterが押されたら終了する


END SELECT
LOOP
LOOP ! GOTO 10
END

  INPUT文をループの中に入れてみてはどうでし... 荒田浩二 2006/07/13 21:50:19  ツリーへ

Re: goto文を使わずに数字を入力したいのですが 返事を書く
荒田浩二 2006/07/13 21:50:19
INPUT文をループの中に入れてみてはどうでしょうか。

SET WINDOW -200,200,-200,200
!DRAW grid(20,20)

DO

INPUT PROMPT "数字を入力してください。":a
SELECT CASE a
CASE 1
SET AREA COLOR 2
DRAW disk WITH SCALE(100)*SHIFT(60,0)
CHARACTER INPUT s$
IF s$=CHR$(13) THEN CLEAR
! EXIT DO !enterが押されたら終了する

CASE 2
SET AREA COLOR 3
DRAW disk WITH SCALE(50)*SHIFT(30,0)
CHARACTER INPUT s$
IF s$=CHR$(13) THEN CLEAR
! EXIT DO !enterが押されたら終了する

END SELECT
LOOP
END


次のようにすると、すっきりした形になるかと思います。
INPUT文をひとつにまとめました。
1と2で描画、Enterで画面クリア、それ以外はループから抜け出るようにしました。
異常終了を排除できます。
参考にしていただければ。

SET WINDOW -200,200,-200,200
!DRAW grid(20,20)

DO

CHARACTER INPUT PROMPT "数字を入力してください。":s$

IF s$=CHR$(13) THEN
CLEAR ! Enterキーで画面クリア
ELSE

WHEN EXCEPTION IN
LET a=VAL(s$)
USE
EXIT DO ! 数字以外の入力は終了
END WHEN

SELECT CASE a
CASE 1
LET c=2
LET r=100
LET x=60
LET y=0
CASE 2
LET c=3
LET r=50
LET x=30
LET y=0
CASE ELSE
EXIT DO ! 1と2以外は終了
END SELECT

SET AREA COLOR c
DRAW disk WITH SCALE(r)*SHIFT(x,y)
END IF

LOOP

END

   └諏訪様、荒田様 樫木 秀樹 2006/07/14 00:21:04  ツリーへ

Re: INPUT文をループの中に入れてみてはどうでし... 返事を書く
樫木 秀樹 2006/07/14 00:21:04
諏訪様、荒田様
ありがとうございました。
どちらの方法も、初心者の私には、勉強になりました。
今後ともよろしくお願いします。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。