Latest News

Operasi File

Operasi File
Operasi dasar file pada prinsipnya terbagi menjadi 3 tahap, yaitu:
- membuka atau mengaktifkan file
- melaksanakan pemrosesan file
- menutup dile

A. Membuka file
Sebelum suatu file dapat diproses, file harus dibuka terlebih dahulu. Sebelum file dibuka, terlebih dahulu obyek file harus didefinisikan. Sintaksnya:
ofstream nama_obyek;

perintah ofstream dapat dijalankan dengan menyertakan file header fstream.h Setelah itu, suatu file dapat dibuka dengan perintah

nama_obyek.open(“nama file dan path”);

B. Menulis ke File
Salah satu jenis pemrosesan pada file adalah menulis atau merekam data ke file.
Sintaknya:
nama_obyek << ... ;

C. Menutup File
Setelah pemrosesan file selesai, file dapat ditutup menggunakan perintah
nama_obyek.close();

Contoh 1.
Program berikut ini untuk menulis teks ke dalam file

#include
#include
void main()
{
ofstream fileteks;
fileteks.open(“C:/algo.txt”);
fileteks << “Untuk mencapai tujuan yg besar, maka tujuan itu”
<< endl;
fileteks << “harus dibagi-bagi menjadi tujuan kecil”<< endl;
fileteks << “sampai tujuan itu merupakan tujuan yg dapat “
<< “dicapai” << endl;
fileteks << “berdasarkan kondisi dan potensi yg dimiliki saat “
<< itu “ << endl;
fileteks.close();
}

perintah fileteks.open(“C:/algo.txt”); akan membuka file algo.txt yang ada di C:\ Apabila file tersebut belum ada maka akan dibuat secara otomatis, dan apabila sudah ada isi file algo.txt akan terhapus.

D. Menambah Data pada File
Suatu file yang sudah ada sebelumnya dapat ditambah data yang baru (tidak menghapus data lama). Caranya dengan menambahkan perintah ios::app pada open().
nama_obyek.open(“nama file”, ios::app);

Contoh 2.
#include
#include
void main()
{
ofstream fileteks;
fileteks.open(“C:/algo.txt”, ios::app);
fileteks << endl;
fileteks << “Oleh: Al Khowarizmi << endl;
fileteks.close();
}

E. Memeriksa Keberhasilan Operasi File
Tidak selamanya jalan yang mulus ditemui. Ada kemungkinan terjadi saat file dibuka, ternyata file tidak ada. Dalam C++ tersedia function untuk memeriksa kondisi-kondisi pada operasi file, sehingga kesalahan saat eksekusi dapat dikendalikan. Function yang dimaksud adalah fail().

Contoh 3:
#include
#include
void main()
{
ifstream fileteks; { ifstream digunakan u/ membaca file }
fileteks.open(“C:/algo.txt”);
if (fileteks.fail()) cout << “Maaf file takdapat dibuka/”
<< “tidak ditemukan”;
fileteks.close();
}

F. Operasi Berbasis Karakter
Operasi file dapat dilakukan dalam bentuk karakter. Misalnya proses
penyimpanan data ke file dilakukan setiap karakter, atau membaca data file
karakter per karakter. Operasi ini didukung oleh function put() dan get().

Contoh 4:
Program untuk menyimpan data karakter per karakter ke dalam file.

#include
#include
void main()
{
ofstream fileteks;
fileteks.open(“C:/contoh.txt”);
fileteks.put(‘A’);
fileteks.put(‘B’);
fileteks.put(‘C’);
fileteks.close();
}
Contoh 5.
Program untuk membaca file karakter per karakter

#include
#include
void main()
{
char karakter;
ifstream fileteks; {}
fileteks.open(“C:/contoh.txt”);
while(!fileteks.eof())
{
fileteks.get(karakter);
cout << karakter;
}
fileteks.close();
}

Latihan.

1. Buatlah program C++ untuk menghitung jumlah karakter dalam suatu file. Inputnya adalah nama file dan pathnya.
2. Buatlah program C++ untuk menghitung jumlah karakter tertentu, misalnya karakter ‘A’. Input berupa nama file dan karakter yang akan dihitung.
3. Misalkan suatu file teks berisi listing program C++. Buatlah program untuk menghitung pasangan kurung kurawal yang ada pada file teks tersebut.
4. Buatlah program C++ untuk melakukan enkripsi shift chiper suatu file teks (dengan asumsi semua karakter huruf adalah huruf kapital). Inputnya adalah file teks yang akan dienkripsi dan besar pergeseran (integer). Outputnya adalah file teks hasil enkripsi.

