• 締切済み

プログラミングBASIC言語について。

なんでも良いので、BASIC言語のプログラムを作って、また、どの様なプログラムを書いたのかも教えていただけると幸いなのですが。すみません。かなりの負担がかかる質問ですので、答えられる範囲でいいです。

みんなの回答

  • musume12
  • ベストアンサー率63% (19/30)
回答No.13

> (3)だけもう少し簡単なプログラムにしていただけないでしょうか?  不可能。  (3)は Yキー、Nキー以外のキーを押したとき再入力を促すように以下のようにコーディングするのが普通。 [例1 GOTO文を使ったみっともないコード] 100 INPUT PROMPT "本気で BASIC を理解するつもりがありますか?":YN$ PRINT "「はい」ならYキーを、「いいえ」ならNキーを押してください。" IF YN$ = "Y" OR YN$ = "y" THEN   PRINT "フリーの BASIC を入手しましょう。" ELSEIF YN$ = "N" OR YN$ = "n" THEN   PRINT "プログラミング以外の楽しみを見つけましょう。" ELSE   PRINT "あなたは Yキー、Nキー 以外のキーを押しました。もう一度入力してください。"   GOTO 100 END IF END [例2 少なくとも例1よりはマシなコード(笑)] LET FLG = 0 DO WHILE 1 > FLG   INPUT PROMPT "本気で BASIC を理解するつもりがありますか?":YN$   PRINT "「はい」ならYキーを、「いいえ」ならNキーを押してください。"   IF YN$ = "Y" OR YN$ = "y" THEN    PRINT "フリーの BASIC を入手しましょう。"    LET FLG = 2   ELSEIF YN$ = "N" OR YN$ = "n" THEN    PRINT "プログラミング以外の楽しみを見つけましょう。"    LET FLG = 2   ELSE    PRINT "あなたは Yキー、Nキー 以外のキーを押しました。もう一度入力してください。"   END IF LOOP END

  • musume12
  • ベストアンサー率63% (19/30)
回答No.12

> IF条件式THEN命令や、GOTO文や、LET文やPRINT文やDEF文やDIM文などを使って・・・ > PROMPTも使って・・・ > ものすごく簡単なプログラム・・・  GOTO文は「ものすごく簡単なプログラム」では使う必要はないどころか使ってはいけません。 (1)DEF, FOR~NEXT, PRINT DEF f(x) = x^2 FOR x = -3 TO 3 STEP 0.1   PRINT x,f(x) NEXT x END (2)DIM, LET, PRINT DIM A(4) LET A(1) = 2 LET A(2) = 0 LET A(3) = 1 LET A(4) = 9 PRINT A(1);A(2);A(3);A(4) END (3)IF THEN, INPUT, PROMPT INPUT PROMPT "本気で BASIC を理解するつもりがありますか?":YN$ IF YN$ = "Y" OR YN$ = "y" THEN   PRINT "フリーの BASIC を入手しましょう。" ELSE   PRINT "プログラミング以外の楽しみを見つけましょう。" END IF END

zasx1098
質問者

お礼

(3)だけもう少し簡単なプログラムにしていただけないでしょうか?教えていただけると幸いなのですが。

zasx1098
質問者

補足

もう少しだけ簡単にしていただけないでしょうか?教えていただけると幸いなのですが。すみません。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.11

https://okwave.jp/qa/q9685268.html の回答を本当に理解されているのでしたら #9の回答もどうやれば理解できるのかわかると思うのですけど。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.10

>すみません。少し違います。 具体的なテーマが無くサンプルプログラムが欲しいとの要望なので種々の例が載ているサイトを紹介しました。 http://greenowl5.com/gprogram/basic/basic1_020.html        ↓     「次の項目へ進む」        ↓     「次の項目へ進む」        ↓       中略        ↓     「次の項目へ進む」        ↓ http://greenowl5.com/gprogram/basic/basic1_220.htm 最後まで読みましたか?

  • musume12
  • ベストアンサー率63% (19/30)
回答No.9

> 後、ちょっとだけ簡単なプログラム > できれば、6行くらいがいい・・・ > FOR TO STEP という文も使って・・・  アフォみたいに簡単な、FOR~NEXT ループの5行プログラムを3例。 !例1 LET N = 0 FOR I = 1 TO 100   LET N = N + 1 NEXT I PRINT N PRINT !例2 LET N = 0 FOR I = 1 TO 100 STEP 2   LET N = N + 1 NEXT I PRINT N PRINT !例3 LET N = 0 FOR I = 1 TO 100   LET N = N + I NEXT I PRINT N END  それぞれの N がいくらかわかるかな(笑)。

zasx1098
質問者

お礼

では、IF条件式THEN命令や、GOTO文や、LET文やPRINT文やDEF文やDIM文などを使って、プログラムを作っていただけると幸いなのですが。すみません。 これについても、ものすごく簡単なプログラムを作っていただけないでしょうか? すみません。後、PROMPTも使っていただけると幸いです。

