tugas ketik

69
Bekerja dengan file 1 MODUL 12 Di modul ini, Anda akan mengenal berbagai operasi data yang melibatkan file. Anda akan mampu menyimpan data ke file maupun membaca data dari file. Modul ini juga membahas cara menghapus file dan mengganti nama file

description

dfhzedhzedjsjs

Transcript of tugas ketik

Page 1: tugas ketik

Bekerja dengan

file

1

MODUL

12

Di modul ini, Anda akan mengenal berbagai operasi data yang melibatkan file. Anda akan mampu menyimpan data ke file maupun membaca data dari file. Modul ini juga membahas cara menghapus file dan mengganti nama file

Page 2: tugas ketik

Apa yang dimaksud dengan fil?

File adalah wadah untuk menyimpan kumpulan rekaman data. Pengertian rekaman (record) di sini adalah satu bundle data yang saling berkaitan. Contoh, data satu Negara yang berisi nama Negara, nama ibukota, nama mata uang, letak benua, dan jumlah penduduk adalah contoh sebuah rekaman. Nah, kumpulan data sejumlah Negara dapat di simpan dalam satu file.

Bagaimana cara menyampai data Negara seperti contoh di atas kedalam file?

Sebagai contoh, file yang akan digunakan untuk menyimpan data adalah Negara.txt. Untuk penyederhanaan, hanya dua field yang digunakan untuk setiap Negara, yaitu Negara dan ibukota. Berikut ini adalah contoh untuk menyimpan data tiga Negara

#include <iostream>#include <fstream>#include <cstdlib>#include <iomanip>

Using name std;

Int main(){

Ofstream file_negara; // Deklarasi objek

// Buka dan ciptakan file File_negara.open (“Negara.txt”);If (file_negara.fail())

2

1.

Untuk memahami operasi file, ada baiknya untuk

mengenali istilah-istilah yang terkait.

File Satu filed

Satu record

Negeri :Australia

Negara :Belanda

Negara : Indonesia Ibukota : JakartaMata uang : RupiahBenua : AsiaPenduduk : 250 juta

2.

File : simneg.cpp

Page 3: tugas ketik

{Count << “file tidak dapat diciptakan” << endl;Exit(1);

}

// Simpan fileFile_negara << setiosflags (ios::left);File_negara << setw(20) << “Austria”

<< setw(20) << “Vienna” << endl;File_negara << setw(20) << “Belanda”

<< setw(20) << “Amsterdam” << endl;File_negara << setw(20) << “Indonesia”

<< setw(20) << “Jakarta” << endl;File_negara << resetiosflags(ios::left);

// Tutup fileFile_negara.close();

Count << “File Negara.txt sudah diciptakan” << endl;Count << “Silakan cek di folder yang sama dengan program ini”

<< endl;

3

Akhir file

Jika operasi pada file yang akan dilakukan

adalah untuk menyimpan data saja, kelas ofstream perlu digunakan. Contoh pembuatan variabel

objeknya

Ofstream file_negara

Pernyatan berikut digunakan untuk menampilkan pesan kesalahan dan mengakhiri program kalau file tidak berhasil

diciptakan:

If (file_negara.fail () ){

Count << “file tidak dapat diciptakan”<<endl;

Exit(1) ;}

Pernyataan File_negara << setiosflags (ioss::left);

Digunakan untuk mengatur perataan kiri mengingat setw() untuk mengatur lebar string akan dikenakan. Penggunaan setiosflag() dan

setw() adalah seperti pada cout, yang dibahas dimodul 3

Selanjutnya, file diciptakan dan dibuka melalui file_negara.open (“Negara.txt”) ; Argumen tersebut

menyatakan nama file

Page 4: tugas ketik

Fungsi fail () untuk memberikan nilai balik berupa true sekiranya suatu perintah yang berhubungan dengan file (missal open () ) gagal dilaksankan

Hasilnya seperti berikut:

File Negara.txt sudah diciptakan silahkan cek di folder yang sama dengan program ini

Anda dapat memeriksa keberadaan file Negara.txt yang dibentuk oleh program simneg.cpp melalui command promp:

D:\Cpp>dir*.txt Volume in drive D is New volume Volume Serial Number is E036-3716

Direktori of D:\cpp11/01/2013 04:41 PM 126 negara.txt 1 File (s)

126 bytes 0 Dir (s)

106,165,056,640 bytes free

Untuk melihat isi file Negara.txt yang dibentuk oleh program simneg.cpp, Andi bias mencoba perintah berikut di Command Prompt:

D:\Cpp> type Negara.txt

Australia VienaBelanda AmsterdamIndonesia Jakarta

4

Pada program di depan, ada tiga negara yang dimpan ke file Negara.txt

Perintah seperti

File_negra << setw(20) << “Australia” << setw(20) << “Vienna”

<< endl;Digunakan untuk mengatur nama Negara dan ibukota disimpan dengan lebar 20

karakter.

Setelah semua operasi penulisan, file perlu ditutup dengan menggunakan perintah:

File_negara.close();

Catatan

Page 5: tugas ketik

D:\Cpp>

Bagaimana cara membaca isi file Negara.txt melalui program?

Contoh program yang digunakan untuk membaca isi file Negara.txt dapat dilihat di bawah ini:

#include <iostream>#include <fstream>#include <cstdlib>#include <string>

Using name std;

Int main ()

{

Ifstream file_negara: // Deklarasi objek

// Buka file File_negara.open(“Negara.txt”);If (file_negara.fail ()){

Count << “file tidak dapat dibuka” <<endl;Exit (1);

}

// Baca semua data String hasil;While (!file_negara.eof ()){

Getline(file_negara, hasil);If (!file_negara.fail())

Cout <<hasil << endl;

}

5

Apakah nama file harus berekensi.txt O, tidak. Ekstensi .txt digunakan

hanya sekedar untuk menyatakan bahwa file yang

dibentuk adalah file teks, yang bisa dibuka oleh sebarang editor

teks

3.

File : bacaneg.cpp

Page 6: tugas ketik

// Tutup file File_negara.close();

}

Eof berasal dari kata “end of file” yang berarti akhir file. Nilai balik eof() ditentukan oleh posisi penunjuk file. Penunjuk file ini menyatakan posisi daa yang belum dibaca dan kalau ada perintah untuk membaca data yang belum dibaca dan kalau ada perintah untuk membaca data, data yang ditunjuk oleh penunjuk file tersebut yang akan dibaca pertama kali. Kalau ada perintah untuk menuliskan ke file, data akan ditulis keposisi penunjuk file tersebut.

Serperti hanya pada ofstream, file yang menggunakan ifstream juga perlu ditutup dengan close()jika operasi file sudah berakhir

