Anda di halaman 1dari 83

Modul KL.

Pemrograman C++

PEMROGRAMAN C++
Tujuan 1. Menerangkan elemen-elemen yang ada di dalam program C++ 2. Menerangkan fungsi dari tiap elemen di dalam C++ Kemampuan 1. Praktikan mengenal elemen-elemen yang terkandung di dalam program C++ 2. Praktikan mengetahui cara eksekusi program C++ menggunakan g++ Pendahuluan Pemrograman C++ di dalam sistem operasi Linux menggunakan software g++ %GNU C++%. Kompiler ini dapat secara otomatis terinstall pada saat menginstall sistem operasi, dengan catatan kita memilih opsi untuk menginstall g++. Kompilasi menggunakan g++ dilakukan di dalam console Linux. Dengan teelebih dahulu menyimpan file source C++ ke dalam file berekstension .cpp, .cp, cxx, c++, cp, atau cc. Lalu tempatkan dalam folder home/<nama user>. Ketikkan perintah g++ <path/nama file.cpp> -o <file output> path file tidak diperlukan apabila terlebih dahulu kita masuk ke dalam folder tempat file source disimpan. File output bisa tidak diberikan, namun secara default g++ akan membuat file output bernama a.out. Setelah kompilasi dilakukan, cek apakah kompilasi sudah berhasil dengan melihat pesan hasil kompilasi. Jika terdapat pesan error maka file output belum terbentuk. Kita perlu melakukan editing source kemudian compile lagi. Cara lain untuk mengetahui apakah kompilasi berhasil dengan memasuki folder tempat file source di simpan, dan ketikkan perintah ls Apabila telah muncul file output yang kita definisikan atau file a.out maka kompilasi berhasil.
Ilmu Komputer UGM

Modul KL. Pemrograman C++ Sebaliknya jika file belum muncul maka kompilasi belum berhasil. Eksekusi file output dengan mengetikkan perintah ./<nama file output> Perintah ini membuat kita dapat melihat hasil program yang sudah dibuat. Bentuk umum file source C++ adalah sebagai berikut :
#include <iostream.h> #include <string.h> #define jumlah 50 void tampilan(float c); float penjumlahan(float a); int main() { float b; cout << Masukkan nilai = << endl; cin >> b; tampilan(b); b = penjumlahan(b); cout << nilai b = << b; } return 0;

void tampilan(float c) { cout << nilai c = << c << endl; } float penjumlahan(float a) { return(a+5); }

Berikut penjelasan bagian-bagian dari program.


#include <iostream.h> Ilmu Komputer UGM

Modul KL. Pemrograman C++


#include <string.h> #define jumlah 50

Baris tersebut merupakan preprocessor program. Berisi perintah include dan define. Include digunakan untuk menyisipkan file library atau program C++. Sedangkan define digunakan untuk mendefinisikan nilai konstanta. File include biasanya berisi header-header fungsi yang digunakan pada source. Misalnya pada contoh di atas menggunakan fungsi cout dan cin untuk menampilkan keluaran ke monitor dan menerima masukan dari keyboard. Kedua fungsi tersebut termuat dalam file include iostream.h. Oleh karena itu apabila tidak disertakan include iostream.h dalam source di atas, maka fungsi cout dan cin akan menimbulkan error. Fungsi include dalam g++ tersimpan di dalam folder /usr/include atau /usr/include/c++/<versi c++>. Untuk file include di /usr/include merupakan file include bersama. Disebut bersama karena sebenarnya file-file tersebut biasa digunakan oleh bahasa C, namun C++ juga bisa memakainya. Tetapi tidak semua file include C bisa dipakai oleh C++. Seperti string.h, bisa dipakai C maupun C++. Sebuah trik dalam pemrograman C++, semisal kita menggunakan suatu fungsi yang kita tidak mengetahui headernya dimuat di file include apa. Kita bisa menelusurinya satu per satu. Contohnya kita akan menggunakan fungsi sqrt, untuk menghitung akar kuadrat dari suatu bilangan. Fungsi sqrt tidak bisa digunakan begitu saja. Kita harus memuat file header yang mendefinisikan fungsi sqrt. Fungsi sqrt terdapa di file include antara math.h dan tgmath.h. Jika bingung akan memilih yang mana, coba cek satu per satu. dalam file math.h cari kata #define sqrt, jika tidak ditemukan cari di file tgmath.h. Ternyata fungsi sqrt dijumpai di file tgmath.h. Jadi, untuk menggunakan fungsi sqrt di dalam source kita harus menginclude file tgmath.h. Berikut cuplikan fungsi sqr di file tgmath.h
/* Return the square root of X. */ #define sqrt(Val) __TGMATH_UNARY_REAL_IMAG (Val, sqrt, csqrt)

File yang diinclude akan disisipkan pada awal program yang kita buat. Baris define akan mendefinisikan suatu konsanta bernama jumlah dengan nilai 10. Karena berupa konstanta, maka nilai jumlah tidak pernah bisa diubah. Variabel konstanta jumlah tidak memiliki tipe data, sehingga pemakaiannya terbatas. Baris berikutnya adalah
Ilmu Komputer UGM

Modul KL. Pemrograman C++


void tampilan(float c); float penjumlahan(float a);

merupakan prototipe fungsi. Pemrograman C++ memperbolehkan kita membuat suatu fungsi dimana pemakaian fungsi bermanfaat untuk lebih menyederhanakan atau menstrukturkan penulisan program. Misalkan dalam sebuah algoritma memuat proses pengurutan data, pencarian nilai tertinggi, dan pencarian modus data, tentu masing-masing proses tersebut akan lebih mudah diimplementasikan dalam program jika dikelompok-kelompokkan menjadi suatu fungsi tersendiri. Fungsi berisi sub program. Dengan kata lain, fungsi adalah penyusun program secara keseluruhan. Ada dua ciri dalam menggunakan fungsi di dalam program yang kita buat. Pertama, fungsi selalu didahului dengan prototipe-nya. Dan yang kedua, fungsi didefinisikan sub programnya. Dari contoh di atas terlihat bahwa fungsi selalu mempunyai tipe data, yaitu void dan non void(integer, float, char, dsb). Ada perbedaan dari fungsi bertipe void dan non void. Fungsi bertipe void tidak mengembalikan nilai, sedangkan fungsi bertipe non void akan mengembalikan suatu nilai sesuai dengan tipe datanya. Baris selanjutnya dimulai dengan
int main()

dan diakhiri dengan tanda kurawal tutup }. Yaitu fungsi main yang mengembalikan nilai integer. Setiap program C++ harus memiliki fungsi ini. Karena ketika compiler C++ melakukan kompilasi program, kursor kompilasi diletakkan mulai dari baris ini. Kemudian kursor bergerak dari kiri ke kanan dan dari atas ke bawah. Kursor kompilasi dapat melompat ketika menemukan baris yang memaksa dia untuk berpindah arah. Seperti pada baris
tampilan(b); b = penjumlahan(b);

kursor kompilasi akan berpindah menuju ke sub program fungsi tampilan dan fungsi penjumlahan. Pada baris akhir terdapat definisi sub program untuk masing-masing fungsi
void tampilan(float c) { Ilmu Komputer UGM

Modul KL. Pemrograman C++


cout << nilai c = << c << endl; } float penjumlahan(float a) { return(a+5); }

Perhatikan tipe data, nama, dan parameter fungsi, semuanya sama seperti pada prototipe fungsinya. Karena berupa sub program maka fungsi diawali dengan tanda kurawal buka { dan diakhiri dengan kurawal tutup }. Pembahasan lebih lanjut mengenai fungsi pada bab Function.

Ilmu Komputer UGM

Modul KL. Pemrograman C++

TIPE DATA DAN VARIABEL


Tujuan 1. Menerangkan macam-macam tipe data di dalam C++ 2. Menerangkan maksud dari variabel 3. Menerangkan operasi-operasi variabel yang didukung oleh C++ Kemampuan 1. Praktikan memahami macam-macam tipe data di dalam C++ 2. Praktikan memahami proses pembentukan variabel 3. Praktikan mengetahui macam-macam operasi v ariabel yang didukung oleh C++ Pendahuluan Di dalam memprogram kita sering melakukan penyimpanan nilai. Kemudian nilai itu kita kalikan, kita jumlah, dlsb. Nilai tersebut harus disimpan di dalam memori komputer agar bisa dioperasikan. Sebelum suatu nilai disimpan ke dalam memori, terlebih dahulu dilakukan pengalokasian memori. Cara ini disebut dengan deklarasi variabel. Semisal kita membutuhkan sebuah memori untuk menyimpan nilai. Maka pertama kita kapling memori tersebut dan memberinya nama. Hal itu saja tidak cukup, kita juga perlu mendefinisikan tipe data yang bisa masuk ke dalam memori tersebut. Tipe data dalam C++ ada bermacam-macam, antara lain : Tipe Data char int float double void Jumlah Bit 8 -128 s/d 127 16 -32768 s/d 32767 32 3.4E-38 s/d 3.4E+38 64 1.7E-308 s/d 1.7E+308 0 Jangkauan Keterangan karakter integer real real presisi ganda tak bertipe

Ilmu Komputer UGM

Modul KL. Pemrograman C++ Sehingga untuk menyimpan suatu nilai, diperlukan deklarasi variabel sbb :
<tipe data> <nama variabel> [= ekspresi]

Contoh : float nilai = 10;, baris ini berarti : alokasikan sebuah memori bertipe float dengan alamat/nama nilai dan bernilai 10. Pengisian nilai bersama dengan deklarasi variabel diperbolehkan <tidak seperti di Pascal>. Nama variabel bebas, jika nama lebih dari satu kata jangan dipisahkan dengan tanda spasi. Ekspresi merupakan statement yang berisi operasi matematika atau operasi logika. Semisal ada statement seperti ini : x = 5 + 6. Statement tersebut merupakan ekspresi. Contoh lain : x = y | z. Statement ini juga merupakan ekspresi dengan operasi logika. Variabel didefinisikan sebelum digunakan. Pendefinisiannya boleh di mana saja (di dalam program utama, di dalam perulangan, di dalam statement control statement). Biasanya kita akan meletakkan deklarasi variabel secara mengelompok dan tepat di awal program utama. Hal ini hanya untuk memudahkan pengecekan apakah suatu variabel sudah didefinisikan atau belum. Berikut contoh pendefinisian variabel.
#include <iostream.h> int main() { int y; float x = 12.3; char huruf; y = 5; huruf = 'Y'; cout << Nilai Y = << y << endl; cout << Nilai X = << x << endl; cout << Huruf = << huruf << endl; return 0; }

Nama variabel adalah case sensitive. Artinya ketika kita memberikan nama sebuah variabel dengan
Ilmu Komputer UGM

Modul KL. Pemrograman C++ Jumlah tidak akan sama dengan variabel bernama jumlah, JUMLAH, atau JumLah. Setelah variabel dideklarasikan dan diisi nilainya, selanjutnya variabel dapat dioperasikan. Operasi di dalam C++ ada beberapa macam, antara lain : Simbol * / % + ++ -Perkalian Pembagian Sisa pembagian (MOD) Penjumlahan Pengurangan Penjumlahan dengan 1 Pengurangan dengan 1 Arti

Pemakaian operasi di atas berbentuk seperti berikut : variabel_penampung = variabel_operan1 <operasi> variabel_operan2; Contoh pemakaiannya : x = x + 10; Operasi lainnya yang juga berlaku untuk vaiabel dalam C++ adalah operasi bit <operasi logika>. Berikut simbol-simbol operasi logika : Simbol >> << ^ ~ Arti geser bit ke kanan geser bit ke kiri XOR NOT 8

Ilmu Komputer UGM

Modul KL. Pemrograman C++ Simbol | & OR AND Arti

Pengunaannya sama seperti operasi aritmetika di atas, memakai dua operan dan satu variabel penampung kecuali untuk operasi ~(NOT). Operasi logika adalah operasi yang berlaku pada bit nilai variabel. Seperti misalnya kita melakukan operasi
int x = 10; x = x << 1;

Hasil dari x digeser bitnya ke kiri satu bit menjadi x = 20. Penjelasannya sbb : x = 10 -> 0000 0000 0000 1010 digeser ke kiri 1 bit menjadi x = 20 -> 0000 0000 0001 0100 Contoh lain
int x = 10; x = x &(~x);

Hasilnya nilai x = -1. Penjelasannya sbb : x = 10 -> 0000 0000 0000 1010 dan ~x -> 1111 1111 1111 0101 Kemudian dikenakan operasi AND, maka hasilnya menjadi x=0 -> 0000 0000 0000 0000 Operator Kombinasi C++ memperbolehkan operator kombinasi untuk memperpendek penulisan suatu ekspresi. Sebagai contoh
x = x + 2; y = y * 3;

Ilmu Komputer UGM

Modul KL. Pemrograman C++ dapat dikombinasikan menjadi


x += 2; y *= 3;

