View
14
Download
0
Category
Preview:
Citation preview
BAHAN AJAR MATA KULIAH
TEKNIK PEMROGRAMAN TERSTRUKTUR 2
Oleh
Margi Cahyanti
UNIVERSITAS GUNADARMA
JAKARTA
ATA 2019/2020
i
DAFTAR ISI
Halaman
KATA PENGANTAR ..................................................................................... i
DAFTAR ISI .................................................................................................... ii
BAB I PENGENALAN C++ .......................................................................... 1
BAB 2 FUNGSI MANIPULATOR PADA C++ ............................................ 2
BAB 3 PERCABANGAN KONDISI IF BAHASA C++ ............................... 6
BAB 4 PERULANGAN FOR, WHILE & DO WHILE BAHASA C++ ....... 14
BAB 5 ARRAY .............................................................................................. 23
BAB 6 POINTER PADA C++........................................................................ 28
BAB 7 FUNCTION ........................................................................................ 31
BAB 8 STRUKTUR C++ ............................................................................... 45
BAB 9 OBJECT ORIENTED PROGRAMMING ......................................... 49
DAFTAR PUSTAKA ...................................................................................... 57
vi
KATA PENGANTAR
Segala puji serta syukur penulis panjatkan kehadirat Allah SWT, atas segala rahmat
dan limpahan anugerah serta keridhoan-Nya yang telah memungkinkan bagi penulis untuk
menyelesaikan tesis ini.
Adapun maksud dan tujuan dari pembuatan modul ini untuk melengkapi bahan ajar
mata kuliah ‘Teknik Pemrograman Terstruktur 2’.
Saya berharap, semoga modul ini dapat memberikan manfaat dan memberikan
pengetahuan lebih bagi para Civitas Universitas Gunadarma. Akhir kata, semoga Allah SWT
membalas segala kebaikan.
1
BAB I
PENGENALAN BAHASA PEMROGRAMAN C++
Bahasa Pemrograman C++ adalah bahasa Pemrograman Komputer Tingkat Tinggi (High Level
Language), tapi C++ juga dimungkinkan untuk menulis Bahasa Pemrograman Tinggkat
Rendah (Low Level Language) di dalam pengkodingan.
karena C++ merupakan peluasan dari Bahasa Pemrograman C yang tergolong dalam Bahasa
Pemrograman Tingat Menengah (Middle Level Language), yang berarti Bahasa Pemrograman
C++ memiliki semua fitur dan kelebihan yang bahasa pemrograman C miliki, termasuk
kelebihan Bahasa C yaitu kita dimungkinkan untuk menggunakan Bahasa Pemrograman
Assembly di dalam pengkodingan C, dan juga menyediakan fasilitas untuk memanipulasi
memori tingkat rendah.
C++ adalah peluasan dan penyempurnaan dari bahasa pemrograman sebelumnya yaitu bahasa
C, oleh Bjarne Stroustrup pada tahun 1980. Awal C++ mempunyai nama yaitu “C with
Classes” dan berganti nama menjadi C++ pada tahun 1983. Bjarne Stroustrup membuat bahasa
pemrograman C++ dengan tambahan fasilitas, yang sangat berguna pada tahun itu sampai
sekarang, yaitu bahasa pemrograman yang mendukung OOP (Object Oriented Programming).
C++ dirancang sebagai bias terhadap sistem pemrograman dan embedded sistem, dengan
mengutamakan kinerja, kecepatan, efisiensi dan fleksibilitas penggunaan. C++ telah dan sangat
berguna dalam banyak hal, seperti pembuatan aplikasi desktop, server dan performance-
critical (misalnya switch telepon dan pesawat luar angkasa).
Fitur-fitur C ++
• Merupakan salah satu bahasa pemrograman yang paling banyak digunakan di dunia dan
hampir semua program di dunia dibuat dengan menggunakan C/C++.
• Portable. Karena memiliki banyak kompiler yang berjalan di berbagai platform dan
secara eksklusif menggunakan Standar Library C++ yang akan berjalan pada
banyak platform dengan tidak adanya perubahan fungsi-fungsi pada Library C++.
• Mendukung Manifest dan Inferred Typing. Fitur tersebut sudah ada semenjak kelahiran
C++ pertama hingga C++ Modern saat ini, C ++ memungkinkan fleksibilitas dan juga
menyediakan kesederhanaan dalam menulis program.
• C++ Menawarkan banyak pilihan paradigma. Beberapa adalah paradigm yang sangat
terkenal dalam C++ adalah menawarkan dukungan luar biasa untuk Pemrograman
Prosedural, Generik, Berorientasi Objek (OOP) dan masih banyak paradigm yang
memberikan kemudahan untuk programmer C++.
• Memiliki dukungan Library yang luar biasa. C++ memiliki Standar Library C++ yang
memiliki banyak sekali fungsi dan tidak hanya itu, banyak juga programmer lain yang
mengembangkan C++ dan membuat Library tambahan yang sangat berguna.
• Bahasa yang dikompilasi. C ++ mengkompilasi langsung ke bahasa mesin, yang
menjadikanya menjadi salah satu bahasa pemrograman tercepat di dunia.
2
BAB II
FUNGSI MANIPULATOR PADA C++
PENGERTIAN MANIPULATOR
Manipulator adalah fungsi pembantu yang memungkinkan untuk mengontrol input / output
stream. Manipulator pada umumnya digunakan untuk mengatur tampilan layar. Contohnya
untuk mengatur supaya suatu nilai ditampilkan dengan lebar 8 karakter dan diatur rata kiri
terhadap lebar tersebut.
Dalam C++, terdapat beberapa manipulator yang merupakan fitur baru, yang baru
ditambahkan. hal ini karena compiler C++ klasik (belum distandarisasi) tidak mendukung
adanya manipulator.
JENIS-JENIS MANIPULATOR C++, LENGKAP CONTOH PROGRAM
1. endl
endl adalah sebuah fungsi manipulator yang berguna untuk memasukkan karakter NewLine
atau mengatur pindah baris, dengan kata lain fungsi manipulator ini serupa dengan "\n". Fungsi
endl sangat dibutuhkan untuk piranti keluaran berupa file di disk. Untuk menggunakan
manipulator ini, kita harus menyertakan file header <iostream>
2. ends
ends adalah sebuah fungsi manipulator yang berguna untuk menambah karakter null (nilai
ASCII NOL) kederetan suatu karakter. Fungsi seperti ini seringkali diperlukan, misalnya untuk
mengirim sejumlah karakter ke file di disk atau modem dan mengakhirinya dengan karakter
NULL. Untuk menggunakan manipulator ini, kita harus menyertakan file header <iostream>
Contoh :
cout<<'M'<<'D'<<ends;
Pernyataan di atas mengirimkan 2 buah karakter (M dan D) serta sebuah karakter null. Pada
layar, ends akan menimbulkan sebuah karakter kosong. #include <iostream>
using namespace std;
int main ()
{
int nilai1=100, nilai2=80;
int jumlah = nilai1 + nilai2;
cout<<"Nilai 1 : "<<nilai1<<".";
cout<<"\nNilai 2 : "<<nilai2<<ends<<ends<<".";
cout<<"\n\nJumlah Kedua Nilai : "<<jumlah;
return 0;
}
3. setw( )
setw( ) adalah sebuah fungsi manipulator yang berguna untuk mengatur lebar dari suatu
tampilan data. Seandainya kita akan menggunakan manipulator ini, kita harus menyertakan file
header <iomanip>. Bentuk umum penulisan setw() adalah sebgai berikut:
setw(int n);
3
n = adalah nilai lebar tampilan data, yang bernilai integer.
Untuk lebih jelasnya, fungsi manipulator setw() dapat dilihat pada program dibawah ini: #include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
int jumbar1 = 1300, jumbar2 = 80, jumbar3 = 520;
cout<<"Barang 1 = "<<setw(8)<<jumbar1<<endl;
cout<<"Barang 2 = "<<setw(8)<<jumbar2<<endl;
cout<<"Barang 3 = "<<setw(4)<<jumbar3<<endl;
return 0;
}
4. dec( ), oct( ) dan hex( )
dec, oct dan hex adalah sebuah fungsi manipulator yang berguna untuk memunculkan data
dalam bentuk hexadesimal (bilangan berbasis 16), oktal (bilangan berbasis 8) dan desimal
(bilangan berbasis 10). Seandainya kita akan menggunakan manipulator ini, sobat harus
menyertakan file header <iomanip>.
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
int nilai = 500;
cout<<"Nilai Awal= "<<nilai<<endl<<endl;
cout<<"Nilai ke Desimal = "<<dec<<nilai<<endl;
cout<<"Nilai ke Oktal = "<<oct<<nilai<<endl;
cout<<"Nilai ke Hexadesimal = "<<hex<<nilai<<endl;
return 0;
}
5. setbase( )
setbase( ) adalah sebuah fungsi manipulator yang berguna untuk konversi bilangan desimal,
oktal dan hexadesimal. Seandainya kita akan menggunakan manipulator setbase(), sobat
harus menyertakan file header <iomanip>. Bentuk penulisannya setbase() adalah sebgai
berikut:
setbase(base bilangan); #include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
int MD;
cout<<"Penerapan Manipulator setbase()"<<"\n\n";
cout<<"Desimal Oktal Hexadesimal"<<endl;
cout<<"----------------------------"<<"\n";
for(MD=180;MD<=190;MD++){
cout<<setbase(10)<<MD<<" ";
cout<<setbase(8)<<MD<<" ";
cout<<setbase(16)<<MD<<endl;
}
return 0;
}
4
6. setfill( )
setfill( ) adalah sebuah fungsi manipulator yang berguna untuk menampilkan suatu karakter
yang diletakkan didepan nilai yang diatur oleh fungsi setfill(). Untuk menggunakan
manipulator setfill(), kita harus menyertakan file header <iomanip>. Bentuk penulisannya
setfill() adalah sebgai berikut:
setfill(charakter); #include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
int MD;
cout<<"Penggunan Manipulator setfill()"<<"\n\n";
for(MD=1;MD<=15;MD++)
{
cout<<setfill('*');
cout<<setw(MD)<<MD<<endl;
}
return 0;
}
7. setprecision( )
setprecision( ) adalah sebuah fungsi manipulator yang berguna untuk mengatur jumlah digit
desimal yang ingin ditampilkan. biasanya setprecision() digunakan jika sobat bekerja dengan
menggunakan bilangan pecahan, dengan setprecision() kita dapat mengatur jumah digit
pecahan yang ingin ditampilkan, Untuk menggunakan manipulator setprecision(), kita harus
menyertakan file header <iomanip>
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
float M,D,MD;
M = 12.34;
D = 38.56;
MD = M * D;
cout<<setiosflags(ios::fixed);
cout<<setprecision(0)<<MD<<endl;
cout<<setprecision(2)<<MD<<endl;
cout<<setprecision(4)<<MD<<endl;
cout<<setprecision(6)<<MD<<endl;
cout<<setprecision(8)<<MD<<endl;
return 0;
}
8. setiosflags( )
setiosflags( ) adalah sebuah fungsi manipulator yang dipakai untuk mengatur berbagai format
keluaran data, Untuk menggunakan manipulator setiosflags(), sobat harus menyertakan file
header <iomanip>. Terdapat berbagai format keluaran (outout) untuk fungsi setiosflags(),
diantaranya adalah sebagai berikut:
Tabel Tanda format untuk menampilkan setiosflags() dan resetiosflags()
5
Tanda Format Keterangan
ios::right Menyetel rata kanan pada lebar field yang diatur melalui
setw()
ios::left Menyetel rata kiri pada lebar field yang diatur melalui
setw()
ios::fixed Memformat keluaran dalam bentuk notasi desimal
ios::scientific Memformat keluaran pada notasi eksponensial
ios::oct Memformat keluaran pada basis 8 (oktal)
ios::hex Memformat keluaran pada basis 16 (heksadesimal)
ios::dec Memformat keluaran pada basis 10 (desimal)
ios::uppercase Memformat huruf dalam notasi heksadesimal pada
bentuk huruf kapital
ios::showpoint Menampilkan titik desimal dalam bilangan pecahan yang
tidak mempunyai bagian pecahan
ios::showbase Menampilkan awalan 0x bagi bilangan heksadesimal
atau 0 (nol) bagi bilangan oktal
ios::showpos Untuk menampilkan tanda + pada bilangan positif
Untuk lebih jelasnya, fungsi manipulator setiosflags( ) yang menggunakan tanda format
ios::left dan ios::right dapat dilihat pada contoh program dibawah ini: #include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
int M = 20, D = 35;
// Contoh fungsi manipulator setiosflags()
cout<<"\nPenggunaan ios::left dan ios::right\n";
cout<<"\nRata Sebelah Kiri = ";
cout<<setiosflags(ios::left)<<setw(8)<<M;
cout<<setiosflags(ios::left)<<setw(8)<<D;
cout<<"\nRata Sebelah Kanan = ";
cout<<setiosflags(ios::right)<<setw(8)<<M;
cout<<setiosflags(ios::right)<<setw(8)<<D;
return 0;
}
6
BAB III
PERCABANGAN KONDISI IF ELSE BAHASA C++
PENGERTIAN KONDISI IF ELSE BAHASA C++
Pada dasarnya, kondisi IF ELSE merupakan modifikasi tambahan dari kondisi IF yang sudah
kita pelajari sebelumnya.
Blok kode program IF tetap akan dijalankan ketika kondisi true (1), namun sekarang terdapat
tambahan bagian ELSE akan dijalankan ketika kondisi false (0).
Berikut format dasarnya:
if (condition)
{
//Kode program yang akan dijalankan jika condition berisi nilai True (1)
}
else
{
//Kode program yang akan dijalankan jika condition berisi nilai False (0)
}
Bagian condition berperan sebagai penentu dari struktur percabangan ini.
Jika condition terpenuhi (menghasilkan nilai TRUE atau 1), blok kode program milik IF akan
dijalankan. Jika condition tidak terpenuhi (menghasilkan nilai FALSE atau 0), blok kode
program bagian ELSE-lah yang akan diproses.
CONTOH KODE PROGRAM PERCABANGAN IF ELSE BAHASA C++
Pada tutorial sebelumnya saya membuat program pencari bilangan genap / ganjil menggunakan
2 buah kondisi IF sebagai berikut:
if (a % 2 == 0) {
cout<<" adalah angka genap \n"<< a;
}
if (a % 2 == 1) {
cout<<" adalah angka ganjil \n"<< a;
}
Alur ini sebenarnya akan lebih sederhana (dan lebih efisien) jika kita ubah ke dalam struktur IF
ELSE. Jika sebuah angka tidak genap, maka pasti itu adalah angka ganjil. Sehingga jika
kondisi if (a % 2 == 0) tidak terpenuhi (false), maka variabel a pasti berisi angka ganjil.
Dengan demikian kode programnya bisa saya tulis ulang sebagai berikut:
#include <iostream.h>
int main()
{
int a;
cout<<"Input sembarang angka: ";
cin>>a;
cout<<("\n");
if (a % 2 == 0) {
cout<<" adalah angka genap \n"<< a;
}
else {
7
cout<<" adalah angka ganjil \n"<< a;
}
return 0;
}
Sekarang jika kondisi if (a % 2 == 0) menghasilkan false, bagian ELSE lah yang akan di
proses. Kode program akan jadi lebih efisien karena pemeriksaan kondisi hanya perlu
dilakukan 1 kali saja.
Berikut contoh lain dari struktur kondisi IF ELSE:
#include <iostream.h>
int main()
{
int a;
cout<<"Input nilai ujian: ";
cin>> a;
printf("\n");
if (a >= 75) {
printf("Selamat, anda lulus \n");
}
else {
printf("Maaf, silahkan coba lagi tahun depan \n");
}
return 0;
}
Hasil kode program:
1
2
3
4
5
Input nilai ujian: 60
Maaf, silahkan coba lagi tahun depan
Input nilai ujian: 80
Selamat, anda lulus
Di sini saya membuat kondisi if (a >= 75), yakni jika variabel a berisi angka lebih besar atau
sama dengan 75 maka jalankan perintah printf(“Selamat, anda lulus \n”). Jika tidak, blok
ELSE lah yang akan di eksekusi, yakni printf(“Maaf, silahkan coba lagi tahun depan \n”).
PERCABANGAN KONDISI IF ELSE IF BAHASA C++
Pengertian Kondisi IF ELSE IF bahasa C++
Pada dasarnya, kondisi IF ELSE IF adalah sebuah struktur logika program yang di dapat
dengan cara menyambung beberapa kondisi IF ELSE menjadi sebuah kesatuan.
Jika kondisi pertama tidak terpenuhi atau bernilai false, maka kode program akan lanjut ke
kondisi IF di bawahnya. Jika ternyata tidak juga terpenuhi, akan lanjut lagi ke kondisi IF di
bawahnya, dst hingga blok ELSE terakhir atau terdapat kondisi IF yang bernilai true.
8
Berikut format dasar penulisan kondisi IF ELSE IF dalam bahasa C:
if (condition_1) {
// Kode program yang dijalankan jika condition_1 berisi nilai True
}
else if (condition_2) {
// Kode program yang dijalankan jika condition_2 berisi nilai True
}
else if (condition_3) {
// Kode program yang dijalankan jika condition_3 berisi nilai True
}
else {
// Kode program yang dijalankan jika semua kondisi tidak terpenuhi
}
Contoh Kode Program Percabangan IF ELSE IF Bahasa C++
Sebagai contoh pertama, saya ingin membuat sebuah kode program untuk menampilkan nilai.
User diminta menginput sebuah huruf antara ‘A’ – ‘E’. Kemudian kode program akan
menampilkan hasil tampilan yang berbeda-beda untuk setiap huruf yang diinput, termasuk jika
huruf tersebut di luar ‘A’ – ‘E’.
Berikut contoh kode programnya:
#include <iostream.h>
int main()
{
char nilai;
cout<<"Input Nilai Anda (A - E): ";
cin>>nila);
if (nilai == 'A' ) {
cout<<("Pertahankan! \n");
}
else if (nilai == 'B' ) {
cout<<("Harus lebih baik lagi \n");
}
else if (nilai == 'C' ) {
cout<<("Perbanyak belajar \n");
}
else if (nilai == 'D' ) {
cout<<("Jangan keseringan main \n");
}
else if (nilai == 'E' ) {
cout<<("Kebanyakan bolos... \n");
}
else {
cout<<("Maaf, format nilai tidak sesuai \n");
}
return 0;
}
Hasil kode program:
Input Nilai Anda (A - E): A
Pertahankan!
Input Nilai Anda (A - E): D
Jangan keseringan main
9
Input Nilai Anda (A - E): E
Kebanyakan bolos...
Input Nilai Anda (A - E): F
Maaf, format nilai tidak sesuai
Di baris 6 saya mendefinisikan sebuah variabel nilai sebagai char. Variabel nilai ini
kemudian dipakai untuk menampung input dari perintah scanf di baris 8. Mulai dari baris 10
hingga 24, terdapat 5 buah pemeriksaan kondisi, yakni satu untuk setiap block IF ELSE. Dalam
setiap kondisi, isi variabel nilai akan di diperiksa, apakah itu berupa karakter ‘A’, ‘B’, hingga
‘E’. Jika salah satu kondisi ini terpenuhi, maka block kode program yang sesuai akan di
eksekusi.
Jika ternyata nilai inputan bukan salah satu dari karakter ‘A’ – ‘E’, maka block ELSE di baris
23 lah yang akan dijalankan. Setiap kondisi dari block IF ELSE IF ini bisa diisi dengan
perbandingan yang lebih kompleks, seperti contoh berikut:
#include <iostream.h>
int main()
{
int nilai;
cout<<("Input Nilai Anda (0 - 100): ");
cin>>nilai;
if (nilai >= 90 ) {
cout<<("Pertahankan! \n");
}
else if (nilai >= 80 && nilai < 90) {
cout<<("Harus lebih baik lagi \n");
}
else if (nilai >= 60 && nilai < 80) {
cout<<("Perbanyak belajar \n");
}
else if (nilai >= 40 && nilai < 60) {
cout<<("Jangan keseringan main \n");
}
else if (nilai < 40) {
cout<<("Kebanyakan bolos... \n");
}
else {
cout<<("Maaf, format nilai tidak sesuai \n");
}
return 0;
}
Di sini kita bisa memodifikasi sedikit kode program kita sebelumnya. Sekarang nilai inputan
berupa angka antara 0 hingga 100. Angka inputan ini ditampung ke dalam variabel nilai yang
sekarang di set sebagai tipe data integer di baris 5.
Di baris 10, isi dari variabel nilai di periksa apakah berisi angka yang lebih dari 90. Jika iya,
tampilkan teks “Pertahankan!”.
10
Jika kondisi di baris 10 tidak terpenuhi (yang artinya isi variabel nilai kurang dari 90), maka
kode program akan lanjut ke kondisi ELSE IF berikutnya di baris 13. Di sini saya
menggabungkan dua buah kondisi menggunakan operator logika && (yakni operator AND).
Kondisi if(nilai >= 80 && nilai < 90) hanya akan terpenuhi jika isi variabel nilai berada dalam
rentang 80 sampai 89.
Ketika membuat kondisi perbandingan, kita harus hati-hati dengan penggunaan tanda, apakah
ingin menggunakan tanda lebih besar saja (>) atau tanda lebih besar sama dengan (>=) karena
bisa mempengaruhi hasil akhir.
Jika ternyata kondisi ini tidak dipenuhi juga (artinya isi variabel nilai kurang dari 80), program
akan lanjut ke kondisi if(nilai >= 60 && nilai < 80) di baris 15, yakni apakah nilai berada
dalam rentang 60 – 79. Demikian seterusnya hingga kondisi terakhir if(nilai < 40) di baris 20.
Jika semua kondisi tidak terpenuhi, jalankan block ELSE di baris 24.
Berikut hasil percobaan dari kode program di atas:
Input Nilai Anda (0 - 100): 95
Pertahankan!
Input Nilai Anda (0 - 100): 60
Perbanyak belajar
Input Nilai Anda (0 - 100): 30
Kebanyakan bolos...
Yang cukup unik adalah, jika kita memberikan nilai di luar rentang 0 – 100, akan tetap
ditangkap oleh kondisi IF di baris 11 atau di baris 20:
Input Nilai Anda (0 - 100): 200
Pertahankan!
Input Nilai Anda (0 - 100): -1000
Kebanyakan bolos... Ini terjadi karena nilai 200 tetap memenuhi syarat if (nilai >= 90), dan nilai -1000 juga tetap
memenuhi syarat if (nilai < 40). Silahkan anda modifikasi kode program di atas agar jika
diinput angka di luar dari rentang 0 -100, akan tampil teks “Maaf, format nilai tidak sesuai”.
Untuk hal ini kita cuma perlu mengubah / menambah 2 kondisi saja.
PERCABANGAN KONDISI SWITCH CASE BAHASA C++
Pengertian Kondisi SWITCH CASE Bahasa C++
Kondisi SWITCH CASE adalah percabangan kode program dimana kita membandingkan isi
sebuah variabel dengan beberapa nilai. Jika proses perbandingan tersebut menghasilkan
nilai true, maka block kode program akan dijalankan.
Kondisi SWITCH CASE terdiri dari 2 bagian, yakni perintah SWITCH dimana terdapat
nama variabel yang akan diperiksa, serta 1 atau lebih perintah CASE, masing-masing untuk
setiap nilai yang ingin diperiksa.
11
Berikut format dasar penulisan kondisi SWITCH CASE dalam bahasa C:
switch (nama_variabel) {
case 'nilai_1':
// Kode program yang dijalankan jika nama_variabel == nilai_1
break;
case 'nilai_2':
// Kode program yang dijalankan jika nama_variabel == nilai_2
break;
case 'nilai_3':
// Kode program yang dijalankan jika nama_variabel == nilai_3
break;
...
...
default:
// Kode program yang dijalankan jika tidak ada kondisi yang terpenuhi
}
Di awal kode program, terdapat perintah SWITCH untuk menginput variabel yang akan
diperiksa. Kemudian terdapat beberapa perintah CASE yang diikuti dengan sebuah nilai. Jika
isi dari variabel sama dengan salah satu nilai ini, maka blok kode program akan dijalankan.
Jika ternyata tidak ada kondisi CASE yang sesuai, blok default di baris paling bawah lah yang
akan dijalankan.
Di dalam setiap block case diakhiri dengan perintah break; agar struktur CASE langsung
berhenti begitu kondisi terpenuhi. Mari langsung kita lihat
Contoh Kode Program Percabangan SWITCH CASE Bahasa C++
Dalam tutorial sebelumnya, kita telah membuat program menampilkan nilai dengan struktur IF
ELSE IF. Kita akan coba konversi kode tersebut menjadi struktur SWITCH CASE.
Sebelumnya, berikut kode program menampilkan nilai dengan struktur IF ELSE IF:
#include <iostream.h>
int main()
{
char nilai;
cout<<("Input Nilai Anda (A - E): ");
cin>>nilai;
if (nilai == 'A' ) {
cout<<("Pertahankan! \n");
}
else if (nilai == 'B' ) {
cout<<("Harus lebih baik lagi \n");
}
else if (nilai == 'C' ) {
cout<<("Perbanyak belajar \n");
}
else if (nilai == 'D' ) {
cout<<("Jangan keseringan main \n");
}
else if (nilai == 'E' ) {
cout<<("Kebanyakan bolos... \n");
}
else {
cout<<("Maaf, format nilai tidak sesuai \n");
}
return 0;
}
12
Program yang sama bisa dikonversi ke dalam bentuk SWITCH CASE berikut:
#include <iostream.h>
int main()
{
char nilai;
cout<<("Input Nilai Anda (A - E): ");
cin>>nilai;
switch (nilai) {
case 'A':
cout<<("Pertahankan! \n");
break;
case 'B':
cout<<("Harus lebih baik lagi \n");
break;
case 'C':
cout<<("Perbanyak belajar \n");
break;
case 'D':
cout<<("Jangan keseringan main \n");
break;
case 'E':
cout<<("Kebanyakan bolos... \n");
break;
default:
cout<<("Maaf, format nilai tidak sesuai \n");
}
return 0;
}
Hasil kode program:
Input Nilai Anda (A - E): A
Pertahankan!
Input Nilai Anda (A - E): D
Jangan keseringan main
Input Nilai Anda (A - E): E
Kebanyakan bolos...
Input Nilai Anda (A - E): F
Maaf, format nilai tidak sesuai
Di baris 7 saya meminta user untuk menginput salah satu huruf antara ‘A’ – ‘E’. Nilai huruf
ini disimpan ke dalam variabel nilai yang di set dengan tipe data char.
Kondisi SWITCH CASE dimulai pada baris 9. Di sini terdapat perintah switch (nilai), yang
artinya saya ingin memeriksa isi dari variabel nilai. Seluruh block SWITCH ini berada di
dalam tanda kurung kurawal, yakni mulai dari baris 9 sampai 23.
13
Di baris 10 terdapat perintah case ‘A’: Ini artinya jika variabel nilai berisi karakter ‘A’, maka
jalankan isi dari block CASE, yakni perintah printf(“Pertahankan! \n”). Lalu terdapat
perintah break di baris 12 agar struktur CASE lain tidak perlu di proses lagi.
Di baris 13 terdapat perintah CASE kedua, yakni case ‘B’:. Sama seperti sebelumnya, blok ini
akan dijalankan jika variabel nilai berisi huruf ‘B’. Demikian seterusnya sampai case ‘E’ : di
baris 20. Jika ternyata tidak ada nilai yang sesuai, maka block default di baris 22 yang akan di
eksekusi.
Struktur SWITCH CASE ini terlihat lebih rapi daripada struktur IF ELSE IF, dan kadang kala
bisa lebih efisien. Namun SWITCH CASE juga memiliki batasan, yakni tidak bisa dipakai
untuk kondisi yang lebih kompleks seperti perbandingan dengan tanda lebih besar dari ” > “,
maupun penggabungan kondisi.
Kita tidak bisa membuat struktur CASE seperti berikut:
case > '90':
cout<<("Pertahankan! \n");
break;
Kondisi perbandingan di atas hanya bisa ditulis menggunakan struktur IF.
Sehingga jika kondisi yang diperiksa cukup rumit, tetap harus menggunakan struktur IF ELSE
IF. Struktur SWITCH CASE hanya cocok dipakai untuk operasi perbandingan sederhana,
dimana nilai yang diperiksa hanya terdiri dari nilai yang tetap.
Latihan :
1. Suatu Universitas melakukan seleksi penerimaan mahasiswa baru. Syarat diterima
menjadi mahasiswa jika memenuhi kriteria :
- Nilai Bahasa Indonesia diatas 60
- Nilai Bahasa Inggris diatas 55
- Nilai Tes Potensi Akademik diatas 60
Jika ketiga syarat tersebut terpenuhi, maka dinyatakan LULUS menjadi
mahasiswa. Buat program dengan menggunakan proses keputusan
2. Sebuahperusahaan menetapkan system penggajian, dengan ketentuan
- Gaji pokok :
Pegawai tetap Rp. 2000.000
Pegawai honorer Rp. 1000.000
- Bila kerja lembur mendapat tambahan honor lembur
Honor lembur = jam lembur*2% dari gaji pokok
- Tunjangan 10% dari gajipokok
- Jumlah gaji = gaji pokok + honor lembur + tunjangan
14
BAB IV
PERULANGAN FOR, WHILE & DO WHILE C++
Dalam bahasa C++ (dan juga bahasa turunan C seperti C++, PHP dan Java), terdapat 3
buah struktur perulangan atau looping, yakni perulangan for, perulangan
while dan perulangan do while. Dalam bahasan bahasa pemrograman C kali ini kita akan
bahas perulangan for terlebih dahulu.
PENGERTIAN STRUKTUR PERULANGAN FOR BAHASA C++
Struktur perulangan (atau dalam bahasa inggris disebut dengan loop) adalah instruksi kode
program yang bertujuan untuk mengulang beberapa baris perintah.
Dalam merancang perulangan, kita setidaknya harus mengetahui 3 komponen:
1. Kondisi awal perulangan.
2. Kondisi pada saat perulangan.
3. Kondisi yang harus dipenuhi agar perulangan berhenti.
Berikut format dasar struktur perulangan for dalam bahasa C:
for (start; condition; increment)
{
// kode program
// kode program
}
Start adalah kondisi pada saat awal perulangan. Biasanya kondisi awal ini berisi perintah untuk
memberikan nilai kepada variabel counter. Variabel counter sendiri adalah sebuah variabel
yang akan menentukan berapa banyak perulangan dilakukan. Kebanyakan programmer
menggunakan variabel i sebagai variabel counter (ini tidak harus).
Condition adalah kondisi yang harus dipenuhi agar perulangan berjalan. Selama kondisi ini
terpenuhi, maka compiler bahasa C akan terus melakukan perulangan. Misalnya condition ini
berisi perintah i < 5, maka selama variabel counter i berisi angka yang kurang dari 5, maka
lakukan perulangan.
Increment adalah bagian yang dipakai untuk memproses variabel counter agar bisa memenuhi
kondisi akhir perulangan. Bagian ini akan selalu di eksekusi di setiap perulangan.
Disebut increment karena biasanya berisi operasi increment seperti i++, yang sama dengan i =
i + 1. Maksudnya, dalam setiap perulangan naikkan variabel i sebanyak 1 angka. Namun kita
juga bisa memberikan nilai lain, misalnya i = i + 2, sehingga variabel counter akan naik 2 angka
setiap perulangan.
Sebagai tambahan, terdapat istilah iterasi (iteration), yang berarti 1 kali perulangan. Istilah ini
cukup sering dipakai ketika membahas tentang struktur perulangan.
Contoh Kode Program Perulangan For Bahasa C
Sebagai contoh pertama, menampilkan teks “Hello World” sebanyak 5 kali.
Berikut kode programnya:
15
#include <iostream.h>
int main()
{
int i;
for (i = 1; i < 5; i++) {
cout<<("Hello World \n");
}
return 0;
}
Di baris 5 kita lihat sebuah variabel i yang di set dengan tipe data integer. Variabel ini nantinya
akan kita pakai sebagai variabel counter, yakni variabel yang menentukan kondisi akhir
perulangan.
Perintah di baris 6, yakni for (i = 1; i < 5; i++), bisa dibaca:
“Jalankan perulangan, mulai dari variabel i = 1 sampai i < 5. Dalam setiap iterasi, naikkan
nilai variabel i sebanyak 1 angka menggunakan perintah i++“.
Berikut hasilnya:
Hello World
Hello World
Hello World
Hello World Pertanyaannya, kenapa hanya tampil 4 baris “Hello World“? Padahal kita mengulang dari i =
1 sampai i < 5.
Ini berkaitan dengan penggunaan tanda. Kondisi akhir perulangan adalah i < 5, yang artinya
akan selalu bernilai true jika i kurang dari 5, tapi jika sudah sampai dengan 5 maka kondisi
menjadi false dan perulangan berhenti.
Agar teks “Hello World” bisa tampil sebanyak 5 kali, ada 2 alternatif, yakni mengubah kondisi
awal menjadi i = 0, atau mengubah kondisi akhir menjadi i <=5. Pilihan kedua ini tambak lebih
baik:
#include <iostream.h>
int main()
{
int i;
for (i = 1; i <= 5; i++) {
cout<<("Hello World \n");
}
return 0;
}
Hasil kode program:
Hello World
Hello World
Hello World
Hello World
Hello World
16
Sekarang teks “Hello World” sudah tampil sebanyak 5 kali. Sekali lagi, hati-hati dengan
menggunakan tanda perbandingan, terutama antara “<” dengan “<=“.
Di dalam perulangan, kita juga bisa mengakses variabel counter seperti contoh berikut:
#include <iostream.h>
int main()
{
int i;
for (i = 1; i <= 5; i++) {
cout<<("Hello World %i \n",i);
}
return 0;
}
Hasil kode program:
Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Sekarang setelah teks “Hello World“, tampil angka yang berasal dari nilai variabel i. Karena
dalam setiap iterasi variabel counter i akan dinaikkan 1 angka (proses increment), maka
nilainya juga akan naik 1 angka untuk setiap iterasi.
Variabel counter i juga tidak haris di increment, tapi juga bisa di decrement untuk membuat
perulangan menurun. Berikut contohnya:
#include <iostream.h>
int main()
{
int i;
for (i = 5; i >= 1; i--) {
cout<<("Hello World %i \n",i);
}
return 0;
}
Hasil kode program:
Hello World 5
Hello World 4
Hello World 3
Hello World 2
Hello World 1 Kode kita sangat mirip seperti sebelumnya, tapi perhatikan perintah for di baris 6: for (i = 5; i
>= 1; i--). Ini bisa dibaca:
“Jalankan perulangan, mulai dari variabel i = 5 sampai i >= 1. Dalam setiap iterasi,
turunkan nilai variabel i sebanyak 1 angka menggunakan perintah i--“.
17
Hasilnya, nilai variabel counter i akan berkurang 1 angka dalam setiap iterasi. Sebagai contoh
terakhir, bisakah anda membuat perulangan untuk menampilkan angka kelipatan 3 sebanyak
10 kali? Hasil akhir yang kita inginkan adalah sebagai berikut:
3 6 9 12 15 18 21 24 27 30
Terdapat beberapa cara untuk menghasilkan deret ini. Pertama, ubah di sisi block perintah
yang akan dijalankan. Dimana variabel counter i tetap naik dari 1 sampai 10:
#include <iostream.h>
int main()
{
int i;
for (i = 1; i <= 10; i++) {
cout<<("%i ",i*3);
}
cout<<("\n");
return 0;
}
Agar menghasilkan angka yang naik kelipatan 3, teknik yang dipakai adalah mengalikan nilai
variabel counter i dengan angka 3 untuk setiap iterasi. Cara kedua adalah memodifikasi
proses increment dari variabel counter:
#include <iostream.h>
int main()
{
int i;
for (i = 3; i <= 30; i = i + 3) {
cout<<("%i ",i);
}
cout<<("\n");
return 0;
}
Perhatikan perintah perulangan for di baris 6. Perintah for (I = 3; I <= 30; I = I + 3) bisa
dibaca:
“Jalankan perulangan, mulai dari 17ariable I = 3 sampai I <= 30. Dalam setiap iterasi,
naikkan nilai 17ariable I sebanyak 3 angka menggunakan perintah I = I + 3“.
PERULANGAN WHILE & DO WHILE BAHASA C++
Pengertian Struktur Perulangan While Bahasa C++
Dalam bahasan sebelumnya, yakni tentang perulangan FOR. Kita telah membahas bahwa
sebuah perulangan setidaknya memiliki 3 syarat: kondisi awal perulangan, kondisi pada
saat perulangan, dan kondisi akhir perulangan. Dalam perulangan FOR, ketiga syarat ini
ditulis dalam 1 baris perintah, seperti: for (i = 1; i < 5; i++). Di dalam perulangan WHILE,
ketiga kondisi ini saling terpisah.
Berikut format dasar struktur perulangan WHILE dalam bahasa C:
18
start;
while (condition)
{
// kode program
// kode program
increment;
}
Di bagian start biasanya berupa perintah inisialisasi variabel counter, misalnya i = 0. Di
bagian condition terdapat kondisi yang harus dipenuhi agar perulangan berjalan, misalnya i <
5. Kemudian perintah increment di dalam block perulangan yang di pakai untuk menaikkan
nilai variabel counter, misalnya dengan perintah i++.
Contoh Kode Program Perulangan While Bahasa C++
Sebagai praktek pertama, berikut kode program perulangan WHILE untuk menampilkan teks
“Hello World” sebanyak 5 kali:
#include <iostream.h>
int main()
{
int i = 1;
while (i <= 5){
cout<<("Hello World \n");
i++;
}
return 0;
}
Hasil kode program:
Hello World
Hello World
Hello World
Hello World
Hello World
Di baris 5 terdapat perintah untuk menginput angka 1 ke dalam variabel i. Nantinya, variabel i
ini akan menjadi variabel counter yang dipakai untuk menentukan jumlah perulangan. Proses
perulangan di mulai di baris 6. Perintah while (i <= 5) artinya, selama nilai variabel i kurang
atau sama dengan 5, maka jalankan perulangan.
Di dalam blok perulangan terdapat perintah printf(“Hello World \n”) di baris 7. Ini dipakai
untuk menampilkan teks “Hello World“. Kemudian di baris 8 terdapat perintah increment,
yakni i++. Perintah ini akan menaikkan nilai variabel i sebanyak 1 angka dalam setiap iterasi.
Perulangan while di atas akan di ulang sebanyak 5 kali, mulai dari i = 1, i = 2, i = 3, i = 4,
hingga i = 5. Ketika nilai variabel counter i sudah mencapai 6, maka kondisi while (i <=
5) tidak terpenuhi lagi (false), sehingga perulangan berhenti.
Salah satu hal yang harus selalu diingat ketika membuat perulangan while adalah, jangan lupa
membuat perintah increment. Jika tidak, kondisi akhir tidak akan pernah terpenuhi dan
perulangan akan berjalan terus menerus. Ini dikenal dengan istilah infinity loop. Berikut
19
Contohnya:
#include <stdio.h>
int main(void)
{
int i = 1;
while (i <= 5){
cout<<("Hello World \n");
}
return 0;
}
Jika kita menjalankan kode program di atas, teks “Hello World” akan ditampilkan terus
menerus, tidak pernah selesai. Penyebabnya karena kondisi while (i <= 5) akan selalu
bernilai true. Di dalam blok perulangan tidak ada perintah yang bisa mengubah nilai variabel
i agar kondisi while (i <= 5) bernilai false.
Untuk menghentikan infinity loop, tutup paksa jendela hasil dengan men-klik tanda (x) di sudut
kanan atas, atau tekan kombinasi CTRL + C. Sama seperti perulangan FOR, di dalam block
perulangan WHILE kita juga bisa mengakses nilai dari variabel counter i:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 5){
cout<<("Hello World %i \n",i);
i++;
}
return 0;
}
Hasil kode program:
Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Bagaimana dengan perulangan menurun? tidak masalah. Kita tinggal mengatur kondisi
awal, kondisi akhir, serta proses decrement:
#include <stdio.h>
int main()
{
int i = 10;
while (i > 5){
cout<<("Hello World %i \n",i);
i--;
}
return 0;
}
20
Hasil kode program:
Hello World 10
Hello World 9
Hello World 8
Hello World 7
Hello World 6
Di sini saya mengisi nilai awal variabel counter i dengan angka 10. Kondisi perulangan
adalah while (i > 5), artinya selama nilai variabel i di atas 5, jalankan perulangan. Dan karena
kita ingin membuat perulangan menurun, maka dipakai perintah decrement i-- yang akan
mengurangi nilai variabel i sebanyak 1 angka dalam setiap iterasi.
Pengertian Struktur Perulangan DO WHILE Bahasa C
Perulangan DO WHILE merupakan modifikasi dari perulangan WHILE, yakni dengan
memindahkan posisi pemeriksaan kondisi ke akhir perulangan. Artinya, kita akan lakukan dulu
sebuah perulangan, baru di akhir diperiksa apakah kondisi variabel counter sudah terpenuhi
atau belum.
Berikut format dasar struktur perulangan DO WHILE dalam bahasa C:
start;
do
{
// kode program
// kode program
increment;
}
while (condition)
Sama seperti perulangan WHILE, di bagian start biasanya terdapat perintah inisialisasi
variabel counter, misalnya i = 0. Kemudian di dalam block do ditulis kode program yang akan
di ulang, tidak lupa sebuah perintah untuk menaikkan nilai variabel counter, misalnya dengan
perintah i++.
Di bagian paling bawah, terdapat perintah while (condition). Di sinilah kondisi perulangan
akan diperiksa. Selama kondisi ini menghasilkan nilai true, maka perulangan akan lanjut ke
iterasi berikutnya.
Contoh Kode Program Perulangan Do While Bahasa C++
Agar bisa dibandingkan dengan bahasan di perulangan FOR dan WHILE, berikut contoh kode
program bahasa C untuk menampilkan 5 kali teks ‘Hello World’ menggunakan perulangan DO
WHILE:
#include <stdio.h>
int main()
{
int i = 1;
do {
cout<<("Hello World \n");
i++;
}
while (i <= 5);
return 0;
}
21
Hasil kode program:
Hello World
Hello World
Hello World
Hello World
Hello World Di baris 5 (int i= 1) saya mendefinisikan variabel counter i dan memberikan nilai awal 1.
Kemudian terdapat block kode program do di baris 6 – 9. Inilah kode program yang akan di
ulang, yakni berisi sebuah perintah printf untuk menampilkan teks ‘Hello World’, dan sebuah
perintah increment i++ untuk menaikkan nilai variabel i sebanyak 1 angka.
Terakhir di baris 10 terdapat perintah while (i <= 5). Artinya, selama variabel counter i bernilai
kurang dari atau sama dengan 5, jalankan kembali perulangan.
Dalam perulangan DO WHILE ini kita juga bisa mengakses variabel counter, seperti contoh
berikut:
#include <stdio.h>
int main()
{
int i = 1;
do {
cout<<("%i ",i*3);
i++;
}
while (i <= 5);
return 0;
}
ini adalah kode program untuk membuat sebuah deret dengan kelipatan 3:
3 6 9 12 15
Kunci penting yang membedakan perulangan DO WHILE dengan perulangan DO
adalah posisi pemeriksaan kondisi. Karena dalam perulangan DO WHILE pemeriksaan
kondisi di lakukan di akhir, maka perulangan akan selalu di jalankan minimal 1 kali,
meskipun syarat perulangan sudah tidak dipenuhi.
Berikut contoh kasusnya:
#include <stdio.h>
int main()
{
int i = 10;
do {
cout<<("%i ",i*3);
i++;
}
while (i <= 5);
return 0;
}
Hasil kode program: 30.
22
Di baris 5 saya mengisi angka 10 ke dalam variabel counter i. Namun syarat kondisi
adalah while (i <= 5). Apakah i <=5 ? tidak (false). Namun meskipun kondisi ini tidak
dipenuhi, perulangan akan tetap dijalankan 1 kali.
Jika kondisi yang sama dibuat menggunakan WHILE, perulangan tidak akan pernah dijalankan
karena kondisi di periksa di awal. Inilah yang jadi perbedaan antara perulangan WHILE dan
DO WHILE dalam bahasa C++.
Latihan :
1. Buatlah program untukmenampilkan bilangan dalam segitiga dengan tampilan
1*
2**
3***
4****
5*****
2. Buatlah program untuk menampilkan bilangan dalam segitiga dengan tampilan
*
* *
* * *
* * * * *
* * * * * *
23
BAB V
PENGERTIAN TIPE DATA ARRAY
Tipe data array adalah tipe data yang terdiri dari kumpulan tipe data lain. Dalam bahasa
Indonesia, array dikenal juga dengan istilah Larik. Dengan array, proses penyimpanan data ke
dalam variabel menjadi lebih efisien dan mudah, terutama jika kita memiliki data dalam jumlah
banyak.
Anggota atau isi dari array itu sendiri harus satu jenis tipe data, misalkan terdiri dari kumpulan
angka bulat saja (integer), kumpulan karakter saja (char), maupun kumpulan angka pecahan
saja (float). Di dalam bahasa C, kita tidak bisa membuat 1 array dengan berbagai tipe data
(harus 1 jenis saja).
Sebagai contoh, misalkan saya ingin menyimpan dan memproses 5 buah nilai. Jika
menggunakan variabel biasa, penulisannya bisa seperti ini:
int bilangan1;
int bilangan2;
int bilangan3;
int bilangan4;
int bilangan5;
Data diatas banyak dan berulang untuk 1 tipe data saja, sehingga akan lebih efisien jika
menggunakan array:
int bilangan[5];
Dengan kode program diatas, variabel bilangan akan menjadi sebuah array yang bisa
menampung 5 data bertipe integer. Format pendefinisian array di dalam bahasa C++ adalah
sebagai berikut:
tipe_data nama_variabel[jumlah_element]
Element adalah sebutan untuk isi atau anggota sebuah array.
Sebagai contoh, jika kita ingin membuat array dengan 100 element yang bisa diisi dengan tipe
data float, pendefinisiannya adalah sebagai berikut:
float bilangan[100];
Berikutnya, bagaimana cara mengakses dan mengisi element array ini? Kita tinggal menuliskan
nomor urut dari element yang akan akan diakses, nomor urut ini dikenal juga dengan
istilah index. Berikut contohnya:
bilangan[5] = 3,14;
24
Yang harus perlu diperhatikan adalah, nomor urut atau index array dimulai dari 0, bukan
1. Akibatnya jika kita ingin mengakses element pertama dari array bilangan, penulisannya
adalah bilangan[0]. Untuk bisa mengakses element ke-100 dari array bilangan, penulisannya
adalah bilangan[99].
Index array yang dimulai dari 0 ini hampir selalu menjadi ciri khas di seluruh bahasa
pemrograman modern, termasuk C++, PHP, dan JavaScript.
Sebagai contoh pertama, saya ingin membuat array bilangan dengan 5 element bertipe
data integer, lalu mengisi dan menampilkan nilainya menggunakan perintah cout:
#include <iostream.h>
int main()
{
int bilangan[5];
bilangan[0] = 6;
bilangan[1] = 9;
bilangan[2] = -8;
bilangan[3] = 24;
bilangan[4] = -99;
cout<<"Isi array bilangan pertama: %d \n” << bilangan[0]);
cout<<"Isi array bilangan kedua: %d \n"<< bilangan[1]);
cout<<"Isi array bilangan ketiga: %d \n"<< bilangan[2]);
cout<<"Isi array bilangan keempat: %d \n<< bilangan[3]);
cou<<("Isi array bilangan kelima: %d \n"<< bilangan[4]);
return 0;
}
Di awal kode program, baris int bilangan[5]; dipakai untuk membuat sebuah array
bernama bilangan dengan 5 element atau 5 anggota. Array bilangan ini di set sebagai int,
yang artinya setiap element array hanya bisa diisi dengan bilangan bulat (integer).
Setelah pendefinisian array bilangan, selanjutnya saya mengisi setiap element array dengan
angka. Kembali diingat bahwa index array dimulai dari 0, sehingga untuk mengakses element
pertama dari array bilangan, penulisannya adalah bilangan[0].
Di akhir program, saya menampilkan seluruh element array menggunakan perintah cout.
Dalam contoh diatas, pengisian nilai array diproses satu persatu. Namun kita juga bisa mengisi
element array langsung pada saat pendefinisiannya, seperti contoh berikut:
#include <iostream.h>
int main()
{
int bilangan[5] = {6, 9, -8, 24, -99};
cout<<"Isi array bilangan pertama: %d \n"<< bilangan[0]);
cout<<"Isi array bilangan kedua: %d \n"<< bilangan[1]);
cout<<"Isi array bilangan ketika: %d \n"<< bilangan[2]);
cout<<"Isi array bilangan keempat: %d \n"<< bilangan[3]);
cout<<"Isi array bilangan kelima: %d \n"<< bilangan[4]);
return 0;
}
25
Kali ini, semua isi array diinput sekaligus pada saat pembuatan, yakni dengan perintah int
bilangan[5] = {6, 9, -8, 24, -99}. Tanda koma dipakai sebagai pemisah antara satu nilai dengan
nilai lain. Hasil kode program diatas akan sama persis seperti contoh kode program pertama.
Yang cukup unik, kita juga bisa mendefiniskan array tanpa harus menulis jumlah elemen
anggotanya, seperti contoh berikut:
#include <iostream.h>
int main()
{
char kumpulan_huruf[] = {'a','C','x'};
cout<<"Isi array kumpulan_huruf: ");
cout<<("%c, %c, %c
\n",kumpulan_huruf[0],kumpulan_huruf[1],kumpulan_huruf[2]);
return 0;
}
Isi dari element array sama halnya seperti variabel biasa, dimana kita bisa mengubah nilai
element array sepanjang program, seperti contoh berikut:
#include <iostream.h>
int main()
{
float pecahan[] = {3.14,-99.01,0.002};
cout<<"Isi array pecahan: ";
cout<<("%.3f, %.3f, %.3f \n",pecahan[0],pecahan[1],pecahan[2]);
cout<<(" \n");
pecahan[1] = 9.123;
pecahan[2] = 12.9925;
cout<<"Isi array pecahan: ";
cout<<"%.3f, %.3f, %.3f \n",pecahan[0],pecahan[1],pecahan[2]);
return 0;
}
Pengertian Array 2 Dimensi
Array dua dimensi adalah sebutan untuk array yang penomoran index-nya menggunakan 2
buah angka. Analogi yang sering dipakai seperti titik koordinat dalam diagram kartesius.
Diagram kartesius merupakan diagram yang biasa kita pakai untuk membuat grafik. Disini
terdapat sumbu X dan sumbu Y. Sebuah titik dalam diagram kartesius ini harus disebut secara
berpasangan, seperti (2,3) atau (-3, 1).
26
Contoh bentuk diagram kartesius (sumber – wikipedia)
Analogi lain adalah matriks. Dalam matematika, matrik terdiri dari kolom dan baris. Kembali,
untuk menentukan nilai dari sebuah matriks, kita harus sebut secara berpasangan seperti baris
1 kolom 2, atau baris 3 kolom 1. Konsep seperti inilah yang menjadi dasar dari array 2 dimensi.
Untuk membuat array 2 dimensi di dalam bahasa C, kita membuat 2 kali tanda kurung siku
setelah nama variabel, seperti contoh berikut:
int bilangan[2][2];
Baris diatas akan membuat array 2 dimensi dengan nama variabel: bilangan.
Variabel bilangan ini akan berisi 4 element (2 x 2). Atau jika diibaratkan sebagai matriks,
disini kita membuat matriks 2 x 2.
Untuk mengakses setiap element array, penulisan index juga harus ditulis 2 kali, seperti
contoh berikut:
bilangan[0][0] = 100;
bilangan[0][1] = 101;
bilangan[1][0] = 110;
bilangan[1][1] = 111;
Berikut contoh kode program pertama dari pembuatan array 2 dimensi di dalam bahasa C++:
#include <iostream.h>
int main()
{
int bilangan[2][2];
bilangan[0][0] = 100;
bilangan[0][1] = 101;
bilangan[1][0] = 110;
bilangan[1][1] = 111;
cout<<"Isi array bilangan: \n";
cout<<"%d, %d \n”<<bilangan[0][0],bilangan[0][1]);
cout<<"%d, %d \n"<<bilangan[1][0],bilangan[1][1]);
return 0;
27
}
Di awal kode program diatas array bilangan dengan perintah int bilangan[2][2];. Artinya,
array bilangan adalah sebuah array 2 dimensi dengan 4 element. Proses pengisian setiap
element array dilakukan setelahnya, kemudian ditampilkan dengan perintah printf. Pengisian
element array 2 dimensi juga bisa dilakukan pada saat array itu di definisikan, seperti contoh
berikut:
#include <iostream.h>
int main()
{
int matrix[2][3] = {{1,2,3},{7,8,9}};
cout<<"Isi array matrix: \n";
cout<<"%d %d %d \n", matrix[0][0], matrix[0][1], matrix[0][2]);
cout<<"%d %d %d \n", matrix[1][0], matrix[1][1], matrix[1][2]);
return 0;
}
28
BAB VI
POINTER PADA PEMROGRAMAN C++
Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib
memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar,
penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel
satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer,
suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain.
Alamat Dari Variabel
Misalkan kamu memiliki variabel x dan terletak di memori 0x000001. Jika kamu ingin
memasukkan nilai 100 kedalam variabel x, maka processor harus membawa nilai 100 tersebut
kedalam variabel x yang terletak di alamat memori 0x000001. Hal yang perlu kamu ketahui
adalah, setiap variabel ternyata memiliki ukuran byte yang berbeda-beda dalam memori.
Sebagai contoh suatu variabel bertipe int memiliki ukuran 4 byte dalam memori. Maka variabel
tersebut akan menempati 4 kapling lokasi dalam memori, misalkan 0x000001, 0x000002,
0x000003, dan 0x000004. Jika terdapat dua buah variabel bertipe int yang bersebelahan, maka
alamat variabel pertama terletak di 0x000001 dan variabel kedua terletak dialamat 0x000005.
Memori menggunakan bilangan heksadesimal yang ditandai dengan awalan ‘0x’, sehingga jika
suatu variabel menempati blok kesepuluh dalam memori, maka alamatnya adalah 0x00000a
Deference (*)
Deference (*) merupakan suatu operator yang berfungsi untuk menanyakan alamat dari suatu
variabel . Apabila kita memberikansimbol & pada awal variable dan mencetak hasilnya pada
window cli, maka yang akan tercetak adalah alamat darivariabel tersebut bukan nilai yang
ditampung oleh variable tersebut. Lihat contoh di bawah ini : #include <iostream>
using namespace std;
int main(){
int a=5; //Memberikan nilai 5 pada variabel a
int *b; //Mendeklarasikan variabel b sebagai pointer
b = &a; //Mengkopikan alamat variabel a kedalam variabel pointer b
cout<<"Nilai variabel a adalah "<<a<<endl;
cout<<"Alamat variabel a adalah "<<&a<<endl;
cout<<"Isi dari variabel b adalah "<<b<<endl;
cout<<"Nilai yang tertampung dalam variabel b adalah "<<*b<<endl;
return 0;
29
}
Hasil output programnya adalah:
Dari hasil output program di atas dapat dipahami bahwa, nilai variabel b sama dengan variabel
a, walaupun variabel b tidak diberikan nilai yang sama dengan variabel a. Hal ini terjadi karena
variabel pointer b menunjuk alamat variabel a dan variabel pointer b dapat mengakses nilai
yang terkandung dalam alamat yang ditunjuknya.
Pointer dan Array
Jka kita menuliskan sebuah array tanpa tanda kurung kotak ([]) maupun indeksnya, maka array
tersebut menunjuk atau bersi alamat elem pertama dari array tersebut. Misalkan kamu membuat
sebuah pointer bertipe int dengan nama pointerArray dan sebuah array dengan tipe yang sama
yaitu int dengan nama nilaiArray, maka pemberian nilai berikut sah dan dapat dilakukan:
int *pointerArray;
int nilaiArray[5];
pointerArray = nilaiArray; //memberikan alamat elemen pertama array pada
variabel pointer
Dari sintaks di atas, variabel pointer dengan nama pointrArray sekarang menunjuk pada alamat
memori elemen pertama array dengan nama nilaiArray. Nah secara tidak langsung kita dapat
mengakses nilai elemen array dengan menggunakan variabel pointer. Berikut contoh sintaks
pemrogramannya:
#include <iostream>
using namespace std;
int main(){
int nilaiArray[5] = {2,5,4,6,7};
int *pointerArray;
pointerArray = nilaiArray;
cout<<"Nilai pada elemen 0 nilaiArray adalah = "<<nilaiArray[0]<<endl;
cout<<"Nilai pada elemen 0 nilaiArray (Pointer) adalah =
"<<*pointerArray<<endl;
pointerArray++; // naikan alamat yang ditunjuk pointer sejauh 1 integer
*pointerArray = 10; //Ubah nilai elemen 1 array (nilaiArray) menjadi 10
cout<<"Nilai pada elemen 1 nilaiArray adalah = "<<nilaiArray[1]<<endl;
cout<<"Nilai pada elemen 1 nilaiArray (Pointer) adalah =
"<<*pointerArray<<endl;
pointerArray = nilaiArray; //kembalikan pointer pada elemen pertama
cout<<endl;
cout<<"Akses nilai semua array dengan pointer dan looping for"<<endl;
for (int i=0; i<5; i++){
cout<<"Nilai indeks ["<<i<<"] adalah = "<<*(pointerArray+i)<<endl;
}
return 0;
30
}
Dari hasil di atas, dapat kita lihat bagaimana cara mengakses nilai array dengan menggunakan
pointer. Suatu pointer bertipe int hanya dapat digunakan untuk menunjuk pada variabel int.
Sebab, tipe data tersebut akan menentukan sifat pointer ketika alamat pointer tersebut
dilakukan increment. Begitu juga untuk tipe data yang lain.
Pointer Sebagai Parameter Suatu Fungsi
Seperti halnya dengan array, pointer dapat digunakan sebagai parameter suatu fungsi. Karena
sifat pointer yang hanya sebagai penunjuk, maka setiap perubahan yang terjadi pada parameter,
sebenarnya terjadi pada variabel yang ditunjuk bukan pada variabel pointer. Berikut contoh
program sederhananya:
#include <iostream>
using namespace std;
void tambah(int *angka){
*angka +=20;
}
int main(){
int nilai = 10;
cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;
tambah(&nilai); //Memasukkan alamat variabel nilai pada fungsi tambah
cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;
return 0;
}
Perbedaan parameter berupa pointer dan non-pointer adalah, pada variabel non-pointer, ketika
kita ingin memasukkan nilai pada sebuah variabel kedalam parameter, kamu harus
memasukkan nilai dari variabel tersebut. Untuk parameter berupa pointer, kita cukup
memasukkan alamat variabel yang menampung nilai dengan operator (&) kedalam parameter
fungsi
Yang menarik adalah pada fungsi tambah di atas, walaupun fungsi tersebut merupakan fungsi
void tanpa nilai kembalian alias return, namun nilai variabel parameter berubah.
31
BAB VII
FUNCTION PADA C++
Function (dalam bahasa Indonesia adalah Fungsi). Function adalah sebuah struktur,
Pengelompokan yang mengandung sekelompok pernyataan yang akan dilaksanakan oleh CPU
jika nama function tersebut dipanggil untuk dieksekusi, kecuali untuk function utama yaitu int
main() yang akan dieksekusi secara otomatis.
Sebelumnya kita sering meilihat tanpa mengerti int main() pada contoh program yang pernah
penulis berikan. Pada setiap program pasti memiliki satu function utama dan merupakan awal
dari program berjalan atau CPU melakukan eksekusi dari sekelompok pernyataan yang
diberikan, semua itu akan di mulai dari function int main(), function tersebut merupakan
function utama yang akan menjadi kepala dari program dimana semua eksekusi pernyataan
berawal.
Bisa kita bayangkan melakukan pemrograman sebuah program yang sangat-sangat besar dan
memerlukan pernyataan yang sangat panjang, apa lagi jika sebuah proses mempunyai banyak
pernyataan dan dibutuhkan tidak hanya sekali, itu pasti akan membuat anda pusing jika di dunia
ini tidak ada function. Maka, disini Function sangat membantu kita untuk membuat
pengelompokan pernyataan berdasarkan tugas, proses atau katagori. Ketika kita membutuhkan
kelompok pernyataan tersebut kita cukup memanggil nama function tersebut.
Bentuk Umum Penulisan
1
2
3
tipe nama (parameter1, parameter2, …){
Pernyataan
}
Tipe = adalah sebuah return type/data type dari Function, function dapat memiliki nilai di saat
akhir hidup dari function dan hal itu disebut pengembalian nilai. beberapa function dapat
mengembalikan nilai hasil operasi yang dilakukan di dalam function tersebut. tapi juga ada
function yang tidak akan mengembalikan nilai dari operasi di dalam function tersebut, untuk
membuat function tanpa melakukan pengembalian nilai kita bisa menggunakan tipe data void,
jika berniat membuat function yang dapat mengembalikan nilai, sesuaikanlah tipe data dengan
tipe nilai yang akan dikembalikan
Nama = nama atau identifier, adalah sebuah identitas atau nama dari function tersebut.
Parameter = kita dapat mengkosongi jika tidak membutuhkan. Parameter adalah pemesanan
memori untuk menyimpan argumen yang berisi nilai disaat pemanggilan function. parameter
tersebut akan bersifat lokal bagi function tersebut, tidak bisa digunakan diluar function. Kita
bisa membuat parameter lebih dari satu, dan masing-masing parameter akan dipisah dengan
tanda koma.
Deklarasi Function
Untuk bentuk penulisan sama seperti apa yang pernah kita tulis untuk membuat function
utama int main(), yang berbeda adalah kita bebas memberi nama function, memberi return
type, menambahkan parameter pada function kustom kita dan function kustom tidak akan
dieksekusi oleh CPU jika nama function buatan tidak dipanggil di dalam function utama.
32
//Tanpa Parameter
void cetakPesan (){
cout<<”Belajar Function C++”;
}
//Dengan Parameter
Int tambah (int a, int b){
return a+b;
}
Pada contoh pertama merupakan contoh yang menunjukan bentuk function tanpa
menggunakan parameter dan tanpa pengembalian nilai. Lalu pada contoh kedua merupakan
contoh menggunakan dua parameter yang dipisahkan dengan tanda koma ,. pada baris ke satu
dari function yang memiliki parameter terdapat return a+b; akan memberi hasil penjumlahan
dari dua parameter a dan b kepada function sebagai nilai return. sehingga ketika kita
memanggil function itu akan memberikan nilai hasil proses penjumlahan tersebut.
Mengakses Fuction
CPU Hanya akan melaksanakan pernyataan-pernyataan yang berada di dalam function
utama int main. Saat mendirikan sebuah function kustom, pernyataan-pernyataan yang ada di
dalam function kustom tidak akan dibaca oleh CPU jika nama atau identifier pada function
yang kita buat tidak dipanggil di dalam fungsi utama atau dalam function lain yang sudah
terjamin CPU akan melewainya.
Jalur pembacaan CPU, CPU akan melaksanakan semua pernyataan yang dilewati. Ketika CPU
itu melewati sebuah pernyataan yang merupakan sebuah nama dari function maka CPU akan
melaksanakan semua pernyataan di dalam function itu hingga selesai. jika sudah, CPU akan
melanjutkan pembacaan pernyataan pada function sebelumnya. Kita juga bisa membuat
function buatan memanggil function buatan lainya.
Untuk memanggil function, kita cukup menuliskan nama dari function tersebut dan memberi
sepasang tanda ( ), itu merupakan tempat dimana nilai arguments untuk parameter function
tersebut, kita bisa mengkosonginya jika memang function tersebut tidak membutuhkan
argument.
1
2
3
4
//Function Tanpa Parameter
cetakPesan ();
//Function Dengan Parameter
tambah (argument1, argument2);
Contoh Program
//Deklarasi dan Pemanggilan Function
#include <iostream>
using namespace std;
int result;
void cetakPesan (){
cout<<"Belajar C++"<<endl<<endl;
}
int tambah (int a, int b){
result = a+b;
33
//atau kita bisa menggunakan return
return a+b;
}
int main () {
cetakPesan();
cout<<"tambah(5,6) = "<<tambah(5,6)<<endl;
cout<<"result = "<<result<<endl;
return 0;
}
Bukan hanya itu saja, Function tersebut juga bisa memanggil function itu sendiri. Itu sangat
membantu saat melakukan rumus matematika, salah satunnya seperti rumus factorial.
Standard Function
Function buatan oleh programmer bisa disebut sebagai function kustom (Custom Function).
Dalam C/C++ juga disediakan function bawaan dari Bahasa tersebut, dinamakan dengan
function standar (Standard Function).
Function standar di dalam suatu Bahasa biasanya dikemas dalam suatu liblary,
seperti printf() dan scanf() yang berada pada header stdio. function-function standar tersebut
memang sudah disediakan dari awal oleh pembuat bahasa pemrograman untuk mempermudah
kita dalam membuat program.
Pengertian Parameter
Parameter adalah tempat penyimpanan (variabel) di dalam function, yang digunakan untuk
melakukan pemeberian data dari pemanggil ke dalam function. Parameter terletak di antara
tanda kurung ( dan ) setelah identitas dari function, dan sebuah function dapat memiliki
beberapa parameter yang dipisahkan dengan tanda koma ,.
Function biasanya membutuhkan data untuk beroperasi, Yang biasa kita lalukan dalam
mendapatkan data adalah dengan memanggil variabel, tapi kita harus ingat dengan
peraturan variabel lokal dalam ruang lingkup. Kita tidak bisa dengan mudah mendapatkan data
dari scope lain.
Hal tersebut merupakan satu alasan kenapa parameter itu ada dalam Bahasa pemrograman. Jika
kita tidak bisa mendapatkan data dari scope lain secara langsung, kita bisa memberikan data
tersebut saat pemanggilan function dengan perantara yaitu parameter.
Jika kita mempunyai variabel int a dalam function utama dan function kustom dengan satu
parameter int b, ketika kita memberikan nilai dari variabel int a ke dalam function kustom.
Kita dapat menggunakan parameter int b untuk perantara sekaligus tempat yang akan menjadi
variabel local dalam function kustom. apa yang terjadi adalah Data dari int a akan di salin ke
variabel int b. dengan hal itu function kustom kita akan memiliki data dari scope luar (scope
pemanggil).
Parameter dalam Bahasa pemrograman biasanya memiliki 2 jenis, yaitu :
• Function Parameter / Parameter Formal
• Argument / Actual Parameter
34
JENIS-JENIS PARAMETER
Function Parameter
Function Parameter atau juga disebut sebagai Parameter Formal, adalah variabel lokal yang
didirikan di dalam deklarasi function (bukan definisi), Yang merupakan tempat penyimpanan
nilai dari argument yang diberikan saat pemanggilan function.
Bentuk Umum Penulisan
1
2
3
returnType identitas (Function Parameters){
//…definisi…
}
Function parameter berada di dalam deklarasi function, di antara tanda ( dan ) setelah identitas
dari function. di dalam tanda kurung tersebut anda bisa membuat banyak parameter, dan
masing-masing dipisahkan dengan tanda koma ,.
Contoh Penulisan
1
2
3
int myFunction(int a) { ... }
double myFunction(double a, double b) { … }
void functionNoReturn(int a, char b, double c) { … }
Argument
Argument adalah parameter yang menyertai pemanggilan function. merupakan tempat dimana
anda bisa memberikan data untuk digunakan di dalam function yang dipanggil dan diberikan
saat pemanggilan function tersebut.
Argument adalah parameter yang menyertai pemanggilan function. merupakan tempat dimana
anda bisa memberikan data untuk digunakan di dalam function yang dipanggil dan diberikan
saat pemanggilan function tersebut.
Pemberian data ke dalam function kustom dapat berupa data langsung, data dari suatu variabel,
data dari konstanta, data dari pengembalian function atau merupakan hasil dari operasi.
Pemberian data ke dalam function harus mengikuti aturan yang telah ditetapkan oleh function
parameter.
Bentuk Umum Penulisan
1 nama(arguments);
jika lebih dari 1 argument, masing-masing argument akan dipisahkan dengan tanda koma.
Pemberian arguments harus sesuai dengan parameter.
Contoh :
1
2
3
myFunction(2) ;
myFuntion(a+b, a+4) ;
myFunction(“Arguments”, ‘A’, variabel) ;
Contoh Program : #include <iostream>
using namespace std;
void myFunction(int a, int b, int c=20){ // Fuction Parameter atau
Parameter Formal
cout<<a<<endl;
cout<<b<<endl;
35
cout<<c<<endl;
}
int main(){
myFunction(1,2,3); //Arguments atau Parameter Actual
return 0;
}
Pengertian Pass by Value
Pass by value (memberikan nilai) adalah salah satu metode untuk memberikan argumen
kepada function parameter di saat pemanggilan function. Pada dasarnya C/C++ memberikan
argument kepada funtion parameter dalam bentuk nilai (value). Ketika kita memberikan
argument pada function, maka nilai dari argument akan di salin ke dalam function parameter.
Dalam menentukan argument kita dapat membuatnya dalam bentuk nilai,
ekspresi, variabel, literal, object, enum dan lain-lain yang mengandung nilai di dalamnya.
Contoh Program :
#include <iostream>
using namespace std;
int tambah (int a, int b){
return a+b;
}
int main () {
cout<<tambah(5,6)<<endl; //pass by value
return 0;
}
Function parameter sebenarnya hanyalah variabel lokal. Setiap ketentuan yang ada pada
variabel lokal berlaku pada function parameter. Perbedaanya adalah hanya pada segi
peletakanya.
Contoh Program :
#include <iostream>
using namespace std;
int tambah (int a, int b){
return a+b;
}
int main () {
cout<<tambah(5,6)<<endl; //pass by value
cout<<tambah(19,24)<<endl; //pass by value
cout<<tambah(79,64)<<endl; //pass by value
return 0;
}
Dari program di atas, terlihat bahwa function kustom tambah() dipanggil berulang kali.
Dengan argument yang berbeda-beda. Itu bukan berarti bahwa nilai function parameter selalu
diperbaharui setiap function itu di panggil dan diberi argument baru, melainkan function
parameternya lah yang selalu baru.
36
Sama seperti variabel lokal, bahwa function parameter termasuk dalam Automatic duration
dengan arti bahwa variabel tersebut hanya akan ada pada saat function tersebut sedang berjalan.
sebelum itu dan sesudah itu, semua local variabel di dalamnya akan hilang atau tidak ada.
Contoh Program :
#include <iostream>
using namespace std;
int ubah(int x){
x = 99;
cout<<"x = "<<x<<endl;
}
int main () {
int a = 1;
cout<<"a = "<<a<<endl;
ubah(a); //pass by value
cout<<"a = "<<a<<endl;
return 0;
}
Metode ini tidak cocok digunakan untuk memberikan argument berupa array, object dan segala
sesuatu yang cukup memakan memori besar. karena apa yang terjadi adalah nilai dari argument
di salin ke function parameter, hal itu dapat menurunkan performa program anda.
Contoh Program :
#include <iostream>
using namespace std;
void myFunction(int a,double b,char c);//function prototype
int main(){
int var=29029;
myFunction(var-29000,2,'A'); //pass by value
return 0;
}
void myFunction(int a,double b,char c){
cout<<"a"<<" = "<<a<<endl;
cout<<"b"<<" = "<<b<<endl;
cout<<"c"<<" = "<<c<<endl<<endl;
}
Pengertian Pass by Reference
Pass by Reference adalah salah satu metode pemberian argument kepada function
parameter saat pemanggilan function, dengan memanfaatkan reference pada function
parameter. Pada pembuatan function parameter kita dimungkinkan untuk menggunakan
reference. metode ini tidak jauh beda dengan pass by value, keduanya merupakan metode yang
memberikan argument kepada parameter. Tapi hal yang berbeda di sini adalah bagaimana
function parameter menerima argument tersebut.
37
Contoh Penulisan :
//parameter
void myFunction (int &a,int &b){
}
//pemanggilan
myfunction (argument1,argument2);
Pada pass by value kita mengetahuhi sifat dari metode pass by value, yaitu ketika kita
memberikan argument kepada function parameter, yang CPU lakukan adalah nilai dari variabel
argument akan disalin kepada variabel function paremeter, keduanya akan berdiri sendiri
sebagai variabel. jadi ketka nterjad perubahan nilai pada function parameter tidak akan
mempengaruhi argument, Nilai pada argument akan selalu aman saat function tersebut sedang
berjalan.
Contoh Program :
#include <iostream>
using namespace std;
void myF(int x);//function prototype
int main(){
int a=1;
cout<<"a = "<<a<<endl;
myF(a);
cout<<"a = "<<a<<endl;
return 0;
}
void myF(int x){
x++;
cout<<"x = "<<x<<endl;
}
Tapi hal itu akan berbeda jika kita menggunakan reference pada function parameter. Reference
pada function parameter masih memiliki fungsi yang sama seperti kita menggunakanya pada
variabel biasa. Apa yang terjadi pada argument adalah cpu akan membuat function parameter
sebagai referensi dari argument, atau dengan arti lain bahwa function parameter akan menjadi
alias / variabel dari memori argument yang deberikan.
Jadi function parameter akan menjadi argument tersebut dengan identitas berbeda, apapun yang
terjadi pada nilai function parameter maka akan berpengaruh kepada argument tersebut. hal itu
terjadi karena function parameter dan argument memiliki satu memori yang sama.
Contoh program :
#include <iostream>
using namespace std;
void myF(int &x);
int main(){
int a=1;
38
cout<<"a = "<<a<<endl;
myF(a);
cout<<"a = "<<a<<endl;
return 0;
}
void myF(int &x){
x++;
cout<<"x = "<<x<<endl;
}
Untuk membuktikan hal tersebut, kalian bisa melihat pada contoh program di atas. Semua
perubahan nilai pada function parameter &x dari function kustom myF() akan berpengaruh
juga pada argument a pada function utama int main().
Fungsi dari metode ini biasanya digunakan untuk mengembalikan nilai. saat kita
mengoperasikan sebuah function kustom, terkadang kita menginginkan function kustom
tersebut dapat mengembalikan nilai yang lebih dari satu. Kadang ini tidak dimungkinkan jika
kita menggunakan keyword return.
Dan metode ini bisa kita gunakan untuk mengatasi permasalahan tersebut. kita dapat membuat
function kustom yang dapat mengembalikan nilai lebih dari satu. Nilai yang dikembalikan tidak
perlu menjadi RValue tapi akan langsung diberikan kebada argument.
Contoh program :
#include <iostream>
using namespace std;
void naik_turun(int &penaikan, int &penurunan, int nilai, int
jumlah);//function prototype
int main(){
int hasilNaik=0, hasilTurun=0, nilai=10;
naik_turun(hasilNaik, hasilTurun, nilai, 3);
cout<<"hasilNaik = "<<hasilNaik<<endl;
cout<<"hasilTurun = "<<hasilTurun<<endl;
return 0;
}
void naik_turun(int &penaikan, int &penurunan, int nilai, int jumlah){
penaikan = nilai + jumlah;
penurunan = nilai - jumlah;
}
Bukan hanya itu saja keuntungan dalam menggunakan metode ini. Metode pass by reference
juga dapat meningkatkan performa program anda, khususnya saat kita mencoba untuk
memberikan variabel yang cukup besar seperti array, object dan lain-lain.
39
Pengertian Pass by Address
Pass by address kadang juga disebut sebagai Pass by pointer. adalah salah satu metode untuk
memberikan argument kepada function parameter saat pemanggilan function, dengan
memanfaatkan pointer dereference *.
Contoh Penulisan
1
2
3
4
5
//function parameter
int myFunction (int *par){
}
//function parameter
myFunction(&var);
Function parameter merupakan sebuah variable, hal yang berbeda antara function parameter
dan variabel hanyalah pada penepatanya. Karena function parameter merupakan variabel, maka
saat pembuatan function parameter kita juga dimungkinkan untuk menggunakan operator
dereference, untuk membuat function parameter berupa variabel pointer. Pointer merupakan
variabel yang dapat menunjuk ke sebuah alamat memori, atau dalam pengertian lain yaitu,
variabel yang memiliki kemampuan untuk memiliki alamat memori sebagai nilai dari variabel
pointer tersebut. dari variabel pointer kita dimungkinkan untuk mengakses nilai dari alamat
memori yang ditunjuk. Dalam segi pemberian argument kepada function parameter mirip
seperti metode pass by value, ketika kita memberikan argument kepada function parameter,
apa yang terjadi adalah nilai dari argument yang diberikan akan disalin dan diberikan kepada
function parameter. Tapi ketahui bahwa pointer hanya dapat menyimpan alamat memori
sebagai nilai dari variabel pointer dan, perbedaanya antara pass by value dan pass by address
adalah, nilai yang disalin pada metode pass by address merupakan alamat memori.
Contoh Program :
#include <iostream>
using namespace std;
void myFunction(int *x)
{
*x = *x+1;
cout<<"x = "<<x<<" = "<<*x<<endl;
}
int main()
{
int a=2;
cout<<"a = "<<&a<<" = "<<a<<endl;
myFunction(&a);
cout<<"a = "<<&a<<" = "<<a<<endl;
}
40
Cara mengoperasikan variabel pointer pada function parameter masih sama seperti kita
mengoperasikan variabel pointer dengan metode Lvalue dan Rvalue.
int *lvalue = &rvalue;
Untuk memberikan nilai yang berupa alamat memoir dari sebuah variabel ke sebuah variabel
pointer, meskipun variabel pointer tersebut merupakan function parameter, kita tetap akan
membutuhkan operator Address-of &.
Pada contoh program di atas kita diperlihatkan kemampuan dari penggunaan pemberian
argument dengan metode pass by address. Pada program di atas function parameter x memiliki
kemampuan dapat mengakses variabel a yang diberikan sebagai argument, Meskipun variabel
tersebut berada pada luar function.
Pada program di atas kita diperlihatkan bahwa function parameter x dapat mengubah dan
melihat nilai dari variabel a yang berada di luar function dan diakses secara langsung.
Contoh Program
#include <iostream>
using namespace std;
void cetakArrayInt(int *theArr, int panjang)
{
//Jika argumen adalah null
if(!theArr){
cout<<"Array tidak ditemukan"<<endl;
return;
}
//jika array kosong
if(!panjang){
cout<<"Array kosong"<<endl;
return;
}
for(int i=0; i<panjang; i++){
cout<<theArr[i]<<" ";
}
}
int main()
{
int myArr[]={2, 3, 5, 8, 1};
cetakArrayInt(myArr, sizeof(myArr)/sizeof(int));
return 0;
}
Dari ketiga metode tersebut masing-masing memiliki kelebihan dan kekurangan. tapi penulis
tidak mencoba untuk menyampaikan perbandingan dan mencari tau metode yang terbaik untuk
digunakan, karena ketiga metode tersebut saling melengkapi dan masing-masing berguna
dalam dalam situasi tertentu.
41
Untuk apa saja yang cocok menggunakan 3 metode tersebut ? :
• Jika akan memberikan argument yang memiliki tipe data dasar, cukup gunakan Pass by
value.
• Jika akan memberikan argument yang merupakan class, struct dan argument yang
cukup memakan banyak memori, gunakan Pass by reference.
• Jika akan memberikan argument yang berupa array, gunakan pass by address atas pass
by reference.
• Jika akan membuat argument yang nilainya tidak bisa diubah, gunakan pass by value
atau anda juga bisa gunakan pass by address dan reference dengan mengubah function
parameter menjadi literal/konstanta.
• Jika akan membuat nilai dari argument yang diberikan dapat di ubah, jangan gunakan
pass by value.
Fungsi dari Return pada Function
return berfungsi untuk mengakhri eksekusi dari function tersebut, dan return juga dapat
memberikan nilai pada saat akhir dari function kepada pemanggil.
Bentuk penulisan
1
2
return; //pengembalian tanpa nilai.
return nilai;//pengembalian dengan nilai.
Contoh penulisan //pengembalian tanpa nilai
return;
//pengembalian dengan nilai
return true;
return myVar;
return “belajarcpp.com”;
return 6+myVar/5;
Function memiliki dua jenis, yaitu function yang tidak mengembalikan nilai dan function yang
dapat mengembalikan nilai pada pemanggil. Dan return adalah keyword untuk mengatur hal
tersebut.
Function tidak mengembalikan nilai
Function yang tidak mengembalikan nilai biasanya menggunakan return type yang bertipe
void.
Contoh Program #include <iostream>
#include <string>
using namespace std;
void hallo(string a=""){
if(a == ""){
return;
}
cout<<"Hallo "<<a<<" !"<<endl;
}
int main(){
42
hallo();
return 0;
}
Saat CPU mendapatkan pernyataan return, CPU akan keluar dari function itu dan akan
mengabaikan segala hal, meskipun setelah pernyataan tersebut masih terdapat banyak
pernyataan lain.
Pada contoh program di atas, terjadi pemanggilan function hallo() dengan menggunakan satu
parameter string, lalu pada function tersebut terdapat penyeleksian untuk memeriksa nilai dari
parameter. Lalu dibawahnya terdapat pernyataan keluaran.
Jadi jika pengguna memanggil dan memberikan argument yang tidak kosong maka akan
program tersebut akan mengeluarkan keluara “hallo ” di ikuti dengan nilai argument yang
pengguna berikan.
Tapi jika kosong maka CPU akan meloncati dan mengabaikan pernyataan keluaran tersebut,
alhasil pada program tidak akan menampilkan keluaran apapun.
Function yang mengembalikan nilai
Dan jenis dari function yang lain adalah Function yang dapat mengembalikan nilai. Setiap
function yang bukan function dengan return type void merupakan function yang dapat
mengembalikan sebuah nilai kepada pemanggil.
Contoh program #include <iostream>
#include <string>
using namespace std;
string hallo(string a=""){
return "Hallo "+a+" !";
}
int main(){
cout<<hallo("Belajar C++");
return 0;
}
Untuk mengembalikan nilai kepada pemanggil kita bisa melakukanya dengan memberikan
data, string, konstanta, identitas variabel, ekspresi dan lain-lain yang memiliki nilai. Pemberian
nilai tersebut diletakan sesudah keyword return.
Tapi saat kita akan mengembalikan nilai, kita harus melihat dan menyesuaikan return type apa
yang function itu gunakan, pemberian data dan return type pada function harus sesuai.
Pada contoh di atas, terdapat function kustom dengan return type string dan memiliki 1
parameter yang yang juga merupakan string.
Saat program di eksekusi akan menghasilkan keluaran yang berupa pernyataan String “Hallo ”
dan dikuti dengan nilai argument yang diberikan saat pemanggilan function.
Contoh program #include <iostream>
using namespace std;
double luasLingkaran(double r=0){
if(!r){
cout<<"Anda tidak memasukan argument r."<<endl;
43
return 0;
}
const double pi = 3.14159265358979323846;
return pi*r*r;
}
int main(){
cout<<luasLingkaran(3);
return 0;
}
Di atas adalah contoh program yang dapat menghitung luas dari lingkaran.
Pada function yang dapat mengembalikan nilai. nilai dari function yang kita panggil dapat kita
abaikan. kita tidak diharuskan untuk mengambil nilai yang diberikan oleh function, yang kita
panggil.
#include <iostream>
using namespace std;
int hitungan(){
return 9+6;
}
int main(){
hitung(); //nilai yang dikembalikan diabaikan
}
hal tersebut pada program di atas dapat dilakukan, dan tidak berdampak buruk pada proses
kompilasi dan kerja program kita. Kebenaran yang lainya yang perlu anda tau adalah, bahwa
setiap function yang menggunakan return hanya dapat mengembalikan satu nilai kepada
pemanggil. Dalam pengembalian nilai sendiri kita dimungkinkan menggunakan beberapa
metode, mirip seperti saat pemberian argument kepada function parameter. Metode-metode
yang dapat dilakukan pada saat pengembalian nilai adalah return by value, return by reference
dan return by address. Secara teori metode-metode pada return mirip dengan pemberian
argument pada function parameter.
Apa arti dari return 0; pada function utama int main () ?
Pada dasarnya function yang memiliki return type selain void akan selalu mengembalikan nilai,
secara default akan mengembalikan nilai 0 atau NULL saat programmer tidak menyertakan
pernyataan return pada function tersebut.
Function utama pada Bahasa pemrograman C/C++ selalu menggunakan integer sebagai return
type, dan kita harus tau bahwa pernyataan di atas, perlakuan selalu mengembalikan nilai 0 atau
NULL secara default, tidak berlaku pada Function utama. dan itu adalah alasan kenapa kita
harus menyertakan pernyataan return 0;.
return 0; sendiri memiliki arti untuk komputer kita. Setelah program kita selesai di kompilasi,
dan saat CPU memulai mengeksekusi program kita, CPU akan selalu memulai pada function
utama dan berakhir pada function utama, yaitu int main();
Apa yang terjadi adalah, untuk mengeksekusi program kita, CPU akan memanggil function
utama, dan pada saat program berakhir, program juga akan menyertakan nilai yang
dikembalikan oleh function utama. biasanya program anda memberikan nilai 0 kepada CPU.
nilai 0 tersebut memiliki arti berbeda pada CPU, yaitu program anda memberikan informasi
44
kepada CPU bahwa program anda telah berjalan dengan baik. Secara default CPU akan
menganggap suatu program telah berjalan dengan baik jika mereka mengembalikan nilai 0
yang dilakukan oleh pernyataan return 0. Jika program mengembalikan nilai selain 0, maka
menyatakan informasi kepada CPU bahwa program berakhir dengan tidak wajar.
45
BAB VIII
STRUKTUR PADA C++
Data Structures struct adalah salah satu fitur bahasa pemrograman C/C++, merupakan
keyword yang memungkinkan kita untuk membuat sebuah deklarasi untuk membuat
pengelompokan variabel dengan tipe data yang berbeda.
Deklarasi Struct
struct merupakan keyword yang memungkinkan membuat deklarasi yang di dalamnya dapat
terdapat banyak variabel, hasil deklarasi ini akan menghasilkan user-defined data
type yaitu tipe structure yang berguna untuk mendirikan object.
bentuk penulisan
1
2
3
4
5
struct nama_struct{
/*macam-macam deklarasi variabel
*…
*/
}nama_object;
Keterangan
nama_struct : merupakan identitas dari struct tersebut.
{ …variabel… } : merupakan sepasang block, tempat dimana semua variabel dikelompokan
sebagai member dari struct tersebut. pembuatan variabel di dalam struct sama sekali tidak ada
perbedaan dengan mendirikan variabel biasa.
nama_object : merupakan deklarasi yang menggunakan struct tersebut menjadi tipe data dari
deklarasi tersebut. kita dapat mendirikan banyak object di tempat tersebut, masing-masing
dipisahkan dengan tanda koma , . Object selalu diletakan setelah penutup block dan sebelum
semicolon ; .
Penggunaan dari nama_struct dan nama_object merupakan opsional, kita bisa mendirikan
tanpa hal tersebut, tapi kita tidak bisa mengabaikan keduanya. Dan masing-masing tindakan
akan membuat struct memiliki sifat yang berbeda.
Jika kita mendirikan struct tanpa menggunakan nama_struct, maka kita diharuskan
menggunakan object. Jika tindakan ini dilakukan maka akan membuat struct tidak bisa di pakai
di luar deklarasi struct (kita tidak bisa mendirikan object diluar struct tersebut). biasanya
tindakan ini digunakan untuk membuat sebuah struct yang tidak di anjurkan untuk digunakan
(agar tidak terjadi pembuatan object di luar deklarasi struct).
Contoh penulisan struct{
int no_induk ;
std::string nama;
float nilai ;
}budi;
Dan pembuatan object sendiri itu opsional, kita dapat mendirikan di dalam deklarasi struct atau
di luar struct.
46
Penjelasan Object
Struct sebenarnya hanyalah deklarasi untuk membuat sebuah tipe data baru yang didirikan oleh
programmer sebagai data structure. Data structure tersebut akan digunakan sebagai pembuatan
object, pembuatan object itu dapat dilakukan didalam deklarasi struct atau diluar deklarasi
struct.
Pembuaan object sendiri sama seperti pembuatan variabel seperti biasanya, yang berbeda
hanya kita menggunakan tipe structure sebagai tipe datanya.
Contoh Program : #include <iostream>
#include <string>
using namespace std;
int main(){
struct siswa{
int no_induk ;
string nama;
float nilai ;
}adi, bambang; //deklarasi object di dalam deklarasi struct
siswa budi, tono; //deklarasi object di luar struct
return 0;
}
Pada contoh di atas, semua deklarasi object masing-masing akan memiliki isi dari tipe structure
tersebut.
Mengakses Member dari Struct
1
2
3
4
struct siswa{
string nama; //member
float nilai ; //member
}
Kita tidak bisa menggunakan member-member dari struct sebelum didirikan object yang
didirikan menggunakan data structure tersebut. karena struct hanyalah sebuah rancangan dari
tipe structure.
Setelah kita berhasil membuat sebuah deklarasi object. untuk mengakses member struct dari
object tersebut kita membutuhkan Member Access Operator . di antara nama object dan nama
anggota variabel struct.
Contoh penulisan
1
2
3
umar.noInduk
rafa.nama
rahmi.nilaiUjian
Contoh Proram #include <iostream>
#include <string>
using namespace std;
struct siswa{
int no_induk ;
string nama;
47
float nilai ;
};
int main(){
siswa budi, tono; //deklarasi object di luar struct
umar.no_induk = 1;
umar.nama = "Budi Januar";
umar.nilai = 75.5;
rafa.no_induk = 2;
rafa.nama = "Tono Laksono";
rafa.nilai = 89.9;
cout<<umar.nama<<" mendapatkan nilai "<<umar.nilai<<endl;
cout<<rafa.nama<<" mendapatkan nilai "<<rafa.nilai<<endl;
return 0;
}
Inisialisasi object
Inisialisasi (Initialization) adalah tugas pemberian nilai awal yang dilakukan saat deklarasi
variabel atau obyek. Inisialisasi sangat disarankan untuk dilakukan setiap mendirikan sebuah
deklarasi.
Non-static Member adalah suatu tindakan memberikan nilai awal member structure kepada
object dengan cara memberikan nilai di saat mendirikan member dari struct.
Dengan cara tersebut, nilai inisialisasi akan berlaku ke semua object yang menggunakan tipe
structure tersebut.
Contoh penulisan struct siswa{
int no_induk = 0;
string nama = “ ”;
float nilai = 0;
};
Contoh Program #include <iostream>
#include <string>
using namespace std;
struct siswa{
int no_induk = 0;
string nama = "kosong";
float nilai = 0;
};
int main(){
siswa budi, tono;
cout<<budi.nama<<" mendapatkan nilai "<<budi.nilai<<endl;
cout<<tono.nama<<" mendapatkan nilai "<<tono.nilai<<endl;
return 0;
}
48
Initializer List adalah cara inisialisasi dengan memberikan nilai awal disaat mendirikan
object, nilai tersebut hanya akan berlaku pada object itu sendiri.
Contoh penulisan
1 struct siswa umar = {20103,umar alvaradri,8.75};
Uniform Initialization merupakan inisialisasi yang masih sama seperti initializer list, hanya
saja tidak menggunakan tanda = . Dan cara ini berasal dari C++11.
Contoh penulisan
1 siswa rafa {1, “Rafa Malique”, 9,85};
Contoh program #include <iostream>
#include <string>
using namespace std;
struct siswa{
int no_induk;
string nama;
float nilai;
};
int main(){
siswa budi={1, "Budi Susanto", 75.5}; //Initializer List
siswa toni{2,"Toni Hartono", 89.9}; //Uniform Initialization
cout<<budi.nama<<" mendapatkan nilai "<<budi.nilai<<endl;
cout<<tono.nama<<" mendapatkan nilai "<<toni.nilai<<endl;
return 0;
}
49
BAB IX
OBJECT ORIENTED PROGRAMMING
OOP bukanlah sebuah bahasa pemrograman melainkan sebuah cara untuk menjadikan program
yang kita buat lebih modular karena suatu permasalahan akan dikumpulkan dalam suatu objek,
yang selanjutnya akan disebut dengan kelas.
KELAS
Suatu Kelas (class) merupakan sutu metode logis untuk mengorganisasi data dan fungsi dalam
struktur yang sama. Suatu Kelas tidak terlepas dari pada suatu objek. Objek merupakan
penerjemahan dari subgroup-subgroup sehingga menjadi unit-unit. Suatu objek di dalam C++
merupakan suatu variabel yang didefinisikan sendiri oleh pemrogram.
Pada sebuah Kelas, item-item di dalamnya bisa bersifat private atau public . Secara default semua
item didalam Kelas bersifat Private.
a. Publik pada Kelas
Public menyatakan bahwa deklarasi variabel atau item-item yang ada di dalam Kelas dapat
diakses dari luar Kelas
Contoh :
#include<conio.h>
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
class motor
{
public :
char merk [50];
char jenis [50];
double harga;
int stock;
};
motor sport ;
void main() {
strcpy (sport.merk, “Honda CB1100SF X11”);
strcpy (sport.jenis, “HONDA”);
sport .harga = 67800000;
sport.stok = 150;
cout << “Merk Motor Sport : “<<sport.merk<<endl;
cout<<”Jenis Motor : “<<sport.jenis<<endl;
cout<<setiosflags (ios:fixed) ;
cout<<” Harga Motor : “ ;
cout<<setprecision (0)<<sport.harga<<endl;
cout<<”Stock Motor : “<<sport.stok<<endl;
getche ();
}
50
Output yang dihasilkan dari program diatas adalah
Merk Motor Sport : Honda CB1100SF X11
Jenis Motor : Honda
Harga Motor : 67800000
Stock Motor : 150
b. Private pada Kelas
Private digunakan pada Kelas untuk memproteksi anggota-anggota tertentunya agar tidak
diakses dari luar kelas secara langsung
Contoh : #include<conio.h>
#include<iostream.h>
#include<iomanip.h>
class motor
{
private :
char merk [50];
char jenis [50];
double harga;
int stock;
public :
void daftar (char *Merk, char *Jenis, double Harga, int Stock)
{
strcpy (merk, Merk) ;
strcpy (jenis, Jenis) ;
harga = Harga ;
stok = Stock ;
}
void jalankan ()
{
cout <<”Merk Motor Sport : “<<merk<<endl;
cout<<”Jenis Motor : “<<jenis<<endl;
cout<<setiosflags (ios:fixed) ;
cout<<” Harga Motor : “ ;
cout<<setprecision (0)<<sport.harga<<endl;
cout<<”Stock Motor : “<<stok<<endl;
}
} ;
void main () ;
{
clrscr ( ) ;
motor sport ;
sport. daftar (“Honda VFR 750f”, “HONDA”, 17800000,15) ;
sport.jalankan () ;
getch () ;
}
51
Output yang dihasilakan program diatas adalah
Merk Motor Sport : Honda VFR 750f
Jenis Motor : HONDA
Harga Motor : 17800000
Stock Motor : 15
c. Mendefinisikan Lebih Dari Satu Objek
Di dalam suatu Kelas dapat didefinisikan lebih dari satu objek.
Contoh :
#include<conio.h>
#include<iostream.h>
Class lagu {
private :
char judul [45];
char band [45];
int tahun;
public :
void musik (char *Judul, char *Band, int Tahun) {
strcpy (judul, Judul) ;
strcpy (band, Bnad) ;
tahun = Tahun;
}
void mainkan ( ) {
cout<<”Judul = “<<judul<<endl;
cout<<”Band = “<<band<<endl;
cout<<”Tahun = “<<tahun<<endl;
};
Lagu metal, punk , clasicrock;
void main ( ) {
metal.musik (“Seek And Destroy”, “Metallica”, 1988);
punk.musik (“Ruby Soho”, “Rancid”, 1996);
clasicrock.musik (“Blind Man Cry”, “Deep Purple”, 1976);
metal.mainkan ( ) ; cout<<endl;
punk.mainkan ( ); cout<<endl;
clasicrock.mainkan ( );
getch ( );
}
Output dari program diatas adalah :
Judul = Seek And Destroy
Band = Metallica
52
Tahun = 1988
Judul = Ruby Soho
Band = Rancid
Tahun = 1996
Judul = Blind Man Cry
Band = Deep Purple
Tahun = 1976
KONSTRUKTOR ( CONSTRUCTOR)
Konstruktor merupakan suatu fungsi dari anggota suatu kelas yang memiliki nama yang sama
dengan nama kelas tempat fungsi itu berada. Konstruktor ini digunakan untuk mengalokasikan
ruang untuk suatu objek dan untuk memberikan nilai awal.
Contoh : #include<iostream.h>
#include<conio.h>
#include<stdlib.h>
class Hitung {
private :
int a;
int b;
public :
inta( ) ;
intb( ) ;
Hitung (int mudah) ; //argumen pada constructor
};
Hitung : : Hitung (int mudah)
{
mudah = 0 ;
}
int Hitung : : inta()
{
a = 2 ;
return a;
}
int Hitung :: intb ( )
{
b = 3 ;
return b ;
}
int main ( ) {
int hasil ;
Hitung f (hasil) ;
hasil = f. inta() + f.intb() ;
cout <<”HASILNYA ADALAH : “<<hasil;
getch () ;
53
return 0;
}
Output program diatas adalah :
HASILNYA ADALAH : 5
DESTRUKTOR
Destruktor merupakan suatu fungsi anggota yang dijalankan secara otomatis manakala sutu objek
akan terbebas dari memori karena lingkup keberadaannya telah menyelsaikan tugasnya.
Destruktor harus mempunyai nama yang sama dengan kelas dan diawali karakter ~ (tilde) atau
karakter tak berhingga.
Contoh :
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
Class motor {
private :
char *dijalankan [12] ;
public :
motor ( ) constructor
~motor ( ) destruktor void ket ( ) :
} ;
void main ( )
{
motor dijalankan ; // mendefinisikan object dijalankan.ket ( ) ;
cout<<”\nMotor Berhenti………..”<<endl ; fungsi main berakhir }
motor : : motor ( )
{
cout<<”\nConstructor motor dijalankan …….”<<endl;
*dijalankan = “Ngebutttt….”;
}
motor : : ~motor ( ) //destruktor dijalankan
{
cout<<”\nMotor tidak digunakan………”<<endl ;
cout<<”Motor dinonaktifkan…….”<<endl;
getch ( ) ;
}
void motor : : ket ( )
{
cout<<”\nMotor Anda Sekarang…………”<< *dijalankan ;
cout<<endl;
}
54
Output program diatas adalah :
Constructor Motor dijalankan……..
Motor Anda Sekarang…….. Ngebuttt…..
Motor Berhenti……
Motor tidak digunakan…..
Motor dinonaktifkan……
INHERITANCE
Menciptakan atau menurunkan suatu kelas baru dengan menggunakan kelas yang lain sebagai
dasar disebut Inheritance (pewarisan) di dalam C++. Inheritance dapat digunakan kembali untuk
membangun, mengorganisasikan dan menggunakan kembali kelas-kelas. Inheritance merupakan
suatu aspek atau pengarah pokok kecerdasan manusia untuk mencari, mengenali dan menciptakan
hubungan antar konsep.
Tanpa inheritance, kelas merupakan sebuah unit yang berdiri sendiri. Inheritance akan membentuk
suatu konsep di mana jika konsep yang diatas berubah maka perubahan juga akan berlaku pada
yang ada di bawahnya. Inheritance sangat mirip dengan hubungan orangtua dengan anak. Apabila
suatu kelas menerima warisan, semua anggota data dan fungsi juga akan menerima warisan,
walaupun tidak semuanya akan dapat diakses oleh anggota fungsi dari kelas.
Penentu akases pada Inheritance ada tiga macam yaitu : Publik, Private, dan Protected.
Contoh : #include <iostream.h>
#include <conio.h>
enum KETURUNAN { Puma, Tutul, Singa, Macan };
class Predator
{
public :
//constructors
Predator ( ) : Usianya (10), Bobotnya (5) ( )
~Predator ( ) { }
//accessors
int umurnya ( ) const { return usianya ;}
void SetUmur (int Umur) {Usianya = Umur ;}
int Beratnya ( ) const {return bobotnya ; }
void SetBerat (int Berat) { Bobotnya = Berat ;}
//methode lainnya
void Meraung ( ) const { cout <<”Meraung……..Suara Predator!\n”;}
void Tidur ( ) const { cout << “sshh…….Predator Tidur.\n” ; }
protected :
int Usianya ;
int Bobotnya;
} ;
class Kucing_Besar : public Predator
55
{
public :
//Constructors
Kucing_Besar ( ) : Keturunannya (SINGA) { }
~Kucing_Besar ( ) { }
//Accessors
KETURUNAN DptKeturunan ( ) const { return Keturunannya ; }
void SetKeturunan (KETURUNAN keturunan ) { Keturunannya = keturunan ; }
//other methods
void Melompat ( ) { cout << “Melompat……..\n” ; }
void Berburu ( ) { cout << “Berburu…..mengawali untuk Makan…\n” ; }
private :
KETURUNAN Keturunannya ;
} ;
int main ( )
{
Kucing_Besar Sibelang ;
Sibelang.Meraung ( ) ;
Sibelang. Berburu ( ) ;
cout << “Umur Raja Hutan adalah “ << Sibelang.Umurnya ( ) ;
cout << “ Tahun Usianya \n “ ;
getche ( ) ;
}
Output yang dihasilkan dari program diatas :
Meraung…….. Suara Predator !
Berburu……. mengawali untuk Makan……
Umur Raja Hutan adalah 10 Tahun Usianya
KONSTRUKTOR Dan DESTRUKTOR pada Inheritance
Contoh :
#include<iostream.h>
#include<conio.h>
#include<string.h>
class motor {
private :
char nama [15] ;
public :
motor (char *nama_motor = “KING” )
{
strcpy (nama, nama_motor ) ;
cout <<”Aktifkan Mesin Motor Anda…….” ;
cout <<”(Constructor aktif ) “ ;
56
cout<<endl ;
}
`motor ( )
{
cout<<”Hentikan Mesin Motor Anda….” ;
cout<<”(Destructor Aktif) “ ;
cout<< endl;
}
void ket_motor ( )
{
cout<<nama<< “Sedang Ngebut……”<<endl;
}
} ;
class bebek : public motor
{
public :
bebek ( char *nama_ bebek) : motor (nama_bebek)
{
cout<<”Jalankan Motor Bebek Sport Anda…..<<endl ;
}
~bebek ( )
{
Cout<<”Pelankan Motor Bebek Sport Anda……<<endl;
}
} ;
void main ( )
{
bebek sport (“BEBEK SPORT”) ;
sport.ket_ motor ( ) ;
cout<<”\nTrack terakhir………..”<<endl;
getche ( ) ;
}
Output diatas adalah :
Aktifkan Mesin Motor Anda………….(Constructor Aktif)
Jalankan Motor Bebek Sport Anda…..
BEBEK SPORT Sedang Ngebut…..
Track terakhir………
Pelankan Motor Bebek Sport Anda……
Hentikan Mesin Motor Anda……..(Destructor Aktif)
57
DAFTAR PUSTAKA
1. Raharjo, B. (2007). Pemrograman C++: Mudah dan Cepat Menjadi Master C++.
Bandung: Informatika.
2. Sjukani, M. (2013). Algoritma dan Struktur Data 1 dengan C, C++ dan Java.
3. Penerbitdeepublish.com. (2020). Diakses pada 5 Maret 2020, dari
https://www.duniailkom.com/tutorial-belajar-bahasa-pemrograman-c-bagi-pemula/
4. Frieyadie (2009). Panduan Pemrograman C++. Andi. ISBN: 979-763-369-1.
5. Belajar C++. (2020). Tutorial. Diakses pada 5 Maret 2020.
https://www.belajarcpp.com/category/tutorial/.
Recommended