Professional Documents
Culture Documents
Pemrograman C++
PEMROGRAMAN C++
Tujuan
1. Menerangkan elemenelemen yang ada di dalam program C++
2. Menerangkan fungsi dari tiap elemen di dalam C++
Kemampuan
1. Praktikan mengenal elemenelemen 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 1
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 bagianbagian dari program.
#include <iostream.h>
Ilmu Komputer UGM 2
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 headerheader 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.
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 3
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 masingmasing proses tersebut akan lebih mudah
diimplementasikan dalam program jika dikelompokkelompokkan 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 prototipenya. 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 masingmasing fungsi
void tampilan(float c)
{
Ilmu Komputer UGM 4
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 5
Modul KL. Pemrograman C++
TIPE DATA DAN VARIABEL
Tujuan
1. Menerangkan macammacam tipe data di dalam C++
2. Menerangkan maksud dari variabel
3. Menerangkan operasioperasi variabel yang didukung oleh C++
Kemampuan
1. Praktikan memahami macammacam tipe data di dalam C++
2. Praktikan memahami proses pembentukan variabel
3. Praktikan mengetahui macammacam operasi variabel 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 bermacammacam, antara lain :
void 0 tak bertipe
Ilmu Komputer UGM 6
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 7
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 Arti
* Perkalian
/ Pembagian
% Sisa pembagian (MOD)
+ Penjumlahan
Pengurangan
++ Penjumlahan dengan 1
Pengurangan dengan 1
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 simbolsimbol operasi logika :
Simbol Arti
>> geser bit ke kanan
<< geser bit ke kiri
^ XOR
~ NOT
Ilmu Komputer UGM 8
Modul KL. Pemrograman C++
Simbol Arti
| OR
& AND
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 9
Modul KL. Pemrograman C++
dapat dikombinasikan menjadi
x += 2;
y *= 3;
Kombinasi yang lain adalah
Ekspresi Kependekan dari
x += 2 x = x + 2
x = 2 x = x 2
x *= 2 x = x * 2
x /= 2 x = x / 2
x %= 2 x = x % 2
x << 2 x = x << 2
x >> 2 x = x >> 2
x &= 2 x = x & 2
x |= 2 x = x | 2
x ^= 2 x = x ^ 2
Konversi Tipe Data
Suatu ekspresi bisa mengandung lebih dari dua operan. Jika masingmasing 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 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
#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 fungsifungsi 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;
}
Enumerasi
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 nilainilai 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 nilainilai 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 fungsifungsi 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 Fungsi
\n baris baru
\t tab horizontal
\v tab vertical
\f jarak form
\a bunyi alarm
\” mencetak double quote
\\ mencetak back slash
\(digit oktal) mencetak bilangan oktal
\x(digit mencetak bilangan hexadecimal
hexadecimal
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
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
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 macammacam 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 Arti
&& AND
|| OR
NOT
Sedangkan operator relasi antara lain :
Simbol Arti
== sama dengan
Ilmu Komputer UGM 19
Modul KL. Pemrograman C++
Simbol Arti
>= lebih dari sama dengan
> lebih dari
<= kurang dari sama dengan
< kurang dari
= tidak sama dengan
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;
}
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 masingmasing 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 masingmasing
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
kondisikondisi 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
kondisi 2
20 25
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 25, dan blok 3 adalah baris 67. Blok kondisi berbeda dengan control statement bersarang.
Masingmasing 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 hari minggu";
}
else if (input == 2)
{
cout << "Anda memasukkan hari senin";
}
else if (input == 3)
{
cout << "Anda memasukkan hari selasa";
}
else if (input == 4)
{
cout << "Anda memasukkan hari rabu";
}
else if (input == 5)
{
cout << "Anda memasukkan hari kamis";
}
else if (input == 6)
Ilmu Komputer UGM 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 : cout << "minggu";
break;
case 2 : cout << "senin";
break;
case 3 : cout << "selasa";
break;
case 4 : cout << "rabu";
break;
Ilmu Komputer UGM 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 berulangulang if else dan kondisikondisinya. 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 tiaptiap 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 macammacam perulangan yang didukung oleh C++
2. Menerangkan cara menggunakan perulangan di dalam program
3. Menerangkan perbedaan dari masingmasing jenis perulangan
Kemampuan
1. Praktikan mampu menggunakan perulangan di dalam program
2. Praktikan mengetahui perbedaan dari masingmasing 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 labellabel 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 ke0
Iterasi ke1
Iterasi ke2
Iterasi ke3
Iterasi ke4
Iterasi ke5
Iterasi ke6
Iterasi ke7
Iterasi ke8
Iterasi ke9
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
ke10. Dimana variabel iterasi dinaikkan satu per satu supaya kondisi perulangan false. Jika salah
satu atau kedua syarat ini tidak ada, maka perulangan akan berjalan terusmenerus 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 apaapa. 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
{
cout << "Iterasi ke" << iterasi << endl;
iterasi++;
}
while (iterasi < 10);
return 0;
}
Ilmu Komputer UGM 30
Modul KL. Pemrograman C++
Keluaran program di atas :
Iterasi ke0
Iterasi ke1
Iterasi ke2
Iterasi ke3
Iterasi ke4
Iterasi ke5
Iterasi ke6
Iterasi ke7
Iterasi ke8
Iterasi ke9
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 terusmenerus 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 ke0
Iterasi ke1
Iterasi ke2
Iterasi ke3
Iterasi ke4
Iterasi ke5
Iterasi ke6
Ilmu Komputer UGM 32
Modul KL. Pemrograman C++
Iterasi ke7
Iterasi ke8
Iterasi ke9
Keluaran yang dihasilkan program sama seperti menggunakan do ... while dan while. Supaya
perulangan tidak berjalan terusmenerus 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 ke7). Keluarannya menjadi
Iterasi ke0
Iterasi ke2
Iterasi ke4
Iterasi ke6
Iterasi ke8
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 apaapa sehingga perulangan dapat berjalan
terusmenerus. 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 ke0
Iterasi ke1
Iterasi ke2
Iterasi ke3
Iterasi ke4
Iterasi ke5
Iterasi ke6
Iterasi ke7
Iterasi ke8
Ilmu Komputer UGM 34
Modul KL. Pemrograman C++
Iterasi ke9
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 ke0
Iterasi ke1
Iterasi ke2
Iterasi ke3
Ilmu Komputer UGM 35
Modul KL. Pemrograman C++
Iterasi ke6
Iterasi ke7
Iterasi ke8
Iterasi ke9
Terlihat bahwa iterasi ke4 dan ke5 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 ke4 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++
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 ke18, 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 masingmasing 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 ke18 dijalankan sebanyak 6x (2 x 3). Keluaran
program sbb :
masukkan nilai nested1 = 2
masukkan nilai nested2 = 3
Perulangan ke1
Perulangan ke2
Perulangan ke3
Perulangan ke2
Perulangan ke4
Perulangan ke6
Ilmu Komputer UGM 38
Modul KL. Pemrograman C++
LARIK (ARRAY)
Tujuan
1. Menerangkan hakekat dari array
2. Menerangkan selukbeluk array
3. Menerangkan cara menggunakan array
Kemampuan
1. Praktikan memahami pengertian dan selukbeluk 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 berturut
turut 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
Contohcontoh array sebelumnya adalah bentuk array satu dimensi. Kita ulangi contoh di atas
untuk melihat ciriciri 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 6772. 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 lagilagi Anda harus berhatihati 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 ke7, pendeklarasian seperti itu diperbolehkan, yaitu array tidak diberikan jumlah
elemennya. Namun dalam deklarasi harus langsung memberikan nilainilai 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 ke1 = “;
cin >> larik1[0];
cout << “\nMasukkan nilai ke2 = “;
cin >> larik1[1];
cout << “\nMasukkan nilai ke3 = “;
cin >> larik1[2];
cout << “\nMasukkan nilai ke4 = “;
cin >> larik1[3];
cout << “\nMasukkan nilai ke5 = “;
cin >> larik1[4];
i = larik1[0] + larik1[1] + larik1[2] + larik1[3] + larik1
[4];
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
variabelvariabel 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
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 karakterkarakter yang telah didefinisikan.
in 0 1
0 0 0
1 0 1
2 0 2
matriks
Setelah memori dialokasikan untuk array matriks, pada perulangan pertama nilai elemen array
matriks didefinisikan.
in 0 1 2 3
0 A K U &
1 K A M 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 elemenelemen 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 elemenelemen 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
indeksindeksnya. 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 fungsifungsi pengolah string
Kemampuan
1. Praktikan mengetahui cara menggunakan string di dalam C++
2. Praktikan mengetahui cara penggunaan dari fungsifungsi 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. Fungsifungsi 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 contohcontoh pada bab sebelumnya. Tipe data char masih satu jenis
dengan tipe data integer. Karena tipe data char diisi oleh karakterkarakter ASCII yang dikodekan
dengan angka integer dari 0 – 127. Pada perulangan pertama terlihat bahwa elemen kata1 berturut
turut 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
FungsiFungsi 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.
strlen s menghasilkan panjang dari string s
Fungsifungsi 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 masingmasing kata1, kata2, dan kata3. Kemudian baris ke9
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 ke10 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 ke12 memperlihatkan cara pemakaian fungsi strncpy. Isi karakter pada array kata1 di copy
ke array larik3 sebanyak 3 karakter saja, kemudian ditampilkan isinya. Pada baris ke14 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
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 :
Pada baris ke3 dan 4 terdapat prototipe fungsi. Prototipe fungsi digunakan untuk mendeklarasikan
fungsifungsi apa saja yang berada dalam program. Baris ke3 merupakan prototipe fungsi berupa
procedure yang memiliki parameter masukan satu variabel bertipe float (float a). Sedangkan pada
baris ke4 merupakan prototipe fungsi berupa function yang bertipe float. Ketika baris ke4 ini
dieksekusi maka C++ akan mengalokasikan sebuah memori untuk menyimpan keluaran dari
fungsi hitung. Nama memori itu sendiri adalah hitung.
Pada program utama baris ke6, 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
samasama 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 contohcontoh program sebelumnya. Prosesnya akan
melompatlompat. 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 masingmasing bernama nilai, jumlah, dan
masukan. Dari ketiga fungsi hanya dua yang mendapatkan alokasi memori, yaitu nilai dan jumlah.
Tipe data dari masingmasing memori tersebut berturutturut adalah float dan integer. Kedua
memori memiliki nama nilai dan jumlah.
Fungsi pertama memiliki 2 buah masukan yang masingmasing 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(a1);
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(a1);
sehingga apabila user memberikan masukan parameter a nilai 3 misalnya, maka program akan
berjalan sbb :
rekursi I :
Hasil mulamula bernilai 1. Kemudian karena a bernilai 3 maka statement else dijalankan.
Hasil = 3 * faktorial(2)
rekursi II :
Hasil mulamula bernilai 1. Kemudian karena a bernilai 2 maka statement else dijalankan.
Hasil = 2 * faktorial(1)
rekursi III :
Hasil mulamula bernilai 1. Kemudian karena a bernilai 1 maka statement else dijalankan.
Hasil = 1 * faktorial(0)
rekursi IV :
Hasil mulamula 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 samasama 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
*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 ke8 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 ke9 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 ke8 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 ke10 dan 11 menunjukkan cara menampilkan semua
elemen array melalui pointer yang menunjuknya.
Untuk lebih jelasnya perhatikan gambar berikut :
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 berturutturut 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 berturutturut 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 elemeneleman 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 e l a j a r C + + /0
fff
p 101
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 ke13). Inilah sebabnya untuk menampilkan
nilai yang ditunjuk oleh pointer p melalui pointer q dituliskan seperti pada baris ke14 (**q).
Ilmu Komputer UGM 71
Modul KL. Pemrograman C++
Penjelasan dengan gambar dapat dilihat sbb :
z 12 z 12 z 12
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. Masingmasing 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 elemenelemen yang ada di dalam program OOP
3. Praktikan mampu membuat program menggunakan OOP
Pendahuluan
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 sendirisendiri 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 kodekode 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 fungsifungsi 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 (samasama 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 classnya. 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 atributatribut di
dalamnya. Destructor memiliki nama seperti classnya, 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