220 likes | 385 Vues
Pertemuan 23-24 File. Matakuliah : T0616 / Algoritma dan Pemrograman Tahun : 2007 Versi : 1/0. Learning Outcomes. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Mendemonstrasikan penyimpanan data menggunakan tipe data file (C3). Outline Materi. File Definisi file
E N D
Pertemuan 23-24File Matakuliah : T0616 / Algoritma dan Pemrograman Tahun : 2007 Versi : 1/0
Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Mendemonstrasikan penyimpanan data menggunakan tipe data file (C3)
Outline Materi File • Definisi file • Tipe file • File teks dan biner • Fungsi Input Output file
Definisi File • Definisi File • File adalah kumpulan record • Record adalah kumpulan field • Field kumpulan byte • Byte dalah kumpulan bit
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.
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.
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.
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.
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
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.
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
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
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); }
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); }
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); }
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); }
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); }
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); }
Latihan • Buatlah pendataan menggunakan file karakter/string untuk data berikut : Account Name Balance 100 Jones 24.98 200 Doe 345.67 300 White 0.00 400 Stone -42.16 500 Rich 224.62
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.
Latihan • Buat soal sebelumnya menggunakan file Unformatted ! Bandingkan !
Latihan • Apa tujuan dari pembentukan buffer area jika kita bekerja dengan stream oriented data file? Bagaimana buffer area didefinisikan? • Apa yang disebut stream pointer? Apa relasi stream pointer dengan buffer area? • Asosiasikan stream pointer ptrdengan streamoriented data file baru dengan nama students.dat. Buka berkas data untuk ditulisi saja. • Asosiasikan stream pointer ptrdengan streamoriented 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. • Ulangi soal no. 4 dengan menambahkan pesan eror jika berkas data tidak dapat dibuka karena adanya sesuatu hal yang tidak terduga.