BASIC
情報技術 > プログラミング > BASIC
プログラミング言語BASIC(ベーシック)の使用法
はじめに

BASICには大きく分けて、以下のように分類されます(ただ、BASICは数多の方言があるので、これは分類の一例)。
はじめに

日本語ウィキブックスの本ページ『BASIC』では、主にマイコンBASICやJIS規格BASICを基準に、文法を説明しています。 その理由は、マイコンBASICは文法が単純で入門しやすく、また、古くからあるため、他のプログラミング言語にも応用しやすいためです。
はじめに

いっぽう、Visual BasicなどのGUI対応したBASICは、文法と操作性が、古いBASICとは、かなり異なります。GUI対応BASICは、マウス入力に対応したGUIプログラミングに対応するために、新しい機能を大量に追加してあるため、キーボード入力を中心にあつかう古いBASICとは、大幅に違っています。
はじめに

GUI対応したBasicには、歴史的な経緯から、『BASIC』から派生した名前がついていますが、実態は、ほとんど別のプログラミング言語だと思ったほうが良いでしょう。
はじめに

なお、2017年の現在、(GUIに特化している)Visual Basicを出しているマイクロソフト社が、入門者用に機能を簡易化した small basic というものを出しているので、GUIプログラミングの初心者は Visual Basic ではなく small basic (スモール ベーシック)で入門したほうが、学びやすいでしょう。
はじめに

いまや Visual Basic は、入門用のプログラムを動作させるまでに、覚えることがとても多くなってしまい、そのため、マイクロソフト社が、もはやVisual Basicは入門用には適さないと判断して、近年になって small basic を出すということになった次第です。
はじめに

