プロが教える店舗&オフィスのセキュリティ対策術

以下のURLで、うまくいかなかったものがあるのですが、教えていただけないでしょうか?これを使いながらやっています。
http://worholicanada.mydns.jp/pc98/00301.html
3つほどあります。
後ほど写真で送ります。

質問者からの補足コメント

  • うーん・・・

    1枚目です。

    「昔のBASIC言語について。」の補足画像1
      補足日時:2022/02/23 02:50
  • うーん・・・

    2枚目です。どこを直せば実行可能なのでしょうか?教えていただけると幸いです。すみません。

    「昔のBASIC言語について。」の補足画像2
      補足日時:2022/02/23 02:51
  • うーん・・・

    3枚目の疑問点は2枚目と同様です。

    「昔のBASIC言語について。」の補足画像3
      補足日時:2022/02/23 02:52
  • うーん・・・

    2枚目と3枚目の100行目(一番最初のプログラム)はどの様に直せば良いのでしょうか?教えていただけると幸いです。すみません。

    No.3の回答に寄せられた補足コメントです。 補足日時:2022/02/23 07:45
  • うーん・・・

    Full BASICは無料なのでしょうか?教えていただけると幸いです。すみません。

    No.5の回答に寄せられた補足コメントです。 補足日時:2022/02/23 16:15

A 回答 (6件)

Basicの「標準規格」はができたのは比較的最近のことで、それまでは各Basic毎に細かい違いがたくさんありました。


A-Basicで書かれたプログラムを、B-Basicにそのまま入力してもエラーばかりで動かない、というのは、極々あたりまえのことです。
結局は
・A-Basicの勉強をして[A-Basicで書かれたプログラム]の内容を理解する
→ B-Basicの勉強をして、「[A-Basicで書かれたプログラム]の内容」をB-Basicで再現する
とするしかありません。


行番号100 (100行目、ではなく、「行番号」と言いましょう)
INPUT PROMPT は、N88-BASICには存在しません。
https://www.coronasha.co.jp/data/contents/692074 …
この説明の逆に考える必要があります。

既出ですが、N88-BASICには「IF〜THEN〜ELSE〜END IF構造」というものはありません。
単文のIFとGOTO 等のジャンプ命令を組合せて再現する必要があります。



あなたの真の目的は何ですか?
○N88-BASICを使いたいのなら、N88-BASICについて解説してあるサイトとか本とかを使いましょう。
○その本を使いたいのなら、Full BASIC を使いましょう。
https://hp.vector.co.jp/authors/VA008683/
○その本を使ってN88-BASICを使いたいのなら、Full BASICの勉強をして本の内容を理解し、N88-BASICも勉強してN88-BASICで再現するようにしましょう。
この回答への補足あり
    • good
    • 1
この回答へのお礼

ありがとうございます。FullBASICのどれをダウンロードすれば良いのでしょうか?教えていただけると幸いですすみません。

お礼日時:2022/02/23 16:10

恩着せがましいことを言うようで申し訳ないのですが、


わざわざ「N88互換BASIC for Windows95」をインストールして挙動を検証して回答したのに、
お礼の言葉もなし、
回答頂いた内容について役立ったのか役に立たなかったのかすらの報告もなし、
質問を重ねるにしても、指摘された「どういうエラーか?」についても全く触れない、
それでいて
「こっちも教えろ」
はちょっと礼を欠き過ぎでしょう。


勉強熱心ゆえ…なのかもしれませんが。


INPUT PROMPT については、IFと同様に「文法エラー」が出るってことでいいんですよね?

2枚目
100 INPUT "M=";M

3枚目
100 INPUT "A=";A
101 INPUT "B=";B
102 INPUT "C=";C

の様に書けば良いと思います。

ただし、私の環境での「N88互換BASIC for Windows95」では
INPUTを使うと入力は求められますが、入力後に
「実行時エラー '9': インデックスが有効範囲にありません。」
と表示され「N88互換BASIC for Windows95」落ちます。
プログラムがおかしいのではなく、Windows10での動作が保証されていないからかと思いますが。
(私に必要なソフトではないので落ちる原因追求まではしません)