Hasilnya seperti berikut:

Australia vienaBelanda AmsterdamIndonesia Jakarta

6

Akhir file

Untuk menangani pembacaan file, gunakan kelas ifstream,

misalnua

Selanjutnya, data di file dibaca melalui: String hasil;

While (!file_negara.eof () ) {

Getline(file_negara, hasil);If (!file_negara.fail () ) Count << hasil <<endl;

}

Getiline() digunakan untuk membaca data satu baris dari file yang dikaitkan dengan file_negara dan hasilnya ditaruh di hasil. Jika getline() berhasil membaca data dan hal itu di buktikan dengan !file_negara.fail() bernilai true, isi hasil tampilan.

Catatan

Page 7: tugas ketik

Untuk mempraktikannya, Anda bisa mencoba program berikut:

#include <iomanip>#include <fstream>#include <cstdlib>#include <string>

Using namespace std;

String buang_spasi_di_kanan (string negara){

Int pos = negara.legth();While (negara[pos – 1] == ‘ ‘)

Pos--;Return Negara.substr(0,pos);

}

Int main(){

Ifstream file_negara; // Deklarasi objek

// Buka file File_negara.open (“Negara.txt”);If (file_negara.fail()){

Cout <<”file tidak dapat dibuka” << endl;

}

7

Bagaimana kalau saya mau manganbil bagian Negara dan bagian kota secara terpisah ?

Anda bisa menggunakan fungsi anggota substr() untuk

memperoleh bagian Negara dan bagian kota

Kalau anda tak ingat, beginilah caranya:

String negara = hasil.substr (0,20);String kota = hasil.substr(20, 20);

File : bacaneg.cpp

Page 8: tugas ketik

String hasil;While (!file_negara.eof()){

Getline (file_negara, hasil);If (!file_negara.fail()){

Sring Negara = hasil.substr(0, 20);Negara = buang_spasi_dikanan (Negara);String ibukota = hasil.substr (20, 20);Ibu kota = buang_spasi_di_kanan (ibukota);

Cout << Negara << “ (ibukota:”<< Ibukota << “)” << endl;

}}//tutup fileFile_negara.close();

}

Mengingat setelah nama kota dan nama ibukota diperoleh melalui substr() masih mengandung sejumlah spasi di bagian kanan, maka spasi-spasi tersebut dapat dibuang dengan memanggil fungsi buang_spasi_di_kanan(). Silahkan pelajari sendiri mekanismenya.

Hasilnya sebagai berikut:

Australia vienaBelanda AmsterdamIndonesia Jakarta

Bagaimana cara menambahkan data ke file tanpa menghapus data sebelum?

Anda belum cukup menambahkan argument kedua pada open () berupa ios ::apps pada open() milik objek berkas ofstream.Dengan cara seperti itu, isi semula di file tidak akan dihapus dan data baru akan ditambahkan di bagian akhir file.

Contoh berikut adalah salinan dari simpneg.cpp dengan argument kedua pada open()berupa ios::apps

#include <iosteam>#include <fstream>#include <cstdlib>#include <iomanip>

Using name space std;

8

Akhir file

4.

File: tamneg.cpp

Page 9: tugas ketik

Int main()

{Ofstream file_negara; // Deklarasi obejek

// Buka file File_negara.open (“Negara.txt”, ios::app);If (file_negara.fail()){

Cont << “file tidak dapat di ciptakan” << endl;Exit(1);

}

// Simpan fileFile_negara << setiosflags (ios::left);File_negara << setw(20) << “jeman”

<< setw(20) << “Berlin” << endl;File_negara << setw(20) << “Malaysia”

<< setw(20) << “kualalumpur” << endl;File_negara << resetiosflags (ios::left);

// Tutup fileFile_negara.close();

Cout << “data telah ditambahkan ke file negare.txt” << endl;}

Hasilnya sebagai berikut:

Data telah di tambahkan ke file Negara.txt

Anda dapat menguji hasil dengan menjalankan program bacaneg.cpp. Hasilnya seperti berikut:

Australia vienaBelanda AmsterdamIndonesia JakartaJerman BerlinMalaysia Kuala Lumpur

Dari hasil tampak data Negara Jerman dan Malaysia tercantum

9

Akhir file

Page 10: tugas ketik

Apakah dimungkinkan untuk merekam atau membaca data per-karakter ke atau dari file

Ya, hal itu dimungkinkan. C++ menyediakan fungsi anggota put()untuk merekam sebuah karakter ke file dan get() untuk membaca sebuah karakter dari file.

Contoh berikut menunjukan penyimpanan data yang dilakukan per-karakter:

#include <iosteam>#include <fstream>#include <cstdlib>#include <string>

Using namespace std;

Int main(){

Ofstream file_kar; // Deklarasi objek

// Buka dan ciptakan fileFile_kar.open (“kar.txt”);If (file_kar.fail()){

Cout << “file tidak dapat diciptakan” << endl;Exit(1);

}

String kalimat = “tes…ah, supaya mudah dipahami!”;

// simpan per karakterFor (int i = 0’ I <kalimat.leght(); i++)

File_kar.put (kalimat [i]);

// Tutup fileFile_kar.close();

Cout << “file kar.txt sudah di temukan” << endl;Cout << “silahkan cek di folder yang sama dengan program

ini” << endl;}

Pada program di atas, pernyataan file_kar.put (kalimat[1]); digunakan untuk menuliskan sebuah karakter (kalimant[i]) ke file yang tekait dengan file_kar.

10

5.

File: simperkar.cpp

Akhir file

Page 11: tugas ketik

Hasilnya seperti berikut:

File kar.txt sudah diciptakanSilahkan cek di folder yang sama dengan program ini

Contoh untuk membaca isi file kar.txt perkarakter diperhatikan di contoh berikut:

#include <iosteam>#include <fstream>#include <cstdlib>

Using namespace std;

Int main()

{

Ifstream file_kar; // Deklarasi objek

// Buka file File_kar.open(“kar.txt”);If (file_kar.fail()){

Cont << “file tidak dapat dibuka” << endl;Exit(1);

);

While (!file_kar.eof()){

Char kar = file_kar.get();If (!file_kar.fail())

Cout << kar:}

Cout << endl;Cout << “*** Akhir file” << endl;

// Tutup fileFile_kar.close();

}

Pada contoh di atas, pernyataan char kar = file_kar.get(); dipakai untuk mambaca sebuah karakter dari file yang ditangani oleh file_kar dan diletakan ke variabel kar,yang bertipe char. Jika ketika pernyataan tersebut dijalankan terdapat masalah tersebut dapat dideteksi oleh fungsi anggota fail(). Dalam hal ini, fail() mamberikan nilai balik berupa true kalau ada kesalahan. Itulah sebabnya, perlu adanya pemeriksaan terhadap fail() sebelum isi kar ditampilkan.

