File adalah
kumpulan byte-byte yang disimpan dalam media penyimpanan. Merupakan
komponen yang bertipe data sama, yang jumlahnya tidak tentu, yang dapat
ditambah atau dikurangi jika dibutuhkan.
Pointer file
adalah bagian yang menunjuk kekomponen file yang akandiakses (dibaca
atau direkam) untuk keperluan pengaksesan file (akan dibahas kemudian).
File pada Pascal dikenaldalam 3 jenis, yaitu :
- File Text
- File bertipe
- File tidakbertipe
Selain
kita akan mempelajari tentang bagaimana membuat sebuah file atau
menambahkan isi suatu file, kita dapat pula melakukan manipulasi File,
yaitu :
1. Menggunakan parameter
2. MengenaiAtribut File
3. Menghapus file
4. Mengubah nama file
5. Mengenai tanggal dan waktu file
6. Mencari file
7. Mengecek keberadaan file
8. Memberikan directory file
1. File Text
1.1. Karakteristik
· Berisi data karakter ASCII
· Tiap record boleh memiliki panjang yang bervariasi
· Setiap record diakhiritanda EOL (end of Line)
· Hanya dapat diakses secara sequensial (berurutan).
· Isi filenya dapa tdilihat oleh perintah dos type atau editor text
1.2. Membuat file text
UrutanProsesnya :
1. Mendeklarasikanvariabel file
VarNmVar:TEXT;
Dengan :
NmVar : Namavariabel file text
2. Menghubungkan variabel file dengan nama file
Assign (NmVar, nama file);
Dengan :
NmVar : Namavariabel file text
nama file : Nama file dalam bentuk string, format 8:3 penamaan dos, ditulis
dalam bentuk string.
3. Membuat file text aktif
Rewrite(NmVar);
Dengan :
NmVar : Namavariabel file text yang sudah di- assign
4. Menuliskedalam file text
Write / writeln (NmVar, data item1, data item 2, …)
Dengan :
NmVar : Namavariabel file text
Data item : text / string yang akan dituliskan, atau bisa juga berupa isi suatu
variabel
5. Menutup file
Close (NmVar);
Dengan:
NmVar : Namavariabel file text
Contoh :
Program membuat_file_text_namafile_HALLO_TXT;
Uses crt;
Varvar_teks:TEXT;
Begin
Clrscr;
Assign(var_teks,’Hallo.txt’);
Rewrite(var_teks);
Writeln(var_teks,’Hallo… ini program pertamaku!’);
Writeln(var_teks,’Contoh file teks’);
Writeln(var_teks,’---------------------------------------’);
Close(var_teks);
End.
1.3. Membaca File Text
Urutan Prosesnya :
1. Mendeklarasikan variabel file
VarNmVar:TEXT;
2. Menghubungkan variabel file dengan nama file
Assign (NmVar, nama file)
3. Membaca isi file dan menampilkannya di layar
While not eof (NmVar) do
Begin
Read / readln( NmVar, data item 1, data item 2, … );
Write / writeln( data item1, data item 2, … );
End;
4. Menutup file
Close (NmVar);
Contoh :
Program membaca_file_HALLO_TXT;
Uses crt;
Varvar_teks:TEXT;
Pesan:string;
Begin
Clrscr;
Assign(var_teks,’Hallo.txt’);
Reset(var_teks);
While not eof (var_teks) do
Begin
Readln( var_teks, pesan );
Writeln (pesan);
End;
Close(var_teks);
End.
1.4. Menambah isi File Text
UrutanProsesnya :
1. Mendeklarasikanvariabel file
VarNmVar:TEXT;
2. Menghubungkan variabel file dengan nama file
Assign (NmVar, nama file)
3. Menambahisi file
Append(NmVar)
4. Menampilkannya di layar
Write / writeln (NmVar, data item1, data item 2, …)
5. Menutup file
Close (NmVar);
Contoh :
Program menambah_isi_file_HALLO_TXT;
Uses crt;
Varvar_teks:TEXT;
Pesan:string;
Begin
Clrscr;
Assign(var_teks,’Hallo.txt’);
Append(var_teks);
Writeln(var_teks,’Ini penambahan data file hallo.txt!’);
Writeln(var_teks,’Contoh file teks’);
Writeln(var_teks,’-----------------------------------------’);
Close(var_teks);
End.
1.5. Metode Pembacaan file oleh Turbo Pascal
- Menggunakan statemen operasi READ / READLN
- Bergantung pada tipe data variabel yang digunakannya :
- Variabel berjenis numerik (byte,integer, real
Tanda batas akhir pembacaan variable 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 variable tersebut akan diisi NOL
- Jika string yang dibaca oleh variable numeric tidak sah, maka terjadike salahan I/O :Invalid numerik format.
- ¨ Variabel berjenis string
Karakter-karakter filea akan dibaca sampai ditemui EOL / EOF
Tercapai atau lebih besar dari ukuran stringnya.
- ¨ Variabelberjenis Char
Yang dibacahanya satu karakters aja.
- Agar pembacaan file sesuai dengan yang diharapkan, kadang kala perlu kita deklarasikan secara jela sjumlah byte yang disediakan untuk suatu variabel, atau mesti kita selipkan pencetakan spasi diantara dua variabel yang akan dibaca.
- Perlu diperhatikan kesesuaian tipe data, antara yang dituliskan dengan metode WRITE/WRITELN dan dengan yang akan kita baca.
CONTOH:
BERKAS FILE
Membuat File Text
Uses Crt;
Var
Berkas : Text;
Kode : String[5];
Nama : String[20];
Harga :Longint;
Jumlah: Longint;
Lagi,Jawab : Char;
Ada : Boolean;
Begin
Assign(Berkas,'BARANG.TXT');
{$I-}
Reset(Berkas);
{$I+}
Append(Berkas);
Lagi :='Y';
While upcase(lagi)='Y' do
begin
Clrscr;
Write('kodebarang :');Readln(Kode);
Write('Nama :');Readln(Nama);
Write('Harga :');Readln(Harga);
Write('Jumlah :');Readln(jumlah);
Writeln(Berkas,kode:5,nama:20,harga:10,jumlah:10);
Writeln;
Write(' Lagi Y/T : ');Readln(lagi);
End;
Close(berkas);
End.
Program Untuk Menampilkan Data;
Uses Crt;
Var
Berkas : Text;
Kode : String[5];
Nama : String[20];
Harga :Longint;
Jumlah: Longint;
Var
Berkas : Text;
Kode : String[5];
Nama : String[20];
Harga :Longint;
Jumlah: Longint;
Total : real;
Lagi,Jawab : Char;
Ada : Boolean;
Begin
Assign(Berkas,'BARANG.TXT');
Reset(Berkas);
Clrscr;
While not EOF(berkas) Do
Begin
Readln(Berkas,kode,nama,harga,jumlah);
Total :=Harga * jumlah;
writeln(kode:5,nama:20,harga:10,jumlah:10,total:15:2);
End;
Readln;
Close(berkas);
End.
Contoh Integrasi File dengan Menu
Uses Crt;
Var
Pilih : Char;
Berkas : Text;
Kode : String[5];
Nama : String[20];
Harga : Longint;
Jumlah: Longint;
Total : Real;
I:Integer;
Lagi,Jawab : Char;
Ada : Boolean;
Procedure Tampildata;
Begin
Assign(Berkas,'barang.Txt');
Reset(Berkas);
Clrscr;
Writeln(' MENAMPILKAN SELURUH DATA DARI RECORD ');
Writeln('********************************************************************');
Writeln('no':3,'kode':10,'nama Barang':20,'harga':10,'jumlah':10,'total':15);
Writeln('--------------------------------------------------------------------');
I:=1;
While Not Eof(Berkas) Do
Begin
Readln(Berkas,Kode,Nama,Harga,Jumlah);
Total := Harga * Jumlah;
Writeln(I:3,Kode:10,Nama:20,Harga:10,Jumlah:10,Total:15:2);
Inc(I);
End;
Writeln('--------------------------------------------------------------------');
Readln;
Close(Berkas);
End;
Procedure Caridata;
Var
Total:Real;
Kodecari,Cr : String[20];
Ada : Boolean;
Begin
Clrscr;
Ada :=False;
Assign(Berkas,'barang.Txt');
Reset(Berkas);
Writeln(' Pencarian Data ');
Writeln('*****************************************');
Write('masukan Kode Barang : ');Readln(Kodecari);
Writeln('----------------------------------------');
While Not Eof(Berkas) Do
Begin
Ada :=False;
Readln(Berkas,Kode,Nama,Harga,Jumlah);
Total := Harga * Jumlah;
If Kode=Kodecari Then
Begin
Writeln('Nama :',Nama:20);
Writeln('Harga :',Harga:20);
Writeln('Jumlah :',Jumlah:20);
Total := Harga * Jumlah;
Writeln('Total :',Total:20:0);
Writeln('----------------------------------------');
End;
End;
Readln;
End;
Procedure Masuk;
Begin
Assign(Berkas,'barang.Txt');
{$I-}
Reset(Berkas);
{$I+}
Append(Berkas);
Lagi :='y';
While Upcase(Lagi)='y' Do
Begin
Clrscr;
Write('kode Barang :');Readln(Kode);
If Kode='' Then Exit;
Write('Nama :');Readln(Nama);
Write('Harga :');Readln(Harga);
Write('Jumlah :');Readln(Jumlah);
Writeln(Berkas,Kode:5,Nama:20,Harga:10,Jumlah:10);
Writeln;
Write(' Lagi Y/T : ');Readln(Lagi);
End;
Close(Berkas);
End;
Procedure Buatfile;
Begin
Assign(Berkas,'barang.Txt');
{$I-}
Reset(Berkas);
{$I+}
If Ioresult <> 0 Then
Begin
Writeln('file Tidak Ada ',#7#7#7);
Rewrite(Berkas);
End;
Close(Berkas);
End;
{*Program Utama * }
Begin
Repeat
Clrscr;
Writeln('***************************** ');
Writeln(' Menu Program ');
Writeln('-----------------------------');
Writeln(' 1.Masukdata ');
Writeln(' 2.Tampildata ');
Writeln(' 3.Cari ');
Writeln(' 4.Buat File ');
Writeln('');
Writeln(' 0.Exit');
Writeln('*****************************');
Writeln('pilihan Anda ');Pilih:=Readkey;
Case Pilih Of
'1':Masuk;
'2':Tampildata;
'3':Caridata;
'4':Buatfile;
End;
Until Pilih='0';
End.
Var
Pilih : Char;
Berkas : Text;
Kode : String[5];
Nama : String[20];
Harga : Longint;
Jumlah: Longint;
Total : Real;
I:Integer;
Lagi,Jawab : Char;
Ada : Boolean;
Procedure Tampildata;
Begin
Assign(Berkas,'barang.Txt');
Reset(Berkas);
Clrscr;
Writeln(' MENAMPILKAN SELURUH DATA DARI RECORD ');
Writeln('********************************************************************');
Writeln('no':3,'kode':10,'nama Barang':20,'harga':10,'jumlah':10,'total':15);
Writeln('--------------------------------------------------------------------');
I:=1;
While Not Eof(Berkas) Do
Begin
Readln(Berkas,Kode,Nama,Harga,Jumlah);
Total := Harga * Jumlah;
Writeln(I:3,Kode:10,Nama:20,Harga:10,Jumlah:10,Total:15:2);
Inc(I);
End;
Writeln('--------------------------------------------------------------------');
Readln;
Close(Berkas);
End;
Procedure Caridata;
Var
Total:Real;
Kodecari,Cr : String[20];
Ada : Boolean;
Begin
Clrscr;
Ada :=False;
Assign(Berkas,'barang.Txt');
Reset(Berkas);
Writeln(' Pencarian Data ');
Writeln('*****************************************');
Write('masukan Kode Barang : ');Readln(Kodecari);
Writeln('----------------------------------------');
While Not Eof(Berkas) Do
Begin
Ada :=False;
Readln(Berkas,Kode,Nama,Harga,Jumlah);
Total := Harga * Jumlah;
If Kode=Kodecari Then
Begin
Writeln('Nama :',Nama:20);
Writeln('Harga :',Harga:20);
Writeln('Jumlah :',Jumlah:20);
Total := Harga * Jumlah;
Writeln('Total :',Total:20:0);
Writeln('----------------------------------------');
End;
End;
Readln;
End;
Procedure Masuk;
Begin
Assign(Berkas,'barang.Txt');
{$I-}
Reset(Berkas);
{$I+}
Append(Berkas);
Lagi :='y';
While Upcase(Lagi)='y' Do
Begin
Clrscr;
Write('kode Barang :');Readln(Kode);
If Kode='' Then Exit;
Write('Nama :');Readln(Nama);
Write('Harga :');Readln(Harga);
Write('Jumlah :');Readln(Jumlah);
Writeln(Berkas,Kode:5,Nama:20,Harga:10,Jumlah:10);
Writeln;
Write(' Lagi Y/T : ');Readln(Lagi);
End;
Close(Berkas);
End;
Procedure Buatfile;
Begin
Assign(Berkas,'barang.Txt');
{$I-}
Reset(Berkas);
{$I+}
If Ioresult <> 0 Then
Begin
Writeln('file Tidak Ada ',#7#7#7);
Rewrite(Berkas);
End;
Close(Berkas);
End;
{*Program Utama * }
Begin
Repeat
Clrscr;
Writeln('***************************** ');
Writeln(' Menu Program ');
Writeln('-----------------------------');
Writeln(' 1.Masukdata ');
Writeln(' 2.Tampildata ');
Writeln(' 3.Cari ');
Writeln(' 4.Buat File ');
Writeln('');
Writeln(' 0.Exit');
Writeln('*****************************');
Writeln('pilihan Anda ');Pilih:=Readkey;
Case Pilih Of
'1':Masuk;
'2':Tampildata;
'3':Caridata;
'4':Buatfile;
End;
Until Pilih='0';
End.