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で画面に文字を表示するためには PRINT 文を使います。ただし、新しいBASICでは、まったく別のコマンド文になります。
BASICが起動すると、「Ok」「Ready」など(BASICや機種によって異なります)の文字の下に「■」(カーソル)が出ます。カーソルはカーソルキーの上下左右で移動できます。このカーソルが出ているときに、BASICのプログラムを編集できます。
では最初に、PRINT文を使って、画面に文字を表示させてみましょう。
と入力してみてください。入力時の文字モードは、直接入力モードで入力してください。Windowsの場合、右下に、文字入力モードの切り替えのタブがあるので、そこをクリックして、直接入力モードを選んでから、上記のPRINT文を入力してください。
このように上記のPRINT文を入力し、RUN(「ラン」という。「起動せよ」の意味)を実行すると(実行方法は機種によって異なりますので、それぞれの機種を参考にしてください)、画面に Hello BASIC と表示されます。
同様に、新しい行で、画面の左端にカーソルがある状態で、
のように入力してみて(最後にEnterキーを入力して改行します。機種によってはRETURNキー、CRキーとも言います。以下、同じなので省略します)、RUNを実行すると(実行方法はそれぞれの機種を参考にしてください)、5 と計算の結果が表示されます。
このように、PRINT命令は、その直後にあるものを画面に表示します。
また、BASICでは、命令を実行することをRUN(ラン)と言います。英語の「走る」 RUN と同じ単語です。ランニング(走り)やランナー(走者)のランと同じです。
いっぽう、
をRUNで実行すると、画面に"2+3"とそのまま表示されます。
つまり、二重引用符 " " は、「引用符内の文字列を、画面にそのまま表示しろ」という意味の記号です。
他のプログラミング言語でも、「print」という語をテキスト表示命令に用いるプログラミング言語は多いです。また、他のプログラミング言語でも、文字列を表示する場合は、二重引用符 " " で くくるのが、普通になっています。
もし、二重引用符でくくらないと、
は「エラーのある文なので実行不可能」的な報告を コンピューターから報告されたり、あるいは、まったく予期せぬ数値や文字が表示されるなどのエラーを起こします(例えばundefined)。

古いBASICでは、プログラムは「行番号+命令」の形でかかれます。行番号をつけないで入力すると、前述のように「命令を即実行して、終了」します。先頭に行番号をつけることで初めて、命令を組み合わせた「プログラム」として実行できるようになります。0未満の数や小数、分数は行番号にできません。
各行の最初についている数字が行番号です。10からはじめて10ずつ増やしていくのが一般的です。こうすれば、後から簡単に行を挿入することができます(ただし9行まで)。PRINT は前節で説明した通り画面に文字を出力する命令です。最後の END はプログラムの終了を表す命令で、省略可能なBASICも多いですが、そうでなければ必ず入れるようにします。
入力したら
と(行番号なしで)入力すると実行します。 このプログラムを実行させると、画面に「3+5= 8」と表示されます。
10行の最後についている ; は、「改行しない」ことをコンピューターに通知します。これを取り除くと、実行したときに「3+5=」と「8」が別の行に表示されてしまいます。これを利用して、一行分空白にすることができます。
なお、古いBASICでは「:」を用いると次のようにも書けますが、現在では推奨されません。
現在、一部の(再現)BASICでは、
のように記述することができます。
なお、ENDはプログラムの終了を表す命令でしたので、たとえば、
のようなプログラムだと、「3+5=」を表示する前に、いきなり終了します。

のように、行番号が順番どおりではない場合、どの行を優先して実行するのでしょうか?
現代のGUI対応のBASICでは、行番号のないものが多いのですが、その理由のひとつも、おそらく、このような、行番号と順序のちがう場合の混乱を防ぐためなど、それなりの理由があるのでしょう。
さて、たいていの古いBASICの場合、行番号の小さい順から先に実行すると思います(いくつかの再現BASICソフトで確認)。この場合、特にエラーメッセージなどは、出されません。
おそらく、古いBASICでは、ソフトウェアの内部では、プログラムの実行のさいしょに(つまりRUN命令の直後に)、まず行番号にもとづいて並べ替えを行って、
のように並べ替えてから、それからやっと、上から順に実行をしているのでしょう。
つまり、これらの古いBASICは、プログラムを最初に実行する際、まず並べ替えを行っているのです。
もし、行数が10行ていどの少ないプログラムなら、それでもかまいませんし、気の利いた便利な機能でしょう。
しかし、もし百行や千行もあるプログラムを並べ替えるとなると、並べ替えには時間が掛かるので、プログラムの実行が終わるまでの時間が長引いてしまいます。
反対に言うと、行番号のないBASICの場合、そのぶん高速化をしている可能性があります(並べ替えの時間が省けるので)。
さらに言うと、行番号のあるBASICの使い道は、処理に時間が掛かってもいいので、処理の順序を確実にまちがいなく、自分以外の他のプログラマーにも伝えたいようなプログラムを書くときには、もしかしたら行番号のあるBASICが便利かもしれません。