11

File: simperkar.cpp

Akhir file

Page 12: tugas ketik

Hasilnya seperti berikutnya:

Tsi file kar.txt:Tes..ah, supaya mudah dipahami!*** Akhir file

Bagaimana cara mengubah setiap huruf kecil menjadi huruf capital dalam slalu file?

Ada dua cara yang bisa ditempuh. Pertama, adalah dengan membaca semua data di file dan menaruhnya di array dinamis . setelah itu, perubahan dilakukan di array. Lalu, hasilnya disimpan balik ke file dengan nama sama. Cara ini agak kompleks. Cara kedua adalah denganmembaca per karakter dan kalau karakter perlu dikonversi maka karakter pengganti disimpan menggatikan karate semula. Cara kedua ini dapat di lihat di contoh program berikut:

#include <iosteam>#include <fstream>#include <cstdlib>#include <cctype>

Using namespace std;

Int main(){

Fstream file_kar; // Deklarasi objek

// Buka file File_kar.open (“kar.txt”, ios::out | ios::in);If (file_kar.fail()){

Cont << “file tidak dapat dibuka” << endl;Exit(1);

}

While (!file_kar.eof()){

Long posisi_semula = file_kar.tellg();Char kar = file_kar.get();Long posisi_baru = file_kar.tellp();

If (!file_kar.fail()){

If (islower(kar)){

Char pengganti = toupper(kar);

12

6.

File: kapkar.cpp

Page 13: tugas ketik

File_kar.seekp(posisi_semula, ios::beg);File_kar.put(pengganti);File_kar.seekg(posisi_baru,ios::beg);Cont << kar << “diubah menjadi”

<< pengganti << endl;}

}}Cout << endl;Cout << “semua huruf kecil sudah dikapitalkan” << endl;

// Tutup fileFile_kar.close();

}

Kunci penting untuk melakukan operasi yang memungkinkan pembacaan dan penggantian data di file adalah dengan menggunakan kelas fstream. Itulah sebabnya, anda melihat kehadiran perintah fstream file_kar;.

Pembukaan file dilakukan denga pernyataan berikut:File_kar.open(“kar.txt”, ios::out | ios::in);

Argument ios::out | ios::in menyatakan bahwa operasi yang dilakukan berupa pembacaan dan penulisan. Operator | digunakan untuk menggabungkan kedua operasi tersebut.

Selanjutnya, data di file akan dibaca satu persatu. Hal ini ditangani oleh while. Ekspresi !file_kar.eof() menyatakan bahwa akhir file belum di jumpai. Jadi, selama akhir file belum di jumpai, bagian {} yang menyertai while akan dieksekusi .

Perintah long posisi_semula = file_kar.tellg(); ditunjukan untuk mencatat posisi penunjuk file sebelum pembacaan pada file dilakukan. Setelah itu, pembacaan sebuah karakter dilakukan melalui perintah char kar = file_kar.get();.

Selanjutnya, posisi penujuk file dicatat melalui long posisi_baru = file_kar.tellp();.Dengan demikian posisi penunjuk file sebelum dan sesudah suatu karakter dibaca tercatat. Perlu diketahui, tellg() digunakan kalau data akan dibaca dan tellp()digunakan kalau operasi penulisan ke file akan dilakukan.

Sepanjang akhir file belum dijumpai, dilakukan pemeriksaan terhadap isi kar berupa huruf kecil atau tidak (via islower(kar), yang prototypenya ada di ctype.h). jika isi kar berupa huruf kecil, variabel pengganti akan diisi huruf kapitalnya melalui tourpper(). Lalu, seekp() ditunjukan untuk meletakan penunjuk file ke posisi sebelum karakter bersangkutan dituliskan ke file. Lalu, putc()akan membuat karakter semula yang berupa huruf kecil akan diganti dengan huruf capital. Setelah itu, penunjuk file dikembalikan sesuai posisi yang tercatan di posisi_baru. Begitulah proses penggantia huruf kecil dan capital dilaksanakan.

13

Akhir file

Page 14: tugas ketik

Hasilnya seperti berikut e diubah mejadi Es diubah mejadi Sa diubah mejadi Ah diubah mejadi Hs diubah mejadi Su diubah mejadi Up diubah mejadi Pa diubah mejadi Ay diubah mejadi Ya diubah mejadi Am diubah mejadi Mu diubah mejadi U d diubah mejadi Da diubah mejadi Ah diubah mejadi Hd diubah mejadi Di diubah mejadi Ip diubah mejadi Pa diubah mejadi Ah diubah mejadi Ha diubah mejadi Am diubah mejadi Mi diubah mejadi I

Semua huruf kecil sudah di kapitalkan

14

Pernyataan file_kar.seekp (posisi_semula, ios::beg);membuat penunjuk file diletakan pada posisi sesuai dengan isi posisi_semula dimulai dari awal file. Konstanta ios::beg yang membuat penunjuk file diletakan pada posisi sesuai dengan isi posisi_semula dimulai dari awal file. Konstanta ios::beg yang menyatakan “awal file”.

Selain ios::beg, konstanta yang dapat dipakai adalah ios::cur dan ios::end. Dalam hal ini:1. Ios::cur menyatakan bahwa acuan penempatan

penunjuk file didasarkan relatinf terhadap penunjuk sekarang. Nilai 1 di argument kedua seekp() maupun seekp() akan membuat penunjuk file digeser ke

berikutnya, sedangkan -1 akan membuat penunjuk file digeser ke posisi sebelumnya.

2. Ios::end menyatakan bahwa penempatan penuntuk file dihitung dari akhir file

Catatan

Page 15: tugas ketik

Anda dapat menguji hasil di kar.txt dengan cara seperti berikut:

D:\Latihan> type kar.txtTes..ah, supaya MUDAH DIPAHAMI!D:\LATIHAN>

Dari hasil di atas tampak bahwa semua huruf sudah dikapitakan.

contoh-contoh file yang telah di bahas sebelumnya merupakan file teks, bagaimana jika teks, bagaimana jika ingin memproses file biner?

Ya, contoh-contoh file yang telah diberikan adalah file teks. File teks adalah file yang mengandung tulisan yang biasa kita pakai sehari-hari. File seperti ini menggunakan karakter ber-ASCII 26 (Ctrl+Z) sebagai tanda akhir file. Adapun file biner adalah jenis file yang dapat mengandung semua jenis karakter, termaksud Ctrl+Z. File berekstensi.exe adalah contoh file biner.