Hint:
Ide dasar shift chiper adalah mengubah setiap karakter huruf ke karakter huruf lain. Misalkan pergeserannya 2, maka berikut ini karakter hasil enkripsi

awal A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
hasil C D E F G H I J K L M N O P Q R S T U V W X Y Z A B

Sehingga misal diberikan suatu teks C++ IS EASY, maka hasil enkripsinya
adalah E++ KU GCUA


CLASS
Class merupakan struktur data dari obyek. Untuk menjelaskan tentang class, lihat perbandingannya dengan struktur berikut ini:

Perhatikan program di bawah ini:

Contoh 1.
#include
#include
#include
struct mahasiswa
{
char nim[8];
char nama[20];
int umur;
};
void main()
{
mahasiswa mhsd3;
strcpy(mhsd3.nim, “M0197001”);
strcpy(mhsd3.nama, “Burhanudin Harahap”);
mhsd3.umur = 20;
cout << mhsd3.nim << endl;
cout << mhsd3.nama << endl;
cout << mhsd3.umur << endl;
}


Setelah program di atas dicompile, error tidak ada.
Berikutnya struktur di atas kita ganti dengan class, menjadi

Contoh 2.
#include
#include
#include
class mahasiswa
{
char nim[8]; char nama[20];
int umur;
};
void main()
{
mahasiswa mhsd3;
strcpy(mhsd3.nim, “M0197001”);
strcpy(mhsd3.nama, “Burhanudin Harahap”);
mhsd3.umur = 20;
cout << mhsd3.nim << endl;
cout << mhsd3.nama << endl;
cout << mhsd3.umur << endl;
}

setelah program di atas di compile, ternyata error muncul. Error tersebut muncul karena class tidak dikenal dalam main(). Kesalahan ini sekaligus menunjukkan perbedaan dengan struktur.

Penggunaan PUBLIC

Agar program di atas dapat dicompile, ditambahkan perintah public diikuti dengan tanda titik dua (:), sehingga programnya menjadi
Contoh 3.
#include
#include
#include
class mahasiswa
{
public:
char nim[8];
char nama[20];
int umur;
};
void main()
{
mahasiswa mhsd3;
strcpy(mhsd3.nim, “M0197001”);
strcpy(mhsd3.nama, “Burhanudin Harahap”);
mhsd3.umur = 20;
cout << mhsd3.nim << endl;
cout << mhsd3.nama << endl;
cout << mhsd3.umur << endl;
}

Perintah PUBLIC menyatakan bahwa perintah-perintah yang ada di bawahnya dapat diakses diluar class. Perintah PUBLIC merupakan termasuk access specifier (penentu akses). Selain PUBLIC, terdapat perintah lain yang termasuk access specifier, yaitu PRIVATE.

Contoh 4.
#include
#include
#include
class mahasiswa
{
private:
char nim[8];
char nama[20];
int umur;
};
void main()
{
mahasiswa mhsd3;
strcpy(mhsd3.nim, “M0197001”);
strcpy(mhsd3.nama, “Burhanudin Harahap”);
mhsd3.umur = 20;
cout << mhsd3.nim << endl;
cout << mhsd3.nama << endl;
cout << mhsd3.umur << endl;
}

Setelah dicompile, error yang sama dengan sebelumnya muncul yaitu class tidak dapat diakses di main(). Perintah PRIVATE memberi pengertian bahwa perintah yang ada dibawahnya hanya dapat diakses dalam class tersebut, yang dalam hal ini adalah class mahasiswa.

variabel nim, nama, dan umur dalam class mahasiswa disebut data anggota. Selain data anggota, kita juga dapat menambahkan fungsi anggota.

Contoh 5.
#include
#include
#include
class mahasiswa
{
private :
char nim[8];
char nama[20];
int umur;
public :
void inisialisasi(char *NIMMHS, char *NAMAMHS, int UMURMHS)
{
strcpy(nim, NIMMHS);
strcpy(nama, NAMAMHS);
umur = UMURMHS;
}
void tampilkan()
{
cout << nim << endl;
cout << nama << endl;
cout << umur << endl;
}
};
void main()
{
mahasiswa mhsd3;
mhsd3.inisialisasi(“M0197001”, “Burhanudin Harahap”, 20);
mhsd3.tampilkan();
}

