basic_filing.doc (823kb)

23
Oleh : Bambang Wahyudi, Skom., MMSI A. PENGANTAR Di depan, telah kita bahas pemrograman BASIC yang nilai datanya tidak disimpan ke dalam media penyimpanan sekunder seperti disket, hard disk, dan sebagainya. Selanjutnya, pokok bahasan yang akan kita bahas adalah tentang berkas (file) yang berisi nilai data yang akan disimpan ke dalam suatu media penyimpan sekunder. Data yang disimpan tersebut sewaktu-waktu dapat kita ambil dan proses, juga dapat kita lakukan pengeditan, penambahan, dan penghapusan terhadapnya. B. FILE Jika kita melakukan perintah DIR di dalam sistem operasi DOS, maka akan tampak sederetan file name. Ada banyak jenis file di komputer, seperti program file, image file, document file, history fule, dam sebagainya. File yang akan kita bahas di sini adalah data file (selanjutnya disebut file saja). Ukuran data di komputer dari kecil ke besar untuk membentuk sebuah file adalah bit, byte, field, record, dan file. Jadi, file adalah sekumpulan record, atau sedikitnya berisi satu record. Sebagai gambaran, jika sebuah file dikatakan sebagai sebuah tabel, maka baris pada tabel dikatakan sebagai record, dan kolomnya sebagai field.. Jika kita punya tabel Daftar Anggota Kelas yang berisi NPM, NAMA, ALAMAT, TGL_LAHIR, dan NO_TELP yang telah terisi data dari 80 orang, maka dapat dikatakan bahwa file kita terdiri atas 80 record, dan setiap record berisi 5 field.. Setiap field di komputer harus ditentukan panjang dan jenisnya, misalkan untuk field NAMA, kita tentukan panjang maksimalnya 25 huruf atau karakter atau byte (di BASIC dikatakan sebagai data berjenis string). Jika kita kembali ke bahasan sebelumnya, maka sebuah field tak ubahnya seperti sebuah variabel yang lebih spesifik, karena harus ditentukan panjang nilai datanya. 73

Upload: dotuong

Post on 12-Jan-2017

233 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: basic_filing.doc (823Kb)

Oleh : Bambang Wahyudi, Skom., MMSI

A. PENGANTAR

Di depan, telah kita bahas pemrograman BASIC yang nilai datanya tidak disimpan ke dalam media penyimpanan sekunder seperti disket, hard disk, dan sebagainya. Selanjutnya, pokok bahasan yang akan kita bahas adalah tentang berkas (file) yang berisi nilai data yang akan disimpan ke dalam suatu media penyimpan sekunder.

Data yang disimpan tersebut sewaktu-waktu dapat kita ambil dan proses, juga dapat kita lakukan pengeditan, penambahan, dan penghapusan terhadapnya.

B. FILE

Jika kita melakukan perintah DIR di dalam sistem operasi DOS, maka akan tampak sederetan file name. Ada banyak jenis file di komputer, seperti program file, image file, document file, history fule, dam sebagainya. File yang akan kita bahas di sini adalah data file (selanjutnya disebut file saja).

Ukuran data di komputer dari kecil ke besar untuk membentuk sebuah file adalah bit, byte, field, record, dan file. Jadi, file adalah sekumpulan record, atau sedikitnya berisi satu record. Sebagai gambaran, jika sebuah file dikatakan sebagai sebuah tabel, maka baris pada tabel dikatakan sebagai record, dan kolomnya sebagai field..

Jika kita punya tabel Daftar Anggota Kelas yang berisi NPM, NAMA, ALAMAT, TGL_LAHIR, dan NO_TELP yang telah terisi data dari 80 orang, maka dapat dikatakan bahwa file kita terdiri atas 80 record, dan setiap record berisi 5 field.. Setiap field di komputer harus ditentukan panjang dan jenisnya, misalkan untuk field NAMA, kita tentukan panjang maksimalnya 25 huruf atau karakter atau byte (di BASIC dikatakan sebagai data berjenis string). Jika kita kembali ke bahasan sebelumnya, maka sebuah field tak ubahnya seperti sebuah variabel yang lebih spesifik, karena harus ditentukan panjang nilai datanya.

C. ORGANISASI dan AKSES FILE

Di dalam teori, ada empat jenis organisiasi file yaitu (1) sequential, (2) relative, (3) index sequential, dan (4) multi key. Sedangkan untuk mengaksesnya, ada dua jenis pengaksesan, yakni (1) sequential, dan (2) direct.

