pertemuan 12pertemuan 12 pemrograman...

28
Pertemuan 12 Pertemuan 12 Pemrograman Terstruktur Pemrosesan File Teks dan File Biner

Upload: vunhu

Post on 24-Mar-2019

261 views

Category:

Documents


1 download

TRANSCRIPT

Pertemuan 12Pertemuan 12Pemrograman Terstruktur

Pemrosesan File Teks dan File Biner

Tujuan Perkuliahan

Mahasiswa mampu membedakan file biner dan file teksMahasiswa memahami macam-macam operasi file

d l fil t k d fil bidalam file teks dan file biner Mahasiswa dapat membuat program untuk operasi file

Struktur File File adalah Kumpulan data-data yang disimpan dalam disk

dalam bentuk suatu kesatuan.

S fil k i i d i j l h d Suatu file merupakan organisasi dari sejumlah record.

Masing-masing record dapat terdiri dari satu atau beberapa field dan setiap field terdiri dari satu atau beberapa byte.p p y

Tahapan Operasi File

Operasi file pada dasarnya meliputi 3 tahapan :

1 Membuka / mengaktifkan file1. Membuka / mengaktifkan file

2. Melaksanakan Operasi file

3. Menutup Filep

Membuka dan Mengaktifkan File

Untuk membuka / mengaktifkan file sebelum dapat diakses, digunakan fungsi fopen( )Syntax : FILE *fopen ( char *namafile, char *mode );

ket :ket : namafile berupa nama dari file yang akan diaktifkan mode berupa jenis operasi yang dilakukan terhadap file

t t d d fil tdi h prototype ada pada file stdio.h

Keluaran fungsi fopen ( ) berupa pointer yang menunjuk ke tipeFILE, yaitu tipe struktur yang definisinya ada pada file stdio.hBerhasil-tidaknya operasi pengaktifan file dapat dilihat padakeluaran fungsi fopen ( ). Jika keluaran berupa NULL berartioperasi pengktifan gagal.p p g g g

Jenis Operasi (Mode) File

r menyatakan bahwa file hanya akan dibacay y w menyatakan bahwa file baru dibuat a untuk membuka file yang sudah ada pada disk dan

i dil k k d l h i b hoperasi yang dilakukan adalah operasi penambahandata pada file

r+ untuk membuka file yang sudah ada, dany goperasinya berupa pembacaan dan penulisan

w+ untuk membuka file dengan tujuan pembacaanatau penulisan Jika sudah ada isinya akan dihapusatau penulisan. Jika sudah ada isinya akan dihapus.

a+ untuk membuka file dengan tujuan perekaman ataupembacaan. Jika file berisi maka isinya tidak akandihdihapus.

Contoh Pemakaian fungsi fopen()

M k d d i

pf = fopen (“COBA. TXT”, “w”);Bentuk yang biasa dipakai untuk Maksud dari pernyataan

tersebut adalah :Menciptakan dan

Bentuk yang biasa dipakai untuk mengaktifkan file adalah :if ( pf = fopen (“COBA. TXT”, ”w” ) == NULL )

mengaktifkan file bernama “COBA.TXT”

Dengan mode yaitu “w”

){ cputs (“File tidak dapat diciptakan !”);exit ( 1 ); } /*Keluar dari program*/ Dengan mode yaitu w

(mode penulisan file)Menempatkan pointer-

ke FILE ke variable

exit ( 1 ); } / Keluar dari program /Mula-mula pf diisi dengan keluaran fungsi fopen ( ). Seandainya nilainya adalah NULL (berarti operasi ke-FILE ke variable

pointer pfd U (b p

pengaktifan file gagal) maka : Pada layar ditampilkan tulisan “File Pada layar ditampilkan tulisan File

tidak dapat dibuka!” Program dihentikan / selesai

Menutup File

Untuk menutup file, fungsi yang digunakan adalah fclose ( ). Bentuk deklarasinya adalah :( ). Bentuk deklarasinya adalah :

int fclose ( FILE *pf ); Fungsi fclose ( ) menghasilkan keluaran berupa nol jika

operasi penutupan file berhasil dilakukanoperasi penutupan file berhasil dilakukan. Disamping fclose ( ) terdapat fungsi fcloseall ( ) yang

kegunaanya adalah untuk menutup semua file yang sedang terbuka Bentuk deklarasinya :sedang terbuka. Bentuk deklarasinya :

int fcloseall (void); Fungsi fcloseall ( ) menghasilkan nilai EOF (EOF

didefinisikan pada file stdio h yaitu bernilai -1) jika terjadididefinisikan pada file stdio.h, yaitu bernilai -1) jika terjadi kegagalan. Sedangkan jika berhasil, keluaran fungsi berupa jumlah file yang ditutup.