Secara prinsip, semua mode pembukaan file yang digunakan di mode dapat di gunakan di file biner dengan tambahan berupa ios::binary. Contoh berikut menunjukan cara menyimpan data dalam bentuk biner:

#include <iosteam>#include <fstream>#include <cstdlib>

Using namespace std;

Int mai(){

Ofstream file_bin; // Deklarasi objek

// Buka dan ciptakan file File_bin.open(“bilangan.bin”, ios::binary);If (file_bin.fail()){

Cont << “file tidak dapat di ciptakan” << endl;Exit (1);

}

// Simpan dataInt data[] = {7, 456, 239, 10298, 56, -1, 99};For (int o = 0; I < sizeof (data) / sizeof (int); i++)

File_bin.write((char *) &data[i], sizeof(int));

// Tutup file File_bin.close();

15

7.

File: simbin.cpp

Page 16: tugas ketik

Cout << “file bilangan.bin sudah diciptakan” << endl;Cont << “silahkan cek di folder yang sama dengan program ini”

<< endl;

Pada program di depan, pernyataan file_bin.write((char *) &data[i] sizeof (int)); menyatakan bahwa data yang akan di simpan terdapat di data [i], dengan ukuran data adalah sizeof(int). Type casting (char *) diperlukan mengingat prototypenya seperti itu. Tanda & di depan data[i], dengan ukuran data adalah sizeof[i]. Type casting (char *) diperlukan mengingat prototype seperti itu. Tanda & di depan data[i]diperlukan karena argument pertama write() harus berupa pointer.

Hasilnya seperti berikut

File bilangan.bil sudah diciptakan Silahkan cek di folder yang sama dengan program ini

Bagaimana cara membaca file biner?

Berikut contoh program untuk file biner:

#include <iosteam>#include <fstream>#include <cstdlib>

Using namespace std;

Int main(){

Ifstream_bin; // Deklarasi objek

16

Akhir file

Kode

File_bin.open (“bilangan.bin”. ios::binary);

Menyatakan bahwa file dibuka dengan mode biner

Kunci penting untuk melakukan penyimpanan data di file biner adalah write(). Fungsi ini mempunyai dua argument.

Argumen pertama berisi pointer yang menunjukan ke data yang akan disimpan ke file

Argumen kedua perlu diisi dengan ukuran data yang akan di simpan

8.

File: bacabin.cpp

Page 17: tugas ketik

// Buka file File_bin.open(“bilangan.bin”, ios::binary);If (file_bin.fail()){

Cont << “file ridak dapat di buka” << endl;Exit(1);

}

While (!file_bin.eof()){

Int bilangan;File_bin.read(char *) &bilangan, sizeof(int));

If (!file_bin.fil())Cout << bilangan << endl;

}

// Tutup file File_bin.close();

}

Perhatikan, mode yang di gunakan di open() adalah ios::binary, yang berarti pembacaan file biner. Pepmbacaan satu data bertipe int dilakukan dengan menggunakan perintah:

File_bin.read((char *) &bilangan, sizeof(int));

Argument pertama berupa pointer yang menunjuk ke variabel pernerimadata. Argumen kedua menyatakan ukuran data yang dibaca.

Hasilnya seperti berikut:

74562391029856-199

Bagaimana cara mengetahiu ukuran file?

Salah satu cara yang dapat dilakukan adalah dengan meletakan penunjuk file ke akhir file. Kemudian, dengan memanggil tellg()akan diperoleh posisi penunjuk file, yang tidak lain menyatakan ukuran file, Berikut perwujudannya

17

Akhir file

9.

Page 18: tugas ketik

#include <iosteam>#include <fstream>#include <cstdlib>

Using namespace std;

Int main(){

Ifstream file_bin: // Deklarasi objek

// Buka fileFile_bin.open(“ukuran.cpp”, ios::binary);If (file_bin,fail()){

Cout << “file tidak dapat dibuka” << endl;Exit(1);

}

// Peroleh ukuran File_bin.seekg(0, ios::end();Long ukuran = file_bin,tellg();

Cout << “ukuran file = “ << ukuran<< “byte” << endl;

// Tutup fileFile_bin.close();

}

18

File: ukuran.cpp

Akhir file

Penempatan penunjuk file akhir file dilakukan dengan

menggunakan

File_bin.seekg(0, ios::end);

Nah, ukuran file diperoleh melali:

File_bin.seekg(0, ios::end);

Page 19: tugas ketik

Hasilnya sebagai berikut:

Ukuran file = 557 byte

Mengapa selalu terjadi kesalahan ketika saya menggunakan variabel bertipe string di Argument pertama open()?

Jika Anda menggunakan objek string pada nama file di open(), maka akan terjadi kesalahan sewaktu program dikoplikasi. Hal ini disebabkan string yang diterima oleh open() Adalah stirng yang berakhir dengan karakter NULL. Jika anda menggunkan objek string, perlu dilakukan pengonversian ke tipe char *. Contoh mengenai hal ini dapat dilihat di bagian 11. Perhatikan fungsi keversi_string().

Bagaimana caranya jika saya ingin membuat suatu fungsi berama file_ada() yang akan Memberikan nilai true jika file argument ada atau false untuk keadaan sebaliknya?

Silahkan mencoba program berikut:

#include <iosteam>#include <fstream>#include <cstdlib>#include <string>

Using namespace std;

Char* konversi_string(string st){

Static char hasil[255];For (int i = 0; i < st.length(); i++)

Hasil [i] = st[i];

Hasil [st.length()] = 0; // Pengakhir string

Return hasil;}

Int file_ada (string namafile)// Untuk memeriksa keberadaan file// Nilai balik:// false = file tidak ada// true = file tidak ada

19

10

11

File: ukuran.cpp

Page 20: tugas ketik

{Ifstream file_x;Bool ada = true;

// Buka file Char* berkas;

Berkas = konversi_string(namafile);File_x.open(berkas, ios::binary);If (file_x.fail())

Ada = false;Else

File_x.close();Return ada;

}

Int main(){

String namafile;

// cej file cekfile.cppNamafile = “cekfile.cpp”;If (file_ada(namafile))

Cout << “file” << namafile << “ada” << endl;Else

Cout << “file” << namafile <<”tidak ada” << endl;

// Cek file takada.dehNamafile = “takada.dehIf (file_ada(namafile))

Cout << “file” << namafile << “ada” << endl;Else

Cout << “file” << namafile << “tidak ada” << endl;}

Pada program di atas, konversi_stirng() digunakan untuk mengonversikan objek string ke string yang berakhir dengan karakter NULL (char *). Pada fungsi tersebut, static char hasil [255]; membubat array dengan 255 elemen bertipe char dibuat secara menetap (tidak hilang walaupun pemanggilan fungsi konversi_string() sudah berakhir). Tujuannya adalah agar nilainya bisa diakses melalui pointer yang menerima nilai balik fungsi tersebut.

