Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data Yang Dibimbing oleh Bapak I Made Wirawan
UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PRODI PENDIDIKAN TEKNIK INFORMATIKA NOVEMBER , 2012
LAPORAN PRAKTIKUM
A. Tujuan 1. Mampu melakukan perancangan aplikasi menggunakan Struktur File 2. Mampu elakukan analisis pada File yang dibuat 3. Mampu mengimplementasikan File pada sebuah aplikasi secara tepat dan efisien 4. Mampu menjelaskan mengenai File 5. Mampu membuat dan mendeklarasikan struktur File 6. Mampu menerapkan dan mengimplementasikan File
B. Dasar Teori 1. Pengantar File File digunakan sebagai penyimpanan data eksternal selain
memori komputer. Tempat penyimpanan eksternal ini bersifat permanen (non-volatile) dan biasanya berukuran besar dengan tujuan untuk dibaca kembali data-datanya. Operasi-operasi terhadap file pasti berkaitan dengan Input (menulis) dan Output (menampilkan) serta berbagai hal lain seperti mengecek keberadaan file, ukuran file, mengolah file membutuhkan dan lain-lain. Operasi untuk
buffer
berkenaan dengan file tersebut. 2. Jenis File File Teks adalah file yang berisi data-data ASCII sehingga
dapat ditampilkan ke layar apa adanya. Satu karakter ASCII dalam file teks berukuran 2 bytes. Misalnya sebuah file teks berisi 1000 karakter berarti berukuran 2000 bytes. File Biner yang data-datanya berupa data biner dan berupa byte stream sehingga tidak berukuran sesuai 1 dapat ditampilkan apa nilai adanya bukan dilayar. Satu karakter
byte, sedangkan
dengan
ukuran microprocessor.Ukuran
tergantung
microprocessor, bukan pada jumlah digit bilangan. 3. Manipulasi File File merupakan salah satu jenis penyimpanan yang bersifat non-volatile atau permanen, dengan demikian data-data dalam file dapat ditulis atau dibaca. Dalam pemrograman bahasa C file dikenal sebagai stream, stream merupakan kumpulan
karakter yang disusun dalam baris-baris yang berpindah dari media yang satu ke yang lain dalam suatu sistem komputer. Manipulasi file dapat dilakukan dengan menggunakan stdio.h atau fstream.h. 4. Manipulasi File dengan stdio.h Dalam menggunakan file header stdio.h setiap file memerlukan pendeklarasian sebuah variabel bertipe pointer untuk menandai file yang digunakan dalam operasi I/O. Berikut pendeklarasian pointer file:
FILE *fp, *fp2;
Berarti menyiapkan buffer area dan di-assign ke pointer bernama f. File Input Output yang digunakan dalam C secara default: stdin = untuk input file standar, yang biasanya diasosiasikan dengan inputan dari keyboard, fungsi scanf dan getchar stdout = untuk output file, biasanya diasosiakan dengan screen monitor, fungsi putchar dan printf stderr = standar error, biasanya diasosiasikan dengan screen, fungsi
fprintf(stderr, error!);
FILE adalah sebuah struct yang didefinisikan pada stdio.h sebagai berikut:
a. Membuka File Untuk membuka suatu file dapat digunakan fungsi fopen. Fungsi tersebut mengembalikan nilai pointer file yang digunakan atau jika terjadi eror maka nilai NULL akan dikembalikan. Contoh di bawah ini akan membuka file bernama prog.c dengan mode r untuk di baca dan di asossiasikan dengan pointer file fp.
fp = fopen( prog.c, r) ;
Terdapat beberapa jenis mode pembacaan file yang digunakan yaitu: r - open for reading w - open for writing (file need not exist) a - open for appending (file need not exist) r+ - open for reading and writing, start at beginning w+ - open for reading and writing (overwrite file)
a+ - open for reading and writing (append if file exists) File dapat dibuka sebagai file teks (t) atau file biner (b). File teks menggunakan parameter tambahan menjadi rt, wt, at, r+t, w+t, dan a+t. File biner
menggunakan parameter tambahan menjadi rb, wb, ab, r+b, w+b, dan a+b. Defaultnya adalah mode teks (t). Contoh penggunaan:
c. Menutup File
Nilai kembalian int akan berisi 0 jika berhasil atau -1 (EOF) jika gagal! fcloseall akan menutup seluruh stream yang aktif kecuali stdin, stdout, stdprn dan stdaux. Pada Windows, kembalian dari nilai ini tidak terlalu diperlukan karena di Windows tidak diperlukan untuk mengetahui status suatu program. Contoh penggunaan:
d. Operasi I/O pada File 1) Untuk menulis ke file dalam format tertentu:
int fprintf(fp, "Testing...\n");
jika
berhasil
akan
dikembalikan
jumlah
byte
yang
dituliskan
sedangkan jika gagal dikembalikan EOF. 2) Untuk membaca dari file dalam format field tertentu:
int fscanf(fp, "Testing...\n");
jika berhasil akan dikembalikan jumlah field yang dibaca sedangkan jika gagal dikembalikan EOF 3) Untuk menulis karakter ke file teks:
int fputc( int c, FILE *fp );
jika berhasil akan dikembalikan karakter c sedangkan jika gagal dikembalikan EOF 4) Untuk membaca file teks perkarakter:
int fgetc (FILE *fp);
jika berhasil akan dikembalikan karakter c sedangkan jika gagal dikembalikan EOF 5) Untuk meletakkan nilai integer ke file:
int putw(int w, FILE *fp);
jika berhasil akan dikembalikan integer w sedangkan jika gagal dikembalikan EOF 6) Untuk membaca nilai integer:
int getw(FILE *fp);
jika berhasil akan dikembalikan integer w sedangkan jika gagal dikembalikan EOF 7) Untuk menulis string ke file tanpa ada karakter NULL dan newline:
int fputs(const char *s,FILE *fp);
jika berhasil akan dikembalikan string s sedangkan jika gagal dikembalikan EOF 8) Untuk membaca string dari file sebanyak n karakter atau bertemu karakter \n:
char *fgets(const char *s,int n,FILE *fp);
jika berhasil akan dikembalikan string s sedangkan jika gagal dikembalikan EOF 9) Untuk mengetahui akhir sebuah file stream:
jika berhasil akan dikembalikan nilai integer selain 0. Contoh penggunaan menulisi file dari inputan keyboard menggunakan stdout :
Contoh program menyalin data dari file a.text ke file b.text: *)file harus dibuat dan diisi data terlebih dahulu(a.text)
5. Manipulasi File dengan fstream.h a. Membuka File Sebelum file digunakan/diproses harus dibuka terlebih dahulu. mendefinisikan obyek file. berikut:
ofstream nama_variabel_file; nama_variabel_file_output.open(nama_file.txt);
Kita perlu
b. Menulis File Untuk menulis ke file kita perlu menggunakan nama_variabel file dan tanda << seperti berikut ini:
nama_variabel_file_output nama_variabel_file_output << Hallo <<endl; <<endl; <<Baris kedua
Contoh program :
6. File Masukkan (InputStream) File masukkan digunakan untuk membaca data yang ada di dalam sebuah File. a. Membuka file :
ifstream nama_variabel_file_input; nama_variabel_file_input.open(nama_file.txt);
Contoh pembacaan :
atau
while(!nama_variabel_file_input.eof()){ }
Sehingga data dapat ditambahkan pada baris bawah dari akhir file. Contoh :
cout<<" Email : "; cin.getline(email,sizeof(email)); cout<<" No HP : "; cin.getline(hp,sizeof(hp)); } void rekam_kelas(Kelas pti) { char jawab; ofstream file_kelas("KELAS1.txt",ios::app); for(;;) { pti.entri_kelas(); file_kelas.write((char*)&pti,sizeof(pti)); cout<<endl<<" Masukkan data lagi (Y/T): "; cin>>jawab; if((jawab=='t')|| (jawab=='T')) break; } file_kelas.close(); }
b. Print Screen
c. Isi KELAS1.txt
private: char nama[20]; char nim[20]; char email[20]; char hp[20]; public : void info_kelas(); }; void baca_kelas(Kelas pti); void main() { Kelas kelas_pti; baca_kelas(kelas_pti); getch(); } void Kelas ::info_kelas() { cout<<" Nama : "<<nama<<endl; cout<<" NIM : "<<nim<<endl; cout<<" Email : "<<email<<endl; cout<<" No HP : "<<hp<<endl; } void baca_kelas(Kelas pti) { ifstream file_kelas("KELAS1.txt"); cout<< " === Info Data Kelas ==="<<endl<<endl; file_kelas.read((char*)&pti,sizeof(pti)); while(!file_kelas.eof()) { pti.info_kelas(); file_kelas.read((char*)&pti,sizeof(pti));; } file_kelas.close(); }
b. Print Screen
# include <string.h> # include <stdlib.h> class Kelas { private : int entry; public : void entry_kelas(); }; void rekam_kelas(Kelas pti); void main() { Kelas kelas_pti; rekam_kelas(kelas_pti); } void Kelas :: entry_kelas() { printf("Entry :"); cin>>entry; } void rekam_kelas(Kelas pti) { char pilih, agree; do { printf("\n-------------------------------\n"); printf("A.a.txt\n"); printf("B.b.txt\n"); cin>>pilih; switch(pilih) { case 'A' : case 'a' : { ofstream file_kelas("a.txt", ios :: app); for(;;) { pti.entry_kelas(); file_kelas.write((char*)&pti, sizeof(pti)); break; } file_kelas.close(); } break; case 'B' : case 'b' : { ofstream file_kelas("b.txt", ios :: app); for(;;) { pti.entry_kelas(); file_kelas.write((char*)&pti, sizeof(pti)); break;
} file_kelas.close(); } break; } printf("\nMembuat data lagi ?(y/t) :"); cin>>agree; cout<<endl; } while(agree=='Y' || agree=='y'); }
b. Print Screen
c. Isi a.txt
d. Isi b.txt
void main() { Kelas kelas_pti; baca_kelas(kelas_pti); } int Kelas :: info_kelas() { cout<<"Entry :"<<entry<<endl; return entry; } void baca_kelas(Kelas pti) { int a, b, tambah, kurang, kali, bagi; ifstream file_kelas("a.txt"); cout<<"\nData kelas a.txt :"<<endl; file_kelas.read((char *) &pti, sizeof(pti)); while(!file_kelas.eof()) { a=pti.info_kelas(); file_kelas.read((char *) &pti, sizeof(pti)); } file_kelas.close(); ifstream file_kelas2("b.txt"); cout<<"\nData kelas b.txt :"<<endl; file_kelas2.read((char *) &pti, sizeof(pti)); while(!file_kelas2.eof()) { b=pti.info_kelas(); file_kelas2.read((char *) &pti, sizeof(pti)); } file_kelas2.close(); tambah = a + b; kurang = a - b; kali = a * b; bagi = a / b; cout<<"\nDigabung dengan operator Matematika "<<endl; cout<<"a + b ="<<tambah<<endl; cout<<"a - b ="<<kurang<<endl; cout<<"a * b ="<<kali<<endl; cout<<"a / b ="<<bagi<<endl; ofstream file_kelas3("c.txt", ios :: app); file_kelas3<<"a + b ="<<tambah<<endl; file_kelas3<<"a - b ="<<kurang<<endl; file_kelas3<<"a * b ="<<kali<<endl; file_kelas3<<"a / b ="<<bagi<<endl; file_kelas3.close(); char gantinama;
cout<<"\nFile c.txt sudah terbuat, rename c.txt? (y/t) :"; cin>>gantinama; if(gantinama=='Y' || gantinama=='y') { int jadi; char lama[] = "c.txt"; char baru[10]; printf("Baru :"); gets(baru); jadi = rename(lama, baru); if(jadi==0) cout<<"File c.txt berhasil di-rename"<<endl; else cout<<"Tidak bisa me-rename c.txt"<<endl; } }
f. Print Screen
g. Isi c.txt
char fnames[30]; char cc; char ucc; cout<<"Masukkan nama file yang akan disalin :\n"; cin>>fnamea; cout<<"Masukkan nama file hasil salinan :\n"; cin>>fnames; infile.open(fnamea); if (infile.fail() ) { cerr<<"\nMaaf! Proses penyalinan Error, cek file dan cobalah sekali lagi \n"; getch(); exit(0); } outfile.open (fnames); if (outfile.fail() ) { cerr<<"Maaf! Proses penyalinan Error, cek file dan cobalah sekali lagi \n"; getch(); exit(0); } else cout<<"\n\n Selamat, File berhasil disalin "; while (!infile.eof() ) { cc = (char) infile.get(); ucc = toupper (cc); outfile.put(ucc); } infile.close(); outfile.close(); getch(); }
b. Print Screen
Misalkan kita akan memberi nama yang sama pada file hasil salinan. ASD.txt akan disimpan juga dengan nama ASD.txt.
G. Kesimpulan File merupakan salah satu jenis penyimpanan yang bersifat non-volatile atau permanen, dengan demikian data-data dalam file dapat ditulis atau dibaca. Manipulasi file dapat dilakukan dengan memakai stdio.h atau fstream.h. Operasi file standart yaitu membuat file, menulisi file, dan membaca file.
DAFTAR PUSTAKA Anonim.2010.Manipulasi File.(http://letsgobelajar.blogspot.com/2010/07/manipulasifile.html diakses tanggal 13 November 2012). Anonim.2012.Manipulasi File.(http://nurh4y.wordpress.com/2012/06/12/manipulasi-file/ diakses tanggal 13 November 2012). Munir,Rinaldi.2007.Algoritma&Pemograman dalam Bahasa Pascal C. Bandung:Penerbit Informatika. Tim Asisten Dosen.2010.Manipulation File.Malang: Pendidikan Teknik InformatikaTeknik Elektro-Universitas Negeri Malang.