5. Metode Pembacaan file oleh Turbo Pascal
q Menggunakan
statemen operasi READ / READLN
q Bergantung pada
tipe data variabel yang digunakannya :
¨
Variabel berjenis numerik (byte,integer, real)
Ø Tanda batas akhir
pembacaan variabel jika ditemui blank(spasi), EOL (end of line), EOF (End of
File) atau TAB.
Ø Jika sebelum
membaca data (atau dengan kata lain tidak ada datanya) pointer pascal menemukan
EOL / EOF, maka variabel tersebut akan diisi NOL.
Ø Jika string yang
dibaca oleh variabel numerik tidak sah, maka terjadi kesalahan I/O : Invalid numerik format.
¨
Variabel berjenis string
Karakter-karakter
file aakan dibaca sampai ditemui EOL / EOF tercapai atau lebih besar dari
ukuran stringnya.
¨
Variabel berjenis Char
Yang
dibaca hanya satu karakter saja.
q Agar pembacaan
file sesuai dengan yang diharapkan, kadangkala perlu kita deklarasikan secara
jelas jumlah byte yang disediakan untuk suatu variabel, atau mesti kita
selipkan pencetakan spasi diantara dua variabel yang akan dibaca.
q Perlu diperhatikan
kesesuaian tipe data, antara yang dituliskan dengan metode WRITE/WRITELN dan
dengan yang akan kita baca.
File Bertipe
Karakteristik
·
Berisi data format biner, ukurannya lebih kecil dari file teks.
·
Tiap record memiliki tipe dan panjang yang sama. Bisa saja
memiliki berbagai tipe asalkan dikelompokkan dalam RECORD.
·
Dapat diakses secara random, elemen-elemennya bisa dibaca
secara acak yang keberapa saja.
Membuat file Bertipe
Urutan Prosesnya :
1. Mendeklarasikan
variabel file
Var NmVar:FILE OF TypeVariabel;
Dengan
:
NmVar : Nama variabel file bertipe
TypeVariabel : Char, variabel tipe RECORD, variabel
tipe array, real, variabel
array
tipe record. Untuk satu file satu tipe elemen.
Contoh
:
Type
DaftarBarang = Array [1..100] of
integer;
DataKonsumen = RECORD
Nama :string[15];
Alamat :string[30];
Kode :1..3;
DaftarKonsumen = Array [1..100] of Datakonsumen ;
Var
FileBarang : File of Daftarbarang;
FileJumlah : File of integer;
FileData : File of DataKonsumen;
FileKode : File of Char;
2. Menghubungkan
variabel file dengan nama file
Assign (NmVar, nama file);
Dengan
:
NmVar : Nama variabel file bertipe
nama
file : Nama file dalam bentuk
string, format 8:3 penamaan dos, ditulis
dalam
bentuk string.
3. Membuat /membuka
file bertipe
Rewrite(NmVar); => untuk membuat
Reset(NmVar); =>
untuk membuka
4. Menulis / membaca
file Bertipe
Write (NmVar, data item1, data item
2, …) => untuk menulis
Read (NmVar, data item1, data item 2, …) => untuk membaca
Data
item1, data item 2 dan seterusnya, harus berupa variabel, tidak bisa dituliskan
secara langsung dalam bentuk konstanta. Variabelnya harus sama dengan deklarasi
tipe file-nya.
Fungsi
Writeln dan Readln tidak dapat digunakan pada file bertipe.
5. Menutup file
Close (NmVar);
Fungsi-fungsi yang digunakan dalam file Bertipe
Seek (VarFile,N);
Menempatkan
pointer ke posisi record ke-N
Contoh :
Seek(namafile,4);
{pointer akan menunjuk posisi record
ke-4, dengan nomor record 3}
FilePOS (VarFile);
Untuk menunjuk
nomor record (nomor record dimulai dari record 0)
Contoh :
Posisi:=Filepos(Varfile); {mengetahui
posisi pointer aktual di record mana, dan
hasilnya
diletakkan pada variabel posisi}.
Filesize(VarFile);
Mengukur besar file bertipe, yaitu mengetahui
jumlah record yang berada dalam suatu file (jika file baru dibuat = 0)
Contoh :
..
Begin
Write(‘input
nomor record yang ingin dilihat’);readln(NoRec);dec(NoRec)
If
NoRec >=filesize(VarFile) then
Writeln(‘Nomor
record terlalu besar’);
Else
begin
seek(VarFile,NoRec); {Pointer menuju nomor record yang dimaksud}
Read(VarFile,data);
End;
..
end.
EOF(VarFile);
Untuk menunjuk
akhir dari file.
Truncate(VarFile);
Untuk menghapus
sebagian file
Contoh :
Seek(varfile,5); {pointer
menuju record nomor 5}
Truncate(VarFile);
{menghapus
mulai record nomor 5 sampai habis }
Contoh Program
File Bertipe :
Program
menambah_dan_membuat_file_bertipe
Uses crt;
Type mhs = Record
NPM :
string[8];
Nama:
string[25];
Alamat
: string[20];
End;
Var vfilemhs : FILE of mhs;
Recmhs : mhs;
I : integer;
Oke : char;
Begin
Clrscr;
Assign
(vfilemhs,’Dataku.dat’);
{$I-}reset(vfilemhs);{$I+}
if
IOResult <>0 then rewrite(vfilemhs);
I:=filesize(vfilemhs);
With
recmhs do
Begin
Write(‘NPM
:’);readln(NPM);
While
NPM <>’ ‘ do
begin
Write(‘Nama
:’);readln(Nama);
Write(‘Alamat
:’);readln(Alamat);
repeat
Write(‘Save
file…(Y/N)?’);readln(oke);
Until
oke in [‘Y’,’y’,’n’,’N’];
If oke
in [‘Y’,’y’] then
Begin
Seek(vfilemhs,I);
Write(vfilemhs,recmhs);
I:=I+1;
End;
Writeln;
Write(‘NPM:’);readln(NPM);
End;
End;
Close(vfilemhs);
End.
Program_Melihat_file_bertipe
Uses crt;
Type mhs = Record
NPM : string[8];
Nama: string[25];
Alamat :
string[20];
End;
Var vfilemhs: FILE
of mhs;
Recmhs:mhs;
I: integer;
Begin
Clrscr;
Assign(vfilemhs,’dataku.dat’);
Reset(vfilemhs);
Writeln(‘----------------------------------------------------------------------‘);
Writeln(‘No. NPM Nama Alamat ‘);
Writeln(‘----------------------------------------------------------------------‘);
With
recmhs
Begin
For
I:=1 to filesize(vfilemhs) do
Begin
Seek(vfilemhs),I-1);
Read(vfilemhs),recmhs);
Writeln(I:2,’
‘,NPM:8,Nama:25,Alamat:20);
End;
End;
Close(vfilemhs);
End.
File Tidak
Bertipe
Karakteristik
·
File yang mengakses langsung ke media penyimpanan tanpa
adanya pengenalan record dan sebagainya.
·
Digunakan untuk tugas-tugas yang berhubungan dengan file
biner yang dapat diproses tanpa mengenal jenis recordnya.
Membuat file Tidak Bertipe
Urutan Prosesnya :
1. Mendeklarasikan
variabel file
Var NmVar:FILE;
2. Menghubungkan
variabel file dengan nama file
Assign (NmVar, nama file);
Dengan
:
NmVar : Nama variabel file bertipe
nama
file : Nama file dalam bentuk
string, format 8:3 penamaan dos, ditulis
dalam
bentuk string.
3. Membuka file
bertipe
Rewrite(NmVar[,brec]); => untuk membuat
Reset(NmVar[,brec]); =>
untuk membuka
Dengan
:
Brec : Menunjukkan besar file dalam byte,
opsional, boleh ditulis, boleh tidak,
dan
besarnya kita tentukan sendiri. Defaultnya 128 Byte.
4. Menulis / membaca
file tidak Bertipe
Blockwrite (NmVar, Buffer,
jumlah[,jumtulis]) => untuk menulis
Dengan
:
Buffer : daerah penyimpanan data yang akan
ditulis ke dalam file. Buffer dapat
berupa suatu
variabel dengan tipe apa saja sesuai dengan ukuran data yang akan ditulis di file.
Jumlah : jumlah data yang akan ditulis ke file
dalam ukuran byte.
Jumtulis : suatu parameter yang tidak tetap yang boleh
digunakan dan boleh juga
tidak digunakan,
bila digunakan akan berisi jumlah byte yang dapat ditulis ke file.
Read (NmVar, data item1, data item 2, …) => untuk membaca
Dengan
:
Buffer : daerah penyimpanan yang tipe
variabelnya disesuaikan dengan jumlah
data yang dibaca.
Jumlah : jumlah byte yang akan dibaca dari file,
dapat merupakan suatu variabel
dengan tipe word.
Jumlah harus sama dengan besar buffer yang diberikan dan tidak boleh lebih dari
64 Kilobyte.
Jumbaca : merupakan variabel yang berisi laporan
jumlah byte yang dapat dibaca
dari file.
Contoh File tidak
bertipe ::
Program
menyalin_file
Uses crt;
Var
Fileasal,
filetuju :file;
Besar :real;
Buf :array [1..10240] of
char;
Hbaca,
Hatulis :word;
nfile1,nfile2 :string;
Begin
besar:=0;
clrscr;
write
(‘Input nama file asal
:’);readln(nfile1);
write
(‘Input nama file tujuan :’);readln(nfile2);
{$I-}
Assign(fileasal,nfile1);
Assign(filetuju,nfile2);
Reset(fileasal,1);
If
IOResult <>0 then
Begin
Writeln(‘File
asal tidak ada !’);
Halt(0);
End;
Rewrite(filetuju,1);
If
IOResult <>0 then
Begin
Writeln(‘File
tujuan tidak bisa dibuat !’);
Halt(0);
End;
{$I+}
Repeat
Blockread(fileasal,buf,10240,hbaca);
Besar:=besar
+ hbaca;
Blockwrite(filetuju,buf,hbaca,htulis);
If hbaca <> htulis then
Begin
Writeln(‘Tujuan
tidak bisa menampung besar file’);
Halt(0);
End;
Until
hbaca <>10240;
Close
(fileasal);
Close
(filetuju);
Writeln
(‘Besar file yang dipindahkan :‘,besar:10:0);
End.
Menangani
Kesalahan I/O pada File
Beberapa operasi
pada file yang dapat mengalami kesalahan I/O :
Reset, rewrite,
read, readln, write, writeln, close, append, seek
Agar program tidak
berhenti, maka harus digunakan Compiler Directive Fungsi I/O result
Untuk pengecekan
I/O file tersebut.
Bentuk Umum :
{$ Kode Kondisi}
Dengan :
·
Kode :
Karakter kode, untuk fungsi I/O result adalah I.
·
Kondisi :
OFF (-) / ON (+)
·
Secara default {$I+} => ON
·
I/O Result => bernilai
0 jika operasi berhasil
·
Isi nilai selalu dihapus sendiri setiap kali dipanggil
·
Penulisannya mengapit operasi-operasi yang rentan kesalahan
Contoh :
…
Assign(VarFile,
‘data.dat’);
{$I-}
Reset(VarFile);
{$I+}
fileada :=
IOResult = 0;
if fileada then
begin
writeln(‘file
sudah ada…’);
…
end
else {
Kondisi bila file tidak ada }
begin
rewrite(VarFile);
{ Buat file baru
}
…
write
(VarFile, var1, var2, …);
…
close(VarFile);
end;
…
Referensi :
1. Anonim, “Algoritma & Pemrograman II”,
Penerbit Gunadarma, Jakarta, 1990
2. Bryon,
Goffried, “Programming with PASCAL”,
Schaum Series, New York, 1986
3. Prather, Ronald E., “Problem Solving Principle : Programming with Pascal”,
Prentice Hall, New Jersey, 1982
4. Dumairy, Matematika Terapan untuk Bisnis &
Ekonomi Press (BPFE Yogyakarta)
5. Yogianto H.M, Turbo Pascal 5.0 Penerbit Andi Offset,
Yogyakarta.
6. Ediman Lukito, Belajar Sendiri Pemrograman dengan Turbo Pascal 7.0
7. Ir. P. Insap Santosa, Turbo Pascal versi 5.0 dan 5.5,
Elexmedia Komputindo
Tidak ada komentar:
Posting Komentar