Hasilnya seperti berikut:

File cekfile.c adaFile takada.deh tidak ada

20

Akhir file

Page 21: tugas ketik

Bagaimana cara menghapus file?

Anda dapat menggunakan fungsi remove(). Bentuknya seperti berikut:Remove(nama_file)

Nilai baliknya berupa:

Nol kalau file berhasi dihapus. Tidak no kalau ada sesuatu kesalahan.

Contohnya dapat dilihat pada program berikut:

#include <iosteam>#include <fstream>#include <cstdlib>#include <string>

Using namespace std;

Char * konversi_string(string st){

Static char hasil [255];For (int i = 0; i < st.length(); i++)

Hasil[i] = st[i];

Hasil [st.length()] = 0; // Pengakhir string

Return hasil;{

Int main(){

Char* namafile;

// Hapus file hpsfile.oNamafile = konversi_string (“hpsfile.o”);If (remove(namafile) == 0)

Printf(“file %s berhasil dihapus\n”, namafile);Else

Printf(“gagal menghapus file %s\n”, namafile);

// Hapus file hpsfile.o kembaliIf (remove(namafile) == 0)

Printf(“file %s berhasil dihapus\n”, namafile);Else

Printf(“gagal menghapus file %s\n”, nama file);

21

12.

File: ukuran.cpp

Page 22: tugas ketik

Hasilnya seperti berikut:File cek.o berhasil dihapusGagal menghapus file cekfile.o

Jangan lupa menyertakan # include <cstdio> jika melibatkan remove()

Bagaimana cara mengganti nama file?

Anda dapat memakai fungsi rename(). Bentuknya seperti berikut:

Rename (nama_lama, nama_baru)

Dalam hal ini, nama_lama menyatakan nama file yang akan diganti dan nama_baru adalah nama pengganti.

Nilai balik berupa:

Nol kalau nama file berhasil diganti; Tidak nol kalau ada sesuatu kesalahan.

Jangan lupa menyertakan # include <cstdio> jika melibatkan rename()

Kedua argumen pada rename()adalah string yang berakhir dengan NULL. Jika Anda ingin menggunakan objek string, maka perlu dilakukan konversi dulu dengan konversi_string()

22

Akhir file

Catatan

13.

Catatan

Page 23: tugas ketik

Membuat Kelas

Bagaimana konsep pembuatan kelas?

23

MODUL

13

Di modul ini, Anda akan

mempelajari hal-hal yang terkait

dengan pembuatan kelas.

Termasuk dalam pembahasan di

modul ini adalah konstruktor,

destruktor, dan pewarisan.

1.

Page 24: tugas ketik

Dalam merancang sebuah kelas, Anda perlu memerhatikan mengenai data (yang secara spesifik disebut anggota data) dan fungsi yang digunakan untuk mengakses data tersebut (atau yang dinamakan fungsi anggota). Ingat bahwa kelas mengemas anggota data dan fungsi anggota.

Sebagai pedoman kasar, jika Anda mempunyai x anggota data, maka akan terdapat 2x fungsi anggota. Setiap anggota data akan diwakili oleh dua fungsi anggota yang bertindak sebagai pengambil data dan pengubah data. Akan tetapi, sekali lagi hal ini hanya sebagai pedoman kasar. Bisa saja pengubahan sejumlah anggota data cukup diwakili oleh sebuah fungsi anggota.

Program berikut memberikan gambaran pembuatan kelas dan penggunaannya untuk membuat objek:

#include <iostream>#include <string>

using namespace std;

int main (){

// Definisi kelasClass Mobil{private:

string jenis;string merk;int cc;

public:void isikan_jenis (string jenis){

Mobil::jenis = merk;}Void isikan_merk = merk;{

Mobil::merk = merk;}Void isikan_cc (int cc){

Mobil::cc = cc;}String perolehan_jenis(){Return jenis;}

String peroleh_merk(){

24

File: kelas.cpp

Page 25: tugas ketik

Return merk;}Int peroleh_cc(){Return cc;}

};// Pembuatan objekMobil minibus;Mobil sedan;

// Isikan dataminibus.isikan_jenis(“Avanza”);minibus.isikan_merk(“Toyota”);minibus.isikan_cc(1300);sedan.isikan_jenis(“City”);sedan.isikan_merk(“Honda”);sedan.isikan_cc(1600);

// Tampilkan datacout << “Minibus:” << endl;cout << “jenis : ”

<< minibus.peroleh_jenis() << endl;cout << “Merk : ”

<< minibus.peroleh_merk() << endl;cout << “CC : ”

<< minibus.peroleh_cc() << endl;

cout << “Sedan:” << endl;cout << “jenis : ”

<< sedan.peroleh_jenis() << endl;cout << “Merk : ”

<< sedan.peroleh_merk() << endl;cout << “CC : ”

<< sedan.peroleh_cc() << endl;

Minibus:

Jenis : Avanza

Merek : Toyota

CC : 1300

Contoh hasil eksekusi

Sedan:Jenis : City

25

Akhir file

Page 26: tugas ketik

Merek : HondaCC : 1600

Bisakah dijelaskan mengenai kode untuk membuat kelas seperti pada contoh program kelas.cpp?

Tentu. Pada prinsipnya, kelas didefinisikan dengan bentuk seperti berikut:

Class Nama_kelas{...};

Nama kelas biasanya diawalli dengan huruf kapital. Setelah tanda kurung penutup(}) terdapat titik koma.

Di dalam kelas, terdapat pendefinisian bagian yang bersifat privat dan publik. Bagian privat diawali dengan private: dan bagian publik diawali dengan public:.

Bagian privat menyatakan bahwa yang ada di dalamnya hanya boleh diakses secara internal (di dalam definisi kelas). Umumnya, anggota data dibuat privat.

Bagian publik menyatakan bahwa yang ada didalamnya boleh diakses melalui variabel objek. Umumnya, fungsi anggota bersifat publik.

Dalam kelas Mobil, tiga anggota data yang bersifat privat dideklarasikan seperti berikut:

string jenis;string merk;int cc;

Dalam hal ini, jenis menyatakan jenis mobil, merk menyatakan merk mobil, dan cc menyatakan kapasitas silinder mesin.

Di bagian publik terdapat enam fungsi anggota. Fungsi anggota yang diawali dengan isikan ditunjukan untuk mengisikan data, sedangkan yang berawalan peroleh digunakan untuk memperoleh data. Secara prinsip, pembuatan fungsi anggota adalah sama dengan pembuatan fungsi yang dibahas di Modul 7.

Ada hal penting yang perlu dijelaskan di sini. Perhatikan kode berikut:

Void isikan_jenis(string jenis){

Mobil::jenis = jenis;}

Kode tersebut digunakan untuk mengisikan data jenis mobil ke anggota data jenis. Mengingat argumen fungsi juga menggunakan jenis, terjadi konflik nama. Jika terjadi keadaan seperti ini, nama

26

2.

Page 27: tugas ketik

Anggota data perlu ditambahi dengan nama kelas dan tanda ::. Jadi, Mobil::jenis berarti anggota data jenis milik kelas Mobil

Sementara itu, pada definisi berikut:

Stirng peroleh_jenis()

{

Return jenis;

}

Definisi ini ditunjukan untuk memperoleh data jenis. Pada definisi ini, penyebutan Mobil:: di depan jenis tidak diperlukan karena nama jenis tidak rancu. Walaupun begitu, return jenis; boleh ditulis menjadi return Mobil::jenis;.

Mengingat Mobil adalh kelas, pembuatan objek dapat dilakukan misalnya seperti berikut:

Mobil minibus;

Atau

Mobil sedan;

Selanjutnya, pengisian data ke objek minibus dilakukan melalui perintah:

minibus.isikan_jenis(“Avanza”);minibus.isikan_merk(“Toyota”);minibus.isikan_cc(1300);

27

Perhatikan, ketiga fungsi yang terletak sesudah minibus. Adalah nama-nama fungsi anggota yang terdapat di kelas Mobil.

Hal ini berbeda dengan anggota data seperti jenis, yang dideklarasikan sebagai privat.

Pemanggilan terhadap fungsi-fungsi tersebut diperkenankan mengingat fungsi-fungsi tersebut didefinisikan sebagai publik.

Oleh karena itu, penulisan seperti

minibus.jenis

tidak di perkenankan.

3.

Page 28: tugas ketik

Saya sering melihat pembulatan objek yang isinya dilakukan saat dideklarasikan. Bagaimana hal seperti itu dapat diwujudkan

Hal seperti itu dilakukan dengan membuat konstruktor. Konstruktor adalah fungsi anggota yang bersifat khusus, yang namanya adalah sama dengan nama kelas. Selain itu, tidak ada penyebutan tipe nilai balik. Contoh dapat dilihat di kelas2.cpp

#include <iostream>#include <string>

Using namespace std;

Int main(){

//Definisi kelasClass Mobil{Private:

String jenis;String merk;Int cc;

Public:Mobil(string jenis, string merk, int cc){

Mobil::jenis = jenis;Mobil::merk = merk;Mobil::cc = cc;

}{String peroleh_jenis()}{Return jenis;}{String peroleh_merk()}{Return merk;}{String peroleh_cc()}{Return cc;}

};// Pembuatan objekMobil minibus(“Avanza”, ”Toyota”, 1300);

Mobil sedan(“City”, “Honda”, 1600);

28

File: kelas2.cpp

Page 29: tugas ketik

// Tampilkan dataCout << “Minibus:” << endl;Cout << “Jenis : ”

<< minibus.peroleh_jenis() << endl;

Cout << “Merk : ” << minibus.peroleh_merk() << endl;

Cout << “CC : ” << minibus.peroleh_cc() << endl;

Cout << endl;

Cout << “Sedan:” << endl;Cout << “Jenis : ”

<< sedan.peroleh_jenis() << endl;

Cout << “Merk : ” << sedan.peroleh_merk() << endl;

Cout << “CC : ” << sedan.peroleh_cc() << endl;

}

Pada program di atas, fungsi anggota yang berawalan “isikan” ditiadakan dan digantikan dengan konstruktor, yang berupa:

Mobil(string jenis, string merk, int cc){Mobil::jenis = jenis;Mobil::merk = merk;Mobil::cc = cc;}

Perhatikan, nama fungsi sama dengan nama kelas dan tidak ada tipe nilai balik. Selain itu, argumen ada tiga, yang digunakan untuk memberikan nilai jenis, merk, dan CC mobil

Dengan adanya konstruktor tersebut, pembuatan objek sekaligus pemberian nilai dapat dilakukan dengan cara seperti berikut:

Mobil minibus(“Avanza”, “Toyota”, 1300);Mobil sedan(“City”, “Honda”, 1600);

Contoh hasil eksekusi:

Minibus:Jenis : AvanzaMerek : ToyotaCC :1 300

29

Akhir file

Page 30: tugas ketik

Sedan:Jenis : CityMerek : HondaCC : 1600

Apakah konstruktur dapat mengandung nilai bawaan?

Ya, bisa. Contoh berikut menunjukan penerapan nilai bawaan pada argumen cc:

#include <iostream>#include <string>Using namespace std;

Int main(){

// Definisi kelasClass Mobil{Private:

String jenis;String merk;Int cc;

Public:Mobil(string jenis, string merk, int cc = 0){

Mobil::jenis = jenis;Mobil::merk = merk;Mobil::cc = cc;

}String peroleh_jenis(){

Return jenis;}String peroleh_merk(){

Return merk;}String peroleh_cc(){

Return cc;}

};

30

4.

File: argbaw.cpp

Page 31: tugas ketik

// Pembuatan objekMobil sedan(“Saga”, “Proton”);

// Tampilkan dataCout << “Sedan: ” << endl;Cout << “Jenis: ”

<< sedan.peroleh_jenis() << endl;Cout << “Merk : ”

<< sedan.peroleh_merk() << endl;Cout << “CC : ”

<< sedan.peroleh_cc() << endl;

Sedan:Jenis : SagaMerk : ProtonCC : 0

Contoh hasil eksekusi

Tampak bahwa CC bernilai 0 karena tidak disebutkan dalam pembuatan objek. Nilai itu berasal dari nilai bawaan.

31

Kunci nilai bawaan untuk argumen cc adalah pada bagian berikut:

Mobil(string jenis, string merk, int cc = 0)

Dalam hal ini, int cc = 0 menyatakan cc memiliki nilai

bawaan sama dengan nol.

Dengan demikian, argumen ini boleh tidak disertakan ketika membuat objek berkelas mobil, sebagaimana

terlihat pada kode berikut:

Mobil sedan(“Saga”, “Proton”);

Akhir file

Page 32: tugas ketik

Apakah konstruktor dapat dikenai overloading?

Ya, hal itu dimungkinkan. Contohnya dapat dilihat di program berikut:

#include <iostream>#include <string>Using namespace std;Int main(){ // Definisi kelas

Class Koordinat{Privat:

Int x;Int y;

Public:Koordinat(){

X = 0;Y = 0;

}{Koordinat(int x, int y)}{

Koordinat::x = x;Koordinat::y = y;

}Int peroleh_x(){Return X;

}Int peroleh_y(){Return y;

} }; // Pembuatan objek Koordinat pos_a; Koordinat pos_b(5, 10);

// Tampilan data Cout << “pos_a: ”; Cout << “x = ” << pos_a.peroleh_x()

32

5.

File: konover.cpp

Page 33: tugas ketik

33

Page 34: tugas ketik

<< “, y = ” << pos_a.peroleh_y() << endl;Cout << “pos_b: ”;Cout << “x = ” << pos_b.peroleh_x() << “, y = ” << pos_b.peroleh_y() << endl;

Perhatikan bahwa ada dua konstruktor di kelas koordinat. Konstruktor pertama berupa:

Koordinat(){

X = 0;Y = 0;

}Konstruktor tersebut tidak memiliki argumen. Konstruktor kedua berupa:

Koordinat(int x, int y){

Koordinat::x = x;Koordinat::y = y;

}Konstruktor itu memiliki dua argumen.

Contoh berikut menunjukan pembentukan objek yang menggunakan konstruktor pertama:

Koordinat pos_a;

Contoh berikut menunjukan pembentukan objek yang menggunakan konstruktor bentuk kedua:

Koordinat pos_b(5, 10);

Contoh hasil eksekusi:

Pos_a: x = 0, y = 0Pos_b: x = 5, y = 10

Apakah definisi fungsi anggota di suatu kelas bisa diletakan di luar kelas?

Ya memang bisa, bahkan definisi fungsi-fungsi anggota dapat diletakan pada file terpisah. Contoh berikut menunjukan definisi fungsi-fungsi anggota yang diletakkan di luar definisi kelas:

34

6.

Akhir file

Page 35: tugas ketik

#include <iostream>#include <string>

Using namespace std;

Class koordinat{Private:

Int x;Int y;

Public:Koordinat();Koordinat(int x, int y);Int peroleh_x();Int peroleh_y();

};

Int main(){

// Pembuatan objekKoordinat pos_a;Koordinat pos_b(5, 10);

// Tampilan dataCout << “pos_a: ”;Cout << “x = ” << pos_a.peroleh_x() << “,y = ” << pos_a.peroleh_y() << endl;Cout << “pos_b: ”;Cout << “x = ” << pos_b.peroleh_x() << “,y = ” << pos_b.peroleh_y() << endl;

}

Koordinat::koordinat(){

X = 0;Y = 0;

}Koordinat::koordinat(int x, int y){

Koordinat::x = x;Koordinat::y = y;

}Int koordinat::peroleh_x(){

35

File: defluar.cpp

Page 36: tugas ketik

Return x;}

Int Koordinat :: peroleh_y (){

Return y;}

Contoh hasil eksekusi:Pos_a: x = 0, y = 0Pos_b: x = 5, y = 10

Apa yang dimaksud dengan destructor?

Destruktor adalah fungsi anggota yang akan dijalankan tepat sebelum objek musnah. Untuk melihatEfek destructor, cobalah program berikut:

#include <iostream>#include <string>

Using namespace std;

Class Alpha{Public

Alpha(){

Cout << “Kontruktor dijalankan…” << end1;}

~Alpha(){

Cout << “Perhatikan, dektruktor dijalankan, lho!”<< end1;

}

Void info(){

Cout << “cacaca, o lala!” << end1;}

};

Int main(){

36

File: destruk.cpp

Akhir file

7.

Page 37: tugas ketik

// Pembuatan objekAlpha cacaca;

Cacaca.info();

Cout << ”*** program akan berakhir... “ << end1;

}

Contoh hasil eksekusi:

Konstruktor dijalankan…Cacaca, o lala!*** program akan berakhir…Perhatikan, destructor dijalankan, lho!

Dari hasil eksekusi diatas tampak bahwa dektruktor dijalankan setelah pernyataan terakhir di main()

Dieksekusi. Hal itu terjadi saat objek cacaca mau musnah.

37

Perhatikan, definisi

Destructor berupa tanda ~

Dan nama kelas

Jadi, mirip konstruktor

Dengan tambahan berupa

Awalan ~.

So, kegunaan

Destructor itu

Sebenarnya

Untuk apa, ya ?

Jika kita bekerja dengan variable dinamis

Destructor sangat bermanfaat, lho !

Kontruktor untuk

Mengalokasikan memori

Bagi variasi dinamis,

Sedangkan destructor

Berguna untuk

Membebaskan memori

Variable dinamis

Akhir file

Page 38: tugas ketik

Apakah yang dimaksud dengan pewarisan?

Pewarisan adalah suatu mekanisme yang memungkinkan fitur-fitur disuatu kelas diturunkan ke kelas lain. Di C++ kelas yang mewariskan dinamakan kelas dasar (base class), sedangkan kelas yang mewarisi disebut kelas turunan (delivered class). Hal yang menarik, kelas turunan boleh memiliki sifat sifat yang spesifik, yang berbeda dengan kelas dasar. Hal inilah yang membuat pemrogram dapat mengembangkan kelas-kelas yang sudah tersedia dengan sedikit menuliskan kode

Diwariskan

Kelas turunan

Boleh mempunyai

Anggota data dan

Fungsi anggota

tersendiri

untuk memahami pewarsian, silakan lihat dan coba program berikut:

#include <iostream>#include <string>Using namespace std;

// kelas dasarClass DariOrtu{Private

Int uang;String mobil;

PublicDariOrtu(){

Uang = 500000;Mobil = “Honda Jazz”;

}

Void info()

38

Gambaran

Pewarisan

Ditunjukkan di

samping

Kelas Dasar

Anggota Data

Fungsi Anggota

Kelas turunan

Anggota Data

Fungsi Anggota

Spesifik Milik

Kelas turunan

8.

File: waris.cpp

Page 39: tugas ketik

{Cout << “Uang : “ << uang << end1;Cout << “Mobil : “ << mobil << end;

}};

