「BASIC」の版間の差分

行番号が順番どおりでない場合
(いっぽう、Visual BasicなどのGUI対応したBASICは、文法と操作性が、古いBASICとは、かなり異なります。GUI対応BASICは、マウス入力に対応したGUIプログラミングに対応するために、新しい機能を大)
(行番号が順番どおりでない場合)
</pre>
のようなプログラムだと、「3+5=」を表示する前に、いきなり終了します。
 
 
=== 行番号が順番どおりでない場合 ===
 
<pre>
20 PRINT("aaa20")
10 PRINT ("bbb10")
</pre>
 
のように、行番号が順番どおりではない場合、どの行を優先して実行するのでしょうか?
 
 
現代のGUI対応のBASICでは、行番号のないものが多いのですが、その理由のひとつも、おそらく、このような、行番号と順序のちがう場合の混乱を防ぐためなど、それなりの理由があるのでしょう。
 
 
さて、たいていの古いBASICの場合、行番号の小さい順から先に実行すると思います。(いくつかの再現BASICソフトで確認。)
この場合、特にエラーメッセージなどは、出されません。
 
おそらく、古いベーシックでは、ソフトウェアの内部では、プログラムの実行のさいしょに(つまりRUN命令の直後に)、まず行番号にもとづいて並び替えを行って、
 
<pre>
10 PRINT ("bbb10")
20 PRINT("aaa20")
</pre>
 
のように並び替えてから、それからやっと、上から順に実行をしているのでしょう。
 
つまり、これらの古いBASICは、プログラムを最初に実行する際、まず並び替えを行っているのです。
 
もし、行数が10行ていどの少ないプログラムなら、それでもかまいませんし、気の聞いた便利な機能でしょう。
 
しかし、もし百行や千行もあるプログラムを並び替えるとなると、並び替えには時間が掛かるので、プログラムの実行が終わるまでの時間が長引いてしまいます。
 
 
裏を返したことを言うならば、行番号のないBASICの場合、そのぶん高速化をしている可能性があります(並び替えの時間が省けるので)。
 
さらに、裏の裏を返せば、行番号のあるBASICの使い道は、処理に時間が掛かってもいいので、処理の順序を確実にまちがいなく、自分以外の他のプログラマーにも伝えたいようなプログラムを書くときには、もしかしたら行番号のあるBASICが便利かもしれません。
 
 
 
と入力すると、改行するたびに行番号を10ずつ増やして自動的に表示します。自動表示を停止させるのはBREAKキーをおします。(機種によってはSTOPキーや、CTRL+STOPキーを同時押しなど、操作が多少異なります。)
 
* なぜ、こうなってるのか?
今でこそ、プログラムの実行結果の画面と、プログラム記述用のエディタ画面とは、別々の画面に分かれているのが普通です。
 
しかし、昔のパソコンでは、表示ウインドウが標準では1つしかありませんでした。
というか、そもそも「ウィンドウ」という概念すらなく、昔の古いプログラム言語では、実行結果の表示画面と、エディタ画面とが、同じひとつの画面だったりします。しかもコマンド入力機能がプログラム記述機能も兼ねていたり、あるいはパソコン本体にあるレバースイッチ(小型のレバースイッチがついていたりする)により、コマンド入力モード(「ターミナルモード」という)とプログラミングモードとを切り替えたりしていました。
 
現代でも、windowsのコマンドプロンプトのような、OS付属のコマンド入力用アプリケーションでは、普通、ウィンドウは1つだけであり、その、たったひとつのウィンドウが、実行結果の表示画面と、コマンド入力画面とを、兼ねています。
 
 
=== 新しいBASICでのプログラムの入力 ===
このプログラムは、変数 A に 12、変数 B に 3 を代入し、足し算・引き算・掛け算・割り算の結果を表示する物です(順に、15 9 36 4 と表示されます)。
 
変数への代入は '''=''' を使用します。上のプログラムでは直接数字を代入しましたが、計算式(変数を使用するものも含む)を代入することができます。A=A+1 の様に、自分自身を用いた式を代入することもできます。
INPUT命令を使って数値または文字列(変数名$)を入力させる場合、
 
BASICにおける代入とは、「記号=の右側にある計算式の結果を、記号=の左側の変数に代入しろ」という意味です。
;例
 
INPUT "ここに文字を表示させることも可能";変数名
そのため、
PRINT "入力した数値(文字列)は";変数名;"です"
12 = A
という命令はエラーになります。
かならず、代入先の変数は、記号=の左側にある必要があります。
 
また、右側にある計算式を、記号=の左にある変数に代入するので、
A=A+1
のように、自分自身を用いた式を代入することもできます。もし、「A+1=A」という順序だと、エラーになります。
 
 
<pre>
10 A=12
20 A=A+1
30 PRINT A
40 END
</pre>
 
を実行すると、計算結果(12+1)の「13」が表示されるでしょう。
 
とします。
 
なお、変数への代入は「LET」命令で、
70 END
</pre>
 
== 入力命令 ==
利用者からキーボードで数値を入力してもらうには、INPUT 文を使います。
INPUT命令を使って数値または文字列(変数名$)を入力させる場合、
 
;例
INPUT "ここに文字を表示させることも可能";変数名
PRINT "入力した数値(文字列)は";変数名;"です"
 
とします。
 
(プログラム例)
<pre>
10 INPUT "数値を入力してください" ;A
20 PRINT "入力された数値は"
30 PRINT A
40 PRINT "です。"
50 END
</pre>
 
または
 
<pre>
5 PRINT "数値を入力してください"
10 INPUT A
20 PRINT "入力された数値は"
30 PRINT A
40 PRINT "です。"
50 END
</pre>
 
 
 
== 変数の初期化 ==
たとえば、上のプログラムを実行したあとに、
PRINT A
を実行すると、さきほど入力した変数が出るかもしれません。
12
と表示される場合があります。
 
この理由は、メモリ内に、以前に使用した変数が、そのまま残っているからです。
命令 NEW を使うと、BASICで扱っている変数にすべてゼロ 0 を代入し、初期化(しょきか)します。
 
もし、上の節「代入と計算」のプログラムの実行直後に、まったく別のプログラムを実行する必要があったとして、そこでも同じ変数名の変数が使われていたとしたら、その変数は初期化をしていないと、エラーの原因になってしまいます。
 
まったく別のプログラムでも、同じ変数名「A」や「B」を、まったく別の内容で使うこともありますので、必要に応じて NEW 命令を使いましょう。
23,377

回編集