Kombinasi yang lain adalah Ekspresi x += 2 x -= 2 x *= 2 x /= 2 x %= 2 x << 2 x >> 2 x &= 2 x |= 2 x ^= 2 Konversi Tipe Data Suatu ekspresi bisa mengandung lebih dari dua operan. Jika masing-masing operan berbeda tipe maka C++ akan melakukan konversi tipe data agar semuanya sama, baru dioperasikan. Ada dua kunci dalam konversi ini. Pertama, apabila ada dua atau lebih operan tetapi masih dalam jenis yang sama (misalnya : tipe int, char, longint masih satu jenis tipe yaitu tipe integer. Atau tipe float, double masih dalam satu jenis tipe yaitu tipe real) maka konversi dilakukan otomatis oleh C++. Jika ada salah satu operan bertipe longint, maka semua operan diubah ke longint. Atau jika salah
Ilmu Komputer UGM

Kependekan dari x=x+2 x=x-2 x=x*2 x=x/2 x=x%2 x = x << 2 x = x >> 2 x=x&2 x=x|2 x=x^2

10

Modul KL. Pemrograman C++ satu operan bertipe double, maka semua operan diubah ke tipe data double. Ciri konversi ini adalah, tipe data yang digunakan adalah tipe data yang memiliki bit paling luas dari salah satu tipe data yang dipakai operan. Cara kedua menggunakan variabel cast. Ini digunakan apabila ada dua operan yang memiliki jenis yang berbeda, misalnya float dengan int. Cara menggunakannya sbb :
int x; float y, jumlah; jumlah = y * (float) x;

Atau :
int x, y; float jumlah; jumlah = (float) (x * y);

(float) akan memaksa variabel yang mengikutinya dikonversi ke tipe data yang didefinisikan. Definisi Konstanta Seperti yang sudah dijelaskan sebelumnya, cara mendefinisikan konsanta dapat dengan fungsi define di preprocessor. Namun ada cara mendefinisikan konsanta yang lebih baik. Yaitu dengan fungsi const. Contoh deklarasinya
#include <iostream.h> int main() { const int nilai = 90; const float jumlah = 80.6; }

Kenapa membuat konsanta lebih baik menggunakan const? Karena tipe data variabel konsanta jelas. Sehingga operasi terhadap variabel konstanta jelas pula. Jika konstanta bertipe char, maka variabel konstanta dapat diberlakukan fungsi-fungsi pengolah karakter. Typedef
Ilmu Komputer UGM

11

Modul KL. Pemrograman C++ Suatu kali kita mengulang dalam menuliskan tipe data yang cukup panjang, misalnya : unsigned short int. Kesalahan penulisan bisa saja terjadi. Untuk memperpendek nama tipe data, C++ menyediakan fasilitas fungsi typedef untuk menggantikan nama tipe data yang panjang. Caranya sbb :
#include <iostream.h> typedef unsigned short int tipe; int main() { tipe nilai, jumlah; nilai = 90; jumlah = 80; return 0; }

Program contoh di atas sama saja apabila kita menggantikan tipe data bernama 'tipe' dengan unsigned short int. Enumerasi Enumerasi adalah mendefinisikan beberapa konsanta sekaligus. Fungsi untuk mendefinisikan konstanta enumerasi menggunakan enum. Sebagai contoh perhatikan program berikut
#include <iostream.h> int main() { enum warna{hijau, merah, biru, cokelat, putih, hitam}; cout << hijau << endl; cout << merah << endl; return 0; }

Cara mendefinisikan konstanta enumerasi dapat ditempuh dengan cara seperti contoh. Fungsi enum diikuti dengan nama konstanta dan nilai-nilai enumerasi dimasukkan dalam tanda kurawal. Hasilnya adalah hijau untuk konstanta bernilai 0, merah = 1, biru = 2, dst. Namun apabila kita
Ilmu Komputer UGM

12

Modul KL. Pemrograman C++ ingin nilai-nilai tersebut kita definisikan sendiri, maka penulisannya menjadi
#include <iostream.h> int main() { enum warna{hijau =100, merah, biru=500, cokelat, putih, hitam}; cout << hijau << endl; cout << merah << endl; cout << cokelat << endl; return 0; }

Hasilnya hijau bernilai = 100, merah = 101, dan cokelat = 501.

Ilmu Komputer UGM

13

Modul KL. Pemrograman C++

BASIC INPUT OUTPUT


Tujuan 1. Menerangkan operasi input dan output di dalam C++ 2. Menerangkan parameter input dan output 3. Menerangkan operasi output ke dalam file Kemampuan 1. Praktikan memahami cara menggunakan operasi input dan output di dalam C++ 2. Praktikan mampu menggunakan operasi output ke dalam file Pendahuluan Input output g++ menggunakan basis console. Seperti yang telah kita bahas sebelumnya, input output ditangani oleh file include iostream.h. Dari fungsi-fungsi input output kita bisa menampilkan keluaran di layar monitor dan menerima masukan dari keyboard. Cout Cout untuk menampilkan keluaran di monitor memiliki bentuk bebas dan tidak standar. Tetapi fungsi ini selalu diikuti dengan tanda kurang dari dobel (<<). Berikut cara penggunaan cout :
cout << [string|variabel|special character] << [string|variabel|special character] << dst...

Contohnya sbb :
int f = 10; cout << Nilai f << f << "\tnilai F lagi = " << f << endl;

Parameter cout bisa lebih dari satu seperti terlihat pada contoh di atas. Isi parameter cout juga bervariasi, bisa berupa string, variabel, ataupun special character. Nilai f adalah parameter berupa string, yang akan ditampilkan apa adanya ke dalam monitor. f adalah variabel bertipe integer, yang akan ditampilkan isi dari variabel tersebut. Sedangkan \f merupakan special character yang berarti menambahkan tab horizontal.
Ilmu Komputer UGM

14

Modul KL. Pemrograman C++ Special character yang didukung oleh C++ antara lain : Karakter \n \t \v \f \a \ \\ \(digit oktal) \x(digit hexadecimal baris baru tab horizontal tab vertical jarak form bunyi alarm mencetak double quote mencetak back slash mencetak bilangan oktal mencetak bilangan hexadecimal Fungsi

Special character \n sama dengan fungsi endl. Cin Berfungsi untuk menangkap masukan dari keyboard. Masukan yang akan ditangkap adalah semua karakter yang ditekan dalam keyboard sebelum tanda enter ditekan. Sebagai contoh
#include <iostream.h> int main() { int b; cout << Masukkan nilai b = ; cin >> b; return 0; }

Ilmu Komputer UGM

15

Modul KL. Pemrograman C++ Pada program di atas kursor eksekusi akan berhenti sejenak saat mengeksekusi baris cin. Menunggu tombol enter ditekan. Ketika tombol enter ditekan seluruh/sebagian karakter yang ditekan sebelum tombol enter akan dimasukkan ke dalam variabel b. Karakter yang dimasukkan bisa berupa angka (bulat/pecahan), huruf dan karakter. Cin akan menyimpan masukan ke dalam variabel, oleh karena itu masukannya juga tidak boleh sembarangan. Masukan harus sesuai dengan tipe data variabel yang menampung. Output File Kita juga bisa menyimpan output program ke dalam file. Fungsi ini menggunakan dua file include, yaitu : stdio.h dan stdlib.h. Ada dua tipe output yang biasa kita temui. Pertama output berupa angka dan output berupa string. Khusus output berupa angka (pecahan/bulat), kita perlu melakukan konversi supaya menjadi string. Konversi ini menggunakan fungsi dari stdlib.h bernama gcvt, fcvt, atau ecvt. Ketiga fungsi tersebut mempunyai empat parameter kecuali gcvt. Parameter pertama adalah variabel yang menyimpan angka. Yang kedua adalah jumlah digit pembulatan. Parameter ketiga merupakan variabel yang menyimpan (berupa array bertipe char) nilai angka tersebut setelah dikonversi ke dalam string. Berikut deklarasi gcvt, fcvt, dan ecvt dalam stdlib.h
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW; extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW; extern char *gcvt (double __value, int __ndigit, char *__buf) __THROW;

Setelah nilai angka dikonversi menjadi string, kemudian disimpan ke dalam file menggunakan fungsi fputs dari stdio.h. Berikut deklarasi dari fputs dalam file stdio.h
extern int __stream); fputs (__const char *__restrict __s, FILE *__restrict

Dari deklarasi kita bisa mengetahui bahwa fungsi fputs memiliki dua parameter masukan.
Ilmu Komputer UGM

16

Modul KL. Pemrograman C++ Masukan pertama adalah variabel penyimpan string yang akan dituliskan ke dalam file. Dan yang kedua adalah pointer yang menunjuk ke file penyimpan. File tempat menyimpan string terlebih dahulu didefinisikan terlebih dahulu dengan fungsi fopen dari stdio.h. Berikut deklarasi fungsi fopen
extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes);

Dari deklarasi fungsinya dapat diketahui bahwa fopen memiliki dua parameter masukan. Pertama adalah path file akan disimpan. Dan yang kedua adalah metode yang dipakai. Metode yang digunakan sbb : r : file hanya bisa dibaca w : file baru selalu menulis. Sehingga jika sudah ada file bernama yang sama, maka file tersebut akan ditimpa isinya. a : file akan diisi data pada akhir baris, jika file sudah ada isinya. Setelah selesai menyimpan ke dalam file, maka file harus ditutup supaya file dapat diakses oleh aplikasi lainnya. Penutupan file ini dengan fungsi fclose yang masih dalam satu file include dengan fopen. Parameter fclose hanya ada satu, yaitu pointer yang menunjuk ke file. Contoh penyimpanan output pada file sbb :
char str[25]; int sig = 5; pf = fopen("output/bobot_w.h","w"); for (k=0; k<neuron_y; k++) { for (j=0; j<neuron_z; j++) { gcvt(bobot_w[j][k], sig, str); fputs(str, pf); fputs("\n",pf); } } fclose(pf);

Cuplikan program di atas menggambarkan penyimpanan suatu nilai berupa angka yang disimpan dalam variabel bobot_w ke dalam file yang terletak di folder output dan file bobot_w.h.
Ilmu Komputer UGM

17

Modul KL. Pemrograman C++ CONTROL STATEMENT Tujuan 1. Menerangkan macam-macam control statement di dalam C++ 2. Menerangkan cara menggunakan control statement 3. Menerangkan operasi logika untuk mengatur kondisi salam control statement Kemampuan 1. Praktikan memahami cara menggunakan control statement 2. Praktikan memahami cara mengatur kondisi di dalam control statement Pendahuluan Control statement dapat menjadikan program menjadi fleksibel. Karena dengan control statement kita bisa mendefinisikan baris program yang akan dieksekusi apabila suatu kondisi terpenuhi, dan tidak dieksekusi apabila kondisi tidak terpenuhi. Dalam C++ control statement ada dua jenis. Pertama, memakai if...else dan yang kedua memakai switch case. If ... Else Bentuk umum dari statement if adalah
if (kondisi) { statement1; statement2; .... statementN; }

