Senin, 22 November 2010

Pemrograman Qbasic 8

        MODUL 8
        PENGOLAHAN SEQUENTIAL FILE

        File merupakan fasilitas penyimpanan data pada external storage
        yang bersifat permanen, jika dibandingkan dengan penyimpanan ke
        RAM yang sifatnya sementara. Dengan pemakaian file kita dapat
        menghemat pemakaian RAM komputer yang memiliki jumlah yang
        terbatas serta dapat melakukan dokumentasi untuk jangka waktu
        yang panjang.


        Pada QBasic pengolahan file dapat dibagi atas tiga jenis, yaitu :
        1. SEQUENTIAL FILE
        2. RANDOM FILE
        3. BINARY FILE


        Pada Sequential file (file urut) proses pengolahannya dilakukan
        secara linier dari awal sampai akhir, tanpa bisa kembali kebagian
        sebelumnya, kecuali proses dimulai lagi dari awal. Jadi dalam
        pengolahan datanya bersifat first in first out, artinya pembacaan
        data dari file ini harus dimulai dari data yang paling awal.

        Pada umumnya pengolahan data yang menggunakan file sebagai media
        INPUT maupun OUTPUT memiliki tiga tahap, yaitu :
        1. Tahap membuka file (OPEN)
        2. Tahap memproses (INPUT/OUTPUT)
        3. Dan yang terakhir adalah tahap menutup file (CLOSE)


        Membuka File SEQUENTIAL

        Untuk membuka file sequential yang akan diproses dapat digunakan
        penulisan sebagai berikut :

        Syntax :
        Open filename [FOR mode]  AS [#]filenum

        dimana mode terdiri dari :
        INPUT,  membuka file untuk proses INPUT
        OUTPUT, membuka file baru untuk proses OUTPUT
        APPEND, membuka file untuk untuk proses OUTPUT dimana data baru
        ditambahkan pada bagian akhir.

        Contoh :
        Open "Siswa.Dat" For Append AS #1

        Akan membuka Siswa.Dat sebagai OUPUT dimana data baru ditambahkan
        pada bagian akhir. Jika file Siswa.Dat belum ada, maka akan
        dibuat yang baru.


        Proses INPUT/OUTPUT

        Perintah proses INPUT/OUTPUT pada sequential file sangat
        tergantung kepada bentuk perlakuan terhadap data. Untuk penulisan
        yang berorientasi pada baris, anda dapat menggunakan perintah
        PRINT, dan pembacaanya dapat menggunakan LINEINPUT. Penulisan
        yang berorientasi kepada data, anda dapat menggunakan perintah
        WRITE dan INPUT untuk proses pembacaannya.

        Syntax :
        PRINT #filenumber,[USING stringexpressin;]expression list
        WRITE #filenumber[,expressionlist]
        INPUT #filenumber, variablelist
        LINEINPUT #filenumber, variable-string

        Contoh :

        Write #1, "920403024","Hendra",80,90

        menulis ke file nomor 1, dan data dapat dibaca kembali dengan
        perintah :

        Input #1,Nim$,Nama$,Teori,Praktek

        Catatan :
        Anda dapat menggunakan fungsi bantu EOF(filenumber) untuk
        memeriksa apakah berada diposisi akhir file.


        Proses CLOSE

        Untuk menutup file dapat digunakan perintah CLOSE.

        Syntax :
        CLOSE #filenumber

        Contoh :
        CLOSE #1

        menutup file nomor 1.

        Contoh :

        'PROGRAM MENGISI DATA KE FILE SISWA.DAT
        OPEN "SISWA.DAT" FOR APPEND AS #1
        DO
            PRINT "DATA SISWA KE -";I
            INPUT "NO.INDUK  :",NOINDUK$
            IF NOINDUK$ <> "" THEN
               INPUT "NAMA      :",NAMA$
               INPUT "TEORI     :",TEORI
               INPUT "PRAKTEK   :",PRAKTEK
               WRITE #1,NOINDUK$,NAMA$,TEORI
            ENDIF
        LOOP UNTIL NOINDUK$ = ""
        CLOSE #1
        END

        'PROGRAM BACA DATA DARI SISWA.DAT DAN MENCETAK KE LAYAR
        CLS
        OPEN "SISWA.DAT" FOR INPUT AS #1
        PRINT "-------------------------------------------------------------------"
        PRINT "NO.INDUK   NAMA            TEORI     PRAKTEK   RATA-RATA   LULUS   "
        PRINT "-------------------------------------------------------------------"
        POLA$="\        \ \             \ ###.##    ###.##    ###.##      \     \ "
        VIEW PRINT 4 TO 23
        WHILE NOT EOF(1)
            INPUT #1, NO_INDUK$,NAMA$,TEORI,PRAKTEK
            RATA = (TEORI+PRAKTEK)/2
            IF RATA < 60 THEN
               LULUS$="TIDAK"
            ELSE
               LULUS$ = "YA"
            ENDIF
            PRINT USING POLA$;NO_INDUK$;NAMA$;TEORI;PRAKTEK;RATA;LULUS$
        WEND
        CLOSE #1
        END