MODUL VII
FILE (BERKAS)
A. Tujuan Praktikum
1. Mahasiswa dapat memahami konsep file
2. Mahasiswa dapat mengetahui dan mengimplemtasikan file dalam program.
B. Dasar Teori
Dalam pemrograman, operasi-operasi yang dapat dilakukan pada file adalah
input/output file dan manipulasi file. Operasi I/O (input/output) melibatkan pembacaan
file (input) dari file atau perekaman (output) ke file. Manipulasi file melibatkan operasi
terhadap suatu file tanpa melakukan proes input atau output, misalnya mengecek
keberadaan file di disk, mengganti nama file, menghapus file, dan sebagainya.
1. Pengertian File
File adalah sebuah organisasi dari sejumlah record. Masing-masing
record bisa terdiri dari satu atau beberapa field. Setiap file terdiri dari satu atau
beberapa byte. Jenis file terdiri dari dua macam yaitu file teks dan file biner :
a) File teks
File teks adalah file yang berisikan kumpulan karakter ASCII yang disusun
menjadi beberapa baris.
b) File biner
File biner adalah file yang berisikan data yang masing-masing elemen
berupa data 8 bit (1 byte).
2. Operasi File
Operasi file adalah proses input / baca dari file dan proses output / tulis
ke file. Jenis-jenis operasi file :
r : menyatakan 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.
Untuk melakukan operasi input file digunakan objek ifstream dan untuk
operasi output file digunakan objek ofstream. Kedua objek tersebut berada pada
header file fstream.h.
Operasi dasar pada file pada dasarnya terbagi menjadi tiga tahap yaitu :
a. Membuka File
Sebelum suatu file dapat diproses, file harus dibuka terlebih dahulu. Untuk
itu kita perlu mendefinisikan obyek file. Salah satu bentuk pernyataan yang
diperlukan :
ofstream nama_obyek;
ofstream adalah nama kelas yang disediakan C++ untuk menangani
operasi keluaran file. Berikut penulisan pada program :
ofstream simpan;
Setelah suatu objek file diciptakan, untuk membuka file dapat dilakukan
dengan cara berikut ini :
Nama_object.open (nama_file);
b. Menulis File
Salah satu jenis pemprosesan pada file adalah menulis atau merekam data ke
file.
Nama object<<”statement”<<endl;
c. Menutup File
Setelah pemrosesan file berakhir, file perlu ditutup. Langkah ini dilakukan
dengan memanggil fungsi anggota bernama close().
Nama_object.close();
Modus keluaran
simpan.open(”file.txt”);
Script diatas merupakan operasi untuk membuka file dengan modus keluaran.
Artinya, bila pernyataan ini dieksekusi maka :
- isi file akan dihapus jika file sudah ada
- file akan diciptakan jika belum ada
Pada suatu waktu mungkin Anda memerlukan cara supaya file yang Anda
buka dapat dipergunakan untuk membaca dan menulis sekaligus, atau isi file
yang sudah ada tidak dihapus jika Anda ingin menambah isi file yang baru.
Untuk keperluan itu, Anda harus memformat modus pembukaan file.
Adapun modus pembukaan file yang disediakan oleh C++ adalah sebagai
berikut
int main()
{
char FirstName[30], LastName[30];
int Age; char FileName[20];
cout << "Enter First Name: "; cin >> FirstName;
cout << "Enter Last Name: "; cin >> LastName;
cout << "Enter Age: "; cin >> Age;
cout << "\nEnter the name of the file you want to
create: ";
cin >> FileName;
ofstream Students(FileName, ios::out);
Students << FirstName << "\n" << LastName << "\n"
<< Age;
cout << "\n\n";
return 0;
}
int main()
{
char FirstName[30], LastName[30];
int Age; char FileName[20];
cout << "Enter First Name: ";cin >> FirstName;
cout << "Enter Last Name: "; cin >> LastName;
cout << "Enter Age: "; cin >> Age;
cout << "\nEnter the name of the file you want to
create: ";
cin >> FileName;
ofstream Students(FileName, ios::out);
Students << FirstName << "\n" << LastName << "\n"
<< Age;
cout << "\n\n";
return 0;
}
d. Penunjuk File
Setiap obyek file memiliki penunjuk file tersendiri. Penunjuk file bertindak
sebagai penunjuk posisi di dalam file terhadap perekaman ataupun
pembacaan. Dalam hal ini setipa obyek file memiliki dua buah penunjuk file,
yaitu penunjuk file untuk keperluan pembacaan data dan penunjuk file untuk
keperluan perekaman data.
Penunjuk file, baik untuk keperluan perekaman ataupun pembacaan,
dapat dipindahkan dengan menggunakan fungsi anggota seekg()dan
seekp().
seekg()Berguna untuk memindahkan penunjuk file yang digunakkan
sebagai penunjuk operasi pembacaan.
seekp()Berguna untuk memindahkan penunjuk file yang digunakan
sebagai penunjuk operasi perekaman .
Format dari kedua fungsi di atas:
seekp(offset,posisi_acuan);
seekg(offset,posisi_acuan);
Nilai Keterangan
ios::beg Posisi dari awal file
ios::cur Posisi berdasarkan letak penunjuk file sekarang
Ios::end Posisi dari akhir file
Sebagai contoh:
file_masukan.seekp(0, ios::end)
C. Permasalahan
Buatlah program penjualan pada Toko Komputer dengan menggunakan struct
Barang dan Pembeli. Pada struct Barang terdapat variabel (id, namaBarang, harga,
dan jumlah) dan pada struct Pembeli terdapat variabel (namaPembeli, alamat,
jumlahBarang, dan bayarTotal). Data hasil ditampilkan file “.txt”.
Start
jumlahBarang = 0
bayarTotal = 0
input()
output()
Y
Kembali = ‘Y’
End
i = 0; i<jenis
Input pilih
Y
pilih = 1
T
Y
pilih = 2
T
Y
pilih = 3
T
Y id;
pilih = 4 namaBara Input jumlah
ng; harga
T
Y
pilih = 5
T
Y
pilih = 6
T
bayarTotal += bayar;
jumlahBarang +=
barang.jumlah;
output()
i = 0; i<jenis
Input kembali
struct Barang
{
string id[6], namaBarang[6];
double harga[6], jumlah[6];
};
struct Pembeli
{
char nama[30], alamat[30];
double jumlahBarang, bayarTotal, uang, kembalian;
};
Barang barang;
Pembeli pembeli;
int pilih, jenis, i;
double bayar(double a, double b);
double kembalian(double a, double b);
void input()
{
cout<<" Berapa Jenis barang yang ingin dibeli : ";
cin>>jenis;
cout<<endl;
for(i=0; i<jenis;i++)
{
cout<<" Pilihan Ke-"<<(i+1)<<" : ";cin>>pilih;
switch(pilih)
{
case 1:
barang.id[i] = "B001";
barang.namaBarang[i] = "Mouse";
barang.harga[i] = 35000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 2:
barang.id[i] = "B002";
barang.namaBarang[i] = "Keyboard";
barang.harga[i] = 50000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 3:
barang.id[i] = "B003";
barang.namaBarang[i] = "Monitor";
barang.harga[i] = 85000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 4:
barang.id[i] = "B004";
barang.namaBarang[i] = "Flashdisk";
barang.harga[i] = 70000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 5:
barang.id[i] = "B005";
barang.namaBarang[i] = "Kabel";
barang.harga[i] = 15000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 6:
barang.id[i] = "B006";
barang.namaBarang[i] = "HUB";
barang.harga[i] = 75000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
}
cout<<endl;
pembeli.bayarTotal = pembeli.bayarTotal +
bayar(barang.jumlah[i], barang.harga[i]);
pembeli.jumlahBarang = pembeli.jumlahBarang +
barang.jumlah[i];
}
cout<<"\n\tBiodata Pembeli\n\n";
cout<<" Nama : ";cin>>pembeli.nama;
cout<<" Alamat : ";cin>>pembeli.alamat;
cout<<" Total Pembayaran : Rp.
"<<pembeli.bayarTotal<<endl;
cout<<" Jumlah Uang : Rp. ";cin>>pembeli.uang;
pembeli.kembalian =
kembalian(pembeli.uang,pembeli.bayarTotal);
}
void output()
{
cout<<"\n Struct Pembelian Sudah Di Cetak !!!\n";
cout<<" Terima Kasih :)";
ofstream file;
file.open("Data.txt");
file<<"\n\t\t##### STRUCT PEMBELIAN #####\n\n";
file<<"
+====+======+================+=================+========+\n";
file<<" | "<<setiosflags(ios::left)<<setw(3)<<"No";
file<<"| "<<setiosflags(ios::left)<<setw(5)<<"ID";
file<<"| "<<setiosflags(ios::left)<<setw(15)<<"Nama
Barang";
file<<"| "<<setiosflags(ios::left)<<setw(15)<<"Harga
Barang";
file<<" | "<<setiosflags(ios::left)<<setw(5)<<"Jumlah
|\n";
file<<"
+====+======+================+=================+========+\n";
for(i=0; i<jenis; i++)
{
file<<" | "<<setiosflags(ios::left)<<setw(3)<<(i+1);
file<<"|
"<<setiosflags(ios::left)<<setw(5)<<barang.id[i];
file<<"|
"<<setiosflags(ios::left)<<setw(12)<<barang.namaBarang[i];
file<<"|
Rp."<<setiosflags(ios::left)<<setw(3)<<barang.harga[i];
file<<" |
"<<setiosflags(ios::left)<<setw(5)<<barang.jumlah[i]<<" |\n";
}
file<<"
+====+======+================+=================+========+\n";
file<<" | Total Pembayaran | Rp.
"<<setiosflags(ios::right)<<setw(15)<<pembeli.bayarTotal<<"
|\n";
file<<"
+============================+==========================+\n\n
";
file<<" Nama : "<<pembeli.nama<<endl;
file<<" Alamat : "<<pembeli.alamat<<endl;
file<<" Jumlah Barang : "<<pembeli.jumlahBarang<<endl;
file<<" Jumlah Uang : Rp. "<<pembeli.uang<<endl;
file<<" =================================\n";
file<<" Kembalian : Rp. "<<pembeli.kembalian;
file.close();
}
main()
{
char kembali;
pembeli.jumlahBarang = 0;
pembeli.bayarTotal = 0;
do
{
clrscr();
cout<<"\n\t ##### TOKO KOMPUTER #####\n\n";
cout<<"\tData Barang\n\n";
cout<<" [1] Mouse\n [2] Keyboard\n";
cout<<" [3] Monitor\n [4] Flashdisk\n";
cout<<" [5] Kabel\n [6] HUB\n\n";
input();
output();
getch();
cout<<"\n\n Apakah Anda ingin membeli lagi [Y/N] ?
";cin>>kembali;
}while(kembali=='Y' || kembali=='y');
}
D. Analisa Data
1. Header
#include <iostream>
#include <conio>
#include <string>
#include <iomanip>
Script program diatas merupakan bagian header dari program yang merupakan
bagian library dari program C++ dimana pada bagian header ini dideklarasikan 2
buah header yang mendeklarasikan sejumlah statement yang ada pada program.
Berikut penjelasan masing-masing header :
#include <iostream>
};
Script diatas digunakan 2 fungsi yaitu fungsi bayar dengan parameter a dan
parameter b dengan tipe data double pula serta fungsi kembalian dengan
tipe data double. Fungsi bayar() digunakan untuk pembeli agar
mengetahui jumlah uang yang harus dibayarkan. Fungsi kembalian digunakan
untuk mengetahui sisa uang pembeli yang telah dibayarkan untuk membeli
barang. Dari paramater di atas dapat diketahui bila parameter yang digunakan
adalah parameter formal.
Fungsi input()
void input()
{
cout<<" Berapa Jenis barang yang ingin dibeli : ";
cin>>jenis;
cout<<endl;
Script diatas merupakan deklarasi untuk fungsi input() tanpa nilai balik. Pada
fungsi input() kita diminta untuk memasukkan nilai pada variabel jenis.
for(i=0; i<jenis;i++)
{
cout<<" Pilihan Ke-"<<(i+1)<<" : ";cin>>pilih;
}
Perulangan di atas digunakan untuk memilih berapa jenis barang yang ingin
dibeli. Program akan melakukan perulangan berdasarkan jumlah jenis
barang yang akan dibeli.
switch(pilih)
{
case 1:
barang.id[i] = "B001";
barang.namaBarang[i] = "Mouse";
barang.harga[i] = 35000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 2:
barang.id[i] = "B002";
barang.namaBarang[i] = "Keyboard";
barang.harga[i] = 50000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 3:
barang.id[i] = "B003";
barang.namaBarang[i] = "Monitor";
barang.harga[i] = 85000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 4:
barang.id[i] = "B004";
barang.namaBarang[i] = "Flashdisk";
barang.harga[i] = 70000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 5:
barang.id[i] = "B005";
barang.namaBarang[i] = "Kabel";
barang.harga[i] = 15000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
case 6:
barang.id[i] = "B006";
barang.namaBarang[i] = "HUB";
barang.harga[i] = 75000;
cout<<" Jumlah Barang : ";
cin>>barang.jumlah[i];
break;
}
Script diatas merupakan deklarasi untuk fungsi output() tanpa nilai balik. Pada
fungsi output() terdapat Script untuk membuka file “Data.txt” dengan objek
bernama file.
file<<"\n\t\t##### STRUCT PEMBELIAN #####\n\n";
file<<"
+====+======+================+=================+========
+\n";
file<<" | "<<setiosflags(ios::left)<<setw(3)<<"No";
file<<"| "<<setiosflags(ios::left)<<setw(5)<<"ID";
file<<"| "<<setiosflags(ios::left)<<setw(15)<<"Nama
Barang";
file<<"| "<<setiosflags(ios::left)<<setw(15)<<"Harga
Barang";
file<<" | "<<setiosflags(ios::left)<<setw(5)<<"Jumlah
|\n";
file<<"
+====+======+================+=================+========
+\n";
for(i=0; i<jenis; i++)
{
file<<" | "<<setiosflags(ios::left)<<setw(3)<<(i+1);
file<<"|
"<<setiosflags(ios::left)<<setw(5)<<barang.id[i];
file<<"|
"<<setiosflags(ios::left)<<setw(12)<<barang.namaBarang[i
];
file<<"|
Rp."<<setiosflags(ios::left)<<setw(3)<<barang.harga[i];
file<<" |
"<<setiosflags(ios::left)<<setw(5)<<barang.jumlah[i]<<"
|\n";
}
file<<"
+====+======+================+=================+========
+\n";
file<<" | Total Pembayaran | Rp.
"<<setiosflags(ios::right)<<setw(15)<<pembeli.bayarTotal
<<" |\n";
file<<"
+============================+==========================
+\n\n";
fungsi kembalian().
5. Fungsi Utama
main()
{
char kembali;
pembeli.jumlahBarang = 0;
pembeli.bayarTotal = 0;
Script diatas adalah fungsi main () yang termasuk fungsi utama dimana fungsi
tersebut yang dijalankan pertama kali oleh program. Terdapat variabel
kembali dengan tipe data karakter yang digunakan untuk variabel dalam
perulangan do-while. Pemberian nilai awal pada struct
Perulangan Do-While
do
{
while(kembali=='Y' || kembali=='y');
E. Kesimpulan
1. 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.
2. Untuk dapat mengedit isi dari suatu file terlebih dahulu dibuat file tersebut, setelah
itu file dibuka dengan menggunkan format perintah
nama_object.open(namaFile) dan dilakukan edit file
3. File yang akan diganti diedit isinya akan terhapus data sebelumnya pada file
tersebut kemudian akan diganti dengan data yang baru
4. Untuk melakukan operasi input file digunakan objek ifstream dan untuk operasi
output file digunakan objek ofstream. Kedua objek tersebut berada pada header
file <fstream>
5. Operasi dasar pada file pada dasarnya terbagi menjadi empat tahap yaitu :
Pendeklarasian object
ofstream nama_object;
Menutup file
nama_object.close();
Tugas Pendahuluan
Membuat program data mahasiswa dan menampilkan data pada dalam bentuk file.
#include <iostream>
#include <conio>
#include <string>
#include <fstream>
struct data
{
string nim[10], nama[30], nilai1[5], nilai2[5];
int banyak;
}mahasiswa;
void main()
{
char kembali;
do
{
clrscr();
cout<<"\n\t Input Data Mahasiswa\n\n";
cout<<" Masukkan jumlah Mahasiswa : ";
cin>>mahasiswa.banyak;
cout<<endl;
for(int a=1;a<=mahasiswa.banyak;a++)
{
cout<<" Masukkan NIM :
";cin>>mahasiswa.nim[a];
cout<<" Masukkan Nama :
";cin>>mahasiswa.nama[a];
cout<<" Masukan Nilai Basprog :
";cin>>mahasiswa.nilai1[a];
cout<<" Masukan Nilai Prak. Basprog :
";cin>>mahasiswa.nilai2[a];
cout<<" ==================================\n";
cout<<endl;
}
ofstream file;
file.open("TPModul7.txt");
file<<"\n\t##### Data Mahasiswa #####\n\n";
for(int a=1;a<=mahasiswa.banyak;a++)
{
file<<" DATA KE "<<a<<":"<<endl;
file<<" NIM : "<<mahasiswa.nim[a]<<endl;
file<<" Nama : "<<mahasiswa.nama[a]<<endl;
file<<" Nilai Basprog :"<<mahasiswa.nilai1[a]<<endl;
file<<" Nilai
Prak.Basprog :"<<mahasiswa.nilai2[a]<<endl<<endl;
}
file.close();
cout<<" Data Telah tersimpan :) !!!\n\n";
getch();
cout<<" Apakah Anda ingin mengulang ? ";
cin>>kembali;
}while(kembali=='Y');
}
Tampilan Program
Tugas 1
Membuat program dengan operasi file r, w, dan a.
Script program
#include <fstream>
#include <conio>
#include <iostream>
main()
{
int pilih, kelompok;
char nama[30], nim[10], kembali, sesuatu[100];
do
{
clrscr();
cout<<"\n\t ##### PROGRAM FILE #####\n\n";
cout<<" Pilih Operasi\n\n";
cout<<" [1] Read Only\n [2] Rewrite\n [3] Add Contents\n\n";
cout<<" Pilihan : ";cin>>pilih;
if(pilih==1)
{
cout<<" Isi dari file Tugas.txt akan ditampilkan\n\n";
char karakter;
ifstream file;
file.open("Tugas.txt");
while(!file.eof())
{
file.get(karakter);
cout<<karakter;
}
file.close();
}
else if(pilih==2)
{
ofstream file;
file.open("Tugas.txt");
cout<<"\n\t###### PROGRAM FILE ######\n\n";
cout<<" Masukkan Nama : ";cin>>nama;
cout<<" Masukkan NIM : ";cin>>nim;
cout<<" Masukkan Kelompok : ";cin>>kelompok;
cout<<"\n Isi file telah diganti !\n";
file<<"\n\t###### PROGRAM FILE ######\n\n";
file<<nama<<endl;
file<<nim<<endl;
file<<kelompok<<endl;
file.close();
}
else if(pilih==3)
{
ofstream file;
file.open("Tugas.txt", ios::app);
cout<<" Proses Penambahan isi File\n";
cout<<" Masukkan Nama : ";cin>>nama;
cout<<" Masukkan NIM : ";cin>>nim;
cout<<" Masukkan Kelompok : ";cin>>kelompok;
cin>>sesuatu;
file<<nama<<endl;
file<<nim<<endl;
file<<kelompok<<endl;
file.close();
}
getch();
cout<<"\n Apakah anda ingin kembali ? ";cin>>kembali;
}while(kembali=='Y' || kembali=='y');
}
Tampilan program
Tugas 2
Tampilan program
Daftar Pustaka
Fandi junianto Pratama . 2012 . tipe data struct dalam c++ . html .
http://fandijuniantopratama.blogspot.com/2012/03/tipe-data-struct-structe-dalam-
c.html diakses pada 22 Juni 2015
Utama ,Didit N. & Widayanti, Riya. 2005. Algoritma & Pemrograman dengan Borland C+
+,Graha Ilmu – Yogyakarta.
Kadir, Abdul. 2004. Pemrograman C++, Andi Offset – Yogyakarta.
Frieyadie. 2007. Pemrograman C++ dengan Borland C++ 5.02. Jakarta.