- 締切済み
プログラミングBASIC言語について。
なんでも良いので、BASIC言語のプログラムを作って、また、どの様なプログラムを書いたのかも教えていただけると幸いなのですが。すみません。かなりの負担がかかる質問ですので、答えられる範囲でいいです。
- みんなの回答 (13)
- 専門家の回答
みんなの回答
- musume12
- ベストアンサー率63% (19/30)
> (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)
> 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
- wormhole
- ベストアンサー率28% (1626/5665)
https://okwave.jp/qa/q9685268.html の回答を本当に理解されているのでしたら #9の回答もどうやれば理解できるのかわかると思うのですけど。
- bunjii
- ベストアンサー率43% (3589/8249)
>すみません。少し違います。 具体的なテーマが無くサンプルプログラムが欲しいとの要望なので種々の例が載ているサイトを紹介しました。 http://greenowl5.com/gprogram/basic/basic1_020.html ↓ 「次の項目へ進む」 ↓ 「次の項目へ進む」 ↓ 中略 ↓ 「次の項目へ進む」 ↓ http://greenowl5.com/gprogram/basic/basic1_220.htm 最後まで読みましたか?
- musume12
- ベストアンサー率63% (19/30)
> 後、ちょっとだけ簡単なプログラム > できれば、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 がいくらかわかるかな(笑)。
お礼
では、IF条件式THEN命令や、GOTO文や、LET文やPRINT文やDEF文やDIM文などを使って、プログラムを作っていただけると幸いなのですが。すみません。 これについても、ものすごく簡単なプログラムを作っていただけないでしょうか? すみません。後、PROMPTも使っていただけると幸いです。
補足
すみません。わかりません。教えていただけると幸いなのですが。すみません。能力不足で。
- bunjii
- ベストアンサー率43% (3589/8249)
>インターネットで調べてもいいのが出てこないのです。 探し方が悪かったのでしょう。 >教えていただけると幸いなのですが。 参考URLを読んでみることをお薦めします。(MBASIC86を使った例) 理解できている所は飛ばしても良いでしょう。 ページの最後に「次の項目へ進む」というボタンが有るのでクリックします。
補足
すみません。少し違います。簡単なプログラムを作っていただけると幸いなのですが。すみません。
- musume12
- ベストアンサー率63% (19/30)
> もう少し簡単なプログラムにしていただけると幸いなのですが。 > できれば、6行くらいがいいです。 https://www.koshigaya.bunkyo.ac.jp/shiraish/basic/tutorial/section3.htm 例25~例46まで数学絡みのプログラムが計22あり。
補足
後、ちょっとだけ簡単なプログラムを探しています。参考になるものもありますが、参考にならないものもあります。何か、一つでも、簡単なプログラムを作っていただけると幸いなのですが。すみません。
- musume12
- ベストアンサー率63% (19/30)
!ブロック崩し 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
補足
もう少し簡単なプログラムにしていただけると幸いなのですが。すみません。できれば、6行くらいがいいです。意味不明です。後、FOR TO STEP という文も使って答えていただけると幸いなのですが。すみません。
- hiodraiu
- ベストアンサー率15% (451/2846)
No.2です > 出来るだけ、教科書に載っている簡単なプログラムが良いのです。教えていただけると幸いなのですが。すみません。 だから、それを検索してはどうですかって話です。教科書に載っている簡単なプログラムって具体的に、どういったもののことですか?質問文には「なんでも良いので」ってありますよね。何でも良いわけではないってことですか? 自分で検索すれば、好きな条件で探すことが出来ますよね。初心者向けに解説しているサイトも簡単に見つかりますよね。そういったサイトなら、解説も書かれてますし、プログラムに対する質問も受け付けて行ことも多いですよね。 頑なに、ここに謎の要求で、プログラムを作らせようとするのに、何か別の意図があるのですか。
- bunjii
- ベストアンサー率43% (3589/8249)
前回の質問(https://okwave.jp/qa/q9683847.html)を理解できたのでしょうか? BASIC言語に限らずコンピューターに何をやらせるかが提示さえていない場合はどのような回答をしても理解できないと思います。 現状ではBASIC言語でプログラムする人は殆ど居ないと思いますので古本屋に行って入門書を探された方が良いでしょう。 古本屋が身近にないときは「BASIC言語 入門」で検索すれば必要な情報が入手できると思います。 尚、BASIC言語とVisual Basicは異なりますので混同しないでください。
補足
理解できました。しかし、インターネットで調べてもいいのが出てこないのです。教えていただけると幸いなのですが。すみません。
- 1
- 2
お礼
(3)だけもう少し簡単なプログラムにしていただけないでしょうか?教えていただけると幸いなのですが。
補足
もう少しだけ簡単にしていただけないでしょうか?教えていただけると幸いなのですが。すみません。