atau :
if (kondisi) { statement1; statement2; .... statementN; Ilmu Komputer UGM

18

Modul KL. Pemrograman C++


} else if (kondisi) { statement1; statement2; .... statementN; } ........ else {

statement1; statement2; .... statementN;

Tingkatan if...else disesuaikan dengan kebutuhan. Kondisi yang harus dipenuhi dapat berbentuk ekspresi dengan operator logika dan operator relasi. Operator logika yang bisa digunakan antara lain : Simbol && || AND OR NOT Sedangkan operator relasi antara lain : Simbol == sama dengan Arti Arti

Ilmu Komputer UGM

19

Modul KL. Pemrograman C++ Simbol >= > <= < = Contoh program
#include <iostream.h> int main() { int b; float jumlah = 0; cout << Masukkan nilai b = ; cin >> b; if (b > 10) jumlah = jumlah + b; else jumlah = jumlah b; return 0; }

Arti lebih dari sama dengan lebih dari kurang dari sama dengan kurang dari tidak sama dengan

contoh di atas apabila variabel diberi nilai lebih dari 10 maka statement jumlah = jumlah + b akan dijalankan. Namun apabila nilai yang dimasukkan sama dengan 10 atau kurang dari 10, maka statement else dijalankan. Karena statement hanya satu baris maka tanda kurawal bisa dihilangkan. Kursor kompilasi akan menjalankan statement jumlah = jumlah + b apabila kondisi pertama true, kemudian kebenaran dari else tidak dicek karena kondisi pertama sudah true. Namun jika kondisi pertama tidak true baru else dicek.

Ilmu Komputer UGM

20

Modul KL. Pemrograman C++ Dalam mendesain control statement sebaiknya kita menggunakan garis bilangan supaya mudah untuk mengetahui wilayah true masing-masing kondisi. Semisal kita memiliki control statement dengan kondisi sbb :
if (b >= 20) else if (b < 20) AND (b >= 10) else if (b <= 5) AND (b >= 0) else

contoh di atas memiliki 4 kondisi dengan garis bilangan masing-masing kondisi 1


20

kondisi 2
10 20

kondisi 3
0 5

kondisi 4
0 5 10

Pengecekan 4 kondisi di atas terjadi pertama kali di kondisi 1. Apabila kondisi 1 sudah true maka kondisi-kondisi berikutnya tidak dicek oleh kursor kompilasi. Namun jika kondisi pertama tidak true, maka kondisi kedua dicek. Kondisi kedua sudah true maka kondisi lainnya di bawah kondisi dua tidak dicek. Begitu seterusnya hingga kondisi keempat. Pengecekan seperti ini terjadi karena control statement di atas masih dalam satu blok. Pentingnya menggambarkan garis bilangan juga kita jumpai pada kasus tertentu seperti contoh berikut :
if (b >= 20) else if (b < 20) AND (b >= 25)

Garis bilangannya sbb : kondisi 1


Ilmu Komputer UGM

21

Modul KL. Pemrograman C++


20 20 25

kondisi 2

Terdapat ketimpangan daerah true antara kondisi 1 dan 2. Ketimpangan terjadi pada b >= 25. Kondisi 1 dan 2 memenuhi nilai tersebut. Namun karena kedua kondisi masih dalam satu blok control statement maka kondisi 1 saja yang akan dijalankan statementnya karena kondisi satu lebih dahulu dijumpai oleh kursor kompilasi. Blok kondisi dimulai dengan kata if dan diakhiri dengan kata else atau adanya blok kondisi baru. Misalnya
if (kondisi) if (kondisi) else if (kondisi) else if (kondisi) AND (kondisi) else if (kondisi) else if (kondisi)

Pada contoh di atas terdapat tiga blok control statement. blok 1 adalah baris pertama, blok 2 adalah baris 2-5, dan blok 3 adalah baris 6-7. Blok kondisi berbeda dengan control statement bersarang. Masing-masing blok memiliki kedudukan sejajar. Berikut contoh control statement bersarang
if (kondisi) { statement; .... if (kondisi) statement; else if (kondisi) statement; else if (kondisi) AND (kondisi) { if (kondisi) statement; else if (kondisi) statement; else Ilmu Komputer UGM

22

Modul KL. Pemrograman C++


statement; } else } statement;

Contoh di atas memiliki blok control statement yang berbeda. Namun ketiga blok control statement tersebut tidak sama tingkatannya. Blok ketiga merupakan bagian dari blok kedua, dan blok kedua merupakan bagian dari blok pertama. Contoh lain :
#include <iostream.h> int main() { int input; cout << "Masukkan hari ke- = "; cin >> input; if (input == 1) { cout << "Anda memasukkan } else if (input == 2) { cout << "Anda memasukkan } else if (input == 3) { cout << "Anda memasukkan } else if (input == 4) { cout << "Anda memasukkan } else if (input == 5) { cout << "Anda memasukkan } else if (input == 6) Ilmu Komputer UGM

hari minggu";

hari senin";

hari selasa";

hari rabu";

hari kamis";

23

Modul KL. Pemrograman C++


{ cout << "Anda memasukkan hari jumat"; } else if (input == 7) { cout << "Anda memasukkan hari sabtu"; } else { cout << "Bukan input hari/salah masukan"; } return 0;

Contoh ini akan kita bandingkan dengan control statement menggunakan switch ... case. Switch ... Case Control statemen menggunakan switch ... case hanya pada kondisi yang memakai operasi relasi sama dengan. Pada contoh terakhir control statement menggunakan if else, semua kondisi menggunakan operasi relasi sama dengan. Oleh karenanya untuk menyederhanakan penulisan, bisa digunakan switch ... case seperti pada contoh
#include <iostream.h> int main() { int input; cout << "masukkan hari ke- "; cin >> input; switch(input) { case 1 : break; case 2 : break; case 3 : break; case 4 : break; Ilmu Komputer UGM

cout << "minggu"; cout << "senin"; cout << "selasa"; cout << "rabu";

24

Modul KL. Pemrograman C++


case 5 : cout << "kamis"; break; case 6 : cout << "jumat"; break; case 7 : cout << "sabtu"; break; default : cout << "bukan input hari/salah masukan"; break;

} return 0;

switch case menyederhanakan penulisan berulang-ulang if else dan kondisi-kondisinya. Kesalahan ketik dapat diminimilasir. Selain itu pengecekan kondisi lebih mudah menggunakan switch case. Ada fungsi tambahan yaitu break. gunanya untuk keluar dari switch jika salah satu kondisi telah terpenuhi. Dengan adanya break, apabila salah satu case sudah ada yang terpenuhi maka case lain di bawahnya tidak dicek. Oleh karenanya dengan adanya break kita bisa membedakan apakah kondisi tersebut masih dalam satu blok atau tidak. Default merupakan pengganti dari else pada contoh sebelumnya. Jika semua kondisi tidak terpenuhi maka default akan dijalankan. Pada contoh yang berbeda

#include <iostream.h> int main() { int input; cout << "masukkan hari ke- "; cin >> input; switch(input) { case 1 : cout << "minggu"; case 2 : cout << "senin"; case 3 : cout << "selasa"; case 4 : cout << "rabu"; case 5 : cout << "kamis"; case 6 : cout << "jumat"; case 7 : cout << "sabtu"; default : cout << "bukan input hari/salah masukan"; Ilmu Komputer UGM

25

Modul KL. Pemrograman C++


} return 0;

Break pada tiap-tiap pernyataan dihilangkan, maka pengecekan kondisi input pasti tidak kurang dari 8 kali. Jika salah satu kondisi telah terpenuhi maka kondisi di bawahnya juga ikut true. Sebagai contoh semisal input bernilai 4, maka akan tampil di layar monitor hari rabu, kamis, jumat, sabtu, bukan input/salah masukan. Hal ini disebabkan kondisi di bawah case 4 ikut true.

Ilmu Komputer UGM

26

Modul KL. Pemrograman C++ PERULANGAN Tujuan 1. Menerangkan macam-macam perulangan yang didukung oleh C++ 2. Menerangkan cara menggunakan perulangan di dalam program 3. Menerangkan perbedaan dari masing-masing jenis perulangan Kemampuan 1. Praktikan mampu menggunakan perulangan di dalam program 2. Praktikan mengetahui perbedaan dari masing-masing jenis perulangan yang ada serta mampu memilih perulangan yang akan digunakan sesuai dengan kebutuhannya Pendahuluan Ada 4 bentuk perulangan dalam C++, antara lain : 1. goto 2. while 3. do ... while 4. for Keempat perulangan memiliki fungsi secara umum sama, namun ada fungsi spesifik yang membedakan keempat perulangan. Oleh karena itu tiap kasus perulangan tidak dapat memakai satu jenis bentuk perulangan saja. Misalnya perulangan for digunakan untuk kasus perulangan yang sudah diketahui jumlah perulangan yang akan dilakukan. Perulangan menggunakan while digunakan untuk perulangan yang tak tentu jumlah perulangannya. Contohnya :
#include <iostream.h> int main() { char input = 'Y'; while ((input != 'T') && (input == 'Y')) { cout << "Diulang lagi..."; cout << "Anda mau mengulang?(Y/T)"; cin >> input; } Ilmu Komputer UGM

27

Modul KL. Pemrograman C++


return 0; }

Perulangan yang digunakan adalah while karena jumlah perulangan tidak diketahui. Program di atas tidak bisa digantikan misalnya dengan perulangan for. Goto Berikut contoh perulangan menggunakan goto.
#include <iostream.h> int main() { int hitung = 0; label : hitung++; if (hitung <= 10) goto label; cout << "hitung = " << hitung << endl; cout << "hitung selesai"; return 0; }

Keluaran dari program di atas adalah hitung = 11. Perintah goto diikuti dengan label, dimana label tersebut merupakan penunjuk baris yang akan diulang. Jalannya program di atas pertama, hitung berisi nilai 0. Kemudian hitung ditambah satu menjadi 1. Nilai hitung dicek pada kondisi if. Apabila hitung <= 10 maka statemen if dijalankan. Yaitu kursor kompilasi melompat ke baris yang diberi label. Begitu seterusnya hingga kondisi if tidak dipenuhi. Sehingga kursor kompilasi tidak lagi melompat namun meneruskan baris program selanjutnya. Yaitu menampilkan nilai hitung. Perulangan menggunakan goto kurang terstruktur. Bisa Anda bayangkan jika terdapat banyak label di source yang Anda buat. Lalu banyak pula perintah goto yang menuju ke label-label tersebut dan saling melompati. Hasilnya program akan susah untuk dibaca. Kalau program susah dibaca, tentu mencari kesalahan program juga sulit dilakukan. Karenanya perulangan ini jarang digunakan. While Perhatikan program berikut :

Ilmu Komputer UGM

28

Modul KL. Pemrograman C++


#include <iostream.h> int main() { int iterasi = 0; while (iterasi < 10) { cout << "Iterasi ke-" << iterasi << endl; iterasi++; } return 0;

Keluaran program sbb :


Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi ke-0 ke-1 ke-2 ke-3 ke-4 ke-5 ke-6 ke-7 ke-8 ke-9

Dalam menggunakan perulangan bentuk while kita memerlukan 2 hal. Pertama, perulangan memerlukan kondisi untuk memberhentikan proses iterasi. Kedua, perulangan membutuhkan ekspresi untuk menambah atau mengurangi variabel kondisi. Syarat pertama terlihat bahwa while memiliki kondisi true apabila iterasi kurang dari 10. Syarat kedua terlihat pada baris ke-10. Dimana variabel iterasi dinaikkan satu per satu supaya kondisi perulangan false. Jika salah satu atau kedua syarat ini tidak ada, maka perulangan akan berjalan terus-menerus tanpa berhenti. Jalannya program di atas pertama, nilai iterasi sama dengan 0 kemudian masuk ke kondisi perulangan. Karena nilai iterasi < 10, maka statement di dalam perulangan dijalankan. Munculnya pesan di layar monitor dan nilai iterasi ditambah satu, menjadi 1. Kemudian masuk lagi ke kondisi perulangan. Karena iterasi masih < 10, maka statement di dalam perulangan kembali dijalankan. Begitu seterusnya hingga 10 kali perulangan.
Ilmu Komputer UGM

29

Modul KL. Pemrograman C++ Berikut contoh lainnya :


#include <iostream.h> int main() { int iterasi = 20; while (iterasi < 10) { cout << "Iterasi ke-" << iterasi << endl; iterasi++; } return 0;

Karena iterasi bernilai 20 maka perulangan tidak pernah dijalankan. Sehingga hasil eksekusi program tidak menampilkan apa-apa. Hal ini terjadi dikarenakan pengecekan true/false dari kondisi perulangan dilakukan sebelum baris statement di dalam perulangan. Akan berbeda pada perulangan menggunakan do ... while.

Do ... While Perhatikan contoh berikut :


#include <iostream.h> int main() { int iterasi = 0; do {

} while (iterasi < 10); return 0; } Ilmu Komputer UGM

cout << "Iterasi ke-" << iterasi << endl; iterasi++;

30

Modul KL. Pemrograman C++ Keluaran program di atas :


Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi ke-0 ke-1 ke-2 ke-3 ke-4 ke-5 ke-6 ke-7 ke-8 ke-9

Hasilnya memang tampak sama dengan perulangan while. Do ... while juga mempunyai kesamaan dengan perulangan while antara lain, perulangan ini juga mempunyai dua syarat yang harus ada supaya iterasi tidak berjalan terus-menerus tanpa berhenti. Perbedaannya, do ... while memiliki pengecekan kondisi yang terletak setelah statement perulangan. Jalannya program di atas adalah pertama, nilai iterasi = 0. Kemudian menjalankan statement dalam perulangan, yaitu menampilkan nilai iterasi dan menambahkan nilai iterasi dengan satu menjadi 1. Baru setelah itu nilai iterasi masuk ke dalam kondisi. Karena kondisi terpenuhi maka kursor kompilasi kembali ke statement do. Dan mengulang proses. Begitu seterusnya hingga nilai iterasi = 10. Contoh yang lain :
#include <iostream.h> int main() { int iterasi = 20; do { cout << "Iterasi ke-" << iterasi << endl; iterasi++; } while (iterasi < 10); Ilmu Komputer UGM

31

Modul KL. Pemrograman C++


return 0; }

Program di atas menunjukkan perbedaan penggunaan do ... while dan while. Karena pengecekan kondisi pada do ... while terletak setelah statement maka program di atas meskipun nilai iterasi tidak memenuhi kondisi perulangan namun statement perulangan dilakukan sekali. Sehingga keluar tampilan di layar monitor nilai dari variabel iterasi yang tak lain = 20. Dapat disimpulkan bahwa dengan menggunakan do ... while statement perulangan minimal sekali dijalankan, meskipun kondisi tidak terpenuhi. For Perulangan for mempunyai bentuk umum sbb :
for (inisialisasi awal; kondisi; menaikkan/menurunkan variabel)

Perhatikan pada contoh berikut :