zasx1098
質問者

補足

すみません。わかりません。教えていただけると幸いなのですが。すみません。能力不足で。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.8

>インターネットで調べてもいいのが出てこないのです。 探し方が悪かったのでしょう。 >教えていただけると幸いなのですが。 参考URLを読んでみることをお薦めします。(MBASIC86を使った例) 理解できている所は飛ばしても良いでしょう。 ページの最後に「次の項目へ進む」というボタンが有るのでクリックします。

参考URL:
http://greenowl5.com/gprogram/basic/basic1_020.html
zasx1098
質問者

補足

すみません。少し違います。簡単なプログラムを作っていただけると幸いなのですが。すみません。

  • musume12
  • ベストアンサー率63% (19/30)
回答No.7

> もう少し簡単なプログラムにしていただけると幸いなのですが。 > できれば、6行くらいがいいです。 https://www.koshigaya.bunkyo.ac.jp/shiraish/basic/tutorial/section3.htm 例25~例46まで数学絡みのプログラムが計22あり。

zasx1098
質問者

補足

後、ちょっとだけ簡単なプログラムを探しています。参考になるものもありますが、参考にならないものもあります。何か、一つでも、簡単なプログラムを作っていただけると幸いなのですが。すみません。

  • musume12
  • ベストアンサー率63% (19/30)
回答No.6

!ブロック崩し DEF V2W(x)=4*x !仮想画面の座標を物理画面の座標へ DEF W2V(x)=INT(x/4) !その逆 PICTURE DOT !物理画面にドットを表示する   PLOT AREA: -2,-2; 2,-2; 2,2; -2,2 !4x4 END PICTURE LET vx=100 !仮想画面の大きさ 120×100ドット LET vy=120 SET bitmap SIZE V2W(vx)+1,V2W(vy)+1 !物理画面の大きさ SET WINDOW 0,V2W(vx),V2W(vy),0 !スクリーン座標 RANDOMIZE !------------------------------ ブロック LET lx=5 !左上の座標 LET ly=20 LET ox=10 !間隔 LET oy=6 LET p=5 !p×q個 LET q=INT(vx/ox)-2 DIM B(0 TO p-1,0 TO q-1) !1:有、0:無 MAT B=2*CON DIM BC(2) !衝突回数の色(ルックアップテーブル) DATA 4,10 MAT READ BC !------------------------------ 壁 LET wx1=lx-1 !左上の座標 LET wy1=ly-15 LET wx2=wx1+ox*q !右下の座標 LET wy2=vy-5 !------------------------------ パッド LET px=x !左上の座標 LET pw=5 !幅の半分 !------------------------------ ボール LET dx=3 !移動方向 LET dy=5 LET x1=INT((wx2-wx1)/2) !発射位置 LET y1=ly+oy*p + 10 LET x=x1 !現在の位置 LET y=y1 LET k=0 LET NumOfBlock=p*q !ブロックの総数 LET NumOfPad=3 !パッドの残り数 DO !ゲームループ !------------------------------ 当り判定   IF (x<=wx1 AND x1<>wx1) THEN !左側の壁 ※2重衝突防止   !!!IF x<=wx1 THEN !左側の壁    LET k=0 !ボールの起点    LET x1=wx1    LET y1=y-INT((wx1-x)*dy/dx) !位置を補正 ※壁のすり抜け    LET x=x1 !ボールの位置    LET y=y1    LET dx=-dx !ボールの反射   END IF   IF (x>=wx2 AND x1<>wx2) THEN !右側の壁   !!!IF x>=wx2 THEN !右側の壁    LET k=0    LET x1=wx2    LET y1=y-INT((x-wx2)*dy/dx)    LET x=x1    LET y=y1    LET dx=-dx   END IF     LET xx=x-lx !ブロックの領域外なら   LET yy=y-ly   IF xx<0 OR xx>=ox*q OR yy<0 OR yy>=oy*p THEN      IF (y<=wy1 AND y1<>wy1) THEN !上側の壁    !!!IF y<=wy1 THEN !上側の壁      LET k=0      LET x1=x-INT((wy1-y)*dx/dy)      LET y1=wy1      LET x=x1      LET y=y1      LET dy=-dy    END IF        IF ABS(x-px)<=pw AND (y>=wy2 AND y1<>wy2) THEN !パッド    !!!IF ABS(x-px)<=pw AND y>=wy2 THEN !パッド      LET k=0      LET x1=x-INT((y-wy2)*dx/dy)      LET y1=wy2      LET x=x1      LET y=y1      LET dy=-dy    END IF    IF y>=vy THEN !ミス!!!      LET NumOfPad=NumOfPad-1      LET x=x1 !ボールの位置      LET y=y1      LET px=x !パッドの位置      WAIT DELAY 1    END IF       ELSE !領域内なら     !※ブロックを厚くするとボールが内部に入った状態になって、何重にも衝突したことになる。    LET xx=INT(xx/ox) !該当するブロックの位置を算出する    LET yy=INT(yy/oy)    IF B(yy,xx)>0 THEN !消滅させる      LET B(yy,xx)=B(yy,xx)-1      IF B(yy,xx)=0 THEN LET NumOfBlock=NumOfBlock-1           LET k=0      LET x1=x      LET y1=y      LET dy=-dy    END IF       END IF     !------------------------------ 描画処理毎(フレームを表示する)   SET DRAW mode hidden !ちらつき防止開始   CLEAR     SET AREA COLOR 1   FOR xx=wx1 TO wx2 !上側の壁を表示する    DRAW DOT WITH SHIFT(V2W(xx),V2W(wy1))   NEXT xx   FOR yy=wy1 TO wy2    DRAW DOT WITH SHIFT(V2W(wx1),V2W(yy)) !左側、    DRAW DOT WITH SHIFT(V2W(wx2),V2W(yy)) !右側   NEXT yy     FOR yy=0 TO p-1 !ブロック    FOR xx=0 TO q-1      LET c=B(yy,xx)      IF c>0 THEN !存在するなら       SET AREA COLOR BC(c) !ルックアップテーブルを参照する       DRAW BLOCK(oy-1,ox-1) WITH SHIFT(V2W(lx+ox*xx),V2W(ly+oy*yy))      END IF    NEXT xx   NEXT yy     SET AREA COLOR 1   DRAW BLOCK(2,2*pw) WITH SHIFT(V2W(px-pw),V2W(wy2)) !パッド ※中心の座標で     SET AREA COLOR 2   DRAW BLOCK(3,3) WITH SHIFT(V2W(x-1),V2W(y-1)) !ボール ※中心の座標で     SET DRAW mode explicit !ちらつき防止終了     !------------------------------ 移動処理(次のフレームへ)   IF ABS(dy)<ABS(dx) THEN !xの方が増分が多い   !□□□■   !□■■□  y=l*x+m の式として考える   !■□□□    LET k=k+SGN(dx) !±1 移動量 ※低解像度だとカクカク動くように見える    !!!LET k=k+SGN(dx)*3 !±3 移動量    LET x=x1+k    LET y=y1+INT(k*dy/dx)   ELSE !yの方が増分が多い   !□□■   !□■□  x=l*y+m の式として考える   !□■□   !■□□    LET k=k+SGN(dy) !±1 移動量    !!!LET k=k+SGN(dy)*3 !±3 移動量    LET x=x1+INT(k*dx/dy)    LET y=y1+k   END IF     LET px=x !パッド位置はボールの真下   !!!WAIT DELAY 0.2   LOOP UNTIL NumOfPad=0 OR NumOfBlock=0 !パッド、ブロックがなくなるまで PICTURE BLOCK(m,n) !ブロックなどを位置(0,0)-(n,m)に表示する   PLOT AREA: -2,-2; 4*n-2,-2; 4*n-2,4*m-2; -2,4*m-2 END PICTURE END

