Algoritma & Pemrograman 1A
12. Organisasi File Random I. PENYISIPAN RECORD •
Akses pada file random dapat dilakukan secara acak. Jadi akses data tidak dilakukan dengan membaca data satu per satu mulai dari record pertaa tapi dilakukan dengan nomor record,
•
Pencarian record data dapat dilakukan dengan pindah dari record terakhir ke reocrd awal atau record lainnya.
Flowchart proses penyimpanan data ke file
start 2 Read Mast1.dat NIM1,NM$, AL1$
/*
END
N=0 3 N= N + 1
Read Mast2.DTA Record ke-N NIM2,NM2$,AL2$
1
Operasi File Random
1
Algoritma & Pemrograman 1A
1
/*
NIMO=NIM 1 NMO = NM 1 ALO = AL 1
/*
Write MAST.DTA NIMO, NMO, ALO
2
3 System flowchar penyisipan record
MAST 1.DTA
MAST2. DTA
Data di MAST1.DTA di tambahkan ke MAST2.DTA dengan ketentuan , jika data MAST1.DTA sudah ada di MAST2.DT maka data tersebut diabaikan atau tidak di simpan ke MAST2..DTA
Akses terhadap file random dapat dilakukan dengan mengunakan nomor record, sehingga dari satu record dapat pindah ke record lainnya tergantung dari nomor record tersebut.
Operasi File Random
2
Algoritma & Pemrograman 1A
II. PENGHAPUSAN RECORD •
Penghapusan dilakukan dengan membentuk file baru. Dimana file baru ini merupakan file berisiskan record dari file lama.
•
Namun record dari file lama tersebut hanya terbatas pada record yang tidak sama dengan data yang akan dihapus.
•
Sedangkan record yang sama dengan data yang akan dihapus diabaikan
•
System flowcart penghapusan record
MASTER.DTA
NEW. DTA
TRANS. DTA •
Record yang dihapus pada file MASTER.DTA ditentukan berdasarkan data yang terdapat di file TRANS. DTA
•
Hasil penghapusan record disimpan di dalam file NEW.DTA . Jadi isi TRANS. DTA merupakan isi MASTER.DTA setelah mengalami penghapusan record.
Struktur record file MASTER.DTA terdiri dari field : •
Nomor induk mahasiswa
•
Nama mahasiswa
•
Alamat mahasiswa
Struktur file TRANS.DTA hanya terdiri dari field Nomor Induk Mahasiswa . Field ini menunjukkan record di MASTER.DTA yang akan di hapus.
Operasi File Random
3
Algoritma & Pemrograman 1A
Flowchart penghapusan record
start N=0 2 N= N+1
Read MASTER.DTA RECORD KE N NIM2, NM2, AL2
/*
END
M=0 3 M= M + 1 READ TRANS .DTA RECORD KE – M NIM 2
/*
3
NIM2= NIM 1
NIMO = NIM1 NMO = NM1 ALO= AL1 Write New. DTA Record ke – M NIMO, NMO, ALO
2
Operasi File Random
4
Algoritma & Pemrograman 1A
III. PERUBAHAN ISI RECORD •
Perubahan record dilakukan dengan mencari record yang akan diubah lalu mengadakan perubahan terhadap isinya.
•
Selanjutnya record tersebut disimpan kembali tanpa mengubah posisi record.
•
Proses pencarian dilakukan dengan membaca record satu persatu mulai dari awal record sampai record terakhir.
•
Setiap record yang dibaca dibandingkan melalui field yang berfungsi sebagai key.
•
System flowchart perubahan record
TRANS . DTA •
INDUK.DTA
File INDUK.DTA dan TRANS.DTA terdiri dari field Nomor Induk Mahasiswa, nama dan alamat
•
Data di INDUK.DTA akan diubah berdasarkan data di TRANS. DTA. Field key yang dipakai adalah nomor induk mahasiswa.
Flowchart perubahan record
1
mulai -
/*
N=0
selesai
3 N=N+1
M=0 4 M = M +1
Read TRANS.DTA Record ke – N NIM1, NM1, AL 1
Operasi File Random
1
Read INDUK.DTA Record ke M NIM2, NM2, AL2
2 5
Algoritma & Pemrograman 1A
2
/*
NIM2= NIM 1
3
4
NIM2=NIM1 AL2 = AL1
Write INDUK.DTA RECORD KE – M NIM2,NM2,AL2
3
IMPLEMENTASI KE PROGRAM BASIC 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
Operasi File Random
6
Algoritma & Pemrograman 1A
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
Operasi File Random
7
Algoritma & Pemrograman 1A
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.
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
Operasi File Random
8
Algoritma & Pemrograman 1A
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)
Operasi File Random
9
Algoritma & Pemrograman 1A
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
Operasi File Random
5
2
3
10
Algoritma & Pemrograman 1A
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
Operasi File Random
11
Algoritma & Pemrograman 1A
‘==================================================== ‘Program ‘Keterangan
: RANDOM1.BAS : 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
Operasi File Random
12