N88 互換 BASIC for Windowsについての質問

このQ&Aのポイント
  • あるプログラムで使用されている90行の命令について質問があります。90行の命令はキーの入力を待ち、入力があるまで90行にループします。100行の命令の""は、キーの入力がないことを表しており、キーが入力されるまで90行のループが続く仕組みです。
  • 90行の命令では、A$=INKEY$という方法でキーの入力を待っています。その後の100行の命令では、IF A$="" THEN GOTO 90となっており、A$が空の場合は90行にジャンプし、再びキーの入力を待つ仕組みになっています。
  • 「$」がA$に入っているのは、A$が文字列型の変数であることを表しています。具体的には、A$には入力されたキーが文字列として格納されます。
回答を見る
  • ベストアンサー

N88 互換 BASIC for Windows

閲覧ありがとうございます。 タイトルのBASICの内容について、わからないことがあるのでしつもんさせていただきます。 あるプログラムの中に 90 A$=INKEY$ 100 IF A$="" THEN GOTO 90 という命令があるのですが、このときの100行にある""というのは一体どのキーのことを指すのでしょうか? 流れとしては90行で入力したキーが100行の""の意味するものに当てはまれば90行に戻るので、再びキーの入力を促すということだと考えています。 $が入っているので文字についてのことだと思うのですが、具体的にどのことを示しているのかがわかりません。 よろしければ回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • be_silent
  • ベストアンサー率39% (117/300)
回答No.1

""というのは、「何も入っていなければ」ということになります。 日本語にするなら 90 変数A$にキー入力情報を入れろ$ 100 もし 変数A$が空 ならば 90 へ行け こんな感じです。 何かキー入力がされて初めてA$に入力したキーが保存され、110行へ行けます。

ZacK3666
質問者

お礼

回答ありがとうございました。 非常にわかりやすかったです。おかげさまで理解することができてすっきりしました。 本当にありがとうございました。

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

90行のA$=INKEY$でキーボード入力の結果をA$に設定します。 100行はそのA$(キーボード入力の結果)が何もないかどうかの比較(="")をしているのです。 BASICで変数名は例えばAですが、文字型変数を表す$をつけて、A$、つまりAと言う文字型変数の意味です。 INKEY$はキーボードから文字型として値を入力すると言う関数です。

ZacK3666
質問者

お礼

回答ありがとうございました。 変数や関数の説明までしていただき、理解を深めることができました。 感謝いたします。 ベストアンサーについては、申し訳ありませんがわずかに回答の早かった方を選ばせていただきたいと思います。 勝手ではございますが、どうかご了承ください。

