Academia.eduAcademia.edu

LAPORAN DPK 8 PENGELOLAAN FILE

2019

LAPORAN PRAKTIKUM VIII PENGELOLAAN FILE Disusun untuk Memenuhi Matakuliah Dasar Pemrograman Komputer Dibimbing oleh Bapak Drs. Wahyu Sakti Gunawan Irianto, M.Kom. Oleh : MUHAMMAD RICKY PERDANA PUTRA NIM 190533646812 S1 PTI ’19 OFF B UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA NOVEMBER 2019 MODUL 8 PENGELOLAAN FILE A. Tujuan Setelah mempelajari bab ini, diharapkan mahasiswa dapat: 1. Mengetahui jenis file teks maupun file biner. 2. Membedakan jenis file teks maupun file biner. 3. Menangani file teks mapun file biner dalam Bahasa C. 4. Membuat aplikasi yang melibatkan pengelolaan file teks maupun file biner dalam Bahasa C.. B. Petunjuk 1. Awali setiap aktivitas Anda dengan doa agar Anda lancar dalam belajar. 2. Pahami tujuan, dasar teori, dan latihan-latihan praktikum dengan baik. 3. Kerjakan tugas-tugas praktikum dengan baik, jujur, dan sabar. 4. Tanyakan kepada instruktur apabila ada hal-hal yang kurang jelas. C. Alat dan Bahan 1. PC / laptop yang memenuhi kapasitas untuk pemrograman Bahasa C++. 2. Software MinGW. 3. Modul praktikum tentang file. D. Dasar Teori File adalah sebuah organisasi dari sejumlah record. Masing-masing record bisa terdiri dari satu atau beberapa field. Setiap field terdiri dari satu atau beberapa byte. Membuka File Untuk membuka atau mengaktifkan file, fungsi yang digunakan adalah fungsi fopen(). File dapat berupa file biner atau file teks. File biner adalah file yang pola penyimpanan di dalam disk dalam bentuk biner, yaitu seperti bentuk pada memori (RAM) komputer. File teks adalah file yang pola penyimpanan datanya dalam bentuk karakter. Penambahan yang perlu dilakukan untuk menentukan mode teks atau biner adalah “t” untuk file teks dan “b” untuk file biner. Prototype fungsi fopen() ada di header fungsi “stdio.h”. Bentuk umum: file *fopen(char *namafile, char *mode); Keterangan : namafile adalah nama dari file yang akan dibuka/diaktifkan. mode adalah jenis operasi file yang akan dilakukan terhadap file. Jenis-jenis operasi file: r : menyarakan file hanya dapat dibaca (file harus sudah ada) w : menyatakan file baru akan dibuat/diciptakan (file yang sudah ada akan dihapus) a : untuk membuka file yang sudah ada dan akan dilakukan proses penambahan data (jika file belum ada, otomatis akan dibuat) r+ : untuk membuka file yang sudah ada dan akan dilakukan proses pembacaan dan penulisan. w+ : untuk membuka file dengan tujuan untuk pembacaan atau penulisan. Jika file sudah ada, isinya akan dihapus. a+ : untuk membuka file, dengan operasi yang akan dilakukan berupa perekaman maupun pembacaan. Jika file sudah ada, isinya akan dihapus. Contoh: pf = fopen(“COBA.TXT”, “w”); Untuk menutup file, fungsi yang digunakan adalah fclose(). Prototype fungsi fclose() ada diheader file “stdio.h”. Bentuk umum: int fclose (FILE *pf); atau int fcloseall (void); 2. Memproses File a. Menulis Karakter Untuk menulis sebuah karakter, bentuk yang digunakan adalah: putc (int ch, file *fp) Keterangan: . fp adalah pointer file yang dihasilkan oleh fopen() . ch adalah karakter yang akan ditulis. b. Membaca Karakter Untuk membaca karakter dari file, fungsi yang digunakan adalah: getc (file *fp); Keterangan: . fp adalah pointer file yang dihasilkan oleh fopen() . Fungsi feof(), digunakan untuk mendeteksi akhir file pada saat membaca data foef (file *fp). c. Membaca dan Menulis String Fungsi untuk membaca dan menulis string adalah: fgets() dan fputs(). Bentuk umumnya: fgets (char *str, int p, file *fp); fputs (char *str, file *fp); d. Membaca dan Menulis Blok Data Fungsi untuk membaca dan menulis blok data adalah: fread() dan fwrite(). Bentuk umumnya: fread (void *buffer, int b_byte, int c, file *fp); fwrite (void *buffer, int b_byte, int c, file *fp); Keterangan: . buffer adalah pointer ke sebuah area di memori yang menampung data yang akan dibaca dari file. . b_byte adalah banyaknya byte yang akan dibaca atau ditulis ke file. . c adalah banyaknya item yang dibaca/ditulis. e. Membaca dan Menulis File yang Terformat Jika diinginkan, data bilangan dapat disimpan ke dalam file dalam keadaan terformat, fungsi yang digunakan adalah: fprintf (ptr_file, “string control”, daftar argument); fscanf (pts_file, “string control”, daftar argument); File sekuensial berisi rekord-rekord data yang tidak mengenal posisi baris atau nomor record pada saat aksesnya, dan setiap record dapat mempunyai lebar yang berbeda-beda. Akses terhadapnya selalu dimulai dari awal file dan berjalan satu persatu menuju akhir dari file. Dengan demikian, penambahan file hanya dapat dilakukan terhadap akhir file, dan akses terhadap baris tertentu harus dimulai dari awal file. Fungsi baku yang terkait dengan file sekuensial ini antara lain adalah fprintf, fscanf, dan rewind. LATIHAN PRAKTIKUM I Source code : #include <iostream.h> #include <stdio.h> #include <conio.h> #define CTRL_Z 26 using namespace std; int main(int argc, char* argv[]){ FILE *pf; /* pointer ke file */ char kar; if((pf = fopen("COBA.TXT", "w")) == NULL) /* ciptakan file */ { puts("File tak dapat diciptakan !\r\n"); exit(1); /* selesai */ } while((kar=getche()) != CTRL_Z){ putc(kar, pf); /* tulis ke file */} fclose(pf); /* tutup file */ getch(); return 0; } Output : Teks yang ditulis didalam program File teks dari program Penjelasan program : Program ini digunakan dengan cara user memasukkan sebuah kata ataupun kalimat kemudian tekan enter selanjutnya program akan menuliskan sebuah file teks yang berformat .txt yang menyimpan inputan dari user. Program menggunakan pointer sebagai penunjuk nama file yang digunakan untuk menyimpan input. Header file yang dipakai iostream.h (memanggil perintah exit), conio.h (memanggil perintah getch, berfungsi menahan layar), stdio.h (memanggil perintah puts dan putc), #define CTRL Z 26 untuk mendefinisikan bahwa CTRL Z bernilai 26. Perintah fopen untuk membuka file sedangkan fclose untuk menutup file. LATIHAN PRAKTIKUM II Source code : #include <stdio.h> #include <conio.h> using namespace std; typedef struct { long NIM; char Nama[25]; float IPK; }DataMhs; //---------------------------------------------------------------- #pragma argsuse int main(int argc, char* argv[]) { FILE *MHS; DataMhs RekMhs; FILE *BIL; int i; FILE *KAR; char c; getch(); return 0; } Output : Penjelasan program : Program ini menggunakan dua header file, (1) stdio.h (2) conio.h yang berfungsi untuk memanggil perintah getch untuk menghentikan proses diatasnya. Kemudian, pertanyaan, kenapa program beroutput langsung pada return 0; ? Karena didalam program tidak ada fungsi untuk memasukkan input dan hanya terdapat deklarasi-deklarasi variabel. LATIHAN PRAKTIKUM III Source code : #include <stdio.h> #include <conio.h> #include <windows.h> using namespace std; typedef struct { int NIM; char Nama[25]; float IPK; } DataMhs; int main(int argc, char* argv[]) { system ("color F0"); FILE *MHS; DataMhs RekMhs; MHS = fopen("kuliah.dat","w"); printf("NIM = "); scanf("%s",&RekMhs.NIM); printf("Nama = "); scanf("%s",&RekMhs.Nama); printf("IPK = "); scanf("%s",&RekMhs.IPK); fwrite(&RekMhs, sizeof(RekMhs),1,MHS); fclose(MHS); getch(); return 0; } Output : Penjelasan program : Seperti pada program sebelumnya yaitu banyak variabel yang dideklarasikan dan tidak ada perintah untuk input, berbeda dengan program tiga ini yang terdapat fungsi untuk mengeluarkan kata/karakter dalam perintah printf dan juga untuk memasukkan input sesuai dengan kehendak user dengan perintah scanf. Header file yang dipakai dalam program ini adalah (1) stdio.h yang berfungsi untuk memanggil perintah input yaitu scanf dan output yaitu printf. (2) conio.h untuk memanggil perintah getch yang berfungsi untuk menahan proses diatasnya jangan sampai langsung ke return 0; (3) kemudian windows.h yang berfungsi untuk memanggil perintah system yang digunakan untuk mengubah warna background program dan tulisan menjadi warna putih dan hitam. Cara kerja program ini adalah user menginputkan data berupa NIM, nama dan IPK yang selanjutnya akan diproses kedalam file .dat untuk disimpan. LATIHAN PRAKTIKUM IV Source code : #include <stdio.h> #include <conio.h> using namespace std; typedef struct{ int NIM; char Nama[25]; float IPK; } DataMhs; int main(int argc, char* argv[]){ FILE *MHS; DataMhs RekMhs; printf("Tulis ke file kuliah.dat\n"); MHS = fopen("kuliah.dat","w"); printf("NIM = "); scanf("%ld",&RekMhs.NIM); printf("Nama = "); scanf("%s",&RekMhs.Nama); printf("IPK = "); scanf("%f",&RekMhs.IPK); fwrite(&RekMhs, sizeof(RekMhs),1,MHS); fclose(MHS); printf("Buka File kuliah.dat\n"); FILE *BukaMhs; BukaMhs = fopen("kuliah.dat","r"); fread(&RekMhs, sizeof(RekMhs),1,BukaMhs); printf("NIM = %ld \n",RekMhs.NIM); printf("Nama = %s \n",RekMhs.Nama); printf("IPK = %2.2f \n",RekMhs.IPK); fclose(BukaMhs); return 0; } Output : Penjelasan program : Program ini digunakan dengan cara pengguna memasukkan input NIM, nama, dan IPK yang kemudian akan disimpan dalam file berekstensi .dat lalu oleh program akan dikeluarkan lagi dalam bentuk file yang ada. Header file yang dipakai adalah (1) stdio.h yang digunakan untuk memanggil perintah printf fungsinya untuk mengeluarkan karakter dan scanf yang berfungsi untuk memasukkan inputan. (2) conio.h yang berfungsi untuk mengeluarkan perintah getch fungsinya untuk menahan proses diatasnya agar tidak langsung menuju pada return 0;. Fungsi-fungsi yang berkaitan dengan file seperti fopen, fclose, fwrite, dan fread juga dipanggil. LATIHAN PRAKTIKUM V Source code : #include <stdio.h> #include <conio.h> using namespace std; int main(int argc, char* argv[]){ int request, account; float balance; char name[25]; FILE *cfPtr; if ((cfPtr = fopen("klien.dat", "r+")) == NULL ){ printf("File could not be opened\n"); }else{ printf ("Enter request\n" "1 - List accounts with zero balances\n" "2 - List accounts with credit balances\n" "3 - List accounts with debit balances\n" "4 - End of run\n? ") ; scanf("%d", &request); while (request != 4){ fscanf (cfPtr, "%d%s%f", &account, name, &balance); switch (request){ case 1: printf ("\nAccounts with zero balances:\n"); while (!feof(cfPtr)){ if (balance == 0) printf ("%-10d%-13s7.2f\n", account, name, balance); fscanf (cfPtr, "%d%s%f", &account, name, &balance); } break; case 2: printf ("\nAccounts with credit balances:\n"); while (!feof(cfPtr)){ if (balance < 0) printf ("%-10d%-13s7.2f\n", account, name, balance); fscanf (cfPtr, "%d%s%f", &account, name, &balance); } break; case 3: printf ("\nAccounts with debit balances:\n"); while (!feof(cfPtr) ){ if (balance > 0) printf ("%-10d%-13s7.2f\n", account, name, balance); fscanf (cfPtr, "%d%s%f", &account, name, &balance); } break; } rewind(cfPtr); printf("\n? "); scanf ("%d", &request); } } return 0; } Output : Penjelasan program : Program ini menggunakan header file (1) conio.h yang berfungsi untuk menahan proses diatasnya sehingga tidak langsung menuju ke return 0; (2) stdio.h digunakan untuk memanggil perintah scanf yaitu untuk memasukkan inputan dari user, printf untuk menampilkan karakter ke layar. Dalam program ini terdapat operasi kondisi case yang berfungsi mirip sekali dengan menu pilihan. Lalu kenapa outputnya bisa begitu? dikarenakan file yang sudah ditentukan namanya itu tidak ada dalam disk. Jika file yang berekstensi klien.dat itu ada maka case akan menunjukkan perannya untuk dipilih oleh user. TUGAS PRAKTIKUM I File biner adalah file yang pola penyimpanan di dalam disk berbentuk biner, yaitu seperti bentuk pada memori RAM (komputer). Misalnya data bertipe int selalu akan menempati ruang 4 byte (pada mesin 32 bit), berapapun harganya. Sedangkan file teks merupakan file yang pola penyimpanan datanya dalam bentuk karakter. Bilangan bertipe int misalnya, bisa saja menempati ruang 1 byte, 2 byte atau lebih bergantung kepada nilai dari bilangannya. Sebagai contoh, bilangan 54 akan disimpan dalam 2 byte (berupa karakter 5 dan 4), tetapi bilangan 123 akan disimpan dalam 3 byte. File seperti ini bisa dilihat langsung dengan perintah TYPE melalui prompt DOS atau memakai editor teks (seperti Notepad). TUGAS PRAKTIKUM II Latihan praktikum I Disini dipraktikan bagaimana cara membuat sebuah file. Latihan praktikum II Disini diberikan contoh mendeklarasikan variabel dalam pengelolaan sebuah file Latihan praktikum III Setelah diatasnya diberikan contoh mengenai cara mendeklarasikan variabel, di latprak III ini variabel tersebut diberi inputan sesuai kehendak user dengan memasukkan NIM, nama, dan IPK. Latihan praktikum IV Kemudian disini setelah user memasukkan inputan maka input tersebut akan dikeluarkan lagi berdasarkan file. Latihan praktikum V Hampir sama dengan latprak IV namun bedanya file yang ditunjuk tidak ada sehingga menghasilkan sebuah output seperti pada gambar. Kesimpulan yang didapatkan dari latihan 1 sampai latihan 5 adalah memanfaatkan pengeloaan file sangat membantu seseorang dalam menyimpan data dan membukanya kembali dalam program sehingga diharapkan ketika seorang user memasukkan data kemudian menutup programnya maka data-data yang dimasukkan itu bisa di buka kembali dan tidak hilang. Pengaplikasian code ini adalah seperti pada aplikasi perpustakaan, ketika seorang meminjam buku maka data buku serta data peminjam akan dituliskan pada program. Lalu suatu ketika sang peminjam akan mengembalikan buku, komputer akan membuka file yang dahulu peminjam masukkan. TUGAS PRAKTIKUM III Source code : #include <iostream> #include <fstream> #include <stdio.h> #include <string.h> #include <windows.h> using namespace std; int main() { system ("color F0"); char str[100], str2[100], temp[1]; char *s; FILE *pf; pf = fopen("tugasrumah.dat","w"); cout << "Masukkan karakter-karakter yang ingin dinputkan: " << endl; cin.getline(str, 100); for (int a=0; a<strlen(str); a++) { s=str; putc(*(s+a), pf); } strcpy(str2, str); for(int i=1;i<strlen(str2);i++) { for(int j=0;j<strlen(str2);j++) { if(str2[i]<str2[j]) { temp[0]=str2[i]; str2[i]=str2[j]; str2[j]=temp[0]; } } } for (int a=0; a<strlen(str2); a++) { s=str2; putc(*(s+a), pf); } cout << "Hasil proses karakter-karakter adalah : " << endl;; cout << str2 << endl << endl; fclose(pf); cout << "Membuka file yang telah dibuat : " << endl; FILE *ff; ff = fopen("tugasrumah.dat","r"); cout << str << endl; cout << str2 << endl; return 0; } Output : Penjelasan program : Program diatas menggunakan beberapa header file, (1) iostream yang berfungsi untuk memanggil perintah cin dan cout, (2) fstream, berfungsi untuk memanggil library yang berkaitan dengan pengelolaan file, (3) stdio.h, sebagian perintah untuk pengelolaan file ada di stdio.h seperti fopen dan fclose. (4) string.h, berkaitan dengan pengolahan string (kumpulan dari beberapa karakter) seperti, strcpy. (5) terakhir windows.h yang berfungsi untuk memanggil perintah system yang disini digunakan untuk mengubah background program menjadi putih dan tulisannya menjadi hitam. Dalam fungsi main ada beberapa variabel yang menggunakan array dengan tipe data char. Kemudian juga terdapat pointer dengan tipe data char. Program bekerja dengan cara user memasukkan inputan huruf bisa kapital bisa kecil, lalu di proses menjadi urutan semua huruf yang kapital berada didepan dan yang huruf kecil setelahnya. Kemudian input dan hasil proses disimpan dalam file berekstensi .dat lalu dikeluarkan lagi seperti pada output diatas. TUGAS RUMAH I Source code : #include <iostream> #include <conio.h> #include <string> #include <windows.h> using namespace std; void cek(char *, int *, int *); int main(){ system ("color F0"); int b, a; char kata[255]; cout << "-----------------------------------\n"; cout << " Program Auto Kapital\n"; cout << "-----------------------------------\n"; cout << " Masukkan kalimat :\n "; cin.getline(kata,255); a = strlen(kata); cek(kata, &b, &a); cout << "-----------------------------------\n"; cout << " Hasil :\n "; for(b = 0; b < a; b++){ cout << kata[b]; } cout << "\n-----------------------------------\n"; getch(); } void cek(char *ptr, int *x, int *y){ *(ptr) = toupper(*(ptr)); for(*x = 0; *x < *y; *x += 1){ if(*(ptr + *x) == ' '){ *x += 1; *(ptr + *x) = toupper(*(ptr + *x)); } } } Output : Penjelasan program : Header file yang dipakai ada empat, (1) iostream untuk memanggil perintah cin dan cout, (2) conio.h untuk memanggil perintah getch(); berfungsi menghentikan perintah diatas sehingga akan tertahan di layar dan tidak langsung menuju pada return 0; (3) string untuk memanggil perintah yang berkaitan dengan pengolahan string (kumpulan karakter). (4) windows.h untuk memanggil perintah system yang digunakan untuk mengubah background program menjadi putih dan tulisan menjadi hitam. Program ini bekerja dengan cara user memasukkan inputan kata lalu prosesnya perintah toupper (mengubah huruf menjadi kapital). Tetapi yang berubah hanya bagian huruf depannya saja. Perintah strlen (kata) berfungsi untuk menghitung karakter. Didalam program terdapat operasi kondisi dan juga perulangan for. Perulangan for untuk mengeluarkan kata yang sudah terproses huruf awalnya menjadi huruf kapital. KESIMPULAN Pengelolaan file berfungsi untuk memudahkan user untuk menyimpan input. Kemudian, ketika suatu hari ingin dibuka kembali maka kita tinggal memberikan perintah untuk mengeluarkan isi filenya ke layar. File yang dimaksud disini adalah sebuah data yang ditulis yang sudah diprogramkan untuk menyimpan semua record input dari user. Pointer juga memiliki fungsi disini yaitu menunjuk suatu memori dan bisa diisi dengan nilai yang diinputkan user. Untuk memudahkan penyusunan program maka digunakanlah suatu fungsi agar lebih sederhana penulisan perintah berulangnya. Perintah pengelolaan file terdapat pada library header fstream. Terdapat dua jenis file, yaitu file teks dan file biner. File teks merupakan file yang menyimpan data dalam bentuk teks. File biner adalah file yang menyimpan data dalam bentuk biner, angka 1 dan 0. DAFTAR RUJUKAN Tim Asisten Dosen. 2017. Modul 7 Pointer. Malang: Universitas Negeri Malang. Tim Asisten Dosen. 2017. Modul 8 Pengelolaan File. Malang: Universitas Negeri Malang. Santoso, Rachmat. 2016. Operasi File C++ Menulis dan Membaca File. Dalam http://www.nblognlife.com/2016/04/operasi-file-c-menulis-dan-membaca-file.html