// kelas turunanClass MilikkuSendiri : Public DariOrtu{Private:

String sepeda;Public

MilikKuSendiri{

Sepeda = “pacific X233”;}Coid info(){

DariOrtu::info()Cout << “sepeda: “ << sepeda << end1;}

};

Int main(){

// pembuatan objekMilikkusendiri bendaku;

//infoBendaku.info();

}

Pada program di atas, class MilikkuSendiri : public DariOrtu merupakan cara untuk

Melakukan pewarisan dari kelas DariOrtu ke kelas MilikkuSendiri. Sementara itu. Kode DariOrtu::info(); menyakan pemanggilan terhadap fungsi anggota info() milik kelas DariOrtu.

Contoh hasil eksekusi:

Uang : 500000Mobil : Honda JazzSepeda: Pacific X233

Perhatikan bahwa kelas MilikkuSendiri yang merupakan kelas turunan dari kelas DariOrtu dengan sendirinya dapat memperoleh data yang berasal dari DariOrtu. Namun, perlu diketahui bahwa sejatinya kelas MilikkuSendiri tidak dapat mengakses anggota Data uang dan mobil secara langsung. Penyebabnya, anggota data (ataupun fungsi anggota) yang bersifat privat di kelas dasar tidak diwariskan ke kelas turunan.

