| パラダイム | 手続き型Procedural |
|---|---|
| 登場時期 | 1991年 - 2000年 |
| 開発者 | マイクロソフト |
| 最新リリース | 1.1 / 1992 |
| 影響を受けた言語 | QuickBASIC、GW-BASIC |
| 影響を与えた言語 | FreeBASIC,QB64,SmallBasic |
| プラットフォーム | MS-DOS、Win95、Win98、WinMe、IBM PC DOS、OS/2、eComStation |
| ライセンス | マイクロソフトによるソフトウェア利用許諾契約 |
| テンプレートを表示 | |
QBasicはQuickBASICを基にしたBASIC系の言語の統合開発環境(IDE)、インタプリタ。IDE上で入力されたコードを中間コードに即座にコンパイルし、要求に応じて解釈実行するという特徴をもつ[1]。少なくともPC/AT互換機の英語モードにおいてはDOSと32ビット版Microsoft Windowsで動作し、DOSBoxとDOSEMUを用いればLinuxとFreeBSDでも動作する。コードの即時評価や、コードの部分修正が可能なデバッガといった独自の機能を備え、10年以上にわたって最先端のIDEを提供していた。
初期のマイクロソフトBASICと違って、QBasicはサブルーチンやwhile文などの構造をサポートするQuickBASICのような構造化プログラミング言語である[2][3]。行番号は互換性のためにサポートされるが推奨されず、説明的なラベルの使用が推奨される[1]。QBasicはユーザ定義データ型(構造体)を限定的にサポートし、いくつかの基本的な型が文字列や数値データを保持するために使用される[4][5]。
QBasicはGW-BASICを置き換えることを意図した製品である。QuickBASIC 4.5コンパイラを基にしているが、QuickBASICにあるコンパイラとリンカは含まれていない。以下のようにいくつかのOSに標準で付属しているが、これらは日本語環境では正常に動作せず、あらかじめ英語モードに切り替える必要があった。バージョン1.0はMS-DOS 5.0以上[注 1]、Windows 95[注 1]、Windows 98/98SE[注 2]、Windows NT 3.x、Windows NT 4.0[要検証 –ノート]に同梱された。IBMはQBasicに修正を加え、IBM PC DOS 5.xとOS/2 2.0に同梱した[6]。OS/2のコードから作られたeComStationはQBasic 1.0を含んだ。QBasic 1.1はMS-DOS 6.x、およびEDITなしでWindows 95、Windows 98、Windows MEに同梱された。またEDIT.COMはQBASICを必要としなくなり、日本語版に付属するEDIT.COMは日本語環境でも動作するようになった。AT互換機以外では、例えばPC-9800シリーズ版のMS-DOSにQBASICは含まれておらず、EDIT.COMの代わりに独自のスクリーンエディタが付属していたが、PC-9800シリーズ用Windows 95/98ではAT互換機と同様にQBASICなしで動作するEDIT.COMが付属するようになった。Windows 2000より、マイクロソフトはQBasicをオペレーティングシステムに同梱していない[7](しかし、Windows 2000とWindows XPのためにローカライズされたものがいくつか存在し、フリーウェアとして発表されている)。
(標準添付のMS-DOS Editorと同様に)QBasicは5.0以前(少なくともDOS 3.20まで)のDOSと後方互換である。しかし、Intel 8088やIntel 8086を使用したコンピュータや、Intel 80286を使用したコンピュータの一部では、メモリーのサイズにより動作が非常に遅かったり、全く動作しない場合もある。MS-DOS 7まで、MS-DOS EditorはQBasicを必要とした。EDIT.COMプログラムは、QBasicをエディタのみのモードで起動しているだけであり、またQBASIC.EXEに/EDITスイッチをつけること(すなわちコマンドライン"QBASIC /EDIT")によってこのモードに入ることができた。
QBasicでは4つのサンプルプログラムが付属していた:
PRINT"Hello, World!"
このプログラムは1-10の範囲の中で無作為に選ばれた数を当てることをユーザに要求する。通常存在する「高い」/「低い」のヒントを提供しない。
CLSPRINT"Guess My Number"INPUT"Would you like to play";choice$'INPUT文 - ユーザの入力を受け取るchoice$=UCASE$(choice$)'入力を完全に大文字にする(例:fkld->FKLD)IFchoice$<>"YES"ANDchoice$<>"Y"THEN'彼らが遊びたいかどうかを判断するENDENDIFguesses%=5'推測する回数を入力するRANDOMIZETIMER'乱数発生器をセットするtarget%=INT(RND*10)+1WHILEguesses%>0INPUT"Guess a number: ",guess%'入力(推測)を取るIFguess%=target%THEN'推測が正しいかどうかを判断するPRINT"You win!"ENDELSEguesses%=guesses%-1PRINT"Sorry, please try again. You have ";guesses%;" guesses left."ENDIFWENDPRINT"You ran out of guesses, the number was ";target%END
QBasicはいくつかの知られているイースターエッグを持っている。DOSプロンプト上で、QBasicを起動した後タイトル画面が出る前に、Left CTRL+Left SHIFT+Left ALTおよびRight CTRL+Right SHIFT+Right ALTを同時に押すと、プログラマのチームがリストされる[8]。このプログラムは現在のコンピュータでは実行するには速すぎる。古いパーソナルコンピュータ(できればスイッチを入れることによってCPUを4.77MHzに遅くするようなターボボタンを持つもの)または速度を遅くすることが出来るBochsやDOSBoxのようなエミュレータによってもっともうまく実行される。