#include <iostream.h> int main() { int iterasi = 0; for (iterasi; iterasi < 10; iterasi++) { cout << "Iterasi ke-" << iterasi << endl; } return 0;

Keluaran program sbb :


Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi ke-0 ke-1 ke-2 ke-3 ke-4 ke-5 ke-6

Ilmu Komputer UGM

32

Modul KL. Pemrograman C++


Iterasi ke-7 Iterasi ke-8 Iterasi ke-9

Keluaran yang dihasilkan program sama seperti menggunakan do ... while dan while. Supaya perulangan tidak berjalan terus-menerus tanpa berhenti, maka perulangan for juga memiliki kondisi dimana jika terpenuhi maka statement dijalankan dan memiliki ekspresi unuk menaikkan variabel kondisi supaya suatu waktu kondisi bernilai false (perulangan berhenti). Inisialisasi variabel di dalam parameter pertama for. Kondisi perulangan dijalankan pada parameter kedua. Dan ekspresi untuk menaikkan variabel kondisi pada parameter ketiga. Contoh lain :
#include <iostream.h> int main() { for (int iterasi=0; iterasi < 10; iterasi++) { cout << "Iterasi ke-" << iterasi << endl; iterasi++; } return 0; }

Inisialisasi variabel kondisi dapat dituliskan dengan cara pada contoh di atas. Variabel iterasi hanya berlaku pada scope perulangan for sehingga pemanggilan variabel di luar perulangan tidak bisa dilakukan. Selain itu penaikan atau penurunan variabel bisa dilakukan di dalam statement perulangan (baris ke-7). Keluarannya menjadi
Iterasi Iterasi Iterasi Iterasi Iterasi ke-0 ke-2 ke-4 ke-6 ke-8

Break Kita sudah mengenal break pada bahasan switch ... case, dengan definisi yang hampir sama break
Ilmu Komputer UGM

33

Modul KL. Pemrograman C++ digunakan untuk keluar dari perulangan. Break ditempatkan di dalam statement perulangan. Ketika kursor kompilasi menjalankan statement break, maka kursor kompilasi akan melompat keluar dari scope perulangan terkait. Semua bentuk perulangan (do ... while, while, dan for) dapat menggunakan break. Perhatikan contoh berikut
#include <iostream.h> int main() { int iterasi = 0; for (;;) { if (iterasi < 10) { cout << "Iterasi ke-" << iterasi << endl; iterasi++; } else break; } return 0; }

Pada contoh di atas, for tidak mempunyai parameter apa-apa sehingga perulangan dapat berjalan terus-menerus. Namun ada cara lain untuk menghentikan perulangan. Yaitu dengan memanfaatkan control statement dan break. Jalannya program di atas pertama, nilai iterasi adalah 0. Kemudian perulangan dijalankan. Nilai iterasi dicek dalam kondisi control statement. Karena kondisi terpenuhi maka statement if dijalankan. Nilai iterasi ditampilkan di layar monitor dan nilai iterasi di tambah menjadi satu. Begitu seterusnya hingga nilai iterasi = 10. Kondisi if tidak terpenuhi, maka else dijalankan. Keluaran eksekusi program di atas sbb :
Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi Iterasi ke-0 ke-1 ke-2 ke-3 ke-4 ke-5 ke-6 ke-7 ke-8

Ilmu Komputer UGM

34

Modul KL. Pemrograman C++


Iterasi ke-9

Continue Continue adalah kebalikan dari break. Digunakan untuk kembali ke awal baris perulangan. Fungsi ini mirip dengan perintah goto. Penggunaan continue di dalam statement perulangan. Ketika kursor kompilasi menjalankan statement continue, maka kursor kompilasi akan melompat ke baris awal perulangan. Continue dapat digunakan pada semua bentuk perulangan (do ... while, while, dan for). Perhatikan contoh berikut
#include <iostream.h> int main() { int iterasi = 0; for (;;) { if ((iterasi <= 5) && (iterasi > 3)) { iterasi++; continue; } else if (iterasi < 10) { cout << "Iterasi ke-" << iterasi << endl; iterasi++; } else break; } return 0; }

Keluaran program menjadi


Iterasi Iterasi Iterasi Iterasi ke-0 ke-1 ke-2 ke-3

Ilmu Komputer UGM

35

Modul KL. Pemrograman C++


Iterasi Iterasi Iterasi Iterasi ke-6 ke-7 ke-8 ke-9

Terlihat bahwa iterasi ke-4 dan ke-5 tidak ditampilkan di layar monitor. Jalannya program di atas pertama, iterasi bernilai = 0. Kemudian masuk ke dalam perulangan. if pertama dicek kondisinya apakah bernilai true. Karena kondisi pertama tidak dipenuhi, maka kursor kompilasi menuju ke kondisi kedua. Kondisi else if ternyata terpenuhi, maka nilai iterasi = 0 ditampilkan di layar dan nilai iterasi ditambah dengan satu menjadi 1. Hingga iterasi bernilai 4 dan 5, ternyata kondisi if pertama terpenuhi, maka statement di dalamnya dijalankan. Nilai iterasi ditambah satu menjadi 5 dan 6, serta kursor kompilasi melompat kembali ke awal perulangan for. Hal inilah yang membuat tampilan iterasi ke-4 dan 5 tidak ada. Sebab statement di dalam else if tidak dijalankan. Jika baris program
if ((iterasi <= 5) && (iterasi > 3)) { iterasi++; continue; }

digantikan dengan
if ((iterasi <= 5) && (iterasi > 3)) { continue; iterasi++; }

Maka program akan berbeda, nilai iterasi setelah mencapai 4 tidak pernah naik menjadi 5, dst. Karena statement penaikan nilai iterasi tidak pernah dieksekusi. Hasilnya perulangan program di atas tidak akan pernah berhenti. Kondisi Perulangan Kondisi yang dipakai di dalam perulangan mempunyai beberapa aturan supaya tidak menimbulkan kesalahan program. Pertama, variabel kondisi perulangan harus bertipe integer atau char. Variabel
Ilmu Komputer UGM

36

Modul KL. Pemrograman C++ bertipe float tidak dianjurkan meskipun sebenarnya bisa. Jika terpaksa menggunakan variabel kondisi bertipe float/pecahan, sebaiknya cek logika kondisi tersebut secara teliti. Khusus perulangan menggunakan for, ketiga parameter dapat dihilangkan satu, dua, atau bahkan semuanya. Namun untuk faktor berhentinya harus tetap ada. faktor tersebut dapat diletakkan di dalam statement perulangan. Perulangan Bersarang Perulangan di dalam perulangan diperbolehkan pada hampir semua bahasa pemrograman. Contoh perulangan di dalam perulangan dapat dilihat pada program berikut :
#include <iostream.h> int main() { int nested1, nested2; int awal1 = 1, awal2; cout << "masukkan nilai nested1 = "; cin >> nested1; cout << "\nmasukkan nilai nested2 = "; cin >> nested2; if ((nested1 > 0) && (nested2 > 0)) { while (awal1 <= nested1) { for(awal2=1; awal2 <= nested2; awal2++) { cout << "Perulangan ke-" << awal1 * awal2 << endl; } awal1++; } } }

Pada contoh di atas, terdapat perulangan di dalam perulangan. Semua bentuk perulangan dapat diletakkan pada statement bentuk perulangan yang lain. Seperti pada program contoh perulangan for di dalam perulangan dengan while. Statement baris ke-18, akan dijalankan sebanyak nested1 x
Ilmu Komputer UGM

37

Modul KL. Pemrograman C++ nested2 (sesuai dengan masukan user). Jalannya program contoh sebagai berikut. Pertama, nilai nested1 dan nested2 dimasukkan oleh user adalah 2 dan 3. Kemudian kondisi if akan dicek apakah nilai nested masing-masing berupa nilai integer positif. Jika true maka perulangan while di jalankan. Di dalam kondisi while nilai awal1 akan dicek apakah kurang dari nilai nested1 (2). Karena kondisi true maka statement while dijalankan. Di dalam statement while ditemukan perulangan lagi, maka kondisi perulangan dicek. Apakah nilai awal2 kurang dari nested2. Karena kondisi true maka statement for dijalankan. Yaitu menampilkan pesan ke layar monitor perulangan ke-... Statement for akan dijalankan hingga nilai awal2 lebih dari nested2. Dengan kata lain perulangan for statementnya dijalankan sebanyak 3x. Sedangkan perulangan while statementnya dijalankan sebanyak 2x. Kesimpulannya total statement baris ke-18 dijalankan sebanyak 6x (2 x 3). Keluaran program sbb :
masukkan nilai nested1 = 2 masukkan nilai nested2 = 3 Perulangan ke-1 Perulangan ke-2 Perulangan ke-3 Perulangan ke-2 Perulangan ke-4 Perulangan ke-6

Ilmu Komputer UGM

38

Modul KL. Pemrograman C++

LARIK (ARRAY)
Tujuan 1. Menerangkan hakekat dari array 2. Menerangkan seluk-beluk array 3. Menerangkan cara menggunakan array Kemampuan 1. Praktikan memahami pengertian dan seluk-beluk dari array 2. Praktikan mengetahui cara menggunakan array di dalam program Pendahuluan Kita sudah mengenal deklarasi variabel. Ketika sebuah variabel dideklarasikan maka sebuah memori dialokasikan untuk variabel tersebut, dengan cara memberi nama memori dengan nama variabel. Larik atau juga disebut sebagai array adalah kumpulan memori/variabel yang memiliki tipe data yang sama. Nama dari variabel juga sama. Untuk membedakan variabel satu dengan yang lain, larik menggunakan indeks. Dengan kata lain larik adalah variabel yang bertipe sama serta letaknya berurutan di dalam memori. Berikut contoh dari array :
#include <iostream.h> int main() { int larik1[5]; int larik2[] = {5,6,9,2}; char kata[6]; }

terdapat 2 buah array dengan nama larik1 dan larik2. Larik1 merupakan kumpulan dari 5 buah memori yang bertipe integer yang berlum memiliki nilai (0). Sedangkan larik2 merupakan kumpulan dari 4 buah memori yang bertipe integer juga dengan nilai di dalam memori berturutturut 5, 6, 9, dan 2. Terakhir adalah array bernama kata dengan jumlah memori 6 buah dan bertipe char.
Ilmu Komputer UGM

39

Modul KL. Pemrograman C++ Array Satu Dimensi Contoh-contoh array sebelumnya adalah bentuk array satu dimensi. Kita ulangi contoh di atas untuk melihat ciri-ciri array lebih dalam. int larik1[5], merupakan deklarasi array. 5 merupakan penanda bahwa larik1 beranggotakan 5 buah memori. Karena array memiliki indeks, sekarang kita melihat cara pengindeksan array di C++. Berbeda cara pengindeksan array di Pascal, C++ tidak memperbolehkan programmer mendefinisikan sendiri indeks array yang mereka buat. Indeks array di C++ pasti dimulai dari 0. Nah, karena larik1 mempunyai jumlah memori 5 maka indeksnya sbb : 0 1 2 3 4

Lalu bagaimana kita mengakses isi dari array. Perhatikan contoh berikut :
#include <iostream.h> int main() { int i; int larik1[5]; int larik2[] = {5,6,9,2}; char kata[6]; for (i=0; i<5; i++) { larik1[i] = i*2; cout << larik1[i] << ", "; } cout << endl; for (i=0; i<4; i++) { cout << larik2[i] << ", "; } cout << endl; for (i=0; i<6; i++) Ilmu Komputer UGM

40

Modul KL. Pemrograman C++


{ kata[i] = 67+i; cout << kata[i] << ", "; } cout << endl; return 0;

Mengakses array berupa pengisian elemen array, menampilkan isi array, atau melakukan operasi pada elemen array. Akses array biasanya memanfaatkan perulangan. Perulangan pertama melakukan pengisian array larik1 dengan nilai = indeks array x 2. Kemudian perulangan kedua berfungsi menampilkan isi dari larik2 yang tak lain adalah 5, 6, 9, dan 2. Terakhir, perulangan ketiga berfungsi untuk mengisikan elemen array dengan huruf/karakter dengan kode ASCII berurut mulai kode 67-72. Hasil keluarannya sbb :
0, 2, 4, 6, 8, 5, 6, 9, 2, C, D, E, F, G, H,

Karena array berupa kumpulan memori, maka pengaksesannya juga harus spesifik. Artinya memori yang mana yang kita akses. Sehingga untuk mengakses caranya dengan menuliskan nama array kemudian diikuti dengan nomer indeksnya. Dan lagi-lagi Anda harus berhati-hati dalam mendefinisikan indeks array (selalu dimulai dari nol dan indeks maksimum adalah jumlah array 1). Pada contoh diperlihatkan juga bagaimana cara mengisikan langsung nilai ke dalam array. Perhatikan baris ke-7, pendeklarasian seperti itu diperbolehkan, yaitu array tidak diberikan jumlah elemennya. Namun dalam deklarasi harus langsung memberikan nilai-nilai dari elemen array tersebut. Deklarasi array seperti ini tidak diperbolehkan
int larik3[];

