Matakuliah Tahun Versi : T0616 / Algoritma dan Pemrograman : 2007 : 1/0 Pertemuan 23-24 File 1 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Mendemonstrasikan penyimpanan data menggunakan tipe data file (C3) 2 Outline Materi File • Definisi file • Tipe file • File teks dan biner • Fungsi Input Output file 3 Definisi File • • • • • Definisi File File adalah kumpulan record Record adalah kumpulan field Field kumpulan byte Byte dalah kumpulan bit 4 Tipe File • Bahasa C mengenal dua tipe file yaitu stream oriented (standard) dan system oriented (low level). • Stream oriented terdiri dari dua kategori yaitu file yang terdiri dari karakter individual atau bagian dari string dan unformatted file yang menyusun data dalam blok-blok untuk mewakili array atau struktur. • System oriented lebih rumit daripada stream oriented karena lebih dekat ke sistem komputer. 5 Mode File • Data yang disimpan di file disajikan dalam dua mode yaitu mode teks dan mode biner. • Dalam mode teks data disimpan sebagai deretan karakter sedangkan dalam mode biner data disimpan seperti halnya penyimpanan data di memori yaitu sebagai sekuen bit. • Stream oriented menggunaka mode teks sedangkan system oriented menggunakan mode biner. 6 Buffer Area • Buffer area adalah bagian dari memori yang digunakan sebagai tempat penampungan sementara sebelum data dipindahkan ke file. • Sintaks pembentukan buffer area File *pt_var; Dimana pt_var adalah variabel pointer yang digunakan untuk menunjuk awal buffer area. • Dikenal juga dengan nama stream pointer. 7 Membuka File • Sesudah membentuk buffer area file dibuka dengan pernyataan: pt_var = fopen(nama-file, mode operasi); • Fungsi fopen() mengembalikan pointer ke awal buffer area. Nilai null dikembalikan jika berkas tidak dapat dibuka. 8 Membuka File • Nilai mode operasi yang mungkin adalah Mode Makna “r” Membuka file utuk dibaca. “w” Membentuk file baru untuk ditulisi. “a” Membuka file untuk tambah data. “r+” Membuka file untuk dibaca/ditulisi. “w+” Membentuk file untuk dibaca/ditulisi. “a+” Membuka file untuk dibaca dan ditambah isinya 9 Menutup File File ditutup dengan pernyataan : fclose(pt_var); • Yang akan membebaskan buffer agar dapat digunakan oleh file lain dan mengirim data yang masih tertinggal di buffer agar segera dikirim ke file. • Sebagai catatan, isi buffer akan dikirim ke file jika buffer penuh, file ditutup atau program selesai. 10 Fungsi Input Output File • fgetc – Membaca satu karakter dari file – fgetc( stdin ) ekuivalen dengan getchar() • fputc – Menulis satu karakter ke file – fputc( 'a', stdout ) ekuivalen dengan putchar( 'a' ) • fgets – Membaca satu baris dari file • fputs – Menulis satu baris ke file • fscanf / fprintf – Ekuivalen dengan scanf dan printf • fwrite/fread – Menulis byte dari suatu lokasi di memori ke file / sebaliknya 11 Fungsi Input Output File • Contoh : fwrite( &mhs, sizeof( mhs ), 1, myPtr ); – &mhs = lokasi asal data (struct) – sizeof( mhs ) = mengembalikan nilai ukuran struct mhs – 1 = untuk array, jumlah elemen yang akan ditransfer, dalam hal ini hanya satu elemen array yang ditransfer – myPtr = buffer file 12 File Karakter • Contoh : //bentuk file karakter void main() { FILE *fPt; char c; fPt = fopen(“contoh.dat”, “w”); do putc(toupper(c=getchar()),fPt); while (c!=‘\n’); fclose(fPt); } 13 File Karakter • Contoh : //buka file karakter void main() { FILE *fPt; char c; if((fPt=fopen(“contoh.dat”,”r”) == NULL) printf(“\nEROR”); else do putchar(c=getc(fPt)); while(c!=‘\n’); fclose(fPt); } 14 File String • Contoh : //bentuk file string void main() { FILE *fPt; char s[81]; fPt = fopen(“contoh.dat”, “w”); while(strlen(gets(s))>0) { fputs(s,fPt); fputs(“\n”,fPt); } fclose(fPt); } 15 File String • Contoh : //baca file string void main() { FILE *fPt; char s[81]; fPt = fopen(“contoh.dat”,”r”); while(fgets(s,80,fPt)!=NULL) printf(“%s”, s); fclose(fPt); } 16 File Unformatted • Contoh : //bentuk file unformatted typedef struct { int nim; char nama[31]; float ipk; } record; void main() { record mhs; FILE *fPt; if((fPt=fopen(“mhs.dat”,”w”))== NULL){ printf(“EROR”); break; } do { printf(“\nNIM :”); scanf(“%d”,&mhs.nim); printf(“\nNama:”); gets(mhs.nama); printf(“\nIPK:”); scanf(“%f”, &mhs.ipk); fflush(stdin); fwrite(&mhs,sizeof(mhs),1,fPt); printf(“\nTambah data Y/N?”); } while(getche() == ‘y’); fclose(fPt); } 17 Fiel Unformatted • Contoh : //buka file unformatted typedef struct { int nim; char nama[31]; float ipk; } record; void main() { record mhs; FILE *fPt; if((fPt=fopen(“mhs.dat”,”r”))== NULL){ printf(“EROR”); exit(); } while(fread(&mhs,sizeof(mhs),1 ,fPt) == 1) { printf(“\nNIM :%d”,mhs.nim); printf(“\nNama:%s”,mhs.nama); printf(“\nIPK :%f”, mhs.ipk); } fclose(fPt); } 18 Latihan • Buatlah pendataan menggunakan file karakter/string untuk data berikut : Account 100 200 300 400 500 Name Jones Doe White Stone Rich Balance 24.98 345.67 0.00 -42.16 224.62 19 Latihan • Berdasarkan pendataan soal sebelumnya, buat program Inquiry : Enter request 1 - List accounts with zero balances 2 - List accounts with credit balances 3 - List accounts with debit balances 4 - End of run ? 1 Accounts with zero balances: 300 White 0.00 ? 2 Accounts with credit balances: 400 Stone -42.16 ? 3 Accounts with debit balances: 100 Jones 24.98 200 Doe 345.67 500 Rich 224.62 ? 4 End of run. 20 Latihan • Buat soal sebelumnya menggunakan file Unformatted ! Bandingkan ! 21 Latihan 1. Apa tujuan dari pembentukan buffer area jika kita bekerja dengan stream oriented data file? Bagaimana buffer area didefinisikan? 2. Apa yang disebut stream pointer? Apa relasi stream pointer dengan buffer area? 3. Asosiasikan stream pointer ptr dengan stream oriented data file baru dengan nama students.dat. Buka berkas data untuk ditulisi saja. 4. Asosiasikan stream pointer ptr dengan stream oriented data file yang telah ada sebelumnya dengan nama sample.dat. Buka berkas data sehingga informasi dapat dibaca dari berkas atau ditulis ke berkas. Tunjukkan bagaimana kita menutup berkas di akhir program. 5. Ulangi soal no. 4 dengan menambahkan pesan eror jika berkas data tidak dapat dibuka karena adanya sesuatu hal yang tidak terduga. 22
© Copyright 2024 Paperzz