「BASIC」の版間の差分

比較演算子の表に class="wikitable" を指定。以前の表は、枠線がなく、読みづらかったので。
(配列の0番目が使えないBASICもあるので修正。)
(比較演算子の表に class="wikitable" を指定。以前の表は、枠線がなく、読みづらかったので。)
プログラミング言語[[w:BASIC|BASIC]]の使用法
 
== はじめに ==
まず、使用するBASICを起動して下さい。
 
BASICには大きくわけて、
* [[w:MS-DOS|MS-DOS]]時代までの「古いBASIC」 ([[w:N88-BASIC|N88-BASIC]]や[[w:F-BASIC|F-BASIC]]、[[w:MSX-BASIC|MSX-BASIC]]などを想定)
*「JIS規格BASIC」や[[w:QuickBASIC|QuickBASIC]]以降の、「新しいBASIC」
* [[w:Microsoft Visual Basic|Microsoft Visual Basic]]以降の、[[w:GUI|GUI]]に特化したBASIC
 
簡単なプログラムの例
<pre>
5 cls
5 cls
10 PRINT "3+5=";
2010 PRINT "3+5=";
20 PRINT 3+5
30 END
30 END
</pre>
 
各行の最初についている数字が行番号です。10からはじめて10ずつ増やしていくのが一般的です。こうすれば、後から簡単に行を挿入することができます(ただし9行まで)。PRINT は前節で説明した通り画面に文字を出力する命令です。最後の END はプログラムの終了を表す命令で、省略可能なBASICも多いですが、そうでなければ必ず入れるようにします。
なお古いBASICでは「:」を用いると次のようにも書けますが、現在では推奨されません。
 
<pre>
5 cls
5 cls
10 PRINT "3+5=";:PRINT 3+5
10 PRINT "3+5=";:PRINT 3+5
20 END
20 END
</pre>
 
現在、一部の(再現)BASICでは、
 
<pre>
5 cls
5 cls
10 PRINT "3+5=";3+5
10 PRINT "3+5=";3+5
20 END
20 END
</pre>
 
のように記述することができます。
と入力すると、改行するたびに行番号を10ずつ増やして自動的に表示します。自動表示を停止させるのはBREAKキーをおします。(機種によってはSTOPキーや、CTRL+STOPキーを同時押しなど、操作が多少異なります。)
 
=== 新しいBASICでのプログラムの入力 ===
新しいBASICでは、プログラムを編集するためのエディタを持っており、これを入力に使います。エディタの概要や使い方自体は省略します。また、次のように「行番号を省略」できます。
 
PRINT "3+5=";
<pre>
PRINT 3+5
PRINT "3+5=";
END
PRINT 3+5
END
</pre>
 
プログラムの実行は、RUNではなく、エディタのメニューから「実行」を選択します。
 
 
= 以下は基本的に古い形式で説明します =
* ここで 古い形式を N-BASIC,MSX-BASICとします。それ以降のBASICで働くように考慮します。
 
* 説明はストレート一本道で わかりやすくします。具体例を多く入れる。
 
* 出来るだけ専門用語を使わない。使うときは説明を入れる。
 
==最初に==
* BASICのプログラムは行単位で実行されます。
 
* 行の上から下に向かって実行されます。(分岐などもあり)
 
* STOP,END命令で実行が終了します。
 
* 空白に意味があります、注意しましょう。
 
== 注釈(コメント) REM ==
注釈をつけるには'''REM'''を使います。注釈とは「何も実行しない」という命令で、プログラムの説明を書いたり、[[w:デバッグ|デバッグ]]などで一時的に命令を実行させないようにするとき、などに使います。
 
10 REM PRINT "1"
<pre>
20 PRINT "2"
10 REM PRINT "1"
30 END
20 PRINT "2"
30 END
</pre>
 
このプログラムを実行すると、10行目は何も実行せず、20行目が実行されて、画面に「2」とだけ表示します。
画面に表示させるには PRINT文を使います。
 
<pre>
10 PRINT "これが表示されます。"
10 PRINT "これが表示されます。"
20 PRINT 123
20 PRINT 123
30 END
30 END
</pre>
 
PRINTの後に続くものを画面に表示します。文字列、数値、変数など
 
 
変数の名前には、以下のような規則があります。
* アルファベットから始まる。
*:1ABC などは不可
*アルファベットと数字で構成される。(記号と空白は不可)
また、古いBASICや簡易なBASICでは、機種によって変数名の長さに「2文字以下」「8文字以下」という制限があります。
 