karena alokasi memori untuk array larik3 tidak jelas. C++ tidak menerima deklarasi array yang tidak jelas alokasi memorinya (rancu). Contoh lainnya :

Ilmu Komputer UGM

41

Modul KL. Pemrograman C++


#include <iostream.h> int main() { int i; int larik1[5]; int larik2[] = {5,6,9,2}; char kata[6]; cout << Masukkan nilai ke-1 = cin >> larik1[0]; cout << \nMasukkan nilai ke-2 cin >> larik1[1]; cout << \nMasukkan nilai ke-3 cin >> larik1[2]; cout << \nMasukkan nilai ke-4 cin >> larik1[3]; cout << \nMasukkan nilai ke-5 cin >> larik1[4]; [4]; } ; = ; = ; = ; = ;

i = larik1[0] + larik1[1] + larik1[2] + larik1[3] + larik1 cout << \nNilai i = << i << endl;

Array sama seperti variabel biasa. Maksud sama di sini adalah perlakuan terhadap array sama seperti pada variabel (pengisian nilai dan cara panggil). Letak perbedaannya, array merupakan variabel-variabel serupa yang disatukan. Hanya itu saja yang membedakan antara array dan variabel. Array Dua Dimensi Menjelaskan array berdimensi dua paling mudah menggunakan contoh matriks. Segala bentuk matriks adalah implementasi array dua dimensi. Misalnya matriks : 3 6 7 A = 4 9 2 7 8 5

Ilmu Komputer UGM

42

Modul KL. Pemrograman C++ Deklarasi array dua dimensi di atas sbb :
int matriks1[3][3] = {{3, 6, 7}, {4, 9, 2}, {7, 8, 5}}

Contoh yang lain adalah :


int matriks2[4][3]; float matriks[][3] = {{2.6, 8.9, 5.6}, {6.4, 3.8, 6.2} };

matriks1 pada tiap kolomnya memiliki 3 elemen dan tiap baris juga 3 elemen. Matriks2 memiliki 4 elemen pada tiap kolomnya dan 3 elemen tiap barisnya. Matriks memiliki 2 elemen tiap kolomnya dan 3 elemen tiap barisnya. Harap diingat bahwa indeks matriks1 yang pertama [3] merupakan jumlah elemen pada kolom dan indeks kedua [3] adalah jumlah elemen pada baris. Matriks2, indeks pertama [4] merupakan jumlah elemen pada tiap kolomnya dan indeks kedua [3] merupakan jumlah elemen tiap barisnya. Jangan berfikir bahwa indeks pertama merupakan jumlah baris matriks dan indeks kedua adalah jumlah kolom matriks. Karena jika Anda berpemahaman seperti ini maka ketika melakukan akses pada matriks/array berdimensi 2, Anda akan bingung. Pemahaman ini hanya untuk menyamakan persepsi dalam membaca array berdimensi dua/matriks. Pada gambar di bawah ini Anda akan lebih diperjelas lagi mengenai pemahaman tentang indeks pertama dan indeks kedua dari matriks/array dua dimensi. Dapat disimpulkan bahwa deklarasi array dua dimensi sbb :
nama_variabel[jumlah_elemen_kolom][jumlah_elemen_baris];

in 0 1 2 3

Ilmu Komputer UGM

43

Modul KL. Pemrograman C++ matriks2 Deklarasi array matriks memberikan contoh kepada Anda bagaimana cara mendeklarasikan sebuah array dua dimensi sekaligus mengisikan nilainya. Indeks array matriks yang pertama dapat dikosongi, sedangkan indeks kedua harus diisi. Cara mengakses array dua dimensi dapat dilihat pada contoh berikut :
#include <iostream.h> int main() { int matriks[3][2]; char kata[ ][4] = {{'A','K','U','&'}, {'K','A','M','U'}}; for (int i=0; i<3;i++) { for (int j=0; j<2; j++) { matriks[i][j] = i * j; } } for (int i=0; i<2;i++) { for (int j=0; j<4; j++) { cout << kata[i][j]; } cout << "\t"; } cout << endl; cout << "nilai matriks[3][2] = " << matriks[2][1] << endl; return 0;

Keluarannya sbb :
AKU& KAMU nilai matriks[3][2] = 2 Ilmu Komputer UGM

44

Modul KL. Pemrograman C++ Eksekusi program di atas, pertama komputer akan mengalokasikan 6 buah memori untuk array matriks. Dengan spesifikasi 3 memori untuk tiap kolomnya dan 2 memori untuk tiap barisnya. Selanjutnya komputer juga mengalokasikan 8 buah memori untuk array char kata. Dengan spesifikasi 2 buah untuk tiap kolomnya dan 4 buah untuk tiap barisnya. Kemudian memori tersebut diisikan dengan karakter-karakter yang telah didefinisikan. in 0 1 2 0
0 0 0

1
0 1 2

matriks Setelah memori dialokasikan untuk array matriks, pada perulangan pertama nilai elemen array matriks didefinisikan. in 0 1 0
A K

1
K A

2
U M

3
& U

kata Sekali lagi jangan bingung terhadap indeks pada gambar. Memang terlihat indeks baris ada 2 sedangkan indeks kolom ada 4. Setelah memori dialokasikan untuk array kata dan isinya juga sudah didefinisikan, pada perulangan kedua isi elemen array kata ditampilkan. Terakhir, nilai pada array matriks [3][2] juga ditampilkan. Contoh yang lain yaitu :
#include <iostream.h>

Ilmu Komputer UGM

45

Modul KL. Pemrograman C++


int main() { int matriksA[2][3] = {{3, 6, 9}, {4, 5, 2}}; int matriksB[3][2] = {{5, 8}, {5, 9}, {4, 2}}; int matriksC[2][2]; int i, j, k, kali, jumlah = 0; for (i=0; i<2; i++) { for (j=0; j<3; j++) { for (k=0; k<2; k++) { kali = matriksA[i][j] * matriksB[j][k]; jumlah = jumlah + kali; matriksC[i][k] = jumlah; } } } for (i=0; i<2; i++) { for (k=0; k<2; k++) { cout << matriksC[i][k] << "\t"; } cout << endl; } }

Array Multidimensi Hampir mirip dengan array dua dimensi, array ini memiliki indeks hingga lebih dari dua. Deklarasinya sbb :
int larik1[3][4][5]; int larik2[2][2][3] = {{{5, 6, 4}, {8, 8, 6}}, {{9, 6, 4}, {2, 3, 7}}}; Ilmu Komputer UGM

46

Modul KL. Pemrograman C++ Pada contoh di atas terlihat cara mendeklarasikan array tiga dimensi. Contoh di atas juga bisa dijadikan patokan untuk membuat array dimensi yang lebih tinggi. Cara pengisian langsung untuk array multi dimensi adalah pertama, Anda lihat indeks terakhir dari array. Pada contoh di atas indeks terakhirnya adalah 3. Sehingga untuk kurung kurawal pertama berisi 3 elemen [{5, 6, 4}]. Selanjutnya indeks kedua dari akhir, pada contoh di atas bernilai 2. Oleh karena itu Anda membuat kurung kurawal yang lebih tinggi satu tingkat dari yang telah Anda buat tadi. Isi dari kurawal yang lebih tinggi ini adalah elemen-elemen di kurawal yang lebih rendah satu tingkat dengan dia dan sebanyak indeksnya yaitu 2 [{{5, 6, 4}, {8, 8, 6}}]. Terakhir, indeks paling awal yang bernilai 2. Berarti Anda perlu membuat kurung kurawal baru yang lebih tinggi tingkatannya dari yang sebelumnya. Isi dari kurawal tersebut adalah elemen-elemen di tingkat sebelumnya sebanyak indeks yang tercantum yaitu 2 [{{{5, 6, 4},{8, 8, 6}},{{9, 6, 4}, {2, 3, 7}}}]. Anda dapat mengetahui jumlah alokasi memori pada array tiga dimensi dengan mengalikan indeks-indeksnya. Pada contoh di atas jumlah alokasi memori sebanyak 2 x 2 x 3 = 12 buah. Cara mengakses array sbb :
larik2[0][0][0] = 5 larik2[0][0][1] = 6 larik2[0][0][2] = 4 larik2[0][1][0] = 8 larik2[0][1][1] = 8 larik2[0][1][2] = 6 larik2[1][0][0] = 9 larik2[1][0][1] = 6 larik2[1][0][2] = 4 larik2[1][1][0] = 2 larik2[1][1][1] = 3 larik2[1][1][2] = 7

Kesimpulan Pada array dua dimensi, saat dideklarasikan indeks pertama sebagai jumlah elemen tiap kolom dan indeks kedua sebagai jumlah elemen tiap baris. Sedangkan pada saat pengaksesan array dua
Ilmu Komputer UGM

47

Modul KL. Pemrograman C++ dimensi, indeks pertama sebagai penunjuk baris ke dan indeks kedua sebagai penunjuk kolom ke.

Ilmu Komputer UGM

48

Modul KL. Pemrograman C++

STRING
Tujuan 1. Menerangkan cara menggunakan string di dalam C++ 2. Menerangkan fungsi-fungsi pengolah string Kemampuan 1. Praktikan mengetahui cara menggunakan string di dalam C++ 2. Praktikan mengetahui cara penggunaan dari fungsi-fungsi string Pendahuluan Berbeda dengan bahasa pemrograman Pascal yang memiliki tipe data string. Dalam C++ tipe data string dapat diperoleh dengan cara mendefinisikan suatu array bertipe char. Karena pada hakekatnya string merupakan kumpulan dari variabel bertipe char. Meskipun berupa array, perlakukan terhadap array bertipe char sedikit lebih istimewa. Karena terdapat beberapa fungsi yang bisa digunakan untuk memanipulasi langsung array ini. Sedangkan pada array bertipe non char tidak ada fungsi untuk memanipulasi. Fungsi-fungsi untuk array bertipe char diletakkan pada file include string.h. Bagaimana cara mendeklarasikan string? Sama seperti dengan array biasa namun tipe datanya adalah char. Berikut contohnya :
#include <iostream.h> int main() { char kata1[5]; char kata2[] = {'B', 'E', 'L', 'A', 'J', 'A', 'R'}; for (int i=0; i<5; i++) { kata1[i] = 'A'+i; cout << kata1[i]; } cout << endl; Ilmu Komputer UGM

49

Modul KL. Pemrograman C++


for (int i=0; i<7; i++) { cout << kata2[i]; } cout << endl; return 0;

Contoh di atas mirip dengan contoh-contoh pada bab sebelumnya. Tipe data char masih satu jenis dengan tipe data integer. Karena tipe data char diisi oleh karakter-karakter ASCII yang dikodekan dengan angka integer dari 0 127. Pada perulangan pertama terlihat bahwa elemen kata1 berturutturut diisi dengan karakter A (ASCII = 65), B (ASCII = 66), C (ASCII = 66), D (ASCII = 66), dan E (ASCII = 66). Keluaran dari program di atas adalah :
ABCDE BELAJAR

Fungsi-Fungsi Dalam String.h Sama seperti dengan file include yang lain, string.h terletak di /usr/include. Kita akan melihat fungsi apa saja yang didukung oleh string.h.
/* Copy SRC to DEST. */ extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) __THROW; /* Copy no more than N characters of SRC to DEST. */ extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) __THROW; /* Append SRC onto DEST. */ extern char *strcat (char *__restrict __dest, __const char *__restrict __src) __THROW; /* Append no more than N characters from SRC onto DEST. */ extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) __THROW; Ilmu Komputer UGM

50

Modul KL. Pemrograman C++


/* Compare S1 and S2. */ extern int strcmp (__const char *__s1, __const char *__s2) __THROW __attribute_pure__; /* Compare N characters of S1 and S2. */ extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) __THROW __attribute_pure__; /* Return the length of S. */ extern size_t strlen (__const char *__s) __THROW __attribute_pure__; __END_NAMESPACE_STD

Ketujuh fungsi di atas paling banyak dipakai untuk memanipulasi string. Jika Anda menggunakan Microsoft Visual C++, fungsi manipulasi string lebih banyak, seperti strstr, strupr, dan strlwr.

fungsi strcpy strncpy strcat strncat strcmp strncmp strlen

Parameter source, dest source, dest, n source, dest source, dest, n s1, s2 s1, s2, n s

Keterangan mengkopi kata dari source ke dalam dest mengkopi kata dari source ke dalam dest sebanyak n karakter menambahkan string dari source ke string dest di posisi akhir menambahkan string dari source ke string dest di posisi akhir sebanyak b karakter membandingkan string dari s1 dengan string dari s2 membandingkan string dari s1 dengan string dari s2 sebanyak n karakter menghasilkan panjang dari string s