エディタのない古いBASICでは、
と入力すると、プログラム(プログラムリスト)を先頭の行からから表示します。
と入力すると10行目だけを、
と入力すると20行目以降すべてを、
と入力すると先頭の行から20行目までを、
と入力すると20行目から30行目を表示します。
また、
と入力すると、改行するたびに行番号を10ずつ増やして自動的に表示します。自動表示を停止させるのはBREAKキーを押します(機種によってはSTOPキーや、CTRL+STOPキーを同時押しなど、操作が多少異なります)。
今でこそ、プログラムの実行結果の画面と、プログラム記述用のエディタ画面とは、別々の画面に分かれているのが普通です。
しかし、昔のパソコンでは、表示ウインドウが標準では1つしかありませんでした。そもそも「ウィンドウ」という概念すらなく、昔の古いプログラム言語では、実行結果の表示画面と、エディタ画面とが、同じひとつの画面だったりします。しかもコマンド入力機能がプログラム記述機能も兼ねていたり、あるいはパソコン本体にあるレバースイッチ(小型のレバースイッチがついていたりする)により、コマンド入力モード(「ターミナルモード」という)とプログラミングモードとを切り替えたりしていました。
現代でも、Windowsのコマンドプロンプトのような、OS付属のコマンド入力用アプリケーションでは、普通、ウィンドウは1つだけであり、そのたったひとつのウィンドウが、実行結果の表示画面と、コマンド入力画面とを兼ねています。

新しいBASICでは、プログラムを編集するためのエディタを持っており、これを入力に使います。エディタの概要や使い方自体は省略します。また、次のように「行番号を省略」できます。
プログラムの実行は、RUNではなく、エディタのメニューから「実行」を選択します。
古いBASICのように「命令を実行して、即終了」するには、中には「直接入力」(例: イミディエイト ウィンドウ )が簡単にできる新しいBASICもありますが、ほとんどの新しいBASICではエディタのメニューから対応した項目を選ぶ必要があります。
ここでは行番号付きの古いBASICの書式で説明します。
※ 他のプログラム言語でも、似たような文法の言語は、多くあります。他のプログラム言語によくあるのは、主に、
です。
注釈(ちゅうしゃく)をつけるにはREMを使います。「レム」と読みます。注釈とは「何も実行しない」という命令で、プログラムの説明を書いたり、デバッグ(エラーの原因をさがす作業のこと)などで一時的に命令を実行させないようにするとき、などに使います。
このプログラムを実行すると、10行目は何も実行せず、20行目が実行されて、画面に「2」とだけ表示します。 30行はEND命令です、この命令で実行を終了します。
マイクロソフト系のBASICでは、アポストロフィーを代わりに使えます。
画面に表示させるには PRINT文を使います。「プリント」と読みます。
PRINTの後に続くものを画面に表示します。文字列、数値、変数など

PRINTに続く定数、変数を画面に表示します。どのような型であっても表示されます。数値、文字など。また、;セミコロンを変数末尾に置く事によって文末の改行が行われません。つまり二つのPRINT文をひとつとして連続に表示することが出来ます。一般的な注意として、PRINT文は高度な内部処理を行うために処理が遅くなります。
変数は、数値や文字などのデータを入れておく箱のようなものです。
変数の名前には、以下のような規則があります。
また、古いBASICや簡易なBASICでは、機種によって変数名の長さに「2文字以下」「8文字以下」という制限があります。
キーボードから入力するには、INPUT文を使います。