== 入力 INPUT ==
キーボードから入力するには、INPUT文を使います。
 
 
5 REM これは 数値をキー入力して、変数Aに代入、そして変数Aを表示する。
<pre>
10 INPUT A
5 REM これは 数値をキー入力して、変数Aに代入、そして変数Aを表示する。
20 PRINT A
10 INPUT A
30 END
20 PRINT A
30 END
</pre>
 
10 INPUT A では、数値変数Aに キーボードから入力した数値を代入します。
このような書き方も出来ます。
 
<pre>
10 INPUT "数値を入力して下さい ",A
10 INPUT "数値を入力して下さい ",A
20 PRINT A
20 PRINT A
30 END
30 END
</pre>
 
入力を促す文字列を表示してから、入力に入ります。
 
== 代入と計算 = ==
 
'''変数'''は、数値や文字などのデータを入れておく箱のようなものです。
 
<pre>
10 A=12
2010 BA=312
20 B=3
30 PRINT A+B
4030 PRINT A-+B
5040 PRINT A*-B
6050 PRINT A/*B
60 PRINT A/B
70 END
70 END
</pre>
 
このプログラムは、変数 A に 12、変数 B に 3 を代入し、足し算・引き算・掛け算・割り算の結果を表示する物です(順に、15 9 36 4 と表示されます)。
INPUT命令を使って数値または文字列(変数名$)を入力させる場合、
 
;
INPUT "ここに文字を表示させることも可能";変数名
PRINT "入力した数値(文字列)は";変数名;"です"
100 A=(10+2)/4
 
== 条件分岐 IF THEN ELSE ==
「もし、明日 晴れだったなら、遠足。そうでなく、雨だったらなら、教室で自習。」のような条件分岐。
 
 
プログラム中である条件に当てはまるかで実行する内容を変えるときには'''IF'''~'''THEN'''~'''ELSE'''文を使用します。
 
10 A=0
<pre>
20 B=3
10 A=0
30 '''IF''' A > B '''THEN''' PRINT "A is bigger than B" '''ELSE''' PRINT "B is bigger than A"
20 B=3
30 '''IF''' A > B '''THEN''' PRINT "A is bigger than B" '''ELSE''' PRINT "B is bigger than A"
</pre>
 
ここで使っているA > Bの '''>''' は'''比較演算子'''といい、数値の比較に使います。
 
{|
{| class="wikitable"
|-
! 演算子 !! 意味 !! 数学の記号
|-
|A '''=''' B || AとBは等しい || A=B
|-
|A '''>''' B || AはBより大きい || A>B
|-
|A '''<''' B || AはBより小さい || A<B
|-
|A '''>=''' B || AはB以上 || A≧B
|-
|A '''<=''' B || AはB以下 || A≦B
|-
|A '''<>''' B || AとBは等しくない || A≠B
|}
 
複数行にわたってしか書けないものを実行させたい場合、GOTO命令(後述)を使い行を飛ばす必要があります(この場合、GOTOと書くのを省略して、行番号だけでも書けます)。
 
== 分岐 GOTO ==
無条件でジャンプします。
 
条件分岐ではない、強制の分岐には'''GOTO'''命令を使います。GOTOの後に行番号を入れると、対応する行の命令を実行します。
 
<pre>
10 GOTO 30
10 GOTO 30
20 PRINT "1"
3020 PRINT "21"
30 PRINT "2"
40 END
40 END
</pre>
 
このプログラムを実行すると20行目がスキップされ、30行目が実行されて、画面に「2」とだけ表示します。
 
<pre>
10 GOTO 40
10 GOTO 40
20 PRINT "1"
20 PRINT "1"
30 GOTO 60
30 GOTO 60
40 PRINT "2"
40 PRINT "2"
50 GOTO 20
50 GOTO 20
60 END
60 END
</pre>
 
このプログラムを実行すると、画面に「2」「1」と表示します。が、このようにGOTOの飛び先が入り組んだプログラムは「スパゲティ・プログラム」と呼ばれて、「他の人が見てもプログラムの構造を一目では把握しづらい」ために、禁じ手とされています。
 
<pre>
10 PRINT "1"
2010 PRINT "21"
20 PRINT "2"
30 GOTO 10
30 GOTO 10
40 END
40 END
</pre>
 
このプログラムを実行すると、画面に「1」「2」を表示し続けます。このように「終了せずに、実行し続ける」プログラムを「無限ループ」と呼びます。表示を止めるには、古いBASICではAUTO命令を止めるときと同様に「BREAK」などのキーを押してください。新しいBASICではメニューから「停止」を選択します。(Visual Basicなどでは無限ループを書くとそのまま問答無用で応答不能になってしまうものもありますので、アプリケーションを強制終了させるか、CTRL+ALT+DELするなどしてOSから強制終了させてください。)
新しいBASICでもGOTO命令は使用できますが、推奨はされません。
 
== 繰り返し FOR NEXT ==
プログラム中で同じ処理を繰り返す場合には、'''FOR'''~'''NEXT''' 文を使用します。
 
10 J=0
<pre>
20 '''FOR''' I=1 TO 5
30 10 J=J+I0
20 '''FOR''' I=1 TO 5
40 PRINT "I=";I;" J=";J
30 J=J+I
50 '''NEXT''' I
40 PRINT "I=";I;" J=";J
60 END
50 '''NEXT''' I
60 END
</pre>
 
この例は、FORからNEXTの間を繰り返します。回数は、1から5までの5回。もしSTEPを指定してあれば、増量値の設定ができます。
これを実行すると以下の様に表示されます。
 
I= 1 J= 1
<pre>
I= 2 J= 3
I= 31 J= 61
I= 42 J= 103
I= 53 J= 156
I= 4 J= 10
I= 5 J= 15
</pre>
 
FOR 文の構文は以下の様になります。
変数が初期値から最終値まで変化し、その各値ごとに NEXT までの文が実行されます。
 
== DATA文 ==
INPUT文で毎回データ入力するのは大変です。
 
DATA文、READ文、RESTORE文 です。
 
<pre>
20 READ A
3020 PRINTREAD A
30 PRINT A
40 DATA 1,2,3
40 DATA 1,2,3
</pre>
 
20行でDATA文から1個読み込んで変数Aに代入します。30行で表示します、この例では「1」が表示されます。もし次に読み込んだなら「2」が読み込まれます。
 
 
<pre>
10 RESTORE 50
10 RESTORE 50
20 READ A
3020 PRINTREAD A
30 PRINT A
40 DATA 1,2,3
5040 DATA 41,52,63
50 DATA 4,5,6
</pre>
 
10行のRESTOREでDATA文の読み込み先を指定します、ここでは50行から読み込みます。20行で読んで、30行で表示。この例では「4」が表示されます。普通は FOR NEXT文などを使って 連続して読み込みます。
 
 
 
== サブルーチン GOSUB ==
 
==サブルーチン GOSUB ==
同じ内容のプログラムは、まとめてサブルーチンにする事ができます、GOSUBです。
 
RETURNを使うとGOSUBの次に戻ります
 
== 関数 () ==
関数はサブルーチンに似ています。組み込まれたサブルーチンのように思ってください。
 
他にも色々な関数があります。
 
:ABS(x) 
:ATN(x) 
:SGN(x) 
:SIN(x) 
:COS(x) 
:EXP(x) 
:INT(x) 
:LOG(x) 
:SQR(x) 
:RND(1)
 
== 文字列操作 $ ==
 
ABS(x) 
ATN(x) 
SGN(x) 
SIN(x) 
COS(x) 
EXP(x) 
INT(x) 
LOG(x) 
SQR(x) 
RND(1)
 
==文字列操作 $ ==
ここまでの説明で、数値のみを扱いました。ここでは、文字の入力、表示、操作を説明します。
 
=== 文字定数と文字変数 ===
文字を表す時は""で囲みます。
"これは文字です"
A$="文字列"
 
=== 文字列の結合 ===
文の足し算が出来ます。
 
30 END
 
=== 文字列の関数と変換 ===
BASICでは文字列の便利な関数があります。
 
TAB(x) 
 
== 浮動小数点 # ==
ここまでは数値の整数で行いました。
 
400 END
 
;誤差
コンピューターの計算では誤差が発生します。
誤差の程度は機種によって異なります。
 
 
== 配列 DIM ==
住所録のようなものを作るときに使います。
同じような変数をたくさん作るときに、変数が多くて大変です。
配列には、このような一次元配列の他に二次元、3次元配列もあります。
 
== あとがき ==
ここでは、始めての人が雰囲気をつかめるように基本の中の初歩を最低限に書きました。
そして、初級と応用は別の本につづきます。
 
== 補足  ==
=== 複数行のIF文 ===
現在では構造化BASICもあります。
これは条件文が成立すればTHENからENDIFあるいはELSEまでの部分を実行して、成立しなければELSEからENDIFまでを実行するもので、例のプログラムは
と書けて、非常に見やすくなります。ただし、必ずしも使えるものではありません。古いBASICでは1行で書く方法しか使えません。
 
=== マルチステートメント ===
(:)で区切って、一行に多くのコマンドを書く事が出来る。
ただし、これは古いBASICの文法なのであまり使わない方が良い。
23,377

回編集