あなたの環境で落ちずに処理が継続できるなら、そのままお勉強を進めて下さい。
    • good
    • 1
この回答へのお礼

ありがとうございます。試してみます。

お礼日時:2022/02/23 16:12

>2枚目は、行100がエラーになっていて、3枚目も同様のエラーです。


だ・か・ら
どういうエラーですか?

Syntaxエラーなら「文法エラー」なので、先のタイプミスの可能性大ですよ。
さっきも書いた入力チェックしたの?

>教えていただけると
さっきから教えてるじゃん。

教わりたいならやるべきことやれよ

そばであんたのこと見てない回答者から訊きたいってんなら
あんたも努力尽力しなさいよ

教えてる通りにやらないヤツってメンドクサイから嫌いなんだよな
    • good
    • 1

時間的に補足もらえなさそうだったので、実際にお勉強環境で試してみた。



「うまくいかなかったものがある」
の意味がまずはっきりしなかったんだけど。
1枚目の写真は
『120行で文法エラーになる』
ってことでいいの?
具体的に書きましょう。

で、試したところで気付いたのが。
「N88互換BASIC for Windows95」では
IF分が1行で完結してなきゃダメなんじゃないか、ってこと。

シンプルに

100 LET A=5
110 LET B=1
120 PRINT "IF!!!"
130 IF A<B THEN
140 GOTO 120
150 END IF
160 PRINT "END"
170 END

A<B のときに 120行に飛ぶように書いてみる。
実際
A(=5) < B(=1)
で、IFが不成立ですよね。
それなのにIF内のTHENの処理である GOTO 120 が走ってしまう。
130行でIFは不成立!IFおしまい!
次の行へと突き進む!
ってなってるみたい。

10 IF 条件 THEN
20   処理
30 ELSE
40   処理
50 END IF

みたいな書き方が通用しないので、

10 IF 条件 THEN 処理 ELSE 処理

のように1行書かなきゃならない。
これを踏まえて1枚目を直すと

100 LET N=0
110 LET X=1
120 IF X<=2 THEN 130 ELSE 170 (※1)
130 LET N=N+1
140 LET X=X*1.05
150 GOTO 120
160 'END IF (※2)
170 PRINT N
180 END

※1
IFが正しければTHENの処理として書かれた次の行、130行へ進む。
IFが正しくなければ、IFのTHENの最終処理の先である170へ飛ぶ。

※2
IFが1行で完結しているので、END IFは不要。
頭に「'」を付けてコメントアウト(無効)にしている。
行ごと削除でも良い。

・・・のようにすると動作する。

以上で1枚めが解決するのであれば、2枚目、3枚目の写真も同じ方法で解決すると思われる。

ELSEがあると、またそれも考慮して流れのイメージでGOTOを入れてあげなきゃならない。

テキストと「N88互換BASIC for Windows95」が噛み合ってないのでしょう。

「私の環境だとIFを複数行に跨いで書いても問題なく動作するぞ!」
って場合は見当違いの回答になっちゃってるのでお許しを。
この回答への補足あり
    • good
    • 0
この回答へのお礼

2枚目は、行100がエラーになっていて、3枚目も同様のエラーです。教えていただけると幸いです。すみません。

お礼日時:2022/02/23 07:16

>うまくいかなかったものがあるのですが、教えていただけないでしょう


か?

無理。
どう「うまくいかなかったのか」内容がサッパリなので。
ちゃんと説明しないと人には伝わりません。

そもそも
印刷物の内容がおかしい、ってのはまぁ少ないケースなので
あなたのタイプミスの疑いが濃厚です。

自分で入力したものを見直すとか確認したの?
すっごく多いミスですよ
    • good
    • 1
この回答へのお礼

2枚目は、行100がエラーになっていて、3枚目も同様のエラーです。教えていただけると幸いです。すみません。

お礼日時:2022/02/23 07:15

これはプログラムのミスを正せという問題なのですか?


そのようには見えませんが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!