Badge

Tuesday, April 16, 2013

Fungsi Append Seek Reset Pada Pascal

File adalah suatu bentuk penyimpanan eksternal dalam suatu media penyimpanan. Program yang ditulis adalah sebuah file, hasil kompilasi (program) juga adalah sebuah file. Ketika Anda mengedit dengan editor, yang Anda edit merupakan file yang jenisnya adalah teks.

File berguna untuk menyimpan data yang akan dipakai kembali, karena apa yang disimpan di file akan ada di media penyimpanan sekunder (harddisk atau disket), dan dapat dipakai kembali meskipun komputer sudah dimatikan. Hal ini berbeda dengan variabel yang nilainya akan hilang ketika program selesai berjalan.

File teks dan File biner

File teks adalah file yang isinya bisa dibaca langsung dengan editor teks biasa, sedangkan file biner adalah file yang memiliki format khusus yang harus dibaca oleh program khusus.

Nama Fisik File

File di dalam disket atau harddisk (atau media penyimpanan manapun) akan diidentifikasi dengan menggunakan suatu nama file. Nama ini disebut dengan nama fisik. Sistem operasi memiliki batasan dalam penamaan file ini (misalnya di DOS atau Windows nama file tidak boleh mengandung karakter titik dua, di DOS nama file maksimal 11 Karakter). Setiap sistem operasi juga memiliki sifat yang berbeda dalam menangani perbedaan case pada nama file. Windows dan DOS menganggap Aku dan AKU adalah file yang sama, sementara Linux menganggap bahwa Aku dan AKU mengacu ke dua file yang berbeda. Perbedaan dalam system operasi ini perlu diperhatikan oleh program agar dapat berjalan di semua lingkungan.

Primitif Pemrosesan File

Ada lima primitif yang digunakan dalam memproses file, yang meliputi assign nama fisik ke nama logik, pembukaan file, pembacaan file, penulisan file, dan penutupan file.

Assign nama fisik ke nama logik
Pemrosesan file diawali dengan assignment nama fisik (berupa string yang merupakan nama yang dikenali sistem operasi) ke nama logik (suatu variabel dalam program yang memiliki tipe file atau tipe text). Proses assignment ini dilakukan agar dalam semua langkah berikutnya file bias diacu berdasarkan variabel tersebut dan bukan nama fisiknya.Assignment nama fisik ke nama logik tidak melakukan hal apapun terhadap file.

Dalam beberapa bahasa, proses assignment dari nama fisik ke nama logik dilakukan ketika file dibuka. Dalam Pascal, assignment ini merupakan langkah yang terpisah dari langkah membuka file. Contoh assign:

var t:text;
begin
assign(t, 'file.txt');
end.

Membuka file
Setelah proses assignment dilakukan, maka file dapat dibuka. Ketika membuka file, harus
ditentukan operasi apa yang hendak dilakukan terhadap file tersebut, apakah file akan dibaca saja, atau file akan ditulisi, atau file akan ditambah isinya di bagian akhir (append), atau file akan dibaca dan ditulis. Pada Pascal, file teks bisa dibuka untuk dibaca dengan memanggil prosedur reset, dibuka untuk ditulis (isi file sebelumnya akan dihapus) dengan prosedur rewrite, dan dibuka untuk ditambah isinya dengan prosedur append. File teks di Pascal tidak bisa dibuka untuk dibaca dan ditulis sekaligus.

Membaca file
File yang dibuka dengan prosedur reset bisa dibaca menggunakan read atau readln. Proses pemabacaan seolah-olah seperti ada pengguna yang mengetikkan suatu input melalui keyboard. Jika ada file dengan nama input.txt dengan isi berikut:

hello
123

(isi file satu baris kata hello, diikuti satu baris angka 123). maka jika program berikut ini dijalankan:

var t:text;
s:string;
i:integer;
begin
assign(t, 'input.txt');
reset(t); (*buka file untuk dibaca*)
readln(t, s); (*baca string dari file*)
readln(t, i); (*baca integer dari file *)
writeln(s); (*tuliskan string yang dibaca dari file *)
writeln(i); (*tuliskan integer yang dibaca dari file *)
close(t);
end.

Maka hasilnya adalah program akan mencetak hello dan diikuti dengan angka 123 di baris
berikutnya. Kata hello dan angka 123 dibaca dari file input.txt.

Menulis file
Sebaliknya, sebuah file yang dibuka dengan menggunakan append bisa ditulisi dengan
menggunakan write atau writeln, dengan parameter pertama adalah nama logik file. Penulisan dengan write dan writeln yang dilakukan terhadap file akan tertulis pada file dan tidak pada layar. File yang sudah ditulisi ini bisa dibaca lagi dengan program yang serupa.
Program berikut ini akan menuliskan 2 baris ke dalam sebuah file teks, baris pertama adalah kata hello dan baris kedua adalah sebuah integer 123

var t:text;
begin
assign(t, 'output.txt');
rewrite(t); (*buka file untuk ditulisi*)
writeln(t, 'Hello'); (*tuliskan string ke dalam file*)
writeln(t, 123); (*tuliskan integer ke dalam file *)
close(t);
end.

Hasil output program di atas dapat dibaca oleh contoh program sebelumnya.

Menutup file
Setelah selesai, maka file perlu ditutup. Setelah file ditutup sistem operasi akan memastikan
bahwa file dipindahkan ke media penyimpanan, sebelum file ditutup, file mungkin belum
dituliskan ke media penyimpanan. Penutupan file dalam Pascal dilakukan dengan memanggil
prosedur close dengan parameter nama logik file yang telah dibuka.

Skema dasar Pembacaan File

file berisi :

5
adi
budi
charlie
desi
eni

Skema pembacaan yang dilakukan untuk membaca soal semacam itu adalah dengan loop for denganterlebih dahulu membaca jumlah yang akan diloop, misalnya seperti ini (anggap t adalah nama logic untuk file yang sudah dibuka untuk dibaca, i adalah sebuah integer, dan tabs adalah array of string):

readln(t, jumlahbaris);
for i:=1 to jumlahbaris do
begin
readln(t, tabs[i]);
end;

Pemabacaan file juga bisa dilakukan terhadap file yang tidak diketahui jumlah barisnya dengan menggunakan fungsi eof. Fungsi eof akan mengembalikan true jika akhir dari file telah tercapai, dan false jika belum.

(* buka file *)
While (not eof(t)) do
begin
readln(t, s);
(* lakukan pemrosesan *)
end;


STDIN dan STDOUT

Sebenarnya fungsi read/readln dan write/writeln tanpa parameter file akan menganggap dua buah nama logik untuk input dan output. Read dan Readln akan membaca dari nama logik STDIN yang merupakan file input standar (yang dipetakan oleh sistem operasi menjadi input dari keyboard), sedangkan Write dan Writeln akan menulis ke nama logik STDOUT yang merupakan file output standar (yang dipetakan oleh sistem operasi menjadi output ke layar komputer). Sehingga instruksi

readln(s);

sama saja dengan

readln(stdin, s);

dan

writeln(s);

sama saja dengan

writeln(stdout, s);

Anda mungkin akan banyak menemui contoh program yang memakai teknik
seperti ini:

assign(stdin, 'input.txt');
reset(stdin);

yang memetakan ulang stdin ke file 'input.txt' sehingga untuk membaca file cukup dilakukan dengan

readln(s); (* sama dengan readln(stdin, s) *)

Sebaliknya stdout juga bisa dipetakan agar semua writeln akan muncul di file.

Assign(stdout, 'fileout.txt');
rewrite(stdout);

Teknik semacam ini sebaiknya tidak digunakan, karena selain mengurangi keterbacaan program, program memakai fitur sistem operasi (yang kebetulan saat ini didukung oleh Windows dan Linux), yang mungkin tidak akan ada di semua sistem.

No comments:

Post a Comment