39

Akhir file

Page 40: tugas ketik

Agar anggota data (ataupun fungsi anggota) dikelas dasar diwariskan ke kelas turunan tetapi tidak akan bersifat public di kelas turunan, makan perlu didefinisikan sebagai protected. Contohnya ditunjukkan pada program berikut:

#include <iostream>#include <string>

Using namespace std;

// kelas dasarClass DariOrtu{Protected:

Int uang;String mobil;

Public:DariOrtu(){

Uang = 500000;Mobil = “Honda Jazz”;

}};// kelas turunanClass Milikku sendiri : public DariOrtu{Private:

Stringsepeda;Public:

MilikkuSendiri(){

Sepeda = “Pacificx233”;}

Void info(){

// kelas ini mengenal uang dan mobil// yang berasal dari kelas DariOrtuCout << “uang : “ << uang << end1;Cout << “mobil : “ << mobil << end1;Cout << “sepeda: “ << sepeda << end1;

}};

Int main (){

// pembuatan objekMilikkuSendiri bendakku;

40

File: waris2.cpp

Page 41: tugas ketik

// InfoBendaku.info();

}

Perhatikan bahwa uang dan mobil dideklarasikan sebagai protected di kelas DAriOrtu.keduaAnggota data tersebut dapat diakses dikelas MilikkuSendiri. Hal ini dilakukan di kelas info():