zasx1098
質問者

補足

もう少し簡単なプログラムにしていただけると幸いなのですが。すみません。できれば、6行くらいがいいです。意味不明です。後、FOR TO STEP という文も使って答えていただけると幸いなのですが。すみません。

  • hiodraiu
  • ベストアンサー率15% (451/2846)
回答No.5

No.2です > 出来るだけ、教科書に載っている簡単なプログラムが良いのです。教えていただけると幸いなのですが。すみません。 だから、それを検索してはどうですかって話です。教科書に載っている簡単なプログラムって具体的に、どういったもののことですか?質問文には「なんでも良いので」ってありますよね。何でも良いわけではないってことですか? 自分で検索すれば、好きな条件で探すことが出来ますよね。初心者向けに解説しているサイトも簡単に見つかりますよね。そういったサイトなら、解説も書かれてますし、プログラムに対する質問も受け付けて行ことも多いですよね。 頑なに、ここに謎の要求で、プログラムを作らせようとするのに、何か別の意図があるのですか。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

前回の質問(https://okwave.jp/qa/q9683847.html)を理解できたのでしょうか? BASIC言語に限らずコンピューターに何をやらせるかが提示さえていない場合はどのような回答をしても理解できないと思います。 現状ではBASIC言語でプログラムする人は殆ど居ないと思いますので古本屋に行って入門書を探された方が良いでしょう。 古本屋が身近にないときは「BASIC言語 入門」で検索すれば必要な情報が入手できると思います。 尚、BASIC言語とVisual Basicは異なりますので混同しないでください。

zasx1098
質問者

補足

理解できました。しかし、インターネットで調べてもいいのが出てこないのです。教えていただけると幸いなのですが。すみません。

関連するQ&A