10 INPUT A では、数値変数Aに キーボードから入力した数値を代入します。
このような書き方も出来ます。
入力を促す文字列を表示してから、入力に入ります。
変数は、数値や文字などのデータを入れておく箱のようなものです。
このプログラムは、変数 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 という語句をほぼかならず使うので、条件分岐命令のことを「IF文」とも言います。「IF」とは、「イフ」と読み、「もし 〜〜 ならば、」という意味の英語の接続詞です(日本では、中学校の英語の授業で 接続詞 IF を習うでしょう)。
THEN は「そうであれば〜〜」という意味です。ELSE は「そうでなければ〜〜」という意味です。なお、THENは「ゼン」と読み、ELSEは「エルス」と読みます。
ほかのプログラム言語でも、条件分岐命令のことを普通は「IF文」と言います。
ここで使っているA > Bの > は比較演算子(ひかく えんざんし)といい、数値の比較に使います。
他のプログラム言語でも、IF文 の考え方と 比較演算子 の考えかたは、ほぼかならず使います。なので、いまここのBASICの学習で、比較演算子の考え方を、しっかりと理解しましょう。
IF文は、IFとTHENの間に条件式を書き、THENから条件式が成立するときの命令を書きます。そして成立しなかったときのことはその後ろにELSEに続けて書きます。
例の30行目は、もし A > Bが成立すればPRINT "A is bigger than B"を実行し、もし成立しなければPRINT "B is bigger than A"を実行するという意味であります。文字列の場合は、
PRINT命令の場合、PRINTを省略(THEN "内容"のように)できます。
なお、ELSEは省略できます。
複数行にわたってしか書けないものを実行させたい場合、GOTO命令(後述)を使い行を飛ばす必要があります(この場合、GOTOと書くのを省略して、行番号だけでも書けます)。
無条件でジャンプします。
条件分岐ではない、強制の分岐にはGOTO命令を使います。「GOTO」は「ゴー トゥー」と読みます。GOTOの後に行番号を入れると、対応する行の命令を実行します。
このプログラムを実行すると20行目がスキップされ、30行目が実行されて、画面に「2」とだけ表示します。
このプログラムを実行すると、画面に「2」「1」と表示します。が、このようにGOTOの飛び先が入り組んだプログラムは「スパゲティ・プログラム」と呼ばれて、「他の人が見てもプログラムの構造を一目では把握しづらい」ために、通常のプログラムでは 禁じ手(きんじて) とされています。
このプログラムを実行すると、画面に「1」「2」を表示し続けます。このように「終了せずに、実行し続ける」プログラムを「無限ループ」と呼びます。表示を止めるには、古いBASICではAUTO命令を止めるときと同様に「BREAK」などのキーを押してください。新しいBASICではメニューから「停止」を選択します(Visual Basicなどでは無限ループを書くとそのまま問答無用で応答不能になってしまうものもありますので、アプリケーションを強制終了させるか、CTRL+ALT+DELするなどしてOSから強制終了させてください)。
新しいBASICでもGOTO命令は使用できますが、推奨はされません。
どうしてもGOTO文を使う必要のある場合には、REM文などによるコメント機能も活用しましょう。GOTO文の前の行で、REM文による説明で、GOTO文の行き先を説明したり、あるいは処理しようとしている内容などを記述すると、他の人がプログラム内容を把握しやすくなるでしょう。

プログラム中で同じ処理を繰り返す場合には、FOR~NEXT 文を使用します。
この例は、FORからNEXTの間を繰り返します。回数は、1から5までの5回。もしSTEPを指定してあれば、増量値の設定ができます。 これを実行すると以下の様に表示されます。
FORの直後の変数(上記の場合はN)と、NEXTの直後の変数は、同じ変数でなければなりません。
FOR 文の構文は以下の様になります。
上の文のうち、「STEP 変更量」は省略できます。省略されたときには変数は1づつ変化します。
変数が初期値から最終値まで変化し、その各値ごとに NEXT までの文が実行されます。
INPUT文で毎回データ入力するのは大変です。
プログラムの中に記録することが出来ます。 DATA文、READ文、RESTORE文 です。
20行でDATA文から1個読み込んで変数Aに代入します。30行で表示します、この例では「1」が表示されます。もし次に読み込んだなら「2」が読み込まれます。

10行のRESTOREでDATA文の読み込み先を指定します、ここでは50行から読み込みます。20行で読んで、30行で表示。この例では「4」が表示されます。普通は FOR NEXT文などを使って 連続して読み込みます。
DATA文の考え方は、ファイル操作のシーケンシャルファイルと似ています。