Fungsi-fungsi di atas dapat digunakan pada tipe string. Pada contoh sebelumnya, kita menampilkan kata BELAJAR dengan melakukan cout satu per satu dari elemen array. Untuk lebih praktisnya, contoh sebelumnya akan kita ganti dengan program berikut :
Ilmu Komputer UGM

51

Modul KL. Pemrograman C++


#include <iostream.h> int main() { char kata1[6]; char kata2[] = "BELAJAR"; strcpy(kata1, "ABCDE"); cout << kata1 << endl; cout << kata2 << endl; } return 0;

Terlihat bahwa string meskipun berupa array namun memiliki perlakuan yang berbeda. Pendeklarasian sekaligus pengisian array bertipe char berbeda dengan pendeklarasian sekaligus pengisian nilai array bertipe non char. Keluaran program di atas sbb :
ABCDE BELAJAR

Menangkap Inputan Berupa Karakter Suatu saat program kita membutuhkan input dari user berupa karakter. Untuk menangkap karakter yang dimasukkan, perintahnya sama seperti menangkap inputan biasa pada tipe data integer atau float. Berikut contoh programnya :
#include <iostream.h> int main() { char kata1[6]; char kata2[] = "BELAJAR"; char kata3[15]; cout << "Masukkan suatu kata dengan panjang 6 = "; cin >> kata1; cout << kata1;

Ilmu Komputer UGM

52

Modul KL. Pemrograman C++


strncpy(kata3, kata1, 3); cout << "\n" << kata3 << endl; cout << strncmp(kata3, kata1,3) << endl; cout << "Panjang kata 2 adalah = " << strlen(kata3); } return 0;

Keluaran dari program tersebut adalah :


Masukkan suatu kata dengan panjang 6 = faizal faizal fai 0 Panjang kata 2 adalah = 7

Pada program terdapat 3 buah larik masing-masing kata1, kata2, dan kata3. Kemudian baris ke-9 program meminta masukan dari user berupa kata. Karakter yang dapat diterima hanya 6 buah. Meskipun user memasukkan sebanyak 8 karakter, maka hanya 6 karakter pertama yang disimpan. Cara menerima inputan user berupa karakter yaitu dengan perintah
cin >> kata1;

Meskipun kata1 berupa array namun pengaksesan array bertipe char dapat dengan menghilangkan informasi indeksnya. Fasilitas ini khusus untuk array bertipe char saja. Pada baris ke-10 juga seperti itu. Untuk menampilkan sebuah string <array bertipe char> tidak perlu menampilkan satu per satu, namun bisa menampilkan sekaligus dengan tidak menyertakan indeks array yang bersangkutan. Baris ke-12 memperlihatkan cara pemakaian fungsi strncpy. Isi karakter pada array kata1 di copy ke array larik3 sebanyak 3 karakter saja, kemudian ditampilkan isinya. Pada baris ke-14 array kata1 dan kata3 dibandingkan. Namun pembandingan hanya sebatas 3 karakter saja. Hasilnya adalah nilai 0 yang berarti 'true'. Terakhir, menampilkan ukuran dari array kata2 yang berjumlah 7 karakter. Kesimpulan, Cara akses array bertipe char dengan non char adalah berbeda. C++ memberikan fasilitas khusus untuk array bertipe char. Hal ini untuk mempermudah programmer dalam
Ilmu Komputer UGM

53

Modul KL. Pemrograman C++ menggunakan tipe data string. Pengaksesan dengan menghilangkan indeks array. Rahasianya adalah, setiap array char yang kita buat secara otomatis akan ditambahkan oleh C++ karakter null yang berarti tanda akhir string. Seperti array kata2, oleh C++ alokasi memorinya menjadi : B E L A J A R /0 karakter terakhir adalah tanda akhir string dari kata2. Oleh karenanya apabila dilakukan cout maka C++ akan melakukan perulangan dengan menampilkan isi array kata2 hingga dijumpai karakter null. Makanya kenapa indeks array pada saat pengaksesan array bertipe char dapat dihilangkan. Karena patokannya kepada karakter null.

Ilmu Komputer UGM

54

Modul KL. Pemrograman C++

FUNCTION
Tujuan 1. Menerangkan hakekat function di dalam program C++ 2. Menerangkan cara menggunakan function di dalam program Kemampuan 1. Praktikan mengetahui hakekat function di dalam program C++ 2. Praktikan mampu menggunakan function dalam program yang dibuatnya Pendahuluan Function seperti yang telah sedikit disinggung di bab pertama, merupakan sub program yang menyusun program secara keseluruhan. Dalam bahasa C++ hanya dikenal function sedangkan dalam bahasa Pascal dikenal 2 sub program dengan function dan procedure. Function merupakan sub program yang bisa mengembalikan nilai. Dengan kata lain function selain sub program, dia juga memiliki alokasi memori tersendiri mirip dengan variabel. Procedure adalah sub program yang tidak dapat mengembalikan nilai atau tidak ada alokasi memori. Meskipun di dalam C++ hanya mengenal function, namun sebenarnya C++ tetap mempunyai procedure juga. Perbedaannya procedure dalam C++ tidak didefinisikan secara implisit dengan kata kunci yang dikenali C++ yaitu procedure. Function yang ada di dalam program C++ harus memiliki tipe data. Tipe datanya antara lain tipe data yang dikenali oleh C++ serta tipe data void. Tipe data void berarti suatu variabel tidak bertipe atau tidak memiliki alokasi memori. Karenanya function yang bertipe void dalam C++ sama seperti procedure dalam Pascal. Perhatikan contoh program yang menggunakan function berikut ini :
#include <iostream.h> void tampilkan(float a); float hitung(); int main() { tampilkan(hitung()); Ilmu Komputer UGM

55

Modul KL. Pemrograman C++


return 0; } void tampilkan(float a) { cout << "nilai a menjadi = " << a << endl; } float hitung() { float x; cout << "Masukkan nilai a = "; cin >> x; x = x + 5; return(x); }

Keluaran program di atas sbb :


Masukkan nilai a = 0.5 nilai a menjadi = 5.5

Pada baris ke-3 dan 4 terdapat prototipe fungsi. Prototipe fungsi digunakan untuk mendeklarasikan fungsi-fungsi apa saja yang berada dalam program. Baris ke-3 merupakan prototipe fungsi berupa procedure yang memiliki parameter masukan satu variabel bertipe float (float a). Sedangkan pada baris ke-4 merupakan prototipe fungsi berupa function yang bertipe float. Ketika baris ke-4 ini dieksekusi maka C++ akan mengalokasikan sebuah memori untuk menyimpan keluaran dari fungsi hitung. Nama memori itu sendiri adalah hitung. Pada program utama baris ke-6, terdapat pemanggilan fungsi tampilkan. Pemanggilan fungsi harus disuaikan dengan kondisi fungsinya. Kondisi yang ahrus diperhatikan adalah nama fungsi, besar kecilnya huruf harus sama dan parameter masukan fungsi, jumlahnya harus sama pula. Misalnya apabila parameter fungsi satu buah maka ketika fungsi dipanggil harus menyertakan nilai masukan satu buah Fungsi tampilkan memiliki sebuah nilai masukan, oleh karenanya ketika pemanggilan tampilkan() nilai masukan disertakan. Nilai masukan ini boleh nilai langsung atau nama variabel yang menyimpan suatu nilai. Yang harus diperhatikan, karena parameter memiliki tipe data maka nilai masukan harus sesuai dengan tipe data tersebut.
Ilmu Komputer UGM

56

Modul KL. Pemrograman C++ Pada contoh di atas, nilai masukan berasal dari variabel bernama hitung. Hitung sendiri merupakan fungsi, namun memiliki alokasi memori. Boleh dikatakan hitung juga merupakan variabel. Tipe data hitung juga harus sesuai dengan tipe data parameter masukan fungsi tampilkan, yaitu float. Ketika baris tampilkan(hitung()) dijalankan, maka fungsi tampilkan dijalankan dan parameter masukan diganti menjadi hitung().
void tampilkan(hitung()) { cout << "nilai a menjadi = " << a << endl; }

Selanjutnya, karena parameter masukan berupa fungsi maka fungsi tersebut dijalankan terlebih dahulu, supaya didapatkan nilai implisit untuk parameter masukan.
float hitung() { float x; cout << "Masukkan nilai a = "; cin >> x; x = x + 5; return(x); }

Baris ketiga fungsi hitung meminta kepada user untuk memasukkan nilai bertipe float ke dalam program. Kemudian nilai akan dimasukkan ke dalam variabel x. Dimisalkan nilai x adalah 0.5. Nilai variabel x ditambah dengan 5 menjadi 5.5. Terakhir, nilai x dimasukkan ke dalam variabel hitung yang tak lain adalah nilai kembali dari fungsi hitung. Tipe data variabel x dan fungsi hitung sama-sama float sehingga tidak perlu adanya konversi tipe data. Setelah fungsi hitung selesai dikerjakan, kursor kompilasi kembali ke fungsi tampilkan, kali ini parameter masukannya sudah jelas nilainya.
void tampilkan(5.5) { cout << "nilai a menjadi = " << a << endl; Ilmu Komputer UGM

57

Modul KL. Pemrograman C++


}

Dan nilai a yang tak lain adalah 5.5 ditampilkan ke layar monitor. Proses kompilasi program yang mempunyai function tidak terurut seperti contoh-contoh program sebelumnya. Prosesnya akan melompat-lompat. Kunci untuk merunut proses kompilasi pada program yang mempunyai function adalah. Ketika menjumpai suatu kata yang tak lain adalah nama sebuah function maka kursor kompilasi akan berpindah menuju ke baris program function tersebut. Seperti pada statement
void tampilkan(hitung())

Contoh program lainnya :


#include <iostream.h> float nilai(int a, int b); int jumlah(float x); void masukan(char kata[]); int main() { int l, m; float w; char kata[15]; cout << "Masukkan nama variabel = "; cin >> kata; cout << "\nMasukkan nilai a = "; cin >> l; m = l + 10; w = nilai(l,m); cout << "Nilai hasilnya adalah = " << jumlah(w) << endl; masukan(kata); } return 0;

void masukan(char kata[]) { cout << "Nama variabelnya adalah = " << kata;

Ilmu Komputer UGM

58

Modul KL. Pemrograman C++


} int jumlah(float x) { return((int)x * 100); } float nilai(int a, int b) { return((float)a + b); }

Keluaran program adalah :


Masukkan nama variabel = variabelku Masukkan nilai a = 3 Nilai hasilnya adalah = 1600 Nama variabelnya adalah = variabelku

Program pertama kali mendeklarasikan 3 buah fungsi masing-masing bernama nilai, jumlah, dan masukan. Dari ketiga fungsi hanya dua yang mendapatkan alokasi memori, yaitu nilai dan jumlah. Tipe data dari masing-masing memori tersebut berturut-turut adalah float dan integer. Kedua memori memiliki nama nilai dan jumlah. Fungsi pertama memiliki 2 buah masukan yang masing-masing bertipe integer. Fungsi kedua memiliki sebuah masukan bertipe float, dan fungsi terakhir memiliki masukan berupa array bertipe char. Di dalam program utama, dideklarasikan 2 buah variabel bertipe integer, 1 buah bertipe float, dan sebuah array bertipe char sebanyak 15 elemen. Baris keenam program utama, berfungsi menerima masukan dari user. Segala masukan baik berupa karakter atau angka akan disimpan ke dalam array bernama kata, dan dikenali sebagai karakter (meskipun user memasukkan angka). Selanjutnya user juga diminta untuk memasukkan nilai a. Nilai yang dimasukkan user disimpan ke dalam variabel l. Kursor kompilasi berpindah menuju baris selanjutnya, nilai m didapatkan. Kemudian nilai w sama dengan nilai yang dikembalikan oleh fungsi nilai. Karena kursor kompilasi menjumpai kata dimana kata tersebut merupakan nama sebuah fungsi, maka fungsi terkait dijalankan.
Ilmu Komputer UGM

59