Dari keempat jenis organisasi file secara umum, di BASIC ini hanya ada dua jenis organisasi file, yakni (1) sequential, dan (2) random. Organisasi file random di BASIC

73

Page 2: basic_filing.doc (823Kb)

setara dengan istilah organisasi file relative. Metode pengaksesan di BASIC dapat dilakukan dengan dua cara, yakni sequential, dan random. Pengaksesan random di BASIC, setara dengan istilah metode akses direct.

Gambar 8.1. Elemen-elemen Sebuah File

Untuk lebih mempermudah pengertiannya, pengorganisasian file adalah penyusunan record-record yang disimpan (ditulis) ke dalam file, dan pengaksesan adalah pengambilan (pembacaan) record-record dari dalam file untuk diolah.

Organisasi File : Sequential

Jika file dikatakan sebagai sebuah tabel, maka organisasi file sequential adalah kita membentuk tabel dengan mengisi setiap baris tabel yang dimulai dari baris teratas (nomor 1) berurut ke baris-baris berikutnya (di bawahnya).

Gambar 8.2. Lambang Sequential Data di Flowchart

74

Page 3: basic_filing.doc (823Kb)

Organisasi File : Random

Jika file dikatakan sebagai sebuah tabel, maka organisasi file random adalah kita membentuk tabel dengan mengisi setiap baris tabel yang dimulai dari baris berapapun yang kita kehendaki dan selanjutnya kita bebas pula mau mengisi baris-baris berikutnya di nomor baris berapa saja.

Hal yang perlu diperhatikan bahwa jangan sampai terjadi collision, yaitu benturan pengunaan nomor baris yang sama untuk pengisian data yang berbeda. Di dalam teori pengalamatan (addressing), maka hal semacam ini disebut dengan pengalamatan mutlak, artinya, programmer bebas menentukan di (alamat) mana saja sebuah record akan disimpan ke dalam memori komputer.

Pengorganisasian file secara random ini tidak efektif jika kita menggunakan media penyimpanan magnetic tape (contoh : kaset) karena sifat dari kaset adalah sequential, baik untuk pengorganisasian datanya, maupun pengaksesannya. Namun, karena biasanya kita menggunakan floppy disk (disket) atau hard disk untuk menyimpan file, maka organisasi file random ini bisa dilakukan secara efektif

Gambar 8.3. Lambang Random/ Direct Data di Flowchart

Pengaksesan Secara Sequential

Pengaksesan atau pengolahan atau pemrosesan data yang dilakukan secara sequential adalah dengan melakukan akses yang dimulai dari baris teratas dari sebuah tabel dan selanjutnya berurut ke baris-baris berikutnya (di bawahnya). Jadi, jika kita akan mencari suatu record dan kebetulan record tersebut ada di nomor 10, maka, mau tidak mau record nomor 1 hingga nomor 9 harus kita lalui terlebih dulu.

Ibarat kita akan mendengarkan lagu kelima dari sebuah kaset baru, maka mau tidak mau lagu pertama hingga keempat harus kita lalui terlebih dulu (baik didengar maupun tidak). Organasnisasi file, baik secara sequential maupun random di BASIC bisa diakses secara sequential.

Pengaksesan Secara Random

Pengaksesan atau pengolahan atau pemrosesan data yang dilakukan secara random adalah dengan melakukan akses yang dimulai dari baris berapa saja dari sebuah tabel dan selanjutnya terserah ke baris-baris mana saja untuk akses berikutnya.

Ibarat kita akan mendengarkan lagu kelima dari sebuah compact disc (CD), maka kita dapat langsung (direct) menuju ke lagu tersebut tanpa harus melalui lagu-lagu sebelumnya, dan selanjutnya kita juga bisa mendengarkan lagu keberapapun sesuai

75

Page 4: basic_filing.doc (823Kb)

keinginan kita. Pengorganisasian secara sequential tidak dapat diakses secara random.

D. MEMBENTUK FILE SEQUENTIAL di BASIC

Mari kita coba langsung membuat file sequential. Data yang akan kita simpan ke dalam file dengan nama TEMAN.DAT terdiri atas fields : NAMA, ALAMAT, dan NOTELP.

Contoh Program Menulis Data ke Dalam File:

‘ Latihan membuat file data CLS OPEN “C:\TEMAN.DAT” FOR OUTPUT AS #1 INPUT “Nama Teman : “; nama$40 INPUT “Alamatnya : “; alamat$ INPUT “No. Telpon : “; notelp$ WRITE #1, nama$, alamat$, notelp$ INPUT “Masih ada data yang akan diisi lagi “; y$ IF UCASE$(Y$) = “Y” THEN 40 CLOSE #1

Catatan :

1. OPEN “C:\TEMAN.DAT” adalah perintah untuk menyiapkan file yang namanya TEMAN.DAT. File TEMAN.DAT tersebut akan disimpan di directory atau folder C:\.

2. FOR OUTPUT menyatakan bahwa file tersebut digunakan untuk menyimpan data (output file).

3. AS menyatakan bahwa file tersebut selanjutnya akan kita sebut (alias) sebagai file ke … (yang ditunjukkan di belakang tanda #-nya).

4. WRITE adalah perintah untuk menulis (menyimpan) data ke file.5. CLOSE untuk menutup file.6. # adalah untuk menyatakan nomor (identitas) file yang sedang dibuka

(dalam hal ini identitasnya adalah 1). # nomor identitas di perintah OPEN harus sama dengan # nomor identitas di perintah WRITE, dan CLOSE.

Data yang sudah kita simpan, dapat kita lihat melalui perintah TYPE di prompt DOS. Akan tampak bahwa setiap field yang kita simpan akan dipisahkan dengan tanda koma, dan nilai data string akan diapit oleh tanda kutip ganda.

C:>TYPE TEMAN.DAT

76

Page 5: basic_filing.doc (823Kb)

E. MENGAKSES FILE SEQUENTIAL di BASIC

Mengakses bisa terdiri atas menampilkan data, merehabilitasi data (menambah, menghapus, dan mengubah data), dan mengolah (memroses) data.

Menampilkan DataMenampilkan data dilakukan untuk melihat, mengecek, atau mengontrol data

yang sudah kita masukkan ke dalam file. Istilah lain yang digunakan untuk menampilkan data adalah listing data, baik ke monitor maupun ke printer.

Contoh Program Menampilkan Data yang Sudah Disimpan di Atas

‘ Latihan menampilkan file data (1) CLS OPEN “C:\TEMAN.DAT” FOR INPUT AS #1 DO WHILE NOT EOF(1) LINE INPUT #1, rec$ PRINT rec$ LOOP CLOSE #1

Catatan :

1. FOR INPUT menyatakan bahwa file tersebut digunakan untuk memberikan data (sebagai input file);

2. DO WHILE NOT EOF(1) dapat dibaca dengan “lakukan proses berikut ini (antara DO dan LOOP) selama isi (record) file dengan nomor identitas 1 belum habis (end of file)”;

3. LINE INPUT # adalah perintah untuk menampung satu record data ke dalam sebuah variabel (dalam hal ini nama variabelnya adalah rec$).

‘ Latihan menampilkan file data (2) CLS OPEN “C:\TEMAN.DAT” FOR INPUT AS #1 DO WHILE NOT EOF(1) INPUT #1, nm$, al$, tlp$ PRINT nm$; al$; tlp$

77

Page 6: basic_filing.doc (823Kb)

LOOP CLOSE #1

Catatan :

INPUT # untuk menyimpan setiap field yang ada di file ke dalam variabel (nama field atau variabel boleh berbeda antara ketika kita menyimpan data dan ketika membacanya, tetapi harus sama jenisnya).

Menambah Record ke Dalam File

Cara kerja untuk menambahkan record ke dalam file sama dengan untuk memasukkan data, hanya perintah OUTPUT diganti menjadi APPEND.

OPEN “C:\TEMAN.DAT” FOR APPEND AS #1

Menghapus Record di Dalam File

Menghapus record di dalam file sequential tak ubahnya seperti menghapus sebuah lagu di dalam kaset. Bagaimana agar tidak ada elemen data hampa (lagu yang kosong/ blank) ?. Tentunya kita membutuhkan kaset kedua untuk menampung lagu-lagu yang tidak dihapus. Dengan demikian, kita membutuhkan file baru untuk menampung records yang tidak dihapus.

Gambar 8.4. Teknik Menghapus Record di Organisasi File Sequential

78

Page 7: basic_filing.doc (823Kb)

Program Menghapus Satu Record di Dalam File

‘ Program latihan menghapus record OPEN “C:\TEMAN.DAT” FOR INPUT AS #1 OPEN “C:\TEMAN2.DAT” FOR OUTPUT AS #2 INPUT “Nama yang akan dihapus : “; nama$ DO WHILE NOT EOF(1) INPUT #1, nm$, al$, tlp$ IF nama$ <> nm$ THEN WRITE #2, nm$, al$, tlp$ LOOP CLOSE

Program di atas menggunakan dua file (AS #1 dan AS #2), dan program tersebut digunakan untuk menghapus satu record. File TEMAN2.DAT adalah file terbaru hasil dari penghapusan sebuah record di file TEMAN.DAT.

Perintah CLOSE di program di atas (yang tanpa #) adalah untuk menutup semua file yang sedang dibuka, boleh saja ditulis CLOSE #1: CLOSE #2.

Jika kita akan menghapus record lagi, maka file TEMAN2.DAT yang harus dibuka sebagai input. Sangat tidak efisien. Karenanya, biasanya programmer BASIC tidak akan melakukan penghapusan secara fisik, melainkan hanya secara logika, yaitu dengan memberi tanda record yang akan dihapus.

Jadi, ketika merancang data, disediakan satu field yang akan digunakan sebagai tanda, misalkan field dengan nama TANDA$. Ketika dilakukan penghapusan, field tersebut diisi suatu karakter, misalkan “*” yang menandakan bahwa record tersebut dihapus, dan ketika dilakukan proses, maka field TANDA$ tersebut dijadikan kondisi yang tidak perlu diproses.

IF TANDA$ <> “*” THEN {proses} ELSE {lewati}

Mengubah Isi Field atau Record

Sama dengan menghapus, mengubah data juga memerlukan file penampung baru (kedua). Satu file (yang akan diubah) digunakan sebagai input, dan file kedua digunakan sebagai output.

Problemnya sama dengan penghapusan, prosedurnya sangat tidak efisien. Karena data BASIC merupakan text file under DOS, maka perubahan data bisa dilakukan dengan EDIT.COM, atau WordStar non document.

79

Page 8: basic_filing.doc (823Kb)

Gambar 8.5. Teknik Mengubah Nilai Data di Organisasi File Sequential

Program Mengubah Isi Field atau Record

‘ Program latihan mengubah isi field atau record OPEN “C:\TEMAN2.DAT” FOR INPUT AS #1 OPEN “C:\TEMAN.DAT” FOR OUTPUT AS #2 INPUT “Nama yang akan diubah : “; nama$ DO WHILE NOT EOF(1) INPUT #1, nm$, al$, tlp$ IF nama$ <> nm$ THEN WRITE #2, nm$, al$, tlp$ INPUT “Nama : “; nm$ INPUT “Alamat : “; al$ INPUT “No. Telpon : “; tlp$ WRITE #2, nm$, al$, tlp$ LOOP CLOSE

Memroses Data

Berikut, contoh sederhana dalam memroses data string, yaitu akan ditampilkan data yang nilai data field NAMAnya didahului dengan huruf “R”.

Program Menampilkan Data yang Namanya Dimulai dengan Huruf “R”

‘ Latihan memroses file data

80

Page 9: basic_filing.doc (823Kb)

CLS OPEN “C:\TEMAN2.DAT” FOR INPUT AS #1PRINT “Biodata Teman yang Namanya dimulai Dengan Huruf ‘R’”nom = 1PRINT DO WHILE NOT EOF(1) INPUT #1, nm$, al$, tlp$ IF UCASE$(LEFT$(nm$,1)) = “R” THEN PRINT nom; nm$; al$; tlp$ nom = nom + 1 END IF LOOP CLOSE #1

F. MEMBENTUK FILE RANDOM di BASIC

File random di BASIC adalah file yang pada OPENnya bisa digunakan untuk menulis maupun membaca sekaligus. Untuk menulis digunakan perintah PUT, sedangkan untuk membaca digunakan perintah GET. Setiap field (atribut) harus ditentukan panjangnya.

Untuk lebih jelasnya, langsung saja kita lihat contoh penulisan programnya untuk data yang sama dengan orgranisasi file sequential di atas.

‘Latihan Membuat File RandomCLS TYPE DataTeman nama AS STRING * 25 alamat AS STRING * 40 notelp AS STRING * 7END TYPE DIM simpan AS DataTeman OPEN "TEMAN.DAT" FOR RANDOM AS #1 LEN = LEN(simpan) FOR i = 1 TO 10

INPUT "Nama : "; simpan.nama INPUT "Alamat : "; simpan.alamat INPUT "No.Telp : "; simpan.notelp PUT #1, i, simpan

81

Page 10: basic_filing.doc (823Kb)

NEXT CLOSE #1

Catatan :

1. TYPE dapat dikatakan sebagai pendeklarasian sebuah record, yang setiap fieldnya didefinisikan jenisnya (berada di antara TYPE dan END TYPE).

2. AS STRING * n adalah pendefinisian sebuah field yang dinyatakan sebagai string dan panjangnya n karakter. Jenis lainnya adalah : integer, long, single, dan double (lihat jenis-jenis variabel numerik).

3. DIM x AS y adalah mendefinisikan sebuah variabel x sebagai variabel dari nama record, yang setiap fieldnya sudah didefinisikan di TYPE y.

4. LEN adalah jumlah byte (karakter) yang dibutuhkan untuk sebuah record. Biar tidak perlu menghitung, digunakan LEN = LEN(x).

5. Simpan.npm dan sejenisnya adalah pembentukan nama variabel yang merupakan bagian dari record (akan menjadi nama field).

6. PUT #n,m, adalah perintah untuk menulis (merekam) data dari buffer memori utama komputer ke file. n adalah identifikasi file yang sedang dibuka, m adalah nomor record (address) yang akan digunakan untuk menyimpan record data. Hindari collision (benturan) penggunaan nomor record yang sama untuk record data yang berbeda.

Buffer memory adalah tempat menampung data sementara, baik yang akan masuk ke memori utama untuk diolah (setelah kita mengetikkan data melalui keyboard), maupun yang keluar dari memori utama untuk direkam ke memori sekunder (misalkan disket).

Printer juga memiliki buffer yaitu tempat menampung data yang datang dari komputer untuk selanjutnya dicetak. Karenanya, sering kita alami bahwa komputer sudah mengirim seluruh datanya, dan dapat dipergunakan untuk hal-hal lainnya, tetapi printer belum selesai melakukan tugas mencetaknya, itu karena masih ada data yang belum mendapat giliran dicetak di dalam buffer printernya.

F. MENGAKSES FILE RANDOM di BASIC

Keuntungan mengakses data melalui akses random adalah kita bisa langsung menuju ke record yang akan kita akses tanpa harus melalui record-record sebelumnya sebagaimana harus dilakukan untuk akses secara sequential. Namun demikian, organisasi file random dapat juga diakses secara sequential (berurut dari record pertama ke record-record sesudahnya). Bila diilustrasikan, kita juga dapat mendengar lagu yang direkam di CD secara berurut dari awal hingga akhir.

Kesulitannya, jika kita akan mengakses secara langsung (direct) ke record tertentu, maka kita harus tahu nomor recordya (ilustrasi : bila kita akan mendengarkan lagu tertentu di CD, maka kita harus tahu judulnya, lalu kita lihat daftar isinya, baru kita pilih lagu itu).

82

Page 11: basic_filing.doc (823Kb)

Pada contoh program memasukkan data random di atas, di sana digunakan nilai i dari perintah FOR-NEXT sebagai nomor recordnya. Mungkin kita bisa hafal siapa-siapa saja yang menempati nomor record 1 sampai 10 tersebut, tapi, jika jumlah datanya sudah ratusan atau ribuan, bisakah kita menghafalnya ?.

Inilah pentingnya manipulasi terhadap nilai m ketika kita akan melakukan proses perekaman data PUT #n, m. Berdasarkan teori, m tersebut akan diaplikasikan sebagai key field (kunci field).

Misalkan kunci field seorang mahasiswa ada pada nomor pokok mahasiswa (NPM)nya, maka kita harus memanipulasi angka-angka dari NPM tersebut agar kita bisa tahu bahwa NPM tertentu ada di nomor record sekian. Bagaimana jika nomor NPM dijadikan m saja ?. Bisa saja, tapi terjadi pemborosan karena nomor record (address) 1 hingga sekian juta menjadi kosong (misalkan NPM terkecil adalah 10000001, maka nomor record 1 hingga 10000000 akan kosong). Pembahasan hal ini selengkapnya ada di buku-buku yang bertemakan “file and access.”

Menampilkan Data

Berikut contoh program untuk menampilkan data yang telah kita masukkan tadi (program 1), dan untuk menampilkan record nomor 5 saja (program 2).

‘Latihan Menampilkan Data yang Sudah Dimasukkan (1)CLS TYPE Temanku nama AS STRING * 25 nama AS STRING * 40 notelp AS STRING * 7END TYPE DIM ambil AS Temanku OPEN "TEMAN.DAT" FOR RANDOM AS #1 LEN = LEN(ambil) FOR i = 1 TO 10

GET #1, i, ambil PRINT "Nama :", ambil.nama PRINT "Alamat :", ambil.alamat PRINT "No.Telp:", ambil.notelp

NEXT CLOSE #1

‘ Latihan Menampilkan Data yang Sudah Dimasukkan (2)83

Page 12: basic_filing.doc (823Kb)

CLS TYPE Temanku nama AS STRING * 25 alamat AS STRING * 40 notelp AS STRING * 7END TYPE DIM ambil AS Temanku OPEN "TEMAN.DAT" FOR RANDOM AS #1 LEN = LEN(ambil) INPUT “Nomor Record yang Akan Ditampilkan : “; nr

GET #1, nr, ambil PRINT "Nama :", ambil.nama PRINT "Alamat :", ambil.alamat PRINT "No.Telp:", ambil.notelp CLOSE #1

Catatan :

1. Nama variabel boleh sama, dan boleh berbeda ketika menulis data dan membaca data, tetapi jenis dan panjang nilai datanya harus sama.

2. GET #n,m, adalah perintah untuk mengambil (menyalin) data dari file (nomor record m) dan menyimpannya di buffer memori utama komputer.

Menambah Record ke Dalam File

Pada prinsipnya, menambah record data adalah sama dengan menulis (memasukkan) record data. Pada akses file random ini, menambah record data juga dilakukan seperti ketika memasukkan record data, hanya harus diperhatikan record ke m-nya (pada PUT #n, m,) ketika akan melakukan penulisan data agar tidak menindih data sebelumnya.

‘ Latihan Menambah Record di File RandomCLS TYPE DataTeman nama AS STRING * 25 alamat AS STRING * 40 notelp AS STRING * 7END TYPE DIM simpan AS DataTeman

84

Page 13: basic_filing.doc (823Kb)

OPEN "TEMAN.DAT" FOR RANDOM AS #1 LEN = LEN(simpan) FOR i = 11 TO 15

INPUT "Nama : "; simpan.nama INPUT "Alamat : "; simpan.alamat INPUT "No.Telp : "; simpan.notelp PUT #1, i, simpan

NEXT CLOSE #1

Catatan : Karena record sebelumya (yang suda ada) 1 sampai 10, maka pada program penambahan record ini dilakukan dari 11 sampai 15 (penambahan 5 record baru).

Menghapus Record di Dalam File

BASIC tidak menyediakan perintah DELETE RECORD. Meskipun pada akses file random ini kita bisa langsung menuju ke nomor record yang dituju, tetapi penghapusan record yang bisa kita lakukan paling-paling hanya membuat record tersebut kosong (blank).

Penghapusan record di file random ini juga sebaiknya dilakukan secara logika semata, semagaimana yang dilakukan di file sequential, yaitu dengan menambahkan sebuah field yang digunakan sebagai tanda bahwa record tersebut sudah dihapus. Penggunaan field tanda tersebut bisa menguntungkan, karena jika sewaktu-waktu record tersebut akan dipergunakan lagi, maka kita tinggal ubah status di field tanda tersebut.

Mengubah Isi Field atau Record

Organisasi file random akan lebih mudah dilakukan pengubahan data ketimbang organisasi file sequential. Selain record yang akan diubah dapat langsung dituju tanpa melalui record-record sebelumnya, juga perintah OPEN-RANDOM dapat digunakan untuk membaca maupun menulis data sekaligus.

Pada intinya, mengubah isi record di file random sama saja dengan menulis record data baru yang disimpan di nomor record yang akan diubah.

Program Mengubah Data di File Random

85

Page 14: basic_filing.doc (823Kb)

‘ Program untuk mengubah isi record di file random CLS TYPE DataTeman nama AS STRING * 25 alamat AS STRING * 40 notelp AS STRING * 7 END TYPE DIM simpan AS DataTeman OPEN "TEMAN.DAT" FOR RANDOM AS #1 LEN = LEN(simpan) 10 INPUT "nomor record yang akan diubah : "; norek GET #1, norek, simpan PRINT “Nama : “; simpan.nama PRINT "Alamat : "; simpan.alamat PRINT "No.Telp : "; simpan.notelp PRINT INPUT “Benar data itu yang akan diubah “; y$ IF UCASE$(y$) = “Y” THEN 20 ELSE 3020 INPUT “Nama : “; simpan.nama INPUT "Alamat : "; simpan.alamat INPUT "No.Telp : "; simpan.notelp PUT #1, norek, simpan

30 INPUT “Mau mengubah lagi “; ulangi$ IF UCASE$(ulangi$) = “Y” THEN 10 ELSE 40 40 CLOSE #1

Saran

Untuk dapat memastikan panjang dari sebuah record (terutama untuk organisasi file random), maka digunakanlah variabel string untuk setiap field yang diperlukan, termasuk untuk nilai data numerik. Berikut konversi dari variabel numerik ke variabel string (ketika akan memasukkan data) dan sebaliknya, dari variabel string ke variabel numerik (ketika akan mengolah data atau mengembalikan ke bentuk numerik semula).

Tabel 8.1. Konversi Nilai Data Antarfield Numerik dan String

86

Page 15: basic_filing.doc (823Kb)

No.

Perintah Guna

1. MKI$ mengkonversi dari variabel numerik integer ke string

2. MKD$ mengkonversi dari variabel numerik double precision ke string

3. MKS$ mengkonversi dari variabel numerik single precision ke string

4. MKL$ mengkonversi dari variabel numerik long integer ke string

5. CVI mengkonversi dari variabel string ke numerik integer

6. CVD mengkonversi dari variabel string ke numeric double precision

7. CVS mengkonversi dari variabel string ke numerik single precision

8. CVL mengkonversi dari variabel string ke numerik long integer

Contoh :

‘ Latihan membuat konvrsi variabel numerik ke string dan sebaliknya ‘ Memasukkan data CLS OPEN “C:\TEMAN.DAT” FOR OUTPUT AS #1 INPUT “Nama Pegawai : “; nama$40 INPUT “Gaji Pokok : “; gapok& INPUT “Tunjangan : “; tunjang& gp$ = MKL$(gapok&) tj$ = MKL$(tunjang&) WRITE #1, nama$, gp$, tj$ INPUT “Masih ada data yang akan diisi lagi “; y$ IF UCASE$(Y$) = “Y” THEN 40

CLOSE #1 ‘ Menampilkan data) CLS OPEN “C:\TEMAN.DAT” FOR INPUT AS #1 DO WHILE NOT EOF(1)

87

Page 16: basic_filing.doc (823Kb)

INPUT #1, nm$, gap$, tuj$ Gapok& = CVL(gap$) Tunj& = CVL(tuj$) PRINT “Nama Pegawai : “; nm$ PRINT “Gaji Total : “; gapok&+tunj& LOOP CLOSE #1

Di organisasi file random, kita juga bisa membuka file dengan membaca tiap field (tidak per record pada contoh-contoh sebelum ini), tapi syaratnya, semua field telah disimpan secara string, karena dibacanya juga secara string.

Contoh :

OPEN “FILEDAT.DAT” FOR RANDOM AS #1 LEN = 80FIELD #1, 30 AS NAMA$, 50 AS ALAMAT$NOREK = 1DO WHILE NOT EOF(1) GET #1, NOREK PRINT NAMA$; ALAMAT$ NOREK = NOREK+1LOOPCLOSE

Pemilihan pengorganisasian file secara sequential atau random, patut mempertimbangkan faktor hit ratio. Hit ratio adalah perhitungan pembagian antara jumlah record yang akan diakses dengan jumlah record keseluruhan yang ada dalam sebuah file.

Jumlah record yang akan diaksesHit ratio = ----------------------------------------- Jumlah record keseluruhan

Semakin tinggi nilai hit ratio, maka semakin baik file sequential dipilih untuk digunakan.

H. CONTOH MASALAH88

Page 17: basic_filing.doc (823Kb)

Di dalam file sequential “NILAI.DAT” sudah terisi 50 record yang terdiri atas fields : NPM$, NAMA$, NILAI1$, NILAI2$, NILAI3$, SKS1$, SKS2$, dan SKS3$. Akan dihitung perolehan Indeks Prestasi Komulatif (IPK) seluruh record. (Hit ratio = 1).

Hasil pengolahan akan dicetak ke printer berupa tabel yang setiap halamannya teridiri atas 25 records. Di halaman terakhir juga ada perhitungan IPK rata-ratanya.

‘ Program menghitung IPKCLSHAL = 1NOM = 1BRS = 1JUDUL = “Y”SKSALL = 0MUTUALL = 0OPEN “NILAI.DAT” FOR INPUT AS #1DO WHILE NOT EOF(1) IF JUDUL = ”Y” THEN

LPRINT “ DAFTAR IPK MAHASISWA”LPRINT “ Hal. “;halLPRINT “---------------------------------------------------------------------------------“LPRINT “ No | NPM | NAMA MAHASISWA | IPK “LPRINT “---------------------------------------------------------------------------------“JUDUL = “T” : ‘ Non aktifkan judul

END IF INPUT #1, NPM$, NAMA$, NILAI1$, NILAI2$, NILAI3$, SKS1$, SKS2$, SKS3$ TMUT = 0 TSKS = 0 SELECT CASE NILAI1$ CASE IS = “A” MUTU = 4 * VAL(SKS1$) CASE “B” MUTU = 3 * VAL(SKS1$) CASE “C” MUTU = 2 * VAL(SKS1$) CASE “D”

MUTU = VAL(SKS1$) CASE “E”

89

Page 18: basic_filing.doc (823Kb)

MUTU = 0 END SELECT TMUT = TMUT + MUTU TSKS = TSKS + SKS SKSALL = SKSALL + TSKS MUTUALL = MUTUALL + TMUT SELECT CASE NILAI2$

CASE IS = “A” MUTU = 4 * VAL(SKS2$) CASE “B” MUTU = 3 * VAL(SKS2$) CASE “C” MUTU = 2 * VAL(SKS2$) CASE “D”

MUTU = VAL(SKS2$) CASE “D”

MUTU = 0END SELECTTMUT = TMUT + MUTUTSKS = TSKS + SKS

SKSALL = SKSALL + TSKS MUTUALL = MUTUALL + TMUT

SELECT CASE NILAI3$ CASE IS = “A” MUTU = 4 * VAL(SKS3$) CASE “B” MUTU = 3 * VAL(SKS3$) CASE “C” MUTU = 2 * VAL(SKS3$)

CASE “D”MUTU = VAL(SKS3$)

CASE “D”MUTU = 0

END SELECTTMUT = TMUT + MUTUTSKS = TSKS + SKSIPK = TMUT/TSKS

90

Page 19: basic_filing.doc (823Kb)

SKSALL = SKSALL + TSKSMUTUALL = MUTUALL + TMUTLPRINT str$(nom,2);”. | ”+npm$+” | “;nama$;” | “;USING “#.##”; ipkBRS = BRS + 1IF BRS > 25 THEN : ‘ Jika jumlah baris melebihi 25

BRS = 1 : ‘ Hitungan baris dimulai dari 1 lagiJUDUL = “Y” : ‘ Aktifkan judulHAL = HAL + 1 : ‘ Halaman bertambah 1

LPRINT “---------------------------------------------------------------------------------“ LOCATE 0,0 : ‘ untuk ganti halamanEND IFLOOPLPRINT LPRINT “IPK RATA-RATA = “;USING “#.##”; MUTUALL/SKSALLCLOSE

LATIHAN MEMBUAT PROGRAM

Masukkanlah biodata teman sekelas yang terdiri atas fields : NAMA$, TPTLHR$, TGLHR$, ALAMAT$, KDPOS$, dan NOTELP$ secara sequential. TPTLHR$ adalah tempat (kota) kelahiran, dan TGLHR$ adalah tanggal lahir yang format isiannya : tgl/ bl/th. (tgl., bl., dan th., masing-masing berisi dua karakter angka).

1. Lakukanlah kegiatan untuk mengubah, menghapus, dan menambah record data.

2. Lakukanlah pensortiran (pengurutan) data berdasarkan NAMA$ secara ascending.

3. Cetaklah file tersebut dan menjabarkan bulan kelahiran (dari dua karakter angka) menjadi sebutuan lengkap. Misalkan 08 = “Agustus.” Setiap halaman, maksimal berisi 15 record.

Lakukan hal yang sama untuk oganisasi file random.

91