Senin, 22 November 2010

Pemrograman Qbasic

       
       Modul 1
        DASAR-DASAR QBASIC

        Bahasa BASIC dibuat oleh John G.Kemmeny dan Thomas E.Kurtz lebih
        dari 20 tahun yang lalu dan merupakan bahasa tingkat tinggi yang
        relatif mudah dipelajari dan dimengerti.

        Dalam perkembangannya , Bahasa BASIC dikembangkan dalam dua
        jenis, yaitu interpreter dan compiler. Interpreter seperti GW-
        BASIC pada sistem operasi MS-DOS, maupun BASICA pada sistem
        operasi PC-DOS, sedangkan salah satu compilernya yang terkenal
        adalah Quick BASIC  yang dilengkapi dengan sistem pemrograman
        yang terstruktur, Quick Library, on-line help yang terpadu,
        editor yang efisien (bisa merapikan teks serta memberitahukan
        kesalahan syntax penulisan suatu perintah)


        MENGAKTIFKAN QUICK BASIC

        Untuk mengaktifkan Quick BASIC diperlukan sistem Quick BASIC yang
        minimal terdiri dari file QB.EXE/QBasic.EXE. Jika kita telah
        memiliki file tersebut tinggal diberi perintah QB pada Dos
        Prompt.

        Contoh

        A>QB <Enter>

        atau

        A>QBasic <Enter>

        Setelah pemberian perintah tersebut, pemakai akan dihadapkan
        kepada suatu editor sebagai tempat pengetikan program yang akan
        dikembangkan. Dibagian atas editor terdapat perintah menu yang
        dapat diaktifkan dengan Tombol Alt disertai huruf depan dari
        masing-masing pilihan.

           File
        /------------------\
        | New Program      | memulai program baru
        | Open Program...  | memuat program dari diskette ke RAM
        | Save             | menyimpan program ke diskette (file *.BAS)
        | Save As...       | menyimpan program ke nama yang lain
        |------------------|
        | Print...         | mencetak program ke printer
        |------------------|
        | Exit             | keluar ke Dos permanen
        \------------------/

          Edit
        /----------------------\
        | Undo   Alt+Backspace | membatalkan perubahan terakhir
        | Cut        Shift+Del | memotong tulisan Blok ke ClipBoard
        | Copy        Ctrl+Ins | menduplikasi tulisan Blok ke ClipBoard
        | Paste      Shift+Ins | menyisip ClipBoard ke posisi Kursor
        | Clear            Del | menghapus tulisan yang di Blok
        |----------------------|
        | New SUB...           |
        | New FUNCTION...      |
        \----------------------/

          Options
        /-----------------\
        | Display...      | mengatur tampilan layar
        | Help Set Path   | mengatur default Dos Path
        | Syntax Checking | mengatur keaktifan pemeriksaan Syntax
        \-----------------/

          Run
        /---------------------\
        | Start      Shift+F5 | menjalankan program yang aktif
        | Restart             | mereset memory program
        | Continue         F5 | melanjutkan program yang terhenti
        \---------------------/

        MEMBUAT PROGRAM PADA QUICK BASIC

        Apa yang dimaksud dengan pemrogram komputer ?

        Pemrograman komputer berarti anda memberitahukan kepada komputer
        ada yang anda ingin dia lakukan. Untuk memberitahukan komputer
        apa yang harus dia lakukan, anda membutuhkan kata-kata khusus
        (special words). Kata-kata ini disebut sebagai kata-kata kunci
        (key words). Ketika anda menempatkan kata-kata kunci ini dalam
        program anda sehingga kelihatan seperti kode khusus (special
        code) yang disebut sebagai CODE dan pekerjaan menulis program
        disebut CODING.


        KATA, DATA, PERINTAH, dan FUNGSI BANTU merupakan komponen utama
        suatu program yang saling berinteraksi. Pembuatan program dalam
        Quick BASIC tidak terlepas dari keempat komponen di atas dalam
        baris-baris perintah yang berkapasitas maksimum 256 character
        yang mencakup identitas baris, perintah, dan kata-kata(Remark).
        Identitas baris bisa berupa nomor baris (0-65529) [menjaga
        kompatibilitas dengan GWBASIC maupun BASICA], dan bisa berupa
        label dengan ketentuan :

        - Maksimum 40 character, dimulai dengan huruf A..Z, diakhiri
        dengan tanda :
        - huruf besar/kecil sama, tidak sama dengan reserved word, dan
        tidak pakai spasi

        Setiap proses yang berhubungan dengan pengolahan data biasanya
        memerlukan tempat penampung sementara dalam memory yang disebut
        variabel dan dalam pengolahannya diperlukan operator dan fungsi
        bantu.

        Jenis Type Variabel pada Quick Basic :
        /--------------------------------------------------------------------------\
        |Data Type                  |Suffix|Maximum         |Minimum         | Size|
        |--------------------------------------------------------------------------|
                                    |      |                |                |
        |Strings                    |   $  | 32,767 chars.  | 0 chars.       |     |
        |Integers                   |   %  | 32,767         |-32,768         |  2  |
        |Long Integers              |   &  | 2,147,483,647  |-2,147,483,648  |  4  |
        |Single (7-digit) precision |   !  |+3.402823 E+38  |+1.401298 E-45  |  4  |
                                            _                _
        |Double (15-digit) precision|   #  |+1.7976931 D+308|+4.940656 D-324 |  8  |
                                            _                _
        |User-Defined Data Types    |----------------------------------------------/
        \---------------------------/

        Nama variabel juga memiliki ketentuan antara lain :
        - Maksimum 40 character, diawali dengan huruf A..Z, diakhiri
        dengan $, %, &, !, # untuk menunjukan type
        - Tidak boleh sama dengan reserved word, tidak boleh pakai spasi
        dan spesial character.

        Operator pada Quick BASIC dibagi atas 5 jenis, antara lain :

        1. Arithmetic operators : melakukan tugas perhitungan
        /--------------------\   /----------------------------\
        |Operator|Kegunaan   |   |Operator|Kegunaan           |
        |--------------------|   |----------------------------|
                 |                        |
        |   ^    | Pangkat   |   |   \    | Pembagian integer |
        |   -    | Negatif   |   |  MOD   | Sisa bagi         |
        |   *    | Perkalian |   |   +    | Penjumlahan       |
        |   /    | Pembagian |   |   -    | Pengurangan       |
        \--------------------/   \----------------------------/

        2. Relational operators : membandingkan strings dan nilai numerik
        /--------------------------------------\
        |Operator|Kegunaan                     |
        |--------------------------------------|
        |   =    | Sama dengan                 |
        |  <>    | Tidak sama dengan           |
        |   <    | Lebih kecil                 |
        |   >    | Lebih besar                 |
        |  <=    | Lebih besar atau sama dengan|
        |  >=    | Lebih kecil atau sama dengan|
        \--------------------------------------/

        Relational operators akan menghasilkan dua kemungkinan nilai
        yaitu -1 jika benar dan 0 jika salah.

        3. Logical operators     : test kondisi dan manipulasi bits
        /-----------------------------------------------------\
        |Expresi1|Expresi2| NOT | AND | OR  | XOR | EQV | IMP |
        |-----------------------------------------------------|
                 |        |     |     |     |     |     |
        |    T   |    T   |  F  |  T  |  T  |  F  |  T  |  T  |
        |    T   |    F   |  F  |  F  |  T  |  T  |  F  |  F  |
        |    F   |    T   |  T  |  F  |  T  |  T  |  F  |  T  |
        |    F   |    F   |  T  |  F  |  F  |  F  |  T  |  T  |
        \-----------------------------------------------------/

        Functional operators  : operator pelengkap
        String operators      : mengabung (+), dan membandingkan String

        PERINTAH DASAR INPUT OUTPUT

        Komputer hanya melaksanakan apa yang diperintahkan pemrogram.
        Jadi, dalam membuat program untuk menyelesaikan suatu masalah,
        kita harus tahu cara penyelesaiannya. Untuk itu diperlukan tahap-
        tahap dalam menyelesaikan masalah tersebut.

        INPUT dan OUTPUT merupakan awal dan  akhir  pengolahan suatu
        data. Tanpa proses INPUT, kita tidak dapat memperoleh data untuk
        diolah dan data-data yang telah selesai diolah tidak akan berarti
        tanpa proses OUTPUT.

        Syntax :
          INPUT [;]["Prompt"{,|;}], Var list
          PRINT [expresion list {,|;}]

        Contoh 1 :
             REM Program mencari Isi Bujursangkar
             INPUT "MASUKKAN SISI BUJURSANGKAR   :",S
             ISI = S * S
             PRINT "ISI DARI BUJURSANGKAR ADALAH :",ISI
             END

        Contoh 2 :
             REM Program Isi Data
             INPUT "MASUKKAN NAMA ANDA            ";NM$
             INPUT "MASUKKAN UMUR ANDA            ";UR%
             INPUT "MASUKKAN TGL,BLN,THN HARI INI ";TG%,BL%,TH%
             PRINT "NAMA    : ";NM$
             PRINT "UMUR    : ";UR%
             PRINT "TANGGAL : ";TG%
             PRINT "BULAN   : ";BL%
             PRINT "TAHUN   : ";TH%
             END

        Catatan :
        Untuk memberi keterangan pada program dapat digunakan REM atau '

        LATIHAN

        1. Aktifkan QBasic.EXE, dan anda akan dihadapkan pada suatu
        WELCOME dialog box, tekan Esc untuk mengabaikannya. Selanjutnya
        anda akan melihat lingkungan kerja QBasic yang terbagi atas dua
        bagian : Bagian atas adalah "Jendela Editor" dan Bagian bawah
        adalah "Jendela Immedietly".

        2. Perhatikan letak kursor sekarang (pada Jendela Editor), tekan
        function key (F6) untuk mengaktifkan Jendela Immedietly, dan (F6)
        sekali lagi untuk sebaliknya.

        3. Ketiklah ekspresi berikut pada jendela immedietly dengan
        diawali perintah print (?).

        Contoh :

        1+2

        diketik sebagai

        ? 1 + 2

        Ekspresi :     Hasilnya ?

        1 + 2          _____   Penjumlahan
        2 - 1          _____   Pengurangan
        2 * 3          _____   Perkalian
        5 / 2          _____   Pembagian
        5 \ 2          _____   mengapa ? ____________ Pembagian bulat
        5 Mod 2        _____   mengapa ? ____________ Sisa bagi
        3^2            _____   Pangkat
        1+2*6^2/4-1    _____   Urutan operasi
        (1+2)*6^2/4-1  _____   Prioritas operasi

        Tuliskan kesimpulan anda tentang :
        1. Pembagian bulat ____________________________________________
        2. Sisa bagi __________________________________________________
        3. Urutan operasi _____________________________________________
        4. Prioritas operasi __________________________________________

        1 > 2          _____   lebih besar
        1 < 1          _____   lebih kecil
        2 = 2          _____   sama dengan
        2 >= 2         _____   lebih besar atau sama
        1 <= 2         _____   lebih kecil atau sama
        3 <> 3         _____   tidak sama dengan

        Mengapa True (-1) dan False (0) ?

        (1 > 2)  and (2 = 2)  _____ Operasi And
        (1 > 2)  and (1 < 2)  _____ Operasi And
        (1 < 2)  and (2 = 2)  _____ Operasi And
        (3 <> 2) and (1 > 2)  _____ Operasi And

        (1 > 2)  and (2 = 2)  _____ Operasi Or
        (1 > 2)  and (1 < 2)  _____ Operasi Or
        (1 < 2)  and (2 = 2)  _____ Operasi Or
        (3 <> 2) and (1 > 2)  _____ Operasi Or

        (1 > 2)  Xor (2 = 2)  _____ Operasi Xor
        (1 > 2)  Xor (1 < 2)  _____ Operasi Xor
        (1 < 2)  Xor (2 = 2)  _____ Operasi Xor
        (3 <> 2) Xor (1 > 2)  _____ Operasi Xor

        (1 > 2)  Eqv (2 = 2)  _____ Operasi Eqv
        (1 > 2)  Eqv (1 < 2)  _____ Operasi Eqv
        (1 < 2)  Eqv (2 = 2)  _____ Operasi Eqv
        (3 <> 2) Eqv (1 > 2)  _____ Operasi Eqv

        (1 > 2)  Imp (2 = 2)  _____ Operasi Imp
        (1 > 2)  Imp (1 < 2)  _____ Operasi Imp
        (1 < 2)  Imp (2 = 2)  _____ Operasi Imp
        (3 <> 2) Imp (1 > 2)  _____ Operasi Imp

        Not (1 > 2)           _____ Operasi Imp
        Not (2 > 2)           _____ Operasi Imp

        Not (1 > 2) Or (2 = 2) And (3 < 2) ______ Urutan operasi

        Tuliskan kesimpulan anda tentang urutan operasi pada operator
        logika.

        4. Ketiklah ekspresi berikut pada jendela immedietly :

        A   = 123
        B   = 1234567890
        C%  = 32767
        D%  = 100000         Overflow, mengapa ?
        D&  = 100000
        E$  = "Indoprog"
        F$  = 123            Type mismatch, mengapa ?
        G   = "hendra"       Type mismatch, mengapa ?
        H_1 = 123            expected : end-of-statement, mengapa ?
        nilai ujian = 90     Syntax error, mengapa ?
        next = 5             expected : variable or end-of-statement ?
        cls  = 6             expected : variable or end-of-statement ?

        A%  = 1.2            Berapa nilai A% ?
        A%  = 1.5            Berapa nilai A% ?

        Tuliskan kesimpulan anda tentang variabel dan nama variabel

        5. Ketiklah ekspresi berikut pada jendela immedietly dengan
        diawali perintah print (?).

        1 + 1                ______
        1 + "100"            Type mismatch, mengapa ?
        "A" + "B"            ______

        Tuliskan kesimpulan anda operator pada type data.

        6. Ketiklah statement berikut pada jendela immedietly

        Print "Untuk kemajuan Indonesia"

        Hasilnya : __________________________________


        Print "Untuk","kemajuan","Indonesia"

        Hasilnya : __________________________________


        Print "Untuk";"kemajuan";Indonesia"

        Hasilnya : __________________________________


        Print "Untuk"
        Print "Kemajuan"
        Print "Indonesia"
        Hasilnya : _____________
                   _____________
                   _____________

        Print "Untuk";
        Print "Kemajuan";
        Print "Indonesia"

        Hasilnya : __________________________________


        Print 1,2,3

        Hasilnya : __________________________________, mengapa ?


        Print 1;2;3

        Hasilnya : __________________________________, mengapa ?


        Print tab(10),"Hendra";tab(30);"Wijaya"

        Hasilnya : __________________________________, mengapa ?



        Input nama$
        print nama$

        Hasilnya :? Hendra
                  __________________________________


        Input "Masukkan nama :", nama$
        print nama$

        Hasilnya :Masukkan nama : Hendra
                  __________________________________


        Input "Masukkan nama "; nama$
        print nama$

        Hasilnya :Masukkan nama ? Hendra

                  __________________________________


        Input "Masukkan nama "; nama
        print nama

        Hasilnya : Masukkan nama ? Hendra
                   Redo from start, mengapa ?

        6. Program anda yang pertama.

        Aktifkan ke jendela Editor
        Ketiklah CODE berikut :

        REM Program saya yang pertama
        CLS
        PRINT "Hello semua"
        END

        Simpan CODE diatas ke file Bab1F.Bas (gunakan menu File Save)

        Jalankan program diatas (gunakan menu Run Start atau tekan F5)

        7. Program dengan proses input/output

        Gunakan menu File New untuk memulai program baru
        Ketiklah CODE berikut :

        REM Program menghitung luas persegi panjang
        CLS
        INPUT "Masukkan sisi panjang :", panjang
        INPUT "Masukkan sisi lebar   :", lebar
        LUAS = panjang * lebar
        PRINT "Luas persegi panjang :", LUAS
        END

        Simpan CODE diatas ke file Bab1G.Bas

        8. Buatlah program menghitung luas lingkaran.

        9. Buatlah program konversi suhu Celcius ke Farenheit, Kelvin,
        Reamur.

        10. Beberapa perintah pengaturan INPUT OUTPUT

        Pada tulisan ini tidak diberikan contoh untuk memancing
        pertanyaan pada forum diskusi :).

        CLS
        Membersihkan layar dengan warna latar belakang

        COLOR textcolor[,textbackground[,border]]
        Mengatur warna tulisan, warna latar belakang, dan
        warna border layar. Adapun nomor warna yang disediakan :
        /----------------\ /----------------\ /----------------\ /------------------\
        |  # | Warna     | |  # | Warna     | |  # | Warna     | |  # | Warna       |
        |----------------| |----------------| |----------------| |------------------|
             |                  |                  |                  |
        |  0 | Hitam     | |  4 | Merah     | |  8 | Abu-abu   | | 12 | Merah muda  |
        |  1 | Biru      | |  5 | Magenta   | |  9 | Biru muda | | 13 | Magenta muda|
        |  2 | Hijau     | |  6 | Brown     | | 10 | Hijau muda| | 14 | Kuning      |
        |  3 | Cyan      | |  7 | Putih     | | 11 | Cyan muda | | 15 | Putih terang|
        \----------------/ \----------------/ \----------------/ \------------------/
        Warna tulisan dapat dibuat berkedip dengan menambahkan 16 pada
        nomor warna
        Warna latar belakang hanya dapat dipilih nomor 0 s/d 7
        Warna border dapat dipilih 0 s/d 15

        PRINT USING formatstring; expressionlist[{,|;}]
        Mencetak text dan variabel dengan format tertentu
        formatstring, ekspresi string yang mengatur format pencetakkan
        dengan picture sebagai berikut :
        /------------Characters Picture untuk mengatur format data numerik ------------\
        | #   Menentukan posisi digit            | -    Diletakan sesudah posisi digit |
        | .   Menentukan posisi Desimal          |      mencetak tanda untuk negatif   |
        | ,   Memunculkan pemisah ribuan,jutaan  | $$   Mencetak $ pada posisi kosong  |
        | +   Menentukan posisi tanda numerik    | **   Mencetak * pada posisi kosong  |
        |^^^^ Mencetak dalam  bentuk eksponensial| **$  Combinasi $ dan **             |
        |-------------------Characters Picture untuk mengatur format data string-------|
        | &   Mencetak seluruh string            | \  \  Mencetak n+2 character, dimana|
        | !   Mencetak huruf pertama dari String |       n adalah jumlah spasi \  \    |
        \------------------------------------------------------------------------------/

        WIDTH kolom,baris
        Mengatur lebar text layar  40 atau 80 kolom dan pada monitor EGA
        atau VGA mengatur jumlah baris layar 25,43,50 atau 60 (tergantung
        pada jenis monitor)

        LOCATE  [row] [,[col] [,[cursor] [,start [,stop]]]]
        Memindahkan kursor pada layar ke posisi baris dan kolom tertentu.
        cursor, nilai 0 cursor off, nilai 1 cursor on
        start, baris awal kursor 0 s/d 31
        stop, baris akhir kursor 0 s/d 31

        SPC(n)
        Meloncat sejumlah n spasi pada saat pencetakan dengan perintah
        print.

        TAB(n)
        Mencetak output ke kolom n yang ditentukan.

        VIEW PRINT baris_teratas To baris_terbawah
        Membatasi baris teratas dan terbawah layar untuk memunculkan
        tulisan.