Modul KL. Pemrograman C++ Pemanggilan fungsi nilai harus memperhatikan jumlah parameter yang dibutuhkan dan tipe data dari parameter tersebut. Karena variabel l dan m merupakan integer serta masukan yang dibutuhkan fungsi nilai juga integer maka sah jika fungsi dijalankan. Kursor kompilasi menuju ke awal sub program fungsi nilai. Fungsi nilai mengembalikan sebuah bilangan float yang tak lain adalah penjumlahan dari parameter 1 dengan parameter 2. Bilangan hasil penjumlahan ini kemudian dikopikan ke dalam variabel w. Kursor kompilasi kembali ke baris 12 program utama. Nilai variabel jumlah ditampilkan. Karena jumlah merupakan suatu fungsi, maka sebelum ditampilkan sub programnya dijalankan terlebih dahulu. Kursor kompilasi kembali berpindah menuju ke baris awal sub program fungsi jumlah. Fungsi ini memerlukan sebuah masukan bertipe float. Nilai w sebagai masukan juga bertipe float, maka sah jika fungsi ini dijalankan. Fungsi jumlah mengembalikan sebuah nilai bertipe integer hasil perkalian dari parameter masukan dengan nilai 100. Hasil ini disimpan ke dalam variabel jumlah. Kursor kompilasi kembali pada baris 12 program utama dan menyelesaikan statementnya. Nilai pada fungsi jumlah ditampilkan. Pada baris berikutnya, dijalankan fungsi tampilkan. Fungsi ini memiliki sebuah masukan yang berbentuk array dengan tipe char. Variabel kata yang berperan sebagai parameter masukan fungsi tampilkan juga berbentuk array dan bertipe char. Maka sah jika fungsi tampilkan dijalankan. Kursor kompilasi menuju sub program fungsi tampilkan. Di dalamnya hanya terdapat satu baris program yang berfungsi untuk menampilkan string/array karakter dari parameter fungsi.
int main() { int l, m; float w; char kata[15]; cout << "Masukkan nama variabel = "; cin >> kata; cout << "\nMasukkan nilai a = "; cin >> l; l = 3 m = l + 10; w = nilai(l,m); float nilai(3, 13) { return((float) 3 + 13);

Ilmu Komputer UGM

60

Modul KL. Pemrograman C++


}

cout << "Nilai hasilnya adalah = " << jumlah(w) << endl;

int jumlah (16) { return((int) 16 * 100); } masukan(kata); void masukan(kata=variabelku) { cout << "Nama variabelnya adalah = " << kata; } return 0; }

Contoh berikut ini akan memperlihatkan cara memberikan parameter fungsi berupa array multi dimensi.
#include <iostream.h> float fungsi(int larik[][3], int kolom, int baris); int main() { int nilai[][3] = {{5, 6, 8},{2, 9, 7}}; cout << "Nilai fungsinya = " << fungsi(nilai, 2, 3) << endl; return 0;

float fungsi(int larik[][3], int kolom, int baris) { float jumlah = 0; Ilmu Komputer UGM

61

Modul KL. Pemrograman C++


for (int i=0; i<kolom; i++) { for (int j=0; j<baris; j++) { jumlah = (float) jumlah + larik[i][j]; } } return(jumlah); }

Terlihat pada baris ketiga program, prototipe fungsi memiliki parameter masukan array dua dimensi. Cara penulisannya boleh disertakan indeks array yang pertama maupun yang kedua. Apabila indeks ingin dikosongi karena belum diketahui jumlah elemennya, maka hanya indeks pertama saja yang boleh kosong. Indeks kedua dan seterusnya harus diisikan jumlah elemennya.

Rekursi Rekursi merupakan pemanggilan fungsi sendiri di dalam fungsi terkait. Contohnya sbb :
#include <iostream.h> int faktorial(int a); int main() { int z; cout << "Masukkan nilai yang akan dicari faktorialnya = "; cin >> z; cout << faktorial(z); } int faktorial(int a) { int hasil=1; if (a == 0) { return(1); } Ilmu Komputer UGM

62

Modul KL. Pemrograman C++


else if (a > 0) { hasil = a * faktorial(a-1); return(hasil); } }

Terdapat fungsi faktorial dengan nilai kembali berupa integer. Di dalam sub program fungsi ada pemanggilan fungsi faktorial itu sendiri yaitu :
hasil = a * faktorial(a-1);

sehingga apabila user memberikan masukan parameter a nilai 3 misalnya, maka program akan berjalan sbb : rekursi I : Hasil mula-mula bernilai 1. Kemudian karena a bernilai 3 maka statement else dijalankan. Hasil = 3 * faktorial(2) rekursi II : Hasil mula-mula bernilai 1. Kemudian karena a bernilai 2 maka statement else dijalankan. Hasil = 2 * faktorial(1) rekursi III : Hasil mula-mula bernilai 1. Kemudian karena a bernilai 1 maka statement else dijalankan. Hasil = 1 * faktorial(0) rekursi IV : Hasil mula-mula bernilai 1. Karena a = 0 maka masuk ke statement if. Hasilnya fungsi faktorial pada rekursi keempat mengembalikan nilai 1 (return (1)). Setelah hasil rekursi keempat didapat, jalannya program kembali ke rekursi di atasnya.
Ilmu Komputer UGM

63

Modul KL. Pemrograman C++ rekursi III : hasil = 1 * 1 adalah 1 kemudian nilai hasil (1) dikembalikan oleh fungsi faktorial pada rekursi ketiga. Selanjutnya jalannya program menuju ke rekursi di atasnya yaitu rekursi kedua. rekursi II : hasil = 2 * 1 adalah 2 kemudian nilai hasil (2) dikembalikan oleh fungsi faktorial pada rekursi kedua. Selanjutnya jalannya program menuju ke rekursi di atasnya yaitu rekursi pertama. rekursi I : hasil = 3 * 2 adalah 6 kemudian nilai hasil (6) dikembalikan oleh fungsi faktorial pada rekursi pertama dan sekaligus sebagai hasil akhir nilai faktorial dari 3.

Ilmu Komputer UGM

64

Modul KL. Pemrograman C++ POINTER Tujuan 1. Menerangkan tentang hakekat pointer di dalam C++ 2. Menerangkan kegunaan pointer 3. Menerangkan cara menggunakan pointer di dalam program Kemampuan 1. Praktikan memahami hakekat pointer di dalam C++ 2. Praktikan mengetahui kegunaan pointer 3. Praktikan tahu cara menggunakan pointer di dalam program Pendahuluan Pointer digunakan untuk menunjuk variabel/memori secara fleksibel. Pointer mirip dengan variabel, yang sama-sama memiliki alokasi memori di komputer. Perbedaannya adalah isi dari pointer. Isinya adalah suatu alamat memori. Selain itu pointer minimal membutuhkan alokasi 2 memori saat menggunakannya. Perhatikan penjelasan berikut yang akan memudahkan Anda memahami apa itu pointer. a 10F 20

Gambar dia atas adalah suatu variabel bernama a yang mendapatkan alokasi memori di dalam komputer di alamat 10F. Kemudian nilai dari variabel a adalah 20. *p 21C 10F

Gambar di atas adalah suatu pointer bernama p (tanda * merupakan penunjuk bahwa p merupakan
Ilmu Komputer UGM

65

Modul KL. Pemrograman C++ pointer) yang memiliki alokasi memori pada alamat 21C. Nilai dari p adalah 10F. 10F tak lain adalah alamat dari variabel a. Inilah sebab pointer disebut penunjuk variabel/memori. Tipe Data Pointer Meskipun pointer menyimpan alamat memori/variabel bukan berarti pointer tidak memiliki tipe data atau bertipe data integer. Pointer memiliki tipe data layaknya variabel seperti biasanya. Lalu tipe data ini fungsinya untuk apa? Tipe data pointer berfungsi untuk menjelaskan tipe data variabel/memori yang ditunjuk oleh pointer tersebut. Seperti pada kedua gambar di atas, pointer *p memiliki tipe data integer. Artinya adalah nilai di dalam memori beralamat 10F bertipe data integer. Semisal pointer bertipe integer sedangkan variabel a bertipe float, maka pointer p tidak bisa menunjuk ke variabel a. dikarenakan berbeda tipe data. Pengaksesan Pointer Contoh sederhana yang akan menjelaskan tentang pengaksesan pointer adalah menggunakan fungsi cout. Perhatikan program berikut :
#include <iostream.h> int main() { int *p = NULL; int nilai = 9; p = &nilai; cout << "Alamat yang ditunjuk p adalah = " << p << endl; cout << "Nilai yang ditunjuk p adalah = " << *p << endl; return 0; }

Keluaran program adalah :


Alamat yang ditunjuk p adalah = 0xbffffa90 Nilai yang ditunjuk p adalah = 9

Ilmu Komputer UGM

66

Modul KL. Pemrograman C++ Terlihat bahwa ada dua pilihan dalam mengakses pointer. Pertama, kita mengakses isi pointer yang berupa alamat memori dan kedua adalah kita mengakses nilai memori yang ditunjuk oleh pointer. Untuk cara pertama cukup dengan menyebutkan nama pointernya tanpa menyertakan tanda *. Sedangkan untuk cara kedua kita perlu menyertakan tanda * sebelum nama pointer. Pada baris ke-8 program
p = &nilai;

mempunyai arti pointer p yang semula tidak menunjuk ke memori manapun <int *p = NULL;> dialihkan menjadi menunjuk ke memori nilai. Tanda & berarti alamat. Sehingga nilai pointer p sama dengan alamat dari variabel nilai. Contoh lainnya sbb :
#include <iostream.h> int main() { int *p = NULL; int nilai = 9; p = &nilai; *p = 11; cout << "Alamat yang ditunjuk p adalah = " << p << endl; cout << "Nilai sekarang bernilai = " << nilai << endl; return 0; }

Keluaran program di atas adalah :


Alamat yang ditunjuk p adalah = 0xbffffa90 Nilai sekarang bernilai = 11

Baris ke-9 program di atas memperlihatkan cara mengganti nilai dari suatu variabel melalui pointer. Variabel nilai diganti dari 9 menjadi 11 melalui pointer p. Dengan Pointer Dan Array Pada hakekatnya pointer dapat menunjuk ke segala memori. Karena array juga merupakan memori
Ilmu Komputer UGM

67

Modul KL. Pemrograman C++ yang dikumpulkan menjadi satu, maka pointer dapat menunjuknya. Cara penunjukkannya ada dua macam. Pertama adalah menunjuk array non char dan yang kedua adalah menunjuk array char. Cara pertama yaitu dengan menunjuk array satu per satu seperti menunjuk variabel biasa. Perhatikan contoh program berikut :
#include <iostream.h> int main() { int larik[3] = {50, 30, 10}; int *p; p = &larik[0]; cout << "Nilai pertama = " << *p << endl; for (int i=0; i<3; i++) cout << *(p+i) << endl; return 0; }

Keluaran dari program di atas adalah :


Nilai pertama = 50 50 30 10

Baris ke-8 program menunjukkan cara pointer menunjuk ke sala satu elemen array. Apabila indeks array ini dihilangkan, maka program akan error, dikarenakan pointer bertipe non char harus menunjuk tepat pada satu eleman array. Baris ke-10 dan 11 menunjukkan cara menampilkan semua elemen array melalui pointer yang menunjuknya. Untuk lebih jelasnya perhatikan gambar berikut : 10A 10B 10C larik 50 30 10

Alokasi memori pada array bernama larik

Ilmu Komputer UGM

68

Modul KL. Pemrograman C++ FF1 p 10A

Alokasi memori pada pointer p Maka statement (p+i) berarti isi dari pointer ditambah dengan i. Sehingga berturut-turut bernilai 10A, 10B, dan 10C. Lebih lengkapnya statement *(p+i) berarti nilai dari variabel yang ditunjuk oleh pointer yang tak lain 50, 30, dan 10. Apabila statement *(p+i) diganti dengan *p+i maka berturut-turut keluarannya menjadi 50, 51, dan 52. Hal ini disebabkan *p selalu menunjuk ke elemen array yang pertama. Kemudian elemen yang ditunjuk tersebut ditambah dengan i. Cara kedua adalah penunjukan terhadap array bertipe char atau string. Lebih berbeda dari penunjukan array non char karena array char atau string di dalam C++ mempunyai perlakukan khusus. Perhatikan contoh berikut :
#include <iostream.h> int main() { char kata[] = "belajar C++"; char *p; p = kata; cout << p; return 0; }

Terdapat sebah array bertipe char berrnama kata. Jumlah elemen array kata adalah 12. Kemudian terdapat pula sebuah pointer bertipe char bernama p. pointer tersebut menunjuk ke array kata dengan ekspresi p = kata; tanpa karakter * mengawali nama pointer dan karakter & mengawali nama array. Ekspresi tersebut berarti pointer menunjuk kepada elemen array yang paling pertama (kata[0]). Selanjutnya elemen-eleman yang ditunjuk oleh pointer p ditampilkan di layar. Hasil keluaran porgram di atas adalah
belajar C++ Ilmu Komputer UGM

69

Modul KL. Pemrograman C++ Seperti pada perintah yang sudah kita pelajari sebelumnya, untuk menampilkan array bertipe char bisa langsung dituliskan cout << kata; tanpa menggunakan perulangan layaknya array bertipe non char. Demikian pula dengan pointer bertipe char yang menunjuk ke array bertipe string. Tidak perbedaan dalam menampilkan ke layar. cukup cout << p tanpa karakter bintang pada p. Jika menggunakan karakter * maka tampilan hanya akan mengeluarkan huruf b. Pemahaman dengan gambar sbb : 101 102 103 104 105 106 107 108 109 10A 10B 10C kata b fff p 101 e l a j a r C + + /0

Ketika ekspresi cout << p dijalankan, maka C++ akan mengeluarkan semua elemen pada array yang ditunjuk oleh p. Hingga C++ menemukan tanda null (/0) pada salah satu elemen array. Contoh lainnya sbb :
#include <iostream.h> int main() { char *p = "belajar C++"; cout << p; return 0; }

Keluaran program adalah :


belajar C++