関連するQ&A

  • INKEY$関数でEnterキーを使う方法について

    SHARPのPC-G801というポケコンを中古で購入し、BASICのプログラミングをしています。しかし、マニュアルがないため、困っております。 Enterキーを押したときに処理を行う命令を作りたいのですが、 IF INKEY$=○○○ THEN ~~ の○○○のところはどのように記述すればよいのでしょうか? ネット上で公開されていたPC-E500(別機種ですがメーカーは同じ)の英語版マニュアルのINKEY$関数のところを見ると、対応表のようなものが出ていて、EnterキーはLowの行は「D」、Highの列は「0」でした。しかし、 INKEY$=D0、INKEY$=0D、INKEY$="D0"、INKEY$="0D" を試してみましたが、いずれも機能しませんでした。この対応表の意味もよくわかりません…。 ご存じの方がおられましたら教えていただければと思います。よろしくお願いします。

  • キー入力をカウントするプログラム

    キーボードのいくつかに変数を割り振って、分類つきのカウンターを作りたいのですが、Perlでは、どのようにプログラムを作ればいいですか。 キー入力を読み込む関数と使いかた(ヒントでも)を教えて下さい。 プログラム電卓では、BASICで 10 A$=INKEY$ 20 IF A$="B" THEN K(1)=K(1)+1 のようにして、作ってたのですが。

    • ベストアンサー
    • Perl
  • カシオのポケコンのプログラム作成について

    カシオのポケコン(Z-1GR)のBASICでプログラムを作成する際に Enterキーを押した場合と数値を入力した場合で分岐させたいのですが、やり方がわかりません。 例えば Aを入力、Bを入力すると、C=A+BでCの答えを表示させる。 ただし、Bの入力時に何も入力しないで、そのままEnterキーを押すと、C=0と表示させる と言った感じです 10 INPUT"A=",A 20 INPUT"B=",B 30 IF B="" THEN GOTO 40 ELSE GOTO 50 40 PRINT"C=0" 50 C=A+B 60 PRINT"C=";C:GOTO 20 どなたかわかる方いらっしゃいませんか?

  • カシオのポケコン プログラム作成について

    先ほど同じ質問をしたのですが、質問の仕方が悪く意図した回答が得られなかったので、 再度質問します。 カシオのポケコン(Z-1GR)のBASICでプログラムを作成する際に Enterキーを押した場合と数値を入力した場合で分岐させたいのですが、やり方がわかりません。 例えば Aを入力、Bを入力すると、C=A+BでCの答えを表示させる。 ただし、Bの入力時に何も入力しないで、そのままEnterキーを押すと、C=0と表示させる と言った感じです 10 INPUT"A=",A 20 INPUT"B=",B 30 IF B="" THEN GOTO 40 ELSE GOTO 50 40 PRINT"C=0":GOTO 20 50 C=A+B 60 PRINT"C=";C:GOTO 20 上のライン30の指示がうまく実行しません。 「B="" THEN GOTO 40」の部分だと思うのですが この部分 (そのままEnterキーを押すとライン40に進む)をどのようにすればよいか 教えてください。 どなたかわかる方いらっしゃいませんか?

  • 空欄に不等号が入るのですが・・・

    添付の図のようなフローチャートをbasicでプログラムすると次のようになる 130行目の空欄を等号ないし不等号ないし等号つき不等号で埋め 条件式を完成させよという問題がありました。 100 INPUT N 110 FOR I=1 TO N 120 LET A=I 130 IF (A+1)^2 (空欄) N THEN GOTO 190 140 NEXT I 150 IF A<=1 THEN GOTO 190 160 PRINT A 170 LET N=N-A^2 180 IF N>=1 THEN GOTO 110 190 END ここで入れるべきものはA^2がNを「超えない」なので>=ですよね? 解答を見ると>となっているのですが 解答の条件式でN=4として実行すると2が出力されるのでおかしな気がします。 解答が正しいのでしょうか?それとも間違っているのでしょうか?

  • 整数でないとき

    10 INPUT X 20 IF X=0 THEN END 30 C=X-2*INT(X/2) 40 IF C=0 THEN PRINT”偶数” ELSE PRINT”奇数” 50 GOTO 10 というプログラムはXが整数でなければ奇数と判定してしまいます。20行と30行の間に命令を追加して、Xが整数でないときは”整数でない”と表示して、次の入力を待つように修正し、整数のときだけ奇数か偶数かを判定するようにするには、 25 IF X^2>INT(X^2) THEN PRINT”整数でない”:GOTO 10 を追加する。 でよいのでしょうか? ぜひ教えてください。 

  • n88basicのプログラムを十進ベーシックに翻訳してください。

    n88basicの次のプログラムを十1進ベーシックではどうなるのか教えてください。 10 cls 20 p=1000 30 for n=1 to 1000:next n 40 p=p-1 50 if p=-1 then end 60 locate 10,10:print p 70 goto 30

  • プログラムの組み方について

    ウインドウズ98とエクセルとワードを使っていますが、 かつてのBASICのようなプログラムを組んで実行 させることは可能なのでしょうか?例えば 10 A=1 20 A=A+1:IF A>9 THEN 50 30 FOR B=1 TO A:PRINT B 40 GOTO 20 50 PRINT A 60 END というような簡単なものでいいのですが・・・。 どなたか教えて下さい。よろしくお願いします。

  • N88互換BASICのプログラムについて。

    私は機械科3年ですが、今年からBASICを勉強しています。次のプログラムのエラー(行番号190にてopenしたファイルに出力できないです)がどうしても解決できないです。N88互換BASICやられている方でどなたか私にアドバイスをしていただけると助かります。 110 REM EX1B by E/F on 2006/04/25 120 PI=3.14159:PHI=30:Y0=.5 130 '************ Output into File ************ 140 CLOSE #1:OPEN "C:\WINBASIC\EX1B_OUT.TXT" FOR OUTPUT AS #1 150 FOR X=0 TO 360 STEP 45 160 A=.2 :Y1=A*SIN((X-PHI))+Y0 170 A=1.2 :Y2=A*SIN((X-PHI))+Y0 180 A=2 :Y3=A*SIN((X-PHI))+Y0 190 PRINT #1,X;",";Y1;",";Y2;",";Y3" 200 PRINT"Out:";X;",";Y1;",";Y2;",";Y3 210 NEXT X 220 CLOSE #1 230 '************ Input from File ************** 240 CLOSE #2:OPEN "C:\WINBASIC\EX1B_OUT.TXT" FOR INPUT AS #2 250 IF EOF(2)<>0 THEN GOTO 190 260 INPUT #2,X,Y1,Y2,Y3 270 PRINT"Inp:x=";X;" y1=";Y1;" y2=";Y2;" y3=";Y3;" 280 GOTO 150 290 CLOSE #2 300 '***** Close All Files and Computer Stop***** 310 CLOSE 320 END

  • N88-日本語 BASIC ASCII ファイル

    N88-日本語 BASIC ASCII ファイルにするのにはどうしたら、宜しいのでしょうか。 ・MS-DOS 6.20 に付属されている、「Fileconv」を使ってみました。 MS-DOS → N88BASIC ドライブ名は、「C」ですが、Cと打つと、弾かれてしまって、入力が不可能です。 ・因みに、MS-DOSのファイル形式になっている、現在は、以下の記述名です。 ----- 10 width 80,20                         '10~96行まで初期設定 20 cls:beep 30 print "KEY操作 1 左 2 右 3 ミサイル発射" 40 print "自機 <T> を操り 敵 = を撃つゲーム" 50 for i=0 to 40 60 locate i,5:print "-" 70 next 80 locate 19,5:print "-<T>-" 90 x=19: m=0:mx=0:my=0              'x、y 自機の座標  mx、my ミサイル座標 95 randomize(val(right$(time$,2)))         'ex,ey 敵座標  96 ey=int(rnd(1)*10)+6:ex=5 100 gosub 200                    '100~130 メインルーチン 110 if m=1 then gosub 300  'm=0 ミサイル未発射。この時は300行(ミサイル移動ルーチン                     'にはいかない m=1 ミサイル発射中は300行へ   120 gosub 400 130 goto 100 200 b$=""                       '自機の移動、ミサイル発射 202 a$=inkey$ 205 if a$<>"" then b$=a$:goto 202 210 if b$="1" and x>1 then x=x-1 215 if b$="2" and x<37 then x=x+1 220 if b$="3" and m=0 then mx=x+2:my=5:m=1:beep 230 locate x,5 :print"-<T>-" 240 return 300 locate mx,my:print " "              'ミサイル移動ルーチン 310 my=my+1 320 if mx=ex and my=ey then gosub 600: end   '当たり判定  330 if my>15 then mx=0:my=0:m=0:return     '下までいったらミサイル終了。m=0に戻す 340 locate mx,my:print "V":return 400 locate ex,ey:print " "               '敵移動ルーチン           410 ex=ex+1 420 if ex=mx and ey=my then gosub 600 :end   '当たり判定 430 if ex>39 then ex=0: ey=int(rnd(1)*10)+6    '端までいったら新座標 440 locate ex,ey:print"=" 450 return 600 beep                          '当たりの時の処理 610 locate mx,my:color 4:print "*" 620 print "大当たり THE END": color 7 630 print "HIT ANY KEY" 640 a$=input$(1):return