GW-BASIC

**GW-BASIC** adalah sebuah dialek bahasa BASIC yang dikembangkan oleh Microsoft dari BASICA untuk Compaq. GW-BASIC kompatibel dengan Microsoft/IBM BASICA, tetapi GW-BASIC disimpan di dalam cakram (*disk*), tidak seperti BASICA yang disimpan di dalam ROM. GW-BASIC dibundel dengan sistem operasi MS-DOS untuk komputer kompatibel dengan IBM PC. Seperti halnya semua versi BASIC komputer mikro, GW-BASIC tidak memiliki struktur yang cukup untuk disebut sebagai sebuah bahasa pemrograman terstruktur, seperti halnya variabel lokal. Selain itu, kecepatan eksekusi program-program GW-BASIC terbilang relatif lambat, mengingat memang BASIC merupakan bahasa pemrograman yang diinterpretasikan. Meski demikian, GW-BASIC menawarkan banyak perintah grafik. Fleksibilitas yang dimilikinya cukup bagi seseorang untuk menulis permainan komputer sederhana, program bisnis dan beberapa program lainnya. Karena GW-BASIC dimasukkan ke dalam MS-DOS, maka GW-BASIC tersedia dalam setiap komputer berbasis IBM PC atau kompatibelnya. Karena itu, GW-BASIC merupakan cara yang murah untuk para pemrogram awal untuk belajar bagaimana caranya memprogram komputer.

Saat Microsoft merilis MS-DOS 5.0, GW-BASIC pun digantikan oleh Microsoft QBASIC, sebuah versi kompiler Microsoft QuickBASIC yang ringan (tidak semua fiturnya dimiliki). Kemajuan besar GW-BASIC terhadap BASICA adalah bahwa GW-BASIC tidak membutuhkan interpreter BASIC di dalam ROM, sehingga dapat digunakan di dalam komputer selain IBM PC.
## GW??
Inisial "**GW**" dalam "GW-BASIC" mungkin diambil dari <u>G</u>reg <u>W</u>hitten, seorang karyawan awal di Microsoft Corporation yang mengembangkan standar-standar di dalam jajaran kompiler bahasa BASIC Microsoft. Teori lainnya adalah bahwa GW merupakan singkatan dari Gee Whiz, seperti yang ditulis dalam buku manual pengguna untuk GW-BASIC yang diterbitkan oleh Microsoft Press. Teori lainnya mengatakan bahwa GW juga singkatan dari "Gates, William", nama asli dari Bill Gates (William Henry Gates III). Dan teori terakhir adalah "Graphics and Windows", mengingat kedua fitur tersebut tidak dimiliki oleh BASICA.
## Lingkungan pemrograman
GW-BASIC memiliki sistem *[[Integrated Development Environment]]* (IDE) yang bersifat *[[command-line]]* yang dibuat berdasarkan aslinya yang dikembangkan di Dartmouth College; semua baris program harus diberi nomor angka baris, dan semua baris yang tidak diberi nomor angka baris dianggap sebagai perintah langsung yang akan dieksekusi secara langsung. Antarmuka pemrograman yang digunakannya hampir semuanya bersifat *command-line*, kecuali untuk jalan pintas (*shortcut*) tombol fungsi yang diletakkan pada bagian bawah layar dan peringatan hak cipta pada atas layar. Semua berkas yang dibuat oleh GW-BASIC akan disimpan dalam format biner terkompres GW-BASIC, tetapi GW-BASIC juga menawarkan pilihan untuk menyimpan berkas BASIC dalam format teks biasa (berkas ASCII). IDE GW-BASIC memiliki perintah-perintah untuk `RUN` (menjalankan), `LOAD` (memuat), `SAVE` (menyimpan), `LIST` (menampilkan) program yang sedang terbuka atau `SYSTEM` (untuk keluar ke sistem operasi yang digunakan). Meskipun perintah-perintah tersebut dapat digunakan sebagai statemen program, penggunaannya sangatlah jarang kecuali untuk perintah `SYSTEM`.
## Pemrograman dengan GW-BASIC
GW-BASIC sebenarnya mendukung sedikit pemrograman terstruktur, akan tetapi hal tersebut justru terlalu banyak bagi para programmer GW-BASIC untuk membuat struktur program yang baik. Semua pernyataan bersyarat `IF`...`THEN`...`ELSE` harus ditulis dalam satu buah baris, meskipun pernyataan `WHILE`...`WEND` dapat ditulis dalam beberapa baris. Fungsi-fungsi hanya dapat didefinisikan dengan menggunakan statemen `DEF FNf(x)=<fungsi matematika dari x>` (contoh `DEF FNLOG(basis, angka)=LOG(angka)/LOG(basis)`.

Variabel-variabel juga kadang ditulis dengan menggunakan simbol jenis data pada akhir namanya, `A%` untuk *[[tipe data integer|integer]]*, `A$` untuk *[[tipe data string|string]]*, dan lain-lain. Sekelompok variabel yang tidak didefinisikan juga dapat diset ke dalam sebuah jenis data tertentu berdasarkan huruf pertamanya dengan menggunakan perintah `DEFINT`, `DEFSTR` dan lain sebagainya. Tipe data yang diguakan oleh variabel yang tidak mengikuti penamaan ini adalah bilangan *[[floating-point]]* dengan presisi tunggal.

Karena banyak programmer GW-BASIC memprogram tanpa adanya latihan formal, kadang-kadang mereka tidak menggunakan struktur sederhana untuk program yang mereka buat. Hasilnya, mereka membuat program yang kurang teratur khususnya untuk penggunaan statemen `GOTO`.

GW-BASIC mengizinkan penggunaan *[[joystick]]* dan *[[perangkat input]]* sejenis pena pada saat itu, tetapi tidak untuk *[[mouse]]*. GW-BASIC dapat membaca dan menulisi berkas, port LPT, dan port COM; bahkan ia dapat melakukan "jebakan" terhadap *port-port* tersebut, meski ia tidak dapat menangani perangkat tape.

GW-BASIC dapat memainkan musik sederhana dengan menggunakan statemen PLAY, dengan menggunakan nada-nada yang ditulis dalam string, seperti `PLAY ""edcdeee2dfedc4"`. Kontrol suara yang arasnya lebih rendah lagi dapat dilakukan dengna menggunakan statemen `SOUND`, yang dalam argumennya terdapat frekuensi dalam Hertz dan panjang *beep*-nya dihitung dalam waktu internal speaker PC dalam mesin IBM PC. Akan tetapi, penggunaan suara terbatas hingga beep yang bersifat *monoaural* (satu kanal) saja. Meski demikian, beberapa PC rumahan seperti Tandy 1000 mengizinkan penggunaan tiga buah kanal suara untuk perintah `SOUND` dan `PLAY`. GW-BASIC juga mengimplementasikan perintah `NOISE`, yang memiliki 8 efek suara yang dapat diubah parameter *pitch*, *speed*, dan *length*-nya.
## Lihat pula
* BASICA
* QBasic
* Microsoft QuickBASIC