Pada program di atas, fungsi inisialisasi() dan tampilkan() merupakan fungsi anggota dari class mahasiswa. Keduanya dibuat public karena akan diakses dari luar class, sedangkan data anggotanya (nim, nama, umur) dibuat private. Mungkin Anda berpikir mengapa program terakhir (contoh 5) terlalu panjang, padahal akan diperoleh hasil yang sama dengan program sebelumnya (contoh 1). Anda memang benar, tapi contoh 5 ini merupakan cara pemrograman berorientasi obyek (PBO).

Perhatikan program contoh 5, khususnya pada kedua fungsi anggota. Kedua fungsi tidak punya prototype. Kita juga dapat memberikan prototype yang merupakan cara kedua dalam penulisan.

Contoh 6.
#include
#include
#include
class mhs
{
private :
char nim[8];
char nama[20];
int umur;
public :
void inisialisasi(char *NIMMHS, char *NAMAMHS, int UMURMHS);
void tampilkan();
};
void main()
{
mhs mhsd3;
mhsd3.inisialisasi(“M0197001”, “Burhanudin Harahap”, 20);
mhsd3.tampilkan();
}
void mhs::inisialisasi(char *NIMMHS, char *NAMAMHS, int UMURMHS)
{
strcpy(nim, NIMMHS);
strcpy(nama, NAMAMHS);
umur = UMURMHS;
}
void mhs::tampilkan()
{
cout << nim << endl;
cout << nama << endl;
cout << umur << endl;
}

Cara kedua inilah yang sering dipilih oleh para programmer C++. Berikut ini contoh-contoh program yang memanfaatkan class

Contoh 7.
Program untuk menyimpan data n data mahasiswa kemudian menampilkannya.

#include
#include
#include
class mahasiswa
{
public:
char nim[20];
char nama[50];
int umur;
void tampilkan(char *NIMMHS, char *NAMAMHS, int UMURMHS)
{
cout << "NIM MHS : " << NIMMHS << endl;
cout << "NAMA MHS : " << NAMAMHS << endl;
cout << "UMUR : " << UMURMHS << endl;
}
};
void main()
{
mahasiswa mhsd3[50]; { tipe data array }
char temp[10]; int n, i;
clrscr();
cout << "<< ENTRI DATA MAHASISWA D3 " << endl;
cout << endl;
cout << "Jumlah mahasiswa : ";
cin.getline(temp, sizeof(temp));
n = atoi(temp);
for (i=0;i<=n-1;i++)
{
cout << "DATA - " << i+1 << endl;
cout << "NIM MAHASISWA : " ;
cin.getline(mhsd3[i].nim, sizeof(mhsd3[i].nim));
cout << "NAMA MAHASISWA : " ;
cin.getline(mhsd3[i].nama, sizeof(mhsd3[i].nama));
cout << "UMUR : ";
cin.getline(temp, sizeof(temp));
mhsd3[i].umur = atoi(temp);
cout << endl;
}
// tampilkan semua data
cout << "-------------------------" << endl;
cout << "DATA YANG MASUK" << endl;
cout << "-------------------------" << endl;
for (i=0;i<=n-1;i++)
{
cout << "DATA MAHASISWA " << i+1 << endl;
mhsd3[i].tampilkan(mhsd3[i].nim, mhsd3[i].nama, mhsd3[i].umur);
cout << endl;
}
getch();
}

Contoh 8.
Program untuk menjumlahkan dan mengurangkan 2 buah bilangan kompleks.

#include
#include
class kompleks
{
private:
float real;
float imajiner;
public:
void tambah(float real1, float imajiner1, float
real2, float imajiner2)
{
real = real1 + real2;
imajiner = imajiner1 + imajiner2;
}
void kurangi(float real1, float imajiner1,
float
real2, float imajiner2)
{
real = real1 - real2;
imajiner = imajiner1 - imajiner2;
}
void tampilkan()
{
cout << "Hasilnya adalah : " << real << "+ "
<< imajiner << 'i' << endl;
}
};
void main()
{
clrscr(); kompleks bilkompleks;
float el_real1, el_real2, el_imaj1, el_imaj2;
cout << "Bilangan Kompleks pertama" << endl;
cout << "Elemen real : ";
cin >> el_real1;
cout << "Elemen imajiner : ";
cin >> el_imaj1;
cout << "Bilangan Kompleks kedua" << endl;
cout << "Elemen real : ";
cin >> el_real2;
cout << "Elemen imajiner : ";
cin >> el_imaj2;
bilkompleks.tambah(el_real1,el_imaj1,el_real2,el_imaj2);
bilkompleks.tampilkan();
bilkompleks.kurangi(el_real1,el_imaj1,el_real2,el_imaj2);
bilkompleks.tampilkan();
getch();
}

0 Response to "Operasi File"