Operasi Penyimpanan dan Pembacaan File per KarakterPembacaan File per Karakter

Sebuah karakter dapat disimpan dalam file dengan menggunakan fungsi fputc ( ).

Bentuk deklarasinya : Bentuk deklarasinya : int fputc ( int kar, FILE *ptr_file );

dengan ptr_file adalah pointer-ke-FILE yang berisi keluaran

dari fopen ( ), dan kar berupa karakter yang akan disimpan dalam file kar berupa karakter yang akan disimpan dalam file.

Contoh Pembacaan File per Karakter Contoh Program yang digunakan untuk membaca isi file

COBA.TXT, dengan langkah sebagai berikut : Buka file COBA TXT dengan mode “r” Jika tak berhasil Buka file COBA. TXT dengan mode r . Jika tak berhasil

dibuka beri keterangan bahwa file tidak ada, selesai. Baca sebuah karakter dari file. Jika karakter sama

dengan EOF (tanda akhir file) maka langkah ke 4dengan EOF (tanda akhir file) maka langkah ke 4 Tampilkan karakter ke layar dan kembali le langkah 2 Tutup filep Selesai

Program Pembacaan File per KarakterKarakter

#include <stdio.h>#include <conio.h> Contoh Eksekusi :#include conio.hmain( ){

FILE*pf;h k

A>GETC

TURBO C-char kar;clrscr( ); if ((pf = fopen (“COB. TXT”, “r”)) = = NULL )

{cputs (“File tak dapat dibuka

!\r\n”);exit;;}

while ( (kar = getc (pf) ) !=EOF )putch (kar);

fclose (pf);}

File Teks dan File Biner

File teks merupakan file yang pola penyimpanan datanya dalam bentuk karakter. Misalnya bilangan bertipe int bisa saja menempati ruang 1 byte, 2 byte atau lebih, tergantung oleh nilai dari bilangan.

Fil bi d l h fil l i di d l File biner adalah file yang pola penyimpanan di dalam disk adalah dalam bentuk biner, yaitu seperti bentuk padsa memory (RAM) komputer Misalnya data padsa memory (RAM) komputer. Misalnya data bertipe int akan selalu menempati ruang 2 byte berapapun harganya.p p g y

Perbedaan File Teks dan File BinerBiner