Cout << “uang : “ << uang << end1;Cout << “mobil : “ << mobil << end1;

Hasilnya seperti berikut:

Uang : 500000Mobil : Honda JazzSepeda: Pacific X233

Bagaimana pewarisan dilakukan jika ada argument di konstruktor?

Contoh di depan memang mengabaikan argument di kostruktor. Contoh yang memperlihatkanPewarisan dengan melibatkan argument di konstruktor dapat dilihat di program berikut:

#include <iostream>#include <string>

Using namespace std;

// kelas dasarClass Pegawai{Protected:

String nip;String nama;

Public:Pegawai (string nip, string nama){

Pegawai::nip = nip;Pegawai::nama = nama;

}

Void info(){

Cout << “NIP : “ << nip << end1;Cout << “Nama : “ << nama << end1;

};

41

Akhir file

9.

File: warisarg.cpp

Page 42: tugas ketik

// kelas turunanClass pegawaiAsing : Public Pegawai{Private:

String no_paspor;Public:

PegawaiAsing(string nip, string nama, string no_paspor) :Pegawai(nip, nama)

{PegawaiAsing::no_paspor;

}

Void info();{

Pegawai::info();Cout << “Passpor : “ << no_paspor << end1;

}};

Int main(){

// Pembuatan objekPegawaiAsing insinyur{“14567”, “Robert Dafore”, “A12345”);// InfoInsinyur.info();

}

Perhatikan kode berikut:

PegawaiAsing(string nip, string nama, string no_paspor) :Pegawai(nip, nama)

Pada konstruktor tersebut, kode Pegawai (nip, nama) digunakan untuk menyampaikan nilai nipdan nama ke kelas pegawai. Hal ini sangat bermanfaat terutama kalau nip dana nama dideklarasikan sebagai privat.

Hasilnya seperti berikut:NIP :14567Nama : Robert DaforePasspor : A12345

42

Akhir file

Page 43: tugas ketik

Bagaimana cara menyimpan definisi fungsi anggota pada life yang terpisah dengan definisi kelas?

Kelas dan definisi fungsi sering kali ditulis pada file terpisah terutama jika kelas tersebut dipakai di sejumlah program. Untuk mengetahui bagaimana caranya, silakan tulis dua program berikut terlebih dahulu. Salah satu disimpan dengan ekstensi.h.

#infndef _mobil#define _mobil

#include <iostream>#include <string>

Using namespace std;

Class Mobil{Private:

String jenis;String merk;Int cc;

Public:Mobil {string jenis, string merk, int cc);Void info();

};

#endif // _mobil

#include <iostream>#include “mobil.h”

Mobil::Mobil (string jenis, string merk, int cc){

Mobil::jenis = jenis;Mobil::merk = merk;Mobil::cc = cc;

}

43

10.

Akhir file

File: mobil.h

File: mobil.cpp

Page 44: tugas ketik

Void Mobil::info(){

Cout << “jenis : “ << jenis << end1;Cout << “Merek : “ << merk << end1;Cout << “CC : “ << cc << end1;

}

Tampak bahwa isi file mobil.cpp berupa define fungsi-fungsi anggota pada kelas Mobil. File ini perlu dikomplisasi sekali saja menjadi objek (file.o). komplisasi dapat dilakukan belakangan.

Berikutnya, buatlah proyek bernama tesmobil. Silakan ikuti langkah-langkah seperti berikut.

1. Pilih menu File Lalu klik new | project….

2. Klik pada Console application . lalu klik pada tombol GO. Langkah berikut ini menampilkan kotak dialog seperti berikut:

3. Klik NEXT hingga tampilan jendela seperti berikut:

44

Akhir file

Page 45: tugas ketik

Ketikkan tesmobil pada kolom Project title dan pilih folder yang akan digunakan untuk membuat proyek (dalam contoh ini, dipilih D:\Cpp) pada kolom Folder to create project in sehingga hasilnyaSeperti berikut:

1. Klik pada tombol next, lalu Finish2. Pilih menu project. Klik pada add files…. Pilih Mobil.cpp di D:\Cpp dan klik Open untuk

menyertakan file tersebut.3. Klik OK saat muncul Konfirmasi seperti berikut:

4. Klik Tanda + di Sources, maka akan tampak Folder Tesmobil dan file Mobil.cpp.

5. Buka folder tesmobil (klik tanda +) dan kemudian klik ganda pada main mobil.cpp.6. Isikan main.cpp milik proyek tesmobil seperti berikut:

#include <iostream>#include “..\mobil.h”Using namespace std;

Int main(){

Mobil sedan (“saga”, “Proton”, 1600) ;Sedan.info();Return 0;

}

45

Akhir file

File: main.cpp

Page 46: tugas ketik

Jika Anda mengenakan Build and Run pada program di atas, maka akan diperboleh hasil seperti berikut:

Jenis : sagaMerek : ProtonCC : 1600

46