download

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