File teks dipakai untuk menyimpan data bertipe karakter atau string sedangkan file biner dipakai untuk g g pmenyimpan data bilangan atau data kompleks, seperti struktur (tipe struct).P d fil k k k ‘\ ’ d k Pada file teks , karakter ‘\n’ pada program akan diperlakukan sebagai CR/LF bagi MS-DOS dan CR/LF ( artinya CR atau ber-ASCII 13 diikuti dengan LF atau ( artinya CR atau ber ASCII 13 diikuti dengan LF atau ber-ASCII 10) pada MS-DOS akan diterjemahkan sebagai ‘\n’ bagi program. Sedangkan pada file biner, k kt ‘\ ’ d k di l k k b i karakter ‘\n’ pada program akan diperlakukan sebagai LF saja bagi MS-DOS dan karakter LF bagi MS-DOS dianggap sebagai ‘\n’ bag i program. gg p g \ g p g

Mode pada file Teks dan File BinerBiner

Penambahan yang perlu dilakukan untuk menentukan mode teks atau mode biner berupa : “t” untuk mode teks dan “b”

k d biuntuk mode biner.Contoh :• “ rt ” berarti mode file adalah teks dan file akan dibacart berarti mode file adalah teks dan file akan dibaca• “ rt+ “ berarti mode file adalah teks dan file bisa dibaca

atau ditulisi• “ rb “ berarti mode file adalah biner dan hendak dibaca

Mode pada file Teks dan File Biner (cont )Biner (cont..)

Jika pada mode file tidak terdapat karakter t atau b, mode file akan ditentukan oleh variable global mode file akan ditentukan oleh variable global bernama _fmode ( deklarasinya ada pada file fcntl.h).

Jika _fmode tidak dilibatkan dalam program, maka mode file yang tidak mengandung t atau b akan dianggap sebagai file teks.

V i bl f d bi dii i d O BINARY t k Variable _fmode bisa diisi dengan O_BINARY untuk menyatakan file biner, atau O_TEXT untuk menyatakan file text.yContoh :

_fmode = O_BINER;f f (“TEST1” “ ”)pf = fopen (“TEST1”, “r”);

berarti bahwa “TEST1” adalah file biner dan hendak baca.

Operasi Penyimpanan dan Pembacaan File per IntPembacaan File per Int

Untuk menyimpan sebuah data bertipe int digunakan fungsi Untuk menyimpan sebuah data bertipe int digunakan fungsi putw( )

Sedangkan untuk membaca sebuah data bertipe int digunakan fungsi getw()

Bentuk deklarasinya :

i t t (FILE * t fil )int getw (FILE *ptr_file);

int putw (FILE *ptr_file);

Operasi Pembacaan dan Penyimpanan File per BlokPenyimpanan File per Blok

Fungsi untuk menyimpan file dalam bentuk kesatuan blok (sejumlah byte) adalah fwrite( )B k d kl iBentuk deklarasi

int fwrite (void *buffer, int jum_byte, int n, FILE *ptr file);ptr_file);

Fungsi untuk membaca data file dalam bentuk kesatuan blok (sejumlah byte) adalah fread( ) ( j y ) ( )Bentuk deklarasi :

int fread (void*buffer, int n, FILE *ptr_file);

Operasi Pembacaan dan Penyimpanan File per Blok (cont)Penyimpanan File per Blok (cont)

Ket : Buffer adalah pointer yang menunjuk ke daerah memory yang

akan ditempati data dari file disk (untuk fread( )) atau pointer akan ditempati data dari file disk (untuk fread( )), atau pointer yang menunjuk ke daerah memory yang berisi data yang akan disimpan ke file disk (fwrite( )).

j b t t k j l h b t k dib t jum_byte menyatakan jumlah byte yang akan dibaca atau disimpan

n menentukan banyaknya blok data berukuran jum_byte yang akan ditulis atau dibaca

ptr_file berupa pointer-ke-FILE yang berisi nilai keluaran dari fopen( )p ( )

Menyimpan dan Membaca Data String pada FileString pada File