Arti dari program di atas adalah (char *p = "belajar C++";) dialokasikan sebuah array
Ilmu Komputer UGM

70

Modul KL. Pemrograman C++ berelemen 12 buah. Array tersebut tidak mempunyai nama (anonymous). Isi array tak lain adalah karakter belajar C++. Kemudian dialokasikan sebuah pointer bernama p dengan tipe char yang menunjuk ke array anonymous tersebut. Pointer Menunjuk Pointer Pointer pada hakekatnya juga merupakan memori namun fungsinya untuk menunjuk memori yang lain. Hal ini yang menyebabkan pointer dapat ditunjuk oleh pointer lainnya. Cara penulisan pointer yang menunjuk ke pointer sbb :
#include <iostream.h> int main() { int *p = NULL; int **q = NULL; int z = 12; p = &z; cout << "Nilai yang ditunjuk p = " << *p << endl; q = &p; *p = 15; cout << "Nilai yang ditunjuk q = " << **q << endl; cout << "Nilai yang ditunjuk p = " << *p << endl; return 0;

Keluaran program adalah :


Nilai yang ditunjuk p = 12 Nilai yang ditunjuk q = 15 Nilai yang ditunjuk p = 15

Pointer q merupakan pointer yang menunjuk kepada pointer lain. Pada baris 12 dan 13, terdapat ekpresi dimana pointer q menunjuk ke pointer p dan nilai pointer p diganti dengan 15. Pointer q menunjuk ke pointer p. Sedangkan pointer p menunjuk ke variabel z yang bernilai 15 (nilai z juga otomatis terganti dengan adanya statement pada baris ke-13). Inilah sebabnya untuk menampilkan nilai yang ditunjuk oleh pointer p melalui pointer q dituliskan seperti pada baris ke-14 (**q).
Ilmu Komputer UGM

71

Modul KL. Pemrograman C++ Penjelasan dengan gambar dapat dilihat sbb : 10F z 12 55A *p 10F z 10F 12 55A FF0 **q z 10F 12 55A 55A

Array Dari Pointer Suatu array dapat berupa pointer elemennya. Namun ada perbedaan antara array pointer bertipe char dan non char. Perbedaannya terletak pada cara pendeklarasian dan pengaksesan. Berikut contohnya :
#include <iostream.h> int main() { int *p[3]; int q[] = {1, 2, 3}; for (int i=0; i<3; i++) { p[i] = &q[i]; cout << *p[i]; } return 0; }

Keluarannya adalah 1 2 3 Sedangkan untuk array pointer bertipe char berikut contohnya :
#include <iostream.h> int main() { Ilmu Komputer UGM

72

Modul KL. Pemrograman C++


char *p[] = {"merah", "hijau", "kuning"}; for (int i=0; i<3; i++) cout << p[i] << endl; return 0; }

Keluarannya adalah
merah hijau kuning

Array pointer bertipe non char tidak dapat langsung dideklarasikan isinya. Mereka membutuhkan array lain untuk menyimpan nilai yang akan ditunjuk. Terlihat bahwa array pointer p pada program pertama tidak bisa langsung diisi dengan nilai 1, 2, dan 3. Namun nilai tersebut diisi terlebih dahulu ke dalam array q. Baru kemudian menggunakan perulangan, array pointer didefinisikan penunjukkannya. Sedangkan pada array pointer bertipe char, array p langsung bisa didefinisikan penunjukannya. Ekspresi char *p[] = {"merah", "hijau", "kuning"}; memiliki arti bahwa terdapat tiga buah array dengan nama anonymous. Masing-masing berelemen 5, 5, dan 6. Kemudian isi ketiga array tersebut adalah kata merah, hijau, dan kuning. Selanjutnya terdapat 3 buah array pointer yang bertipe char menunjuk ketiga array anonymous. Baris progam
for (int i=0; i<3; i++) cout << p[i] << endl;

memiliki fungsi untuk menampilkan elemen array yang ditunjuk oleh array pointer p. Pointer Sebagai Masukan Fungsi Perhatikan contoh program berikut :
#include <iostream.h> void tukar(int *a, int *b);

Ilmu Komputer UGM

73

Modul KL. Pemrograman C++


int main() { int x = 89; int y = 47; cout << Sebelum tukar(): << endl; cout << x = << x << y = << y << endl; tukar(&x, &y); cout << Sesudah tukar() : << endl; cout << x = << x << y = << y << endl; return 0; } void tukar(int *a, int *b) { int c; c = *a; *a = *b; *b = c;

Ilmu Komputer UGM

74

Modul KL. Pemrograman C++

Ilmu Komputer UGM

75

Modul KL. Pemrograman C++

CLASS
Tujuan 1. Menerangkan Object Oriented Programming 2. Menerangkan hakekat class, object, method, constructor, destructor, dan inheritance 3. Menerangkan cara membuat program OOP Kemampuan 1. Praktikan memahami hakekat OOP 2. Praktikan mengerti elemen-elemen yang ada di dalam program OOP 3. Praktikan mampu membuat program menggunakan OOP Pendahuluan C++ merupakan bahasa pemrograman berbasis OOP (Object Oriented Programming). Metode OOP memiliki perbedaan dari pemrograman berbasis prosedural. Salah satu perbedaannya adalah pemrograman prosedural menyelesaikan masalah (algoritma) secara terurut dan menggunakan prosedure/function-function. Namun untuk metode OOP, permasalahan diselesaikan dengan memetakan objek-objek di dalam permasalahan tersebut, mendefinisikan atribut-atribut penyusun objek, dan fungsi-fungsi yang ada di dalamnya. Seperti pada contoh kasus program bangun ruang. Desain OOPnya sbb : 1. Kita mempunyai objek bangun ruang misalnya kubus, balok, dan limas 2. Tiap objek tersebut memiliki atribut seperti panjang sisi, tinggi, lebar, dsb. tergantung bentuk bangun ruangnya 3. Tiap objek juga mempunyai fungsi sendiri-sendiri untuk menghitung luas bidang, volume bidang, dsb. Dari contoh di atas, kita akan mencoba untuk menjabarkannya menjadi sebuah contoh program. Pada bahasan di bawah ini akan dijelaskan bagaimana cara membuat program OOP menggunakan C++ dengan contoh desain OOP di atas. Class

Ilmu Komputer UGM

76

Modul KL. Pemrograman C++ Class merupakan tipe dari objek. Sebelum kita membuat suatu objek, terlebih dahulu ditentukan tipe dari objek tersebut. Deklarasi class seperti pada contoh di bawah :
class Bangun { private : int sisi; public : int luas(int sisi); int volume(int sisi); };

Kata private menandakan bahwa variabel atau fungsi di bawah kata tersebut hanya boleh diakses oleh kode-kode di dalam class tersebut. Untuk kata public menandakan bahwa variabel atau fungsi di bawah kata tersebut boleh diakses oleh semua kode meskipun berbeda class. Luas dan volume merupakan fungsi-fungsi dalam class Bangun yang berguna untuk menghitung luas bangun dan volumenya. Fungsi dalam class biasa disebut dengan nama method. Objek tipe data int, float, char, dsb. sama seperti class (sama-sama tipe data). Namun untuk memakai tipe data tersebut, kita harus menciptakan variabel, misalnya : int a. int merupakan tipe data dan a merupakan variabel bertipe int. Sama seperti class, untuk memakainya kita harus membuat variabel. Variabel ini selanjutnya kita sebut dengan objek. Berikut cara mendeklarasikan class dan menggunakannya dalam objek
#include <iostream.h> class Bangun { public: Bangun(int s, int p); int Luas(int p, int l); void Volume(int sisi);

Ilmu Komputer UGM

77

Modul KL. Pemrograman C++


private: int a,b; int massa; } Bangun::Bangun(int s, int p) { a = s; b = p; //return(0); } int Bangun::Luas(int p, int l) { int L; L = p * l; return(L); } void Bangun::Volume(int sisi) { int vol; vol = sisi * sisi * sisi; massa = vol; } int main() { Bangun Kubus(5,3); int o = Kubus.Luas(6,8); Kubus.Volume(4); cout << "luas : "; cout << o; cout << Volume : ; cout << Kubus.massa; return(0); }

Terdapat class Bangun dengan atribut a, b, dan massa. Selain itu juga mempunyai method Volume dan Luas. Kemudian dalam program utama terdapat objek Kubus yang bertipe class Bangun.

Ilmu Komputer UGM

78

Modul KL. Pemrograman C++ Method Persis seperti fungsi, method bisa memiliki keluaran atau tidak. Jika tidak memiliki keluaran maka method bertipe void. Pada contoh di atas method Luas memiliki keluaran bertipe integer. Sedangkan method Volume tidak. Method Luas membutuhkan dua parameter. Di dalam method tersebut, dihitung luas bangun berdasarkan parameter masukkannya. Hasil penghitungan dikembalikan sebagai nilai method. Pada program utama, nilai balikan ini disimpan di dalam variabel o. Method Volume membutuhkan satu parameter. Di dalamnya method tersebut, dihitung volume bangun berdasarkan parameter masukkannya. Hasil penghitungan dimasukkan ke dalam variabel massa. Constructor Constructor adalah method yang mempunyai nama sama seperti class-nya. Fungsinya adalah ketika objek didefinisikan maka method constructor dijalankan. Misalnya pada baris
Bangun Kubus(5, 3);

pada saat objek Kubus dibuat maka method/constructor Bangun dijalankan. Itulah mengapa pendefinisian objek Kubus di atas memerlukan 2 parameter (2, 3). Parameter tersebut merupakan parameter yang dibutuhkan oleh constructor.
Bangun::Bangun(int s, int p) { a = s; b = p; //return(0); }

Selanjutnya nilai parameter 1 (2) dimasukkan ke dalam variabel a pada class Bangun dan nilai parameter 2 (3) dimasukkan ke dalam variabel b pada class Bangun. Constructor meskipun sama seperti method, namun tidak memiliki tipe data. Manfaat dari constructor adalah ketika kita mendefinisikan objek sekalian kita memasukkan suatu nilai pada variabel di dalam objek tersebut (dalam contoh ini a dan b).
Ilmu Komputer UGM

79

Modul KL. Pemrograman C++ Destructor Destructor adalah fungsi yang secara otomatis dijalankan ketika suatu objek musnah. Fungsi dari destructor antara lain membebaskan memori yang telah dipakai untuk objek dan atribut-atribut di dalamnya. Destructor memiliki nama seperti class-nya, namun didahului dengan tanda tidle (~). Contoh :
#include <iostream.h> class Bangun { public: Bangun(int s, int p); ~Bangun(); int Luas(int p, int l); void Volume(int sisi); private: int a,b; int massa;

} .....

Bangun::~Bangun() { /*tanpa baris program tidak mengapa karena hanya */ }

Inheritance/Pewarisan Inheritance memungkinkan suatu class memiliki atribut/sifat seperti class yang sudah ada. Seperti pada contoh berikut ini :
#include <iostream.h> class barang { private : Ilmu Komputer UGM

80

Modul KL. Pemrograman C++


int a,b; public : barang(int j,int k); int tambah(); }; class baju : public barang { private : int h; public : baju(int i,int j,int k); int tampilkan();

};

barang::barang(int j, int k) { a = j; b = k; } int barang::tambah() { return(a+b); } baju::baju(int i, int j, int k) : barang(j,k) { h = i; } int baju::tampilkan() { return (h + barang::tambah()); } int main() { baju koko(8,4,6); cout << koko.tampilkan(); Ilmu Komputer UGM

81

Modul KL. Pemrograman C++


}

Terdapat dua buah class yaitu Barang dan Baju. Class Baju merupakan turunan dari class Barang. Penjelasan dari contoh di atas, class barang memiliki constructor tersendiri dengan 2 parameter masukan. Sedangkan class baju memiliki 3 buah masukan dalam constructornya. Karena baju adalah pewaris dari class barang maka, constructor baju harus memuat constructor barang.
baju::baju(int i, int j, int k) : barang(j,k) { h = i; }

2 parameter baju digunakan sebagai constructor barang (j dan k). Kemudian parameter i dimasukkan ke variabel h. Akses Atribut Class Kita bisa mengakses atribut class dengan terlebih dahulu menuliskan objek dari class yang bersangkutan, diikuti tanda titik (.) baru kemudian nama atributnya. Contoh :
koko.tampilkan();

Ilmu Komputer UGM

82

Modul KL. Pemrograman C++

DAFTAR PUSTAKA
Kadir, Abdul, 2004, Pemrograman Visual C++, Penerbit Andi, Jogjakarta. Binanto, Iwan, 2003, Pemrograman C++ di Linux, Penerbit Andi, Jogjakarta. Binanto, Iwan, 2004, Lebih Lanjut dengan Pemrograman C++ di Linux, Penerbit Andi, Jogjakarta. Java 2 TM Fourth Edition, McGraw Hill, New York www.juicy.com/tutorial/c++

Ilmu Komputer UGM

83

Anda mungkin juga menyukai