BASICの実行環境ソフトは、Vector(ベクター; https://www.vector.co.jp/ )などインターネット上のフリー ソフトウェア配布サイトから無償または有償でダウンロードすることができます。
はじめに

日本で主流だったN-BASICやF-BASICを製造していた会社は、BASIC言語の開発・販売を終了しています。これは、
はじめに

などの理由が考えられます。このため、現在(令和4年7月)では、BASICは専ら趣味で使われる程度になってしまいました。
はじめに

その代わり、他の企業や個人が昔のBASICの実行環境を再現したアプリケーションを作り、フリー ソフトウェア配布サイトで公開しています。
はじめに

Microsoft Quick BASIC(MS-DOS時代)互換のオープン ソース ソフトウェアなどがあり、それを利用することもできます。
はじめに

特に、QB64にはエミュレーション機能があり、昔ながらの方法で多少のプログラミングが可能です。
古いBASICでのプログラムの入力

まず、使用するBASIC(ベーシック)を選び、起動して下さい。
古いBASICでのプログラムの入力

BASICで画面に文字を表示するためには PRINT 文を使います。ただし、新しいBASICでは、まったく別のコマンド文になります。
古いBASICでのプログラムの入力

BASICが起動すると、「Ok」「Ready」など(BASICや機種によって異なります)の文字の下に「■」(カーソル)が出ます。カーソルはカーソルキーの上下左右で移動できます。このカーソルが出ているときに、BASICのプログラムを編集できます。
古いBASICでのプログラムの入力

では最初に、PRINT文を使って、画面に文字を表示させてみましょう。
古いBASICでのプログラムの入力

と入力してみてください。入力時の文字モードは、直接入力モードで入力してください。Windowsの場合、右下に、文字入力モードの切り替えのタブがあるので、そこをクリックして、直接入力モードを選んでから、上記のPRINT文を入力してください。
古いBASICでのプログラムの入力

このように上記のPRINT文を入力し、RUN(「ラン」という。「起動せよ」の意味)を実行すると(実行方法は機種によって異なりますので、それぞれの機種を参考にしてください)、画面に Hello BASIC と表示されます。
古いBASICでのプログラムの入力

同様に、新しい行で、画面の左端にカーソルがある状態で、
古いBASICでのプログラムの入力

のように入力してみて(最後にEnterキーを入力して改行します。機種によってはRETURNキー、CRキーとも言います。以下、同じなので省略します)、RUNを実行すると(実行方法はそれぞれの機種を参考にしてください)、5 と計算の結果が表示されます。
古いBASICでのプログラムの入力

このように、PRINT命令は、その直後にあるものを画面に表示します。
古いBASICでのプログラムの入力

また、BASICでは、命令を実行することをRUN(ラン)と言います。英語の「走る」 RUN と同じ単語です。ランニング(走り)やランナー(走者)のランと同じです。
古いBASICでのプログラムの入力

いっぽう、
古いBASICでのプログラムの入力

をRUNで実行すると、画面に"2+3"とそのまま表示されます。
古いBASICでのプログラムの入力

つまり、二重引用符 " " は、「引用符内の文字列を、画面にそのまま表示しろ」という意味の記号です。
古いBASICでのプログラムの入力

他のプログラミング言語でも、「print」という語をテキスト表示命令に用いるプログラミング言語は多いです。また、他のプログラミング言語でも、文字列を表示する場合は、二重引用符 " " で くくるのが、普通になっています。
古いBASICでのプログラムの入力

もし、二重引用符でくくらないと、
古いBASICでのプログラムの入力

は「エラーのある文なので実行不可能」的な報告を コンピューターから報告されたり、あるいは、まったく予期せぬ数値や文字が表示されるなどのエラーを起こします(例えばundefined)。
古いBASICでのプログラムの入力

古いBASICでは、プログラムは「行番号+命令」の形でかかれます。行番号をつけないで入力すると、前述のように「命令を即実行して、終了」します。先頭に行番号をつけることで初めて、命令を組み合わせた「プログラム」として実行できるようになります。0未満の数や小数、分数は行番号にできません。
古いBASICでのプログラムの入力

各行の最初についている数字が行番号です。10からはじめて10ずつ増やしていくのが一般的です。こうすれば、後から簡単に行を挿入することができます(ただし9行まで)。PRINT は前節で説明した通り画面に文字を出力する命令です。最後の END はプログラムの終了を表す命令で、省略可能なBASICも多いですが、そうでなければ必ず入れるようにします。
古いBASICでのプログラムの入力

入力したら
古いBASICでのプログラムの入力

と(行番号なしで)入力すると実行します。 このプログラムを実行させると、画面に「3+5= 8」と表示されます。
古いBASICでのプログラムの入力

10行の最後についている ; は、「改行しない」ことをコンピューターに通知します。これを取り除くと、実行したときに「3+5=」と「8」が別の行に表示されてしまいます。これを利用して、一行分空白にすることができます。
古いBASICでのプログラムの入力

なお、古いBASICでは「:」を用いると次のようにも書けますが、現在では推奨されません。
古いBASICでのプログラムの入力

現在、一部の(再現)BASICでは、
古いBASICでのプログラムの入力

のように記述することができます。
古いBASICでのプログラムの入力

なお、ENDはプログラムの終了を表す命令でしたので、たとえば、
古いBASICでのプログラムの入力

のようなプログラムだと、「3+5=」を表示する前に、いきなり終了します。
古いBASICでのプログラムの入力

のように、行番号が順番どおりではない場合、どの行を優先して実行するのでしょうか?
古いBASICでのプログラムの入力

現代のGUI対応のBASICでは、行番号のないものが多いのですが、その理由のひとつも、おそらく、このような、行番号と順序のちがう場合の混乱を防ぐためなど、それなりの理由があるのでしょう。
古いBASICでのプログラムの入力

さて、たいていの古いBASICの場合、行番号の小さい順から先に実行すると思います(いくつかの再現BASICソフトで確認)。この場合、特にエラーメッセージなどは、出されません。
古いBASICでのプログラムの入力

おそらく、古いBASICでは、ソフトウェアの内部では、プログラムの実行のさいしょに(つまりRUN命令の直後に)、まず行番号にもとづいて並べ替えを行って、
古いBASICでのプログラムの入力

のように並べ替えてから、それからやっと、上から順に実行をしているのでしょう。
古いBASICでのプログラムの入力

つまり、これらの古いBASICは、プログラムを最初に実行する際、まず並べ替えを行っているのです。
古いBASICでのプログラムの入力

もし、行数が10行ていどの少ないプログラムなら、それでもかまいませんし、気の利いた便利な機能でしょう。
古いBASICでのプログラムの入力

しかし、もし百行や千行もあるプログラムを並べ替えるとなると、並べ替えには時間が掛かるので、プログラムの実行が終わるまでの時間が長引いてしまいます。
古いBASICでのプログラムの入力

反対に言うと、行番号のないBASICの場合、そのぶん高速化をしている可能性があります(並べ替えの時間が省けるので)。
古いBASICでのプログラムの入力

さらに言うと、行番号のあるBASICの使い道は、処理に時間が掛かってもいいので、処理の順序を確実にまちがいなく、自分以外の他のプログラマーにも伝えたいようなプログラムを書くときには、もしかしたら行番号のあるBASICが便利かもしれません。
古いBASICでのプログラムの入力

エディタのない古いBASICでは、
古いBASICでのプログラムの入力

と入力すると、プログラム(プログラムリスト)を先頭の行からから表示します。
古いBASICでのプログラムの入力

と入力すると10行目だけを、
古いBASICでのプログラムの入力

と入力すると20行目以降すべてを、
古いBASICでのプログラムの入力

と入力すると先頭の行から20行目までを、
古いBASICでのプログラムの入力

と入力すると20行目から30行目を表示します。
古いBASICでのプログラムの入力

また、
古いBASICでのプログラムの入力

と入力すると、改行するたびに行番号を10ずつ増やして自動的に表示します。自動表示を停止させるのはBREAKキーを押します(機種によってはSTOPキーや、CTRL+STOPキーを同時押しなど、操作が多少異なります)。
古いBASICでのプログラムの入力

今でこそ、プログラムの実行結果の画面と、プログラム記述用のエディタ画面とは、別々の画面に分かれているのが普通です。
古いBASICでのプログラムの入力

しかし、昔のパソコンでは、表示ウインドウが標準では1つしかありませんでした。そもそも「ウィンドウ」という概念すらなく、昔の古いプログラム言語では、実行結果の表示画面と、エディタ画面とが、同じひとつの画面だったりします。しかもコマンド入力機能がプログラム記述機能も兼ねていたり、あるいはパソコン本体にあるレバースイッチ(小型のレバースイッチがついていたりする)により、コマンド入力モード(「ターミナルモード」という)とプログラミングモードとを切り替えたりしていました。
古いBASICでのプログラムの入力

現代でも、Windowsのコマンドプロンプトのような、OS付属のコマンド入力用アプリケーションでは、普通、ウィンドウは1つだけであり、そのたったひとつのウィンドウが、実行結果の表示画面と、コマンド入力画面とを兼ねています。
古いBASICでのプログラムの入力

新しいBASICでは、プログラムを編集するためのエディタを持っており、これを入力に使います。エディタの概要や使い方自体は省略します。また、次のように「行番号を省略」できます。
古いBASICでのプログラムの入力

プログラムの実行は、RUNではなく、エディタのメニューから「実行」を選択します。
古いBASICでのプログラムの入力

古いBASICのように「命令を実行して、即終了」するには、中には「直接入力」(例: イミディエイト ウィンドウ )が簡単にできる新しいBASICもありますが、ほとんどの新しいBASICではエディタのメニューから対応した項目を選ぶ必要があります。
古いBASICでのプログラムの入力

ここでは行番号付きの古いBASICの書式で説明します。
最初に

※ 他のプログラム言語でも、似たような文法の言語は、多くあります。他のプログラム言語によくあるのは、主に、
最初に

です。
注釈（コメント）  REM

注釈(ちゅうしゃく)をつけるにはREMを使います。「レム」と読みます。注釈とは「何も実行しない」という命令で、プログラムの説明を書いたり、デバッグ(エラーの原因をさがす作業のこと)などで一時的に命令を実行させないようにするとき、などに使います。
注釈（コメント）  REM

このプログラムを実行すると、10行目は何も実行せず、20行目が実行されて、画面に「2」とだけ表示します。 30行はEND命令です、この命令で実行を終了します。
注釈（コメント）  REM

マイクロソフト系のBASICでは、アポストロフィーを代わりに使えます。
表示  PRINT

画面に表示させるには PRINT文を使います。「プリント」と読みます。
表示  PRINT

PRINTの後に続くものを画面に表示します。文字列、数値、変数など
表示  PRINT

PRINTに続く定数、変数を画面に表示します。どのような型であっても表示されます。数値、文字など。また、;セミコロンを変数末尾に置く事によって文末の改行が行われません。つまり二つのPRINT文をひとつとして連続に表示することが出来ます。一般的な注意として、PRINT文は高度な内部処理を行うために処理が遅くなります。
変数

変数は、数値や文字などのデータを入れておく箱のようなものです。
変数

変数の名前には、以下のような規則があります。
変数

また、古いBASICや簡易なBASICでは、機種によって変数名の長さに「2文字以下」「8文字以下」という制限があります。
入力  INPUT

キーボードから入力するには、INPUT文を使います。
入力  INPUT

10 INPUT A では、数値変数Aに キーボードから入力した数値を代入します。
入力  INPUT

このような書き方も出来ます。
入力  INPUT

入力を促す文字列を表示してから、入力に入ります。
代入と計算

変数は、数値や文字などのデータを入れておく箱のようなものです。
代入と計算

このプログラムは、変数 A に 12、変数 B に 3 を代入し、足し算・引き算・掛け算・割り算の結果を表示する物です(順に、15 9 36 4 と表示されます)。
代入と計算

変数への代入は = を使用します。上のプログラムでは直接数字を代入しましたが、計算式(変数を使用するものも含む)を評価した値を代入することができます。
代入と計算

BASICにおける代入とは、「記号=の右辺の計算式を評価した値を、記号=の左辺の変数に割当てよ」という意味です。
代入と計算

そのため、
代入と計算

という命令はエラーになります。 かならず、代入先の変数は、記号=の左辺にある必要があります。
代入と計算

また、右辺にある計算式を、記号=の左にある変数に代入するので、
代入と計算

のように、自分自身を用いた式を代入することもできます。もし、「A+1=A」という順序だと、エラーになります。
代入と計算

を実行すると、計算結果(12+1)の「13」が表示されるでしょう。
代入と計算

なお、変数への代入は「LET」命令で、
代入と計算

は
代入と計算

なのですが、JIS規格BASICを除いて、ほとんどの新旧のBASICを問わず、LETは省略可能です。
代入と計算

計算の記号は、足し算には+、引き算には-、掛け算には*、割り算には,/ の記号が割り当てられています。余りは「MOD」(モジェロ)です。
代入と計算

括弧()を使う事が出来ます。計算の順序に迷ったら括弧を使うようにしましょう。
代入と計算

将来的に、LET文のある他のプログラミング言語の学習のことを考えて、LET文をつかって上記のプログラムを書いてみましょう。
入力命令

利用者からキーボードで数値を入力してもらうには、INPUT 文を使います。 INPUT命令を使って数値または文字列(変数名$)を入力させる場合、
入力命令

とします。
入力命令

(プログラム例)
入力命令

または
変数の初期化

たとえば、上のプログラムを実行したあとに、
変数の初期化

を実行すると、さきほど入力した変数が出るかもしれません。
変数の初期化

この理由は、メモリ内に、以前に使用した変数が、そのまま残っているからです。
変数の初期化

つまり、プログラムを終了しても、それだけでは変数の内容は消去されません。
変数の初期化

命令 NEW を使うと、BASICで扱っている変数にすべてゼロ 0 を代入し、初期化(しょきか)します。
変数の初期化

もし、上の節のプログラムの実行直後に、まったく別のプログラムを実行する必要があったとして、そこでも同じ変数名の変数が使われていたとしたら、その変数は初期化をしていないと、エラーの原因になってしまいます。
変数の初期化

まったく別のプログラムでも、同じ変数名「A」や「B」を、まったく別の内容で使うこともありますので、必要に応じて NEW 命令を使いましょう。
変数の初期化

と書いて実行すれば、このプログラムの実行前にどんなプログラムで変数「A」を用いていようが、それを初期化できます。
変数の初期化

なお、上記のプログラムの実行結果として、計算結果として「16」が表示されます。
変数の初期化

このプログラムの場合なら、わざわざNEWで変数Aを初期化しなくても、その次の行で A=7と記述しているので、じつは初期化の必要はありません。
変数の初期化

ですが、作ろうとするプログラムが複雑になってくると、あつかう変数の個数が多くなり、変数ひとつずつ初期化をするのが大変になる場合もありますし、個数が多いと一つづつ初期化する方法だと、初期化しわすれる変数も出て来るかもしれません。
変数の初期化

なので、ねんのため、 NEW 命令で、いっきに、すべての変数を初期化してしまいましょう。初期化される対象は、そのBASICで扱っている「変数」だけですので、安心しても平気です。
変数の初期化

なお、下記のように、もし計算途中に、NEWを入れると、
変数の初期化

(あまり、よくないプログラム)
変数の初期化

このプログラムなら、PRINT命令で「9」が表示されたりします。なぜならAが初期化されてしまい、Aに0が代入されているからです。
変数の初期化

なお、現在のプログラム言語では、NEW命令は別の意味で使われています。
変数の初期化

なお、計算作業のときに、初期の瞬間の状態に対応する数値のことを、科学技術用語で「初期値」(しょきち、initial value イニシャル バリュー)といいます。ファミコンソフトなどのゲーム業界などでも、ゲーム開始状態の主人公のライフ(生命力)値とかの数値をまとめて「初期パラメーター」などといいますね。それと同じことです。
変数の初期化

理科などでは、たとえばボールを投げた瞬間のボールの速度のこと「初期速度」と言います。
変数の初期化

もし、現代のプログラム言語のなかの命令文の語句で、「init」などの語句があったら、それはもしかしたら、初期値(※ 英語で initial value )のことかもしれません。
条件分岐  IF THEN ELSE

「もし、明日 晴れだったなら、遠足。そうでなく、雨だったらなら、教室で自習。」のような場合わけを条件分岐(じょうけん ぶんき)といいます。
条件分岐  IF THEN ELSE

プログラム中である条件に当てはまるかで実行する内容を変えるときには IF~THEN~ELSE文 を使用します。
条件分岐  IF THEN ELSE

条件分岐では IF という語句をほぼかならず使うので、条件分岐命令のことを「IF文」とも言います。「IF」とは、「イフ」と読み、「もし 〜〜 ならば、」という意味の英語の接続詞です(日本では、中学校の英語の授業で 接続詞 IF を習うでしょう)。
条件分岐  IF THEN ELSE

THEN は「そうであれば〜〜」という意味です。ELSE は「そうでなければ〜〜」という意味です。なお、THENは「ゼン」と読み、ELSEは「エルス」と読みます。
条件分岐  IF THEN ELSE

ほかのプログラム言語でも、条件分岐命令のことを普通は「IF文」と言います。
条件分岐  IF THEN ELSE

ここで使っているA > Bの > は比較演算子(ひかく えんざんし)といい、数値の比較に使います。
条件分岐  IF THEN ELSE

他のプログラム言語でも、IF文 の考え方と 比較演算子 の考えかたは、ほぼかならず使います。なので、いまここのBASICの学習で、比較演算子の考え方を、しっかりと理解しましょう。
条件分岐  IF THEN ELSE

IF文は、IFとTHENの間に条件式を書き、THENから条件式が成立するときの命令を書きます。そして成立しなかったときのことはその後ろにELSEに続けて書きます。
条件分岐  IF THEN ELSE

例の30行目は、もし A > Bが成立すればPRINT "A is bigger than B"を実行し、もし成立しなければPRINT "B is bigger than A"を実行するという意味であります。文字列の場合は、
条件分岐  IF THEN ELSE

PRINT命令の場合、PRINTを省略(THEN "内容"のように)できます。
条件分岐  IF THEN ELSE

なお、ELSEは省略できます。
条件分岐  IF THEN ELSE

複数行にわたってしか書けないものを実行させたい場合、GOTO命令(後述)を使い行を飛ばす必要があります(この場合、GOTOと書くのを省略して、行番号だけでも書けます)。
分岐  GOTO

無条件でジャンプします。
分岐  GOTO

条件分岐ではない、強制の分岐にはGOTO命令を使います。「GOTO」は「ゴー トゥー」と読みます。GOTOの後に行番号を入れると、対応する行の命令を実行します。
分岐  GOTO

このプログラムを実行すると20行目がスキップされ、30行目が実行されて、画面に「2」とだけ表示します。
分岐  GOTO

このプログラムを実行すると、画面に「2」「1」と表示します。が、このようにGOTOの飛び先が入り組んだプログラムは「スパゲティ・プログラム」と呼ばれて、「他の人が見てもプログラムの構造を一目では把握しづらい」ために、通常のプログラムでは 禁じ手(きんじて) とされています。
分岐  GOTO

このプログラムを実行すると、画面に「1」「2」を表示し続けます。このように「終了せずに、実行し続ける」プログラムを「無限ループ」と呼びます。表示を止めるには、古いBASICではAUTO命令を止めるときと同様に「BREAK」などのキーを押してください。新しいBASICではメニューから「停止」を選択します(Visual Basicなどでは無限ループを書くとそのまま問答無用で応答不能になってしまうものもありますので、アプリケーションを強制終了させるか、CTRL+ALT+DELするなどしてOSから強制終了させてください)。
分岐  GOTO

新しいBASICでもGOTO命令は使用できますが、推奨はされません。
分岐  GOTO

どうしてもGOTO文を使う必要のある場合には、REM文などによるコメント機能も活用しましょう。GOTO文の前の行で、REM文による説明で、GOTO文の行き先を説明したり、あるいは処理しようとしている内容などを記述すると、他の人がプログラム内容を把握しやすくなるでしょう。
繰り返し  FOR NEXT

プログラム中で同じ処理を繰り返す場合には、FOR~NEXT 文を使用します。
繰り返し  FOR NEXT

この例は、FORからNEXTの間を繰り返します。回数は、1から5までの5回。もしSTEPを指定してあれば、増量値の設定ができます。 これを実行すると以下の様に表示されます。
繰り返し  FOR NEXT

FORの直後の変数(上記の場合はN)と、NEXTの直後の変数は、同じ変数でなければなりません。
繰り返し  FOR NEXT

FOR 文の構文は以下の様になります。
繰り返し  FOR NEXT

上の文のうち、「STEP 変更量」は省略できます。省略されたときには変数は1づつ変化します。
繰り返し  FOR NEXT

変数が初期値から最終値まで変化し、その各値ごとに NEXT までの文が実行されます。
DATA文

INPUT文で毎回データ入力するのは大変です。
DATA文

プログラムの中に記録することが出来ます。 DATA文、READ文、RESTORE文 です。
DATA文

20行でDATA文から1個読み込んで変数Aに代入します。30行で表示します、この例では「1」が表示されます。もし次に読み込んだなら「2」が読み込まれます。
DATA文

10行のRESTOREでDATA文の読み込み先を指定します、ここでは50行から読み込みます。20行で読んで、30行で表示。この例では「4」が表示されます。普通は FOR NEXT文などを使って 連続して読み込みます。
DATA文

DATA文の考え方は、ファイル操作のシーケンシャルファイルと似ています。
サブルーチン　GOSUB

同じ内容のプログラムは、まとめてサブルーチンにする事ができます、GOSUBです。
サブルーチン　GOSUB

プログラムの動きを行番号で書きます。 110 120 200 210 220 130 150 。順番に注目。 RETURNを使うとGOSUBの次に戻ります
関数 ()

関数はサブルーチンに似ています。組み込まれたサブルーチンのように思ってください。
関数 ()

ABS()は絶対値を返す関数です。
関数 ()

他にも色々な関数があります。
文字列操作 $

ここまでの説明で、数値のみを扱いました。ここでは、文字の入力、表示、操作を説明します。
文字列操作 $

文字を表す時は""で囲みます。
文字列操作 $

文字を表す文字列変数では、変数名の末尾に$を付けます。
文字列操作 $

文の足し算が出来ます。
文字列操作 $

文字の入力と表示
文字列操作 $

BASICでは文字列の便利な関数があります。
文字列操作 $

ASC(x$) RIGHT$(x$,y) LEFT$(x$,y) MID$(x$,y,z) LEN(x$) STR$(x) VAL(x$) CHR$(x) TAB(x)
浮動小数点 #

ここまでは数値の整数で行いました。
浮動小数点 #

割り算で割り切れないときに扱う小数点の処理、浮動小数点の定数、変数について説明します。誤差についても。
浮動小数点 #

BASICでは小数点を付けると、小数点付きの実数として扱われます。
浮動小数点 #

コンピューターの計算では誤差が発生します。 誤差の程度は機種によって異なります。
配列  DIM

住所録のようなものを作るときに使います。同じような変数をたくさん作るときに、変数が多くて大変です。そこで配列変数(はいれつ へんすう)を使います。
配列  DIM

使い方は、最初に配列変数を宣言します。例えば DIM a(3)と書いたなら、変数a(1) a(2) a(3)の3個の配列変数が使えるようになります(BASICの種類によってはa(0)も使えるものがあります)。
配列  DIM

「DIM」とは次元 DIMENSION の略のことです。DIMの部分が、配列宣言の命令です。DIM a(3)の「a」の部分は変数名ですので、べつにbでもcでも、かまいません。
配列  DIM

DIM a(3)のカッコとカッコ内の部分を「添え字」(そえじ)と言います。
配列  DIM

配列変数の便利な所は、数値で書いた部分に数値変数を使って、例えば、a(i)のように使う事ができ、ループなどと組合わせれば多数の変数を一度に扱うことが出来ます。
配列  DIM

これは、一次元配列の例です。
配列  DIM

これは、3人の名前と番号を入力して、表示するプログラムコードです。配列を使うことにより、簡潔に書くことが出来ます。簡単に人数を多くすることが出来ます。改良して住所録のように作り変えることも容易です。
配列  DIM

配列には、このような一次元配列の他に二次元、3次元配列もあります。
あとがき

ここでは、始めての人が雰囲気をつかめるように基本の中の初歩を最低限に書きました。そして、初級と応用は別の本につづきます。
補足

現在では構造化BASICもあります。これは条件文が成立すればTHENからENDIFあるいはELSEまでの部分を実行して、成立しなければELSEからENDIFまでを実行するもので、例のプログラムは
補足

と書けて、非常に見やすくなります。ただし、必ずしも使えるものではありません。古いBASICでは1行で書く方法しか使えません。
補足

(:)で区切って、一行に多くのコマンドを書く事ができます。ただし、これは古いBASICの文法なのであまり使わない方が良いでしょう。
マルチメディア関係

円や直線などの画像を表示したり、音声を鳴らしたりなどの機能の命令は、BASIC対応のパソコンを作っている会社ごとに違っていました。ハードウェア側の性能にも関係することであり、そのため、仕様統一しきれなかったのです。
マルチメディア関係

一応、BASICの国際規格も存在していますが、実際には、この規格に従ってないBASICも多いです。おそらく、特に、画像表示や音声などのマルチメディア関係の機能では、そのような規格外の仕様が多いでしょう。
マルチメディア関係

このwikibooks日本語版『BASIC』では、日本の読者を対象にしていることもあり、日本で普及した日本産パソコンのハードウェアを想定して、BASICの、画像表示や音声などのマルチメディア関係のプログラムを記述します。
マルチメディア関係

N88BASIC互換のBASICならば、画像をつくるときは、
マルチメディア関係

のように記述することで、画像で直線を引けます。
マルチメディア関係

内容は、
マルチメディア関係

です。 気をつけることとして、画面の左上が座標(0,0)です。右下に行くにつれて、座標の値が大きくなります。
マルチメディア関係

色番号は、一般に、
マルチメディア関係

です。色番号のことを「パレット番号」ともいいます。
マルチメディア関係

背景色が標準設定では黒でしょうから、色番号が0(黒)だと、線が見えないかもしれません。
マルチメディア関係

は、青色の直線を引きます。
マルチメディア関係

は、赤色の直線を引きます。
マルチメディア関係

とすると、長方形の枠線のみを描きます。その長方形の対角線の座標が、(100,130)から(200,230)というわけです。 BはBOXの意味です。
マルチメディア関係

この命令 LINE (100,130)-(200,230),2,B では、対角線は、描かれません。また、塗りつぶしも、されません。
マルチメディア関係

塗りつぶしをするには、「B」ではなく「BF」にします。
マルチメディア関係

FはFILLの意味です。
マルチメディア関係

書式は
マルチメディア関係

です。
マルチメディア関係

たとえば、
マルチメディア関係

で、(250,180)座標を中心とする半径50の赤い(色番号: 2)円を書きます。
マルチメディア関係

円弧を描くには、
マルチメディア関係

の構文を利用します。
マルチメディア関係

角度の測り方は、数学のxy座標での角度の測り方と同じで、右を0度として、半時計まわり(左まわり)です。角度の単位は、ラジアン です。約3.14で半円になります(BASICのソフトウェアの種類によっては、違うかもしれません。それぞれのソフトウェアごとに確認してください。)。
マルチメディア関係

まだラジアンを習っていない中学生のかたは、この節は飛ばしましょう。
マルチメディア関係

と書けば、半円弧が描かれます。
マルチメディア関係

楕円(だえん)または楕円弧を書くには、
マルチメディア関係

のようにします。
マルチメディア関係

CIRCLE命令は、
マルチメディア関係

という書式になっています。
マルチメディア関係

比率は、縦と横の比率であり、1だと正円になります。1より大きいと縦長の楕円になり、1より小さいと横長の楕円になります。
マルチメディア関係

塗りつぶすには、
マルチメディア関係

命令「PSET」を使うと、指定した位置に、点をひとつ追加します。
マルチメディア関係

書式は
マルチメディア関係

です。
マルチメディア関係

PSETの活用方法は通常、次のように、FOR文などの繰り返し文とくみあわせて、計算式などの結果の作図をするのに使用するでしょう。
マルチメディア関係

と入力すると、「プツッ」とか「ピー」とかの音を鳴らします。ビープ音といいます。
乱数

「RND()」で、0から1までの小数を含む乱数を発生させます。
乱数

RND(1)のように、括弧の中に数字を入れて使用します。
乱数

のように使用します。
乱数

サイコロをつくるには(1から6の整数だけを出すプログラムをつくるには)、乱数命令に、整数化の命令などと組み合わせます。
乱数

ループさせていますが、INPUT 命令を使ってEnterキーを押すごとに次の乱数を表示させています。RND()は、実際には1の値が生成されることは、ほとんど無いと思われるのでこのプログラムになります。割り込みキー(BREAKキーやESCキー)で実行が終了します。
1970〜80年代のパソコン事情が背景にある

BASICは、形式的には、BASICはプログラム言語であるとして分類されています。しかし、実際には、古いBASICを21世紀に再現したBASICでは、他のプログラム言語にはない、画像表示の機能が充実しています。これはどういう事かというと、再現BASICでは、画像表示の命令を実行する際には、OSの画像表示の機能を呼び出して、使っているのです。一般的に、プログラムを通しての画像表示についての仕様は、各OSごとにバラバラです。そのため、BASICのインタプリタ自体の作成者は、それぞれのOSごとに、BASICインタプリタを作りなおす必要があります。このため、再現BASICには、Windows版しかインタプリタの作られてない再現BASICもあります。
1970〜80年代のパソコン事情が背景にある

そもそも、実際の古いBASICの流行した1970年代ごろは、21世紀の今とはパソコン販売の状況が違っています。1970年代ごろの当時は、まだOS(オペレーティング システム)が高度化する前だったこともあり、さらに、OSとパソコン本体がくっついて販売されていたこともあり、1970年代ごろは、BASICが販売されているパソコンと一緒に、OSと一緒にパソコン本体に組み込まれている状態で、販売されていました。
1970〜80年代のパソコン事情が背景にある

このため、実際の1970〜80年代に市販されていたパソコンに組み込まれていたBASICでは、画面に円や直線などを表示したりする画像表示の命令や、ブザー音を鳴らすなど命令なども、簡単にプログラム記述できるようになっています。
1970〜80年代のパソコン事情が背景にある

本来、画像表示のための処理は、ディスプレイの種類ごとに、解像度がバラバラだったりするので、パソコン内部動作を分ける必要があるので、オペレーティングシステムの機能を使って、画像を表示したりすることになります。
1970〜80年代のパソコン事情が背景にある

しかし、当時のBASICでは、オペレーティングシステムの仕組みを、意識する必要はありませんでした。なぜなら、特定企業のパソコンに組み込まれた状態でBASICが配布されていたので、その特定企業のディスプレイやスピーカーといったハードウェアを、簡単に制御できるように、BASICが改良してあったのです。
1970〜80年代のパソコン事情が背景にある

このような事情のため、そもそも当時のほとんどの消費者は、そもそもオペレーティング システムいう概念すら知りませんでした。
1970〜80年代のパソコン事情が背景にある

このように、BASICの機能の背景には、1970〜80年当時のパソコン事情があります。
1970〜80年代のパソコン事情が背景にある

1970年当時は、各パソコン会社のBASICが最初から特定の自社パソコンに対応した状態で、パソコンに組み込まれていて販売されていたので、BASICから直接オペレーティングシステムの機能を利用できるわけです。このため、1970年ごろのBASICの機能は、現在の「プログラム言語」とは、やや違っています。
1970〜80年代のパソコン事情が背景にある

さて21世紀の現在、プログラムで画像を表示したり、あるいは音声を鳴らしたりなどのプログラムを記述したい場合には、オペレーティングシステムの機能を活用する必要があります。OSの機能を使うためのコマンド群である「API」(エー ピー アイ)といいます。つまり、再現BASICのインタプリタ作成者は、(おそらく)APIを駆使して、再現BASICの画像表示や音声機能などを、作っているのです。
1970〜80年代のパソコン事情が背景にある

オペレーティングシステムには、ウィンドウズやマックOSやリナックスなど、色々とありますが、それぞれのOSごとに仕組みが違うので、プログラムの記述作業も、それぞれのOSごとに、プログラムを分ける必要があります。
1970〜80年代のパソコン事情が背景にある

上述のようなパソコン事情が、1970年頃と現代では大きく違うので、もはやBASICだけでは、高度なアプリケーションを作ろうとしても、あまり簡単には作れなくなってしまいました。
1970〜80年代のパソコン事情が背景にある

なので、もし、21世紀の現代の人が、独学でBASICを学ぶ場合は、けっして古いBASICだけで満足せずに、なるべく、C言語を学んだり、さらに、その後の時代の他のプログラム言語も学びましょう。