Fungsi yang digunakan untuk membaca data string pada g y g g g pfile sampai ditemukannya karakter baris baru ‘\n’ atau setelah ( n-1 ) karakter, dengan n adalah panjang maksimal string yang dibaca per waktu-baca adalah fgets( g y g p g ()Bentuk deklarasinya :

char *fgets (char *str int n FILE *ptr file);char fgets (char str, int n, FILE ptr_file);Fungsi yang digunakan untuk menyimpan data string ke

dalam file yaitu fputs( ). Bentuk deklarasinya :

int fputs (char *str, FILE *ptr_file);

Menyimpan dan Membaca File yang diformatyang diformat

Fungsi yang digunakan untuk menyimpan data bilangan yang diformat ke dalam file yaitu fprintf( ),dengan bentuk :dengan bentuk :

fprintf (ptr_file, “string kontrol”, daftar argumen);

Sedangkan untuk membaca kembali, fungsi yang digunakan berupa fscanf( ), dengan bentuk :

fscanf (ptr file “string kontrol” daftar argumen);fscanf (ptr_file, string kontrol , daftar argumen);

Kedua fungsi diatas berlaku seperti fungsi printf( ) dan g p g p ( )scanf( ), hanya saja operasinya pada file.

Pengaksesan File Biner Secara AcakAcak

Fungsi yang digunakan untuk mengakses file biner secara g y g g gacak adalah fseek( ).Bentuk deklarasinya :

int fseek (FILE *ptr_file, long int ofset, int posisi);dengan :- ptr_file adalah pointer yang keluar berasal dari keluaran fopen( )

f t t k j l h b t t h d i i- ofset menyatakan jumlah byte terhadap posisiKegunaan fungsi fseek( ) yaitu untuk menempatkan

penunjuk file ke suatu lokasi dalam file, berdasarkan ofset penunjuk file ke suatu lokasi dalam file, berdasarkan ofset dan posisi.

Pengaksesan File Biner Secara Acak (Contoh)Acak (Contoh)

fseek (pf, 3, SEEK SET);fseek (pf, 3, SEEK_SET);

Pernyataan tersebut menempatkan penunjuk file ke posisi 3 byte sesudah awal file (SEEK SET).p y ( _ )

fseek (pf, 3, SEEK_END);Pernyataan ini akan menempatkan penunjuk file ke y p p

posisi 3 byte sebelum akhir file

fseek (pf, 3, SEEK_CUR);

Pernyataan ini dipakai untuk menempatkan penunjuk file ke posisi 3 byte sesudah posisi penunjuk file berada.

Operasi File Tak BerpenampungOperasi File tak berpenampung sering disebut dengan system

level I/O (masukan-keluaran beraras system atau low-level (masukan keluaran beraras rendah) (masukan-keluaran beraras rendah).

Keuntungannya adalah dalam hal kecepatan pengaksesan (baca-tulis).

Fungsi-fungsi dalam Operasi File Tak BerpenampungTak Berpenampung

Fungsi open( ): untuk membuka file (terdapat pada file io.h)Bentuk deklarasi : Bentuk deklarasi :

int _open (char *filename, int mode);dengan mode dapat diisi dengan konstanta O_RDONLY, O WRONLY atau O RDWR yang didefinisikan pada file O_WRONLY atau O_RDWR, yang didefinisikan pada file fcntl.h

Fungsi create( ): untuk menciptakan file baru atau untuk mengosongkan file yang berisimengosongkan file yang berisiBentuk deklarasi :

int _create (char *namafile, int atrib); d t ib t k t k t ib t fil dengan atrib untuk menentukan atribut file

Fungsi fclose( ) : untuk menutup file dengan bentuk deklarasi :int _close (int handle);

dengan handle menyatakan kode penanganan file yang diperoleh dari _fopen( ) atau _create( ).

Fungsi-fungsi dalam Operasi File Tak Berpenampung (cont )Tak Berpenampung (cont.)

Fungsi _read( ) : untuk membaca isi file.Bentuk deklarasinya :Bentuk deklarasinya :

int _read (int handle, void*buffer, unsigned panjang);

i i ( ) k li k filFungsi _write( ) : untuk menulis ke fileBentuk deklarasinya:

int write (int handle void *bufer unsigned int _write (int handle, void bufer, unsigned panjang);

fungsi lseek( ) : untuk memindah penunjuk file (yang )memungkinkan pengaksesan file secara acak)

Bentuk deklarasinya :long lseek (int handle long ofset int posisi);long lseek (int handle, long ofset, int posisi);

Menghapus File Fungsi unlink( ) digunakan untuk menghapus File.

Bentuk deklarasinya :

int unlink (char *namafile);

ket:

fil d l h i t j k k fil namafile adalah pointer yang menunjuk ke nama file yang akan dihapus.

Mengganti Nama File Fungsi rename( ) digunakan untuk mengganti nama file.

Bentuk deklarasinya :i ( h * fil l h * fil b )int rename (char *nmafilelama, char *namafilebaru);

Referensi

Bab 12, “Text and Binary File Processing”, Problem Solving and Program Design in C, Jeri R. Hanly dan Elliot B Koffman Addison Wesley 2002Elliot B. Koffman, Addison Wesley, 2002