同じ内容のプログラムは、まとめてサブルーチンにする事ができます、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 a(3)と書いたなら、変数a(1) a(2) a(3)の3個の配列変数が使えるようになります(BASICの種類によってはa(0)も使えるものがあります)。
「DIM」とは次元 DIMENSION の略のことです。DIMの部分が、配列宣言の命令です。DIM a(3)の「a」の部分は変数名ですので、べつにbでもcでも、かまいません。
DIM a(3)のカッコとカッコ内の部分を「添え字」(そえじ)と言います。
配列変数の便利な所は、数値で書いた部分に数値変数を使って、例えば、a(i)のように使う事ができ、ループなどと組合わせれば多数の変数を一度に扱うことが出来ます。
これは、一次元配列の例です。
これは、3人の名前と番号を入力して、表示するプログラムコードです。配列を使うことにより、簡潔に書くことが出来ます。簡単に人数を多くすることが出来ます。改良して住所録のように作り変えることも容易です。
配列には、このような一次元配列の他に二次元、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キー)で実行が終了します。
BASICは、形式的には、BASICはプログラム言語であるとして分類されています。しかし、実際には、古いBASICを21世紀に再現したBASICでは、他のプログラム言語にはない、画像表示の機能が充実しています。これはどういう事かというと、再現BASICでは、画像表示の命令を実行する際には、OSの画像表示の機能を呼び出して、使っているのです。一般的に、プログラムを通しての画像表示についての仕様は、各OSごとにバラバラです。そのため、BASICのインタプリタ自体の作成者は、それぞれのOSごとに、BASICインタプリタを作りなおす必要があります。このため、再現BASICには、Windows版しかインタプリタの作られてない再現BASICもあります。
そもそも、実際の古いBASICの流行した1970年代ごろは、21世紀の今とはパソコン販売の状況が違っています。1970年代ごろの当時は、まだOS(オペレーティング システム)が高度化する前だったこともあり、さらに、OSとパソコン本体がくっついて販売されていたこともあり、1970年代ごろは、BASICが販売されているパソコンと一緒に、OSと一緒にパソコン本体に組み込まれている状態で、販売されていました。
このため、実際の1970〜80年代に市販されていたパソコンに組み込まれていたBASICでは、画面に円や直線などを表示したりする画像表示の命令や、ブザー音を鳴らすなど命令なども、簡単にプログラム記述できるようになっています。
本来、画像表示のための処理は、ディスプレイの種類ごとに、解像度がバラバラだったりするので、パソコン内部動作を分ける必要があるので、オペレーティングシステムの機能を使って、画像を表示したりすることになります。
しかし、当時のBASICでは、オペレーティングシステムの仕組みを、意識する必要はありませんでした。なぜなら、特定企業のパソコンに組み込まれた状態でBASICが配布されていたので、その特定企業のディスプレイやスピーカーといったハードウェアを、簡単に制御できるように、BASICが改良してあったのです。
このような事情のため、そもそも当時のほとんどの消費者は、そもそもオペレーティング システムいう概念すら知りませんでした。
このように、BASICの機能の背景には、1970〜80年当時のパソコン事情があります。
1970年当時は、各パソコン会社のBASICが最初から特定の自社パソコンに対応した状態で、パソコンに組み込まれていて販売されていたので、BASICから直接オペレーティングシステムの機能を利用できるわけです。このため、1970年ごろのBASICの機能は、現在の「プログラム言語」とは、やや違っています。
さて21世紀の現在、プログラムで画像を表示したり、あるいは音声を鳴らしたりなどのプログラムを記述したい場合には、オペレーティングシステムの機能を活用する必要があります。OSの機能を使うためのコマンド群である「API」(エー ピー アイ)といいます。つまり、再現BASICのインタプリタ作成者は、(おそらく)APIを駆使して、再現BASICの画像表示や音声機能などを、作っているのです。
オペレーティングシステムには、ウィンドウズやマックOSやリナックスなど、色々とありますが、それぞれのOSごとに仕組みが違うので、プログラムの記述作業も、それぞれのOSごとに、プログラムを分ける必要があります。
上述のようなパソコン事情が、1970年頃と現代では大きく違うので、もはやBASICだけでは、高度なアプリケーションを作ろうとしても、あまり簡単には作れなくなってしまいました。
なので、もし、21世紀の現代の人が、独学でBASICを学ぶ場合は、けっして古いBASICだけで満足せずに、なるべく、C言語を学んだり、さらに、その後の時代の他のプログラム言語も学びましょう。