file random

Sesi/Perkuliahan ke: 11

 

Tujuan Instruksional Khusus :

  1. Memahami Konsep File Random
  2. Mengetahui pembuatan file Random dengan bahasa Basic
  3. Mengetahui Operasi file Random dengan bahasa Basic

Pokok Bahasan : BERKAS DATA MASUP ACAK (RANDOM ACCESS FILE)

Deskripsi singkat : Dalam pertemuan ini  akan mempelajari tentang konsep file random, pembuatan file random dan operasi file random

Reference   :

  1. Insap Santoso, Ir.,MSc, Program-program Terapan Menggunakan Quick Basic, Andi Yogyakarta.
  2. Jogiyanto H.M, Teori dan Aplikasi Program Komputer Bahasa Basic, Andi Yogyakarta.
  3. Rijanto Tosin, Quick Basic, Dinastindo.

 

 

 

 

 

 

 

 

 

 

 

 

Berkas Data Masup Acak (Random Access File)

 

Pada berkas data (file) masup acak, akses terhadap record data dapat dilakukan secara acak (random), tanpa harus membaca record satu per satu mulai dari posisi awal record. Keuntungannya adalah kecepatan proses lebih tinggi dibandingkan berkas data masup urut.

 

Berikut adalah prosedur penyimpanan data ke dalam berkas data masup acak :

  1. Buka file
  2. Siapkan buffer data
  3. Untuk data numeric harus dikonversi ke alfabetik/string
  4. Simpan data ke dalam buffer
  5. Lakukan penulisan ke dalam file

 

 

Membuka File

Perintah yang diperlukan adalah : OPEN

 

Bentuk Umum :

OPEN “R”, #nomfile, namafile, reclen

 

 

 

atau

OPEN namafile FOR RANDOM ACCESS akses AS #nomfile LEN = reclen

 

 

Dimana:

nomfile      : bilangan bulat antara 1 sampai 255. Digunakan untuk menyatakan nomor file yang akan dibuka

namafile    :  ekspresi string untuk menunjukkan nama file

reclen         :  bilangan bulat antara 1 sampai 32.676. Digunakan untuk menyatakan jumlah byte setiap record. Parameter ini bersifat pilihan, jika tidak dipakai, maka jumlah byte per record dianggap 512 byte.

akses          :  Parameter yang menyatakan bentuk operasinya, berupa :

READ                :  menyebabkan file untuk pembacaan saja.

WRITE              : menyebabkan file untuk penulisan saja.

READWRITE   :  menyebabkan file untuk pembacaan dan penulisan.

Parameter ini bersifat pilihan. Jika tidak ditulis, maka diasumsikan file random digunakan untuk membaca dan menulis.

 

Contoh-contoh :

OPEN “R”, #1, “B:DataNama”

OPEN “R”, #2, “DataMhs”, 250

OPEN “DataMhs” FOR RANDOM AS #2 LEN 250

OPEN “B:DataMhs” FOR RANDOM ACCESS READ AS #2 LEN 50

 

 

Penyediaan Buffer Data

Dalam file random, perlu disiapkan suatu area penampungan sementara untuk data yang akan diakses dari file tersebut, yang disebut dengan “RANDOM BUFFER”. Untuk membentuknya digunakan statement FIELD.

Bentuk Umum :

FIELD #nomfile, lebarfield AS varstring [, lebarfield1 AS varstring 2, …]

 

 

 

Dimana:

nomfile      : bilangan sesuai dengan nomor file yang dibuka dengan statement OPEN

lebarfield,

lebarfield1 :  bilangan yang menyatakan panjang variabel (data) yang akan disimpan

varstring,

varstring1  : nama variabel string yang akan digunakan untuk data yang akan diakses.

 

Berikut ini penjelasan mengenai lebar field yang dibutuhkan untuk setiap tipe data.

 

Tabel 1 – Ketentuan Lebar Field

Tipe data Lebar Field
Alpanumerik 1 byte untuk 1 karakter
Numerik Integer 2 byte
Numerik Single Precission 4 byte
Long Integer 4 byte
Numerik Double Precission 8 byte

 

Catatan:

Data yang disimpan ke dalam file harus dalam bentuk string.

 

Contoh :

Data Mahasiswa akan disimpan ke dalam file random, dengan item-item sebagai berikut :

 

Item Tipe Jumlah karakter
NPM Alpanumerik 8 karakter
NAMA Alpanumerik 20 karakter
ALAMAT Alpanumerik 25 karakter
NILAI Numerik 1 digit

 

Total jumlah byte yang diperlukan berdasarkan tabel 1 di atas adalah 55 byte meliputi, 8 byte untuk NPM, 20 byte untuk NAMA, 25 byte untuk ALAMAT dan 2 byte untuk NILAI.

 

Penyediaan buffer yang diperlukan adalah :

 

OPEN “R”, #1, “DataMHS”, 55

FIELD #1, 8 AS NPM$, 20 AS NAMA$, 25 AS ALAMAT$, 2 AS NILAI

 

 

Konversi Data

Berikut ini adalah tabel fungsi konversi data.

 

Konversi Numerik ke Karakter

Nama Fungsi Bentuk Umum
MKI$ Konversi numerik integer MKI$(ekspresi integer)
MKL$ Konversi numerik Long integer MKL$(ekspresi long integer)
MKS$ Konversi numerik single precission MKS$(ekspresi single prec.)
MKD$ Konversi numerik Double precission MKL$(ekspresi double prec.)

 

Konversi Karakter ke Numerik

Nama Fungsi Bentuk Umum
CVI Konversi karakter 2 byte ke integer CVI(2-byte string)
CVL Konversi karakter 4 byte ke long integer CVL(4-byte string)
CVS Konversi karakter 4 byte ke single precission. CVS(4-byte string)
CVD Konversi karakter 8 byte ke double precission. CVD(8-byte string)

 

Penyimpanan Data ke Buffer

 

Ada dua bentuk perintah untuk meletakkan data ke dalam buffer :

LSET   : meletakkan data ke dalam buffer dengan posisi merapat ke kiri

RSET  : meletakkan data ke dalam buffer dengan posisi merapat ke kanan

 

Bentuk Umum :

LSET varstring = ekspstring

 

 

 

RSET varstring = ekspstring

 

 

dimana,

 

varstring       : nama variabel yang telah didefinisikan dengan FIELD

ekspstring     : variabel string atau ekspresi string yang akan ditempatkan dalam buffer

Contoh :

 

OPEN “R”, #1, “DataMHS”, 55

FIELD #1, 8 AS NPM$, 10 AS Nama$

LSET Nama$ = “Andi”

RSET NPM$ = “5523”

 

Hasil dalam buffer:

 

A N D I

 

 

 

 

 

 

 

 

 

 

 

5 5 2 3

 

Penulisan Data ke Dalam File

Untuk menuliskan data ke dalam file digunakan statement PUT.

 

Bentuk Umum :

PUT #nomFile [, nomRec]

 

 

dimana,

nomFile        :  nomor file yang akan digunakan untuk menyimpan data

nomRec        :  bilangan bulat antara 1 sampai 2.147.483.647 yang menyatakan nomor record tempat data disimpan

 

Contoh :

 

Menyimpan data pada posisi record ke-2

 

PUT #1, 2

 

Contoh Aplikasi 1

 

Pembuatan file random untuk menyimpan data mengenai nama, alamat, dan nomor telepon. Nama filed yang akan dibuata adalah TELEPON.DTA. Isi record file adalah :

Item                 Jenis                            Jumlah karakter

Nama               Alpanumerik               20 karakter

Alamat                        Alpanumerik               30 karakter

Telepon           Numerik                      7 digit

 

‘====================================================

‘Program      : RANDOM1.BAS

‘Keterangan   : Contoh penulisan data ke file random

‘====================================================

OPEN “R”, #1, “C:\DATA\TELEPON.DTA”, 57

FIELD #1, 20 AS Nama$, 30 AS Alamat$, 7 AS Telepon$

 

Nm$ = “ “

NoRec = 1

WHILE Nm$ <> ““

CLS

LOCATE 5, 10: PRINT “Nama    : “

LOCATE 6, 10: PRINT “Alamat  : “

LOCATE 7, 10: PRINT “Telepon : “

LOCATE 5, 19: LINE INPUT Nm$

IF Nms = “” THEN END

LOCATE 6, 19: LINE INPUT Alm$

LOCATE 7, 19: LINE INPUT Tlp$

LSET Nama$ = Nm$

LSET Alamat$ = Alm$

LSET Telepon$ = Tlp$

PUT #1, NoRec

NoRec = NoRec + 1

WEND

CLOSE

END

 

Penggunaan Statement TYPE .. END TYPE

Statement TYPE .. END TYPE digunakan untuk mendefinisikan suatu variabel record. Dengan menggunakan variabel record, data dapat disimpan ke dalam file random tanpa memerlukan proses konversi data.

Untuk membentuk variabel record dari contoh aplikasi di atas, maka pendefinisian yang harus dilakukan adalah :

TYPE JenisData

Nama AS STRING * 20

Alamat AS STRING * 30

Telepon AS LONG

END TYPE

 

Pernyataan yang tertulis di dalam blok statement TYPE .. END TYPE merupakan definisi untuk tiap-tiap variabel dan hanya menentukan jenis dan ukuran variabel. Untuk membentuk variabel record yang akan digunakan untuk menampung data digunakan statement DIM.

 

DIM ContohRec AS JenisData

 

Dengan menggunakan statement TYPE .. END TYPE, maka bentuk umum statement PUT adalah  :

PUT #nomFile [, nomRec], varRecord

 

 

Dimana,

varRecord       : variabel record yang telah didefinisikan dengan statement DIM

 

Contoh Aplikasi 2

 

Pembuatan program yang identik dengan Contoh Aplikasi 1 dengan menggunakan statement TYPE .. END TYPE

 

‘====================================================

‘Program      : RANDOM2.BAS

‘Keterangan   : Contoh penulisan data ke file random

‘====================================================

OPEN “R”, #1, “C:\DATA\TELEPON.DTA”, 57

 

TYPE Data1

Nama AS STRING * 20

Alamat AS STRING * 30

Telepon AS LONG

END TYPE

 

DIM DataNama AS Data1

 

Nm$ = “ “

NoRec = 1

WHILE Nm$ <> ““

CLS

LOCATE 5, 10: PRINT “Nama    : “

LOCATE 6, 10: PRINT “Alamat  : “

LOCATE 7, 10: PRINT “Telepon : “

LOCATE 5, 19: LINE INPUT Nm$

IF Nms = “” THEN END

DataMhs.Nama = Nm$

LOCATE 6, 19: LINE INPUT DataMhs.Alamat

LOCATE 7, 19: LINE INPUT DataMhs.Telepon

PUT #1, NoRec, DataMhs

NoRec = NoRec + 1

WEND

CLOSE

END

 

 

Pembacaan Data

 

Untuk membaca data yang tersimpan di dalam file random, maka gunakan statement GET.

 

GET #nomFile [, nomRec]

Bentuk Umum :

 

 

atau jika record didefinisikan dengan statement TYPE .. END TYPE

GET #nomFile [, nomRec], varRecord

 

 

Contoh-1 :

 

Mengambil data pada posisi record ke-3

 

OPEN “Kartu” FOR RANDOM AS #1 LEN = 22

FIELD #1, 20 AS Nama$, 2 AS Usia

GET #1, 3

END

 

Contoh-2 :

 

TYPE JenisData

Nama AS STRING * 20

Usia AS INTEGER

END TYPE

 

DIM RecData AS JenisData

OPEN “Kartu” FOR RANDOM AS #1 LEN = 22

GET #1, 3, RecData

END

 

Contoh Aplikasi 3

 

Membuat program untuk mencetak record-record yang tersimpan dalam file TELEPON.DTA

 

‘======================================================

‘Program      : RANDOM3.BAS

‘Keterangan   : Contoh pembacaan data dari file random

‘======================================================

OPEN “R”, #1, “C:\DATA\TELEPON.DTA”, 57

FIELD #1, 20 AS Nama$, 30 AS Alamat$, 7 AS Telepon$

 

noRec = 1

CLS

PRINT “NAMA        ALAMAT              TELEPON”

PRINT “—————————————-”

WHILE NOT EOF(1)

GET #1, noRec

Telp& = CVL(Telepon$)

PRINT Nama$, Alamat$, Telp&

noRec = noRec + 1

WEND

CLOSE

END

Contoh Aplikasi 4

 

Membuat program untuk mencetak record-record yang tersimpan dalam file TELEPON.DTA. Pembacaan record menggunakan variabel record yang didefinisikan oleh statement TYPE .. END TYPE.

 

‘======================================================

‘Program      : RANDOM4.BAS

‘Keterangan   : Contoh pembacaan data dari file random

‘======================================================

OPEN “R”, #1, “C:\DATA\TELEPON.DTA”, 57

TYPE Data1

Nama AS STRING * 20

Alamat AS STRING * 30

Telepon AS LONG

END TYPE

 

DIM DataMhs as Data1

 

noRec = 1

CLS

PRINT “NAMA        ALAMAT             TELEPON”

PRINT “—————————————-”

WHILE NOT EOF(1)

GET #1, noRec, DataMhs

PRINT DataMhs.Nama, DataMhs.Alamat, DataMhs.Telepon

noRec = noRec + 1

WEND

CLOSE

END

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: