「BASIC」の版間の差分

編集の要約なし
タグ: モバイル編集 モバイルウェブ編集
編集の要約なし
の3種類があります。ここでは最初の2種類のBASICを対象にしますが、ほとんどの構文については3つ目の種類のBASICにも「新しいBASIC」と同じことが通用します。違いについてはその都度、注記します。
 
本wikibooksの本ページ『BASIC』では、おもに、古いBASICやJIS規格BASICを基準に、文法を説明しています。その理由は、古いBASICは文法が単純であ、入門しやすく、た、古くからあるため、C言語などの他のプログラミング言語の多くにも影響を与えており、よって古いBASICが他のプログラム言語にも応用しやすいからです。
 
その理由は、古いBASICは文法が単純であり、入門しやすく、また、古くからあるため、C言語などの他のプログラミング言語の多くにも影響を与えており、よって古いBASICが他のプログラム言語にも応用しやすいからです。
 
=== GUI対応のBASICについて ===
GUI対応したBasicには、歴史的な経緯から、『BASIC』から派生した名前がついていますが、実態は、ほとんど別のプログラミング言語だと思ったほうが良いでしょう。
 
なお、2017年の現在、(GUIに特化している)Visual Basicを出しているマイクロソフト社が、入門者用に機能を簡易化した small basic というのを出しているので、GUIプログラミングの初心者は Visual Basic ではなく small basic (スモール ベーシック)で入門したほうが、学びやすいでしょう。
 
いまや Visual Basic は、入門用のプログラムを動作させるまでに、かなり覚えることがとても多くなってしまい、そのため、マイクロソフト社が、もはやVisual Basicは入門用には適さないと判断して、近年になって small basic を出すということになった次第です。
 
=== 古いBASICの入手方法 ===
フリーソフトなどとして、BASICの実行環境が、無料配布されています。ネット上のフリーソフト配布サイト(「vector」などのサイトがある)などで公開されていますので、そこからダウンロードするなどの方法があります。
 
なお、ソフトによっては、「制作したソフトは必ず公開すること」などのライセンス条件をつけている場合があります(『十進BASIC』など)。研究用にBASICで計算プログラムを作る場合や、または商用アプリなどを作る際は、普通は非公開にする必要があるので、けっして公開義務のある種類のBASICではけっして制作しないように、気をつけてください。
 
なお、かつて、N-BASICやF-BASICを出していた会社は、現在はBASICを開発してないし、販売もしていません。
 
なお、かつて、N-BASICやF-BASICを出していた会社は、現在はBASICを開発してないし、販売もしていません。なぜなら、90年代〜2005年ごろ、それらのBAISCの開発企業が、そういう自社開発したBASICを生産していたにもかかわず、消費者に売れなかったからです。
 
その代わりに、他の企業などがフリーソフトなどで、それら古いBASICの実行環境を再現したアプリケーション制作しており、ネット上のフリーソフト配布サイト(「vector」などのサイトがある)などで公開されている、・・・といった状況です。
 
 
Microsoft Quick BASIC(MS-DOS時代) 互換系の open source 等が存在していて、それらを使うという手もあります。
それらを使うという手も有る
 
・FreeBASIC
・その他
 
特にQB64はエミュレート機能を備えており旧来的な方法によるプログラミングが一部可能となっています。
 
== 古いBASICでのプログラムの入力 ==
10行の最後についている ''';''' は、「改行'''しない'''」ことをコンピューターに通知します。これを取り除くと、実行したときに「3+5=」と「8」が別の行に表示されてしまいます。これを利用して、一行分空白にすることができます。
 
なお古いBASICでは「:」を用いると次のようにも書けますが、現在では推奨されません。
 
<pre>
 
のように、行番号が順番どおりではない場合、どの行を優先して実行するのでしょうか?
 
 
現代のGUI対応のBASICでは、行番号のないものが多いのですが、その理由のひとつも、おそらく、このような、行番号と順序のちがう場合の混乱を防ぐためなど、それなりの理由があるのでしょう。
AUTO
 
と入力すると、改行するたびに行番号を10ずつ増やして自動的に表示します。自動表示を停止させるのはBREAKキーをおします(機種によってはSTOPキーや、CTRL+STOPキーを同時押しなど、操作が多少異なります
 
* なぜ、こうなってるのか?
というか、そもそも「ウィンドウ」という概念すらなく、昔の古いプログラム言語では、実行結果の表示画面と、エディタ画面とが、同じひとつの画面だったりします。しかもコマンド入力機能がプログラム記述機能も兼ねていたり、あるいはパソコン本体にあるレバースイッチ(小型のレバースイッチがついていたりする)により、コマンド入力モード(「ターミナルモード」という)とプログラミングモードとを切り替えたりしていました。
 
現代でも、windowsのコマンドプロンプトのような、OS付属のコマンド入力用アプリケーションでは、普通、ウィンドウは1つだけであり、その、たったひとつのウィンドウが、実行結果の表示画面と、コマンド入力画面とを兼ねています。
 
 
 
===== コラム =====
PRINTに続く定数、変数を画面に表示します。どのような型であっても表示されます。数値、文字など。また、;セミコロンを変数末尾に置く事によって文末の改行が行われません。つまり二つのPRINT文をひとつとして連続に表示することが出来ます。一般的な注意として、PRINT文は高度な内部処理を行うために処理が遅くなります
また、;セミコロンを変数末尾に置く事によって文末の改行が行われません。つまり二つのPRINT文をひとつとして
連続に表示する事が出来ます。
一般的な注意として、PRINT文は高度な内部処理を行う為に処理が遅くなります。
 
== 変数 ==
プログラム中である条件に当てはまるかで実行する内容を変えるときには '''IF'''~'''THEN'''~'''ELSE'''文 を使用します。
 
条件分岐では IF という語句を、ほぼ、かならず使うので、条件分岐命令のことを「IF文」とも言います。「IF」とは、「イフ」と読み、意味は「もし 〜〜 ならば、」という意味の、英語の接続詞です(日本では、中学校の英語の授業で 接続詞 IF を習うだろでしょ
 
ほかのプログラム言語でも、条件分岐命令のことを普通は「IF文」と言います。なお、THENは「ゼン」と読み、ELSEは「エルス」と読みます。
</pre>
 
このプログラムを実行すると、画面に「1」「2」を表示し続けます。このように「終了せずに、実行し続ける」プログラムを「無限ループ」と呼びます。表示を止めるには、古いBASICではAUTO命令を止めるときと同様に「BREAK」などのキーを押してください。新しいBASICではメニューから「停止」を選択します(Visual Basicなどでは無限ループを書くとそのまま問答無用で応答不能になってしまうものもありますので、アプリケーションを強制終了させるか、CTRL+ALT+DELするなどしてOSから強制終了させてください
 
新しいBASICでもGOTO命令は使用できますが、推奨はされません。
 
== 配列 DIM ==
住所録のようなものを作るときに使います。同じような変数をたくさん作るときに、変数が多くて大変です。そこで配列変数(はいれつ へんすう)を使います。
同じような変数をたくさん作るときに、変数が多くて大変です。
そこで配列変数(はいれつ へんすう)を使います。
 
使い方は、最初に配列変数を宣言します。例えば 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)のように使う事ができ、ループなどと組合わせれば多数の変数を一度に扱うことが出来ます。
 
10 DIM A(10)
100 END
 
これは、3人の名前と番号を入力して、表示するプログラムコードです。配列を使うことにより、簡潔に書くことが出来ます。簡単に人数を多くすることが出来ます。改良して住所録のように作り変えることも容易です。
配列を使う事により、簡潔に書く事が出来ます。
容易に人数を多くする事が出来ます。
改良して住所録の様に作り変える事も容易です。
 
配列には、このような一次元配列の他に二次元、3次元配列もあります。
 
== あとがき ==
ここでは、始めての人が雰囲気をつかめるように基本の中の初歩を最低限に書きました。そして、初級と応用は別の本につづきます
そして、初級と応用は別の本につづきます。
 
== 補足 ==
=== 複数行のIF文 ===
現在では構造化BASICもあります。これは条件文が成立すればTHENからENDIFあるいはELSEまでの部分を実行して、成立しなければELSEからENDIFまでを実行するもので、例のプログラムは
現在では構造化BASICもあります。
これは条件文が成立すればTHENからENDIFあるいはELSEまでの部分を実行して、成立しなければELSEからENDIFまでを実行するもので、例のプログラムは
10 A=0
20 B=3
 
=== マルチステートメント ===
(:)で区切って、一行に多くのコマンドを書く事が出来るできます。ただし、これは古いBASICの文法なのであまり使わない方が良いでしょう
ただし、これは古いBASICの文法なのであまり使わない方が良い。
 
{{-}}
== マルチメディア関係 ==
円や直線などの画像を表示したり、音声を鳴らしたりなどの機能の命令は、BASIC対応のパソコンを作っている会社ごとに違っていまし。ハードウェア側の性能にも関係することであり、そのため、仕様統一しきれなかったのです
 
一応、BASICの国際規格も存在していますが、実際には、この規格に従ってないBASICも多いです。おそらく、特に、画像表示や音声などのマルチメディア関係の機能では、そのような規格外の仕様が多いでしょう。
ハードウェア側の性能にも関係する事であり、そのため、仕様統一しきれない。
 
いちおう、本wikibooks日本語版『BASIC』では、日本国際規格も存在読者を対象にしていることもあり実際には、こ日本で普及した日本産パソコン規格に従っハードウェアを想定しないBASICも多い。おそらく、特に、画像表示や音声などのマルチメディア関係の機能では、そのような規格外の仕様が多いだろうプログラムを記述します
 
本wikibooks日本語版『BASIC』では、日本の読者を対象にしていることもあり、日本で普及した日本産パソコンのハードウェアを想定して、BASICの、画像表示や音声などのマルチメディア関係のプログラムを記述する。
 
=== グラフィック関連 ===
の構文を利用します。
 
角度の測り方は、数学のxy座標での角度の測り方と同じで、右を0度として、半時計まわり(左まわり)です。角度の単位は、ラジアン です。約3.14で半円になります(BASICのソフトウェアの種類によっては、違うかもしれません。それぞれのソフトウェアごとに確認してください。)
 
まだラジアンを習っていない中学生のかたは、この節は飛ばしましょう。
サイコロをつくるには(1から6の整数だけを出すプログラムをつくるには)、乱数命令に、整数化の命令などと組み合わせます。
 
ループさせていますが、INPUT 命令を使ってEnterキーを押すごとに次の乱数を表示させています。RND()は、実際には1の値が生成されることは、ほとんど無いと思われるのでこのプログラムになります。割り込みキー(BREAKキーやESCキー)で実行が終了します。
RND()は、実際には1の値が生成されることは、ほとんど無いと思われるのでこのプログラムになります。
割り込みキー(BREAKキーやESCキー)で実行が終了します。
 
10 X = INT(RND(1) * 6 + 1)
 
== 1970〜80年代のパソコン事情が背景にある ==
BASICは、形式的には、BASICはプログラム言語であるとして分類されています。しかし、実際には、古いBASICを21世紀に再現したBASICでは、他のプログラム言語にはない、画像表示の機能が充実しています。これはどういう事かというと、再現BASICでは、画像表示の命令を実行する際には、OSの画像表示の機能を呼び出して、使っているのです。一般的に、プログラムを通しての画像表示についての仕様は、各OSごとにバラバラです。そのため、BASICのインタプリタ自体の作成者は、それぞれのOSごとに、BASICインタプリタを作りなおす必要があります。このため、再現BASICには、Windows版しかインタプリタの作られてない再現BASICもあります。
BASICは、形式的には、BASICはプログラム言語であるとして分類されています。
 
しかし、実際には、古いBASICを21世紀に再現したBASICでは、他のプログラム言語にはない、画像表示の機能が充実しています。
 
これは、どういう事かというと、再現BASICでは、画像表示の命令を実行する際には、OSの画像表示の機能を呼び出して、使っているのです。
 
一般的に、プログラムを通しての画像表示についての仕様は、各OSごとにバラバラです。
 
そのため、BASICのインタプリタ自体の作成者は、それぞれのOSごとに、BASICインタプリタを作りなおす必要があります。
 
このため、再現BASICには、Windows版しかインタプリタの作られてない再現BASICもあります。
 
 
 
そもそも、実際の古いBASICの流行した1970年代ごろは、21世紀の今とはパソコン販売の状況が違っています。1970年代ごろの当時は、まだOS(オペレーティング システム)が高度化する前だった事もあり、さらに、OSとパソコン本体がくっついて販売されてたこともあり、1970年代ごろは、BASICが販売されているパソコンと一緒に、OSと一緒にパソコン本体に組み込まれている状態で、販売されていました。
 
本来、画像表示のための処理は、ディスプレイの種類ごとに、解像度がバラバラだったりするので、パソコン内部動作を分ける必要があるので、オペレーティングシステムの機能を使って、画像を表示したりすることになります。
 
 
しかし、当時のBASICでは、オペレーティングシステムの仕組みなんて、意識する必要はありませんでした。なぜなら、特定企業のパソコンに組み込まれた状態でBASICが配布されていてので、なので、その特定企業のディスプレイやスピーカーといったハードウェアを、簡単に制御できるように、BASICが改良してあったのです。
このように、BASICの機能の背景には、1970〜80年当時のパソコン事情があります。
 
1970年当時は、各パソコン会社のBASICが最初から特定の自社パソコンに対応した状態で、パソコンに組み込まれていて販売されていたので、BASICから直接オペレーティングシステムの機能を利用できるわけです。このため、1970年ごろのBASICの機能は、現在の「プログラム言語」とは、やや違っています。
 
1970年当時は、各パソコン会社のBASICが最初から特定の自社パソコンに対応した状態で、パソコンに組み込まれていて販売されていたので、BASICから直接オペレーティングシステムの機能を利用できるわけです。
 
このため、1970年ごろのBASICの機能は、現在の「プログラム言語」とは、やや違っています。
 
 
さて21世紀の現在、プログラムで画像を表示したり、あるいは音声を鳴らしたりなどのプログラムを記述したい場合には、オペレーティングシステムの機能を活用する必要があります。OSの機能を使うためのコマンド群である「API」(エー ピー アイ)といいます。つまり、再現BASICのインタプリタ作成者は、(おそらく)APIを駆使して、再現BASICの画像表示や音声機能などを、作っているのです。
 
 
オペレーティングシステムには、ウィンドウズやマックOSやリナックスなど、色々とありますが、それぞれのOSごとに仕組みが違うので、プログラムの記述作業も、それぞれのOSごとに、プログラムを分ける必要があります。
 
 
上述のようなパソコン事情が、1970年頃と現代では大きく違うので、もはやBASICだけでは、高度なアプリケーションを作ろうとしても、あまり簡単には作れなくなってしまいました。
 
なので、もし、21世紀の現代の人が、独学でBASICを学ぶ場合は、けっして古いBASICだけで満足せずに、なるべく、C言語を学んだり、さらに、その後の時代の他のプログラム言語も学びましょう。
 
== 参考リンク ==
匿名利用者