FAKULTAS MIPA
UNIVERSITAS CENDERAWASIH
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
KATA PENGANTAR
B uku ini merupakan materi kuliah Algoritma dan Pemrograman II. Tujuan
dirancangnya buku ini adalah membekali mahasiswa cara berpikir dalam
pemecahan persoalan dengan menggunakan bahasa pemrograman C++, sehingga
mahasiswa memiliki kemampuan menyelesaikan masalah dalam pemrograman C++.
Pekerjaan programmer penting karena merekalah yang membuat perangkat lunak yang
digunakan untuk menginstruksikan komputer sebagai peralatan yang sesuai dengan
yang diinginkan. Dalam pemrograman komputer diperlukan seni, kreasi, dan ilmu
pengetahuan. Hal-hal yang perlu diperhatikan dalam mendesain sebuah program
komputer adalah aliran instruksi secara logic, tampilan yang akan muncul pada layar
monitor, informasi yang ditampilkan kepada user, program harus user friendly, serta
petunjuk penggunaan maupun bentuk dokumen tertulis lainnya. Akhir kata, penulis
mengucapkan puji dan syukur kepada Tuhan Yang Maha Kuasa, sehingga buku ini
dapat diselesaikan dengan baik. Penulis mengharapkan kritik dan saran bagi pembaca
untuk menyempurnakan buku ini. Harapan penulis buku ini dapat bermanfaat bagi siapa
saja yang tertarik pada pemrograman komputer. Terima kasih kepada rekan-rekan kerja
di UNCEN, istri tercinta, dan anak-anak yang memberi semangat dan dorongan agar
selalu berserah dan bersyukur kepada Tuhan Yang Maha Esa dalam mengerjakan
pekerjaan.
Penulis
i
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
DAFTAR ISI
ii
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
BAB 1
PENDAHULUAN
Pemrograman berkaitan dengan komputer, yang digunakan untuk membantu
menyelesaikan persoalan. Strategi penyelesaian masalah oleh komputer mesti
ditanamkan pada komputer oleh manusia melalui suatu program oleh suatu bahasa
pemrograman. Program merupakan pernyatan yang disusun menjadi satu kesatuan
prosedur yang berupa urutan langkah yang disusun secara logis dan sistematis untuk
menyelesaikan masalah.
Bahasa pemrograman adalah prosedur penulisan program, umumnya terdiri dari 3
faktor utama yaitu sintaks, semantik, dan kebenaran logika. Sintaks, merupakan aturan
penulisan bahasa pemrograman. Semantik, adalah arti atau maksud yang terkandung
pada statemen. Kebenaran logika, adalah berhubungan benar tidaknya urutan statemen.
Produk yang dihasilkan oleh seorang programmer adalah program dengan rancangan
benar yang dapat dieksekusi oleh mesin, berfungsi dengan benar, sanggup melayani
segala kemungkinan masukan dan didukung dengan adanya dokumentasi.
Tujuan pengajaran pemrograman membentuk mahasiswa menjadi perancang
(designer) program. Sedangkan tujuan pengajaran bahasa program membentuk
mahasiswa menjadi pembuat kode-kode program. Pada prakteknya, suatu rancangan
harus dapat di-kode, untuk dieksekusi oleh mesin. Sehingga belajar pemrograman dan
bahasa program saling berkaitan satu sama lain. Metoda terbaik untuk pengajaran
tersebut melalui contoh nyata program yang merupakan pola solusi, sehingga dapat
melihat, mengalami dan melakukan sendiri.
Belajar memrogram dan belajar bahasa program mempunyai tingkatan kesulitan
yang berbeda. Belajar memrogram lebih bersifat pemahaman persoalan, analisis dan
sintesis, yang merupakan belajar tentang strategi pemecahan masalah, metodologi dan
sistematika pemecahan masalah tersebut, kemudian menuangkannya dalam suatu notasi
yang disepakati bersama. Belajar bahasa program adalah bagaimana cara memakai
suatu bahasa misalnya C++, aturan sintaks (tata bahasa), setiap instruksi yang ada dan
tata cara pengoperasian kompilator atau interpreter bahasa C++. Belajar bahasa program
lebih kepada ketrampilan dari pada analisis yang memanfaatkan instruksi-instruksi dan
kiat atau cara yang dapat dipakai secara spesifik hanya pada bahasa yang digunakan
tersebut.
1
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
BAB 2
PENGENALAN C++
// program pertama
#include <iostream.h>
int main ()
{
cout << "Selamat Belajar C++";
return 0;
}
Program di atas, misalnya dapat disimpan dengan nama latih1.cpp. Cara untuk
menyimpan dan mengkompile program berbeda-beda, tergantung kompiler yang
dipakai. Ketika di-run, maka di layar akan muncul sebuah tulisan “Selamat Belajar
C++”. Contoh di atas, adalah sebuah contoh program sederhana menggunakan C++.
Namun, penggalan program tersebut telah menyertakan sintak-sintak dasar bahasa C++.
Sintak dasar tersebut, akan kita bahas satu per satu:
2
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
// program pertamaku
merupakan sebuah baris komentar. Semua baris, yang ditandai dengan dua buah tanda
slash (//), akan dianggap sebagai baris komentar dan tidak akan berpengaruh pada hasil.
Biasanya, baris komentar dipakai oleh programmer untuk memberikan penjelasan
tentang program. Baris komentar dalam C++, selain ditandai dengan (//) juga dapat
ditandai dengan (/*….*/).
Perbedaan mendasar dari keduanya adalah :
// baris komentar
/* blok komentar */
#include <iostream.h>
Pernyataan yang diawali dengan tanda (#) merupakan pernyataan untuk
menyertakan preprocessor. Pernyataan ini bukan untuk dieksekusi. #include
<iostream.h> berarti memerintahkan kompiler untuk menyertakan file header
iostream.h. Dalam file header ini, terdapat beberapa fungsi standar yang dipakai dalam
proses input dan output. Seperti misalnya perintah cout yang dipakai dalam program
utama.
int main ()
Baris ini menandai dimulainya kompiler akan mengeksekusi program. Atau dengan kata
lain, pernyataan main sebagai penanda program utama. Adalah suatu keharusan,
dimana sebuah program yang ditulis dalam bahasa C++ memiliki sebuah main. main
diikuti oleh sebuah tanda kurung () karena main merupakan sebuah fungsi. Dalam
bahasa C++ sebuah fungsi harus diikuti dengan tanda (), yang nantinya dapat berisi
argumen.
Sintak formalnya, sebuah fungsi dimulai dengan tanda {}, seperti dalam contoh
program. cout << "Selamat Belajar C++";
Perintah ini merupakan hal yang akan dieksekusi oleh compiler dan merupakan perintah
yang akan dikerjakan. cout termasuk dalam file iostream. cout merupakan perintah
untuk menampilkan ke layer. Perlu diingat, bahwa setiap pernyataan dalam C++
harusdiakhiri dengan tanda semicolon (;) untuk memisahkan antara pernyataan satu
dengan pernyataan lainnya.
return 0;
Pernyataan return akan menyebabkan fungsi main() menghentikan program dan
mengembalikan nilai kepada main. Dalam hal ini, yang dikembalikan adalah nilai 0.
3
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Coba tambahkan sebaris pernyataan lagi, sehingga program contoh di atas akan menjadi
seperti berikut:
// program kedua
#include <iostream.h>
int main ()
{
cout << "Selamat Belajar C++";
cout << "di kampusku";
return 0;
}
Maka perintah cout yang kedua akan menampilkan sebuah kalimat lagi di layar, dengan
tulisan “di kampusku”
Sedangkan C++ sendiri menambahkan dua buah tipe data lagi, yakni : bool dan
wchar_t.
Type Keterangan
Bool isi bilangan Boolean (True dan False)
wchar_t wide character
4
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
2.4. VARIABEL
Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu
nilai tertentu di dalam proses program. Berbeda dengan konstanta yang nilainya selalu
tetap, nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan. Nama dari suatu
variable dapat ditentukan sendiri oleh pemrogram dengan aturan sebagai berikut :
1. Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa
huruf. Bahasa C ++ bersifat case-sensitive artinya huruf besar dan kecil
dianggap berbeda. Jadi antara nim, NIM dan Nim dianggap berbeda.
2. Tidak boleh mengandung spasi.
3. Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah
(underscore). Yang termasuk symbol khusus yang tidak diperbolehkan antara
lain : $, ?, %, #, !, &, *, (, ), -, +, =dsb.
Berbeda dengan pendeklarasian variabel di bahasa pemrograman lain, dalam C++
sebelum mendeklarasikan variabel, hal pertama yang harus dideklarasikan adalah tipe
data yang akan digunakan untuk menampung data.
Format penulisannya adalah :
Nama_tipe nama_variabel ;
Sebagai contoh :
int a;
float nomor;
atau dapat juga pemberian nilai awal untuk variable dilakukan pada saat deklarasi,
contoh :
int a=10;
char s=’a’;
Jika hendak mendeklarasikan beberapa variabel sekaligus dengan tipe data yang sama,
dapat dilakukan dengan 2 cara, yaitu :
int a;
int b;
int c;
5
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
2.5. KONSTANTA
Konstanta mirip dengan variable, namun memiliki nilai tetap. Konstanta dapat
berupa nilai Integer, Float, Karakter dan String. Pendeklarasian konstanta dapat
dilakukan dengan 2 cara :
Menggunakan (#define)
Deklarasi konstanta dengan cara ini, lebih gampang dilakukan karena akan menyertakan
#define sebagai preprocessor directive. Dan sintaknya diletakkan bersama-sama dengan
pernyataan #include (di atas main()).
Format penulisannya adalah :
#define pengenal nilai
Contoh penggunaan :
#define phi 3.14159265
#define Newline ‘\n’
#define lebar 100
Pendeklarasian dengan #define tanpa diperlukan adanya tanda = untuk memasukkan
nilai ke dalam pengenal dan juga tanpa diakhiri dengan tanda semicolon(;).
Menggunakan (const)
Sedangkan dengan kata kunci const, pendeklarasian konstanta mirip dengan deklarasi
variable yang ditambah kata depan const.
6
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Contoh :
const int lebar = 100;
const char tab = ‘\t’;
2.6. OPERATOR
Dalam C++, terdapat berbagai macam operator yang dapat dimanfaatkan dalam
aplikasi.
a. Operator Assign (=)
Operator (=), akan memberikan nilai ke dalam suatu variable.
Artinya memberikan nilai 5 ke dalam variable a. Sebelah kiri tanda = dalam pernyataan
di atas, dikenal dengan lvalue (left value) dan di sebelah kanan tanda = dikenal dengan
rvalue (right value). lvalue harus selalu berupa variable, sedangkan rvalue dapat berupa
variable, nilai, konstanta, hasil operasi ataupun kombinasinya.
7
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
b. Operator Aritmatika ( +, -, *, /, %)
Untuk operator %, sama dengan modulus, yaitu untuk mengetahui sisa hasil bagi.
Misalnya a = 11 % 3, maka variable a akan terisi nilai 2 karena sisa hasil bagi 11 dan 3
adalah 2.
c. Operator Majemuk ( +=, -=, *=, /=, %=, <<=, >>=, &=, |= )
Dalam C++, operasi aritmatika dapat disederhanakan penulisannya dengan format
penulisan operator majemuk. Misalnya :
a += 5 sama artinya dengan menuliskan a = a+5
a *= 5 sama artinya dengan menuliskan a = a*5
a /= 5 sama artinya dengan menuliskan a = a/5
a %= 5 sama artinya dengan menuliskan a = a % 5
Untuk ketiga pernyataan tersebut, memiliki arti yang sama yaitu menaikkan 1nilai
variable 1. Karakteristik dari operator ini adalah dapat dipakai di awal (++a) atau di
akhir (--a) variable. Untuk penggunaan biasa, mungkin tidak akan ditemui perbedaan
hasil dari cara penulisannya. Namun untuk beberapa operasi nantinya harus
diperhatikan cara peletakan operator ini, karena akan berpengaruh terhadap hasil.
Contoh 1 :
B=3;
A=++B;
// A= 4, B=4
Contoh 2:
B=3;
8
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
A=B++;
//hasil A=3, B=4
Dari contoh 1, nilai B dinaikkan sebelum dikopi ke variable A. Sedangkan pada contoh
2, nilai B dikopi terlebih dahulu ke variable A baru kemudian dinaikkan.
Contoh :
9
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
BAB 3
INPUT & OUTPUT
Dalam library C++, iostream mendukung dua operasi dasar yaitu cout untuk
output dan cin untuk input. Biasanya, dengan perintah cout akan menampilkan sesuatu
ke layar monitor dan dengan perintah cin akan menerima masukan melalui keyboard.
3.1. Input (cin)
Untuk menerima inputan dengan perintah cin, maka operator yang akan
digunakan adalah overloaded operator (>>) dan diikuti oleh variable tempat menyimpan
inputan data.
Seperti contoh:
int age;
cin>>age;
cin hanya dapat diproses setelah penekanan tombol ENTER. Jadi, walaupun hanya satu
karakter yang dimasukkan, sebelum penekanan Enter, cin tidak akan merespon apa-apa.
cin juga dapat digunakan menerima beberapa inputan dalam sekali pernyataan :
cin >> a >> b;
sama dengan pernyataan :
cin>>a;
cin>>b;
kedua pernyataan di atas, jika dijalankan akan meminta dua kali inputan data. Satu
untuk variable a dan satunya lagi adalah untuk variable b.
Contoh kode program :
#include <iostream>
int main() {
10
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
return 0;
}
int main() {
return 0;
}
Operator << dikenal sebagai insertion operator yang memberikan perintah kepada cout.
Untuk contoh pertama, kalimat yang akan di cetak di layar di apit oleh tanda “ “ karena
berupa string. Sedangkan untuk contoh kedua dan ketiga, tanpa tanda “ ”, karena yang
akan ditampilkan ke layar bukan berupa string ataupun karakter.
Sebagai contoh, perhatikan perbedaan dua pernyataan berikut:
11
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Insertion Operation (<<) dapat digunakan lebih dari satu dalam sebuah pernyataan :
cout << “Halo, “<<” saya ”<<” belajar C++ ”;
Dengan perintah di atas, maka dilayar akan muncul pesan Halo, saya belajar C++.
Selanjutnya, dapat juga dikombinasikan dengan variable.
Misalnya :
cout << “Halo, saya berusia”<<age<<” tahun “;
Yang paling penting dari cout adalah bahwa perintah ini tidak akan menambahkan
perintah ganti baris. Untuk membuktikannya, perhatikan contoh berikut:
cout<<”kalimat pertama.”;
cout<<”kalimat kedua.”;
Untuk menambahkan perintah ganti baris, ada dua perintah yang dapat dipakai:
cout<<”kalimat pertama.\n”;
cout<<”kalimat kedua.\nkalimat ketiga.”;
kalimat pertama.
kalimat kedua.
kalimat ketiga.
kalimat pertama.
kalimat kedua.
#include <iostream>
12
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
int main() {
int X = 100, Y = 200, Z = 300;
// Melakukan output
// terhadap nilai X, Y dan Z
cout<<X<<' '<<Y<<' '<<Z;
return 0;
}
int main() {
// Mendeklarasikan stream
// untuk proses output
ofstream output;
output.open("D:/COBA.TXT");
// Melakukan pencegahan
// terhadap terjadinya error
if (!output) {
cout<<"File tidak dapat dibuka"<<endl;
return 1;
}
// Menuliskan teks ke dalam file
output<<"Menjadi Master C++"<<endl;
output<<"Oleh: Budi Raharjo"<<endl;
output<<"Penerbit INFORMATIKA Bandung"<<endl;
// Menutup file
output.close();
return 0;
}
13
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
BAB 4
SELEKSI KONDISI
Dalam sebuah proses program, biasanya terdapat kode penyeleksian kondisi, kode
pengulangan program, atau kode untuk pengambilan keputusan. Untuk tujuan tersebut,
C++ memberikan berbagai kemudahan dalam sintaknya. Terdapat sebuah konsep, yakni
blok instruksi. Sebuah blok dari instruksi merupakan sekelompok instruksi yang
dipisahkan dengan tanda semicolon (;) dan berada diantara tanda { dan }.
Untuk blok instruksi, penggunaan tanda { dan } boleh ditiadakan. Dengan syarat, hanya
pernyataan tunggal yang akan dilaksanakan oleh blok instruksi. Apabila pernyataan
yang dijalankan lebih dari satu, maka tanda { dan } wajib disertakan.
Struktur seleksi kondisi meliputi struktur if satu kondisi, if dua kondisi, if tiga
kondisi atau lebih, dan struktur switch.
14
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Kondisi adalah ekspresi yang akan dibandingkan. Jika kondisi bernilai benar, maka
pernyataan akan dijalankan. Namun, jika kondisi bernilai salah, maka pernyataan akan
diabaikan.
Contoh pernyataan berikut akan menampilkan tulisan x adalah 100 apabila x bernilai
100:
if (x==100)
cout << “x adalah 100”;
Jika menginginkan lebih dari sebuah pernyataan yang dijalankan, ketika kondisi
terpenuhi maka blok instruksi harus menyertakan tanda { dan }.
if (x==100)
{
cout << “x adalah ”;
cout << x;
}
Contoh kode program:
#include <iostream>
int main() {
int nilai;
return 0;
}
15
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Hasil program diatas bersifat dinamis, tergantung nilai yang dimasukkan oleh user. Kita
juga dapat menggunakan operator || atau && dalam menentukan sebuah ekspresi.
Contoh kode program :
#include <iostream>
int main() {
int bil;
char huruf;
return 0;
}
16
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
#include <iostream>
int main() {
int bilangan;
return 0;
}
#include <iostream>
#include <iomanip>
int main() {
double X, Y, Z;
17
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Z = X/Y;
return 0;
}
int main() {
int bil;
18
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
if (bil > 0) {
cout<<bil<<" adalah bilangan POSITIF";
} else if (bil < 0) {
cout<<bil<<" adalah bilangan NEGATIF";
} else {
cout<<"Anda memasukkan bilangan NOL";
}
return 0;
}
Contoh penggunaan struktur if bersarang dengan kasus penentuan nilai indeks (A, B, C,
D, dan E) dari nilai akhir yang diperoleh oleh seorang mahasiswa. Ketentuan penilaian
adalah sbb:
A : nilai >= 85
B : 70 <= nilai < 85
C : 55 <= nilai < 70
D : 40 <= nilai < 55
E : nilai < 40
Kode proramnya adalah:
#include <iostream>
int main() {
double nilai;
char nilai_huruf;
19
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
nilai_huruf = 'E';
}
return 0;
}
Cara kerjanya:
1. switch akan mengevaluasi pilihan dan apabila isinya sama dengan nilai1, maka
blok pernyataan 1 akan dijalankan sampai menemukan perintah break untuk
kemudian keluar dari blok switch.
2. Bila pilihan tidak sama isinya dengan nilai1, maka akan dicocokkan lagi dengan
nilai2. dan apabila isinya sama dengan nilai2, maka blok pernyataan 2 akan
dijalankan sampai menemukan perintah break untuk kemudian keluar dari blok
switch.
3. Terakhir, apabila isi pilihan tidak sesuai dengan nilai1, nilai2 dan seterusnya
maka secara otomatis yang dijalankan adalah blok pernyataan default.
Contoh kode program :
#include <iostream>
20
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
int main() {
int nohari;
switch (nohari) {
case 1:
cout<<"Hari ke-"<<nohari<<": adalah SABTU";
break;
case 2:
cout<<"Hari ke-"<<nohari<<": adalah SENIN";
break;
case 3:
cout<<"Hari ke-"<<nohari<<": adalah SELASA";
break;
case 4:
cout<<"Hari ke-"<<nohari<<": adalah RABU";
break;
case 5:
cout<<"Hari ke-"<<nohari<<": adalah KAMIS";
break;
case 6:
cout<<"Hari ke-"<<nohari<<": adalah JUMAT";
break;
case 7:
cout<<"Hari ke-"<<nohari<<": adalah MINGGU";
break;
default:
cout<<"Tidak terdapat nama hari ke-"<<nohari;
}
return 0;
}
21
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
BAB 5
PENGULANGAN (LOOPS)
Contoh :
22
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Akan tampil :
Masukkan nomor (tekan 0 untuk mengakhiri) : 67
Anda memasukkan angka : 67
Masukkan nomor (tekan 0 untuk mengakhiri) : 12
Anda memasukkan angka : 12
Masukkan nomor (tekan 0 untuk mengakhiri) : 0
Anda memasukkan angka : 0
23
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Hasilnya adalah :
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, STOP!
Inisialisasi dan Counter adalah optional atau dapat ditiadakan. Namun tidak demikian
dengan tanda semicolon (;). Misalnya kita dapat menuliskan: for(;n<10;) jika tanpa
inisialisasi dan tanpa penaikan, atau for(;n<10;n++) jika tanpa inisialisasi namun tetap
menggunakan penaikan.
24
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
kebutuhan. Biasanya, nested loops digunakan untuk membuat aplikasi matematika yang
menggunakan baris dan kolom. Loop luar, biasanya digunakan untuk mendefinisikan
baris. Sedangkan loop dalam, digunakan untuk mendefinisikan kolom.
Contoh:
for(int baris = 1; baris <= 4; baris++){
for (int kolom = 1; kolom <= 5; kolom++){
cout<<kolom<<" ";
}
cout<<endl;
}
Penjelasan program:
Perulangan akan menghasilkan nilai sebagai berikut :
baris =1 ; kolom = 1; cetak 1
kolom = 2; cetak 2
kolom = 3; cetak 3
kolom = 4; cetak 4
kolom = 5 ; cetak 5
ganti baris !
baris =2 ; kolom = 1; cetak 1
kolom = 2; cetak 2
kolom = 3; cetak 3
kolom = 4; cetak 4
kolom = 5 ; cetak 5
ganti baris !
baris =3 ; kolom = 1; cetak 1
kolom = 2; cetak 2
kolom = 3; cetak 3
kolom = 4; cetak 4
kolom = 5 ; cetak 5
ganti baris !
baris =4 ; kolom = 1; cetak 1
kolom = 2; cetak 2
kolom = 3; cetak 3
kolom = 4; cetak 4
kolom = 5 ; cetak 5
ganti baris !
selesai.
Dan di layar akan muncul hasil dengan bentuk matrik sebagai berikut:
12345
12345
12345
12345
25
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
#include <iostream>
int main() {
int a,b;
for (a=5; a>=0; a--) {
for (b=1; b<=a; b++){
cout<<b;
}
cout<<endl;
}
return 0;
}
Tambahan :
perintah break
break berfungsi untuk keluar dari loop, walaupun kondisinya belum seluruhnya
terpenuhi. Biasanya, perintah ini digunakan untuk memaksa program keluar dari loop.
Contoh berikut akan berhenti menghitung sebelum terhenti secara normal.
for (int n=10; n>0;n--)
{
cout<<n<<", ";
if (n==3)
{
cout<<"penghitungan dihentikan !";
break;
}
}
dan di layar akan tampak hasil sebagai berikut :
10, 9, 8, 7, 6, 5, 4, 3, penghitungan dihentikan !
perintah continue
perintah ini akan melewati satu iterasi yang sesuai dengan syarat tertentu, dan
melanjutkan ke iterasi berikutnya.
Contoh:
for (int n=10; n>0;n--)
{
if (n==5) continue;
cout<<n<<", ";
}
cout<<"STOP !";
Dan di layar akan muncul : 10, 9, 8, 7, 6, 4, 3, 2, 1, STOP !
26
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
BAB 6
ARRAY (LARIK)
6.1 ARRAY
Array adalah sebuah variabel yang menyimpan sekumpulan data yang memiliki
tipe sama. Pada program yang dibahas terdahulu, banyak menggunakan variable
tunggal, artinya sebuah variabel hanya digunakan untuk menyimpan satu nilai. Array
merupakan koleksi data dimana setiap elemen memakai nama yang sama dan bertipe
sama dan setiap elemen diakses dengan membedakan indeks array-nya. Dalam C++
index array selalu dimulai dari 0. Misal, sebuah array bernama nil yang terdiri dari 5
data dengan tipe int, dapat digambarkan sebagai berikut:
Tiap ruang kosong merupakan tempat untuk masing-masing elemen array bertipe
integer. Penomorannya berawal dari 0 sampai 4, sebab dalam array index pertama selalu
dimulai dengan 0.
Deklarasi Array
Sama seperti variabel, array harus dideklarasikan dulu sebelum mulai digunakan.
Sintaknya adalah:
tipe nama_array[jumlah_elemen];
Contoh, untuk pendeklarasian array dengan nama nil di atas adalah:
int nil[5];
6.2 Inisialisasi Array
Pada saat mendeklarasikan sebuah array, dapat langsung melakukan inisialisasi
nilai terhadap elemen-elemen array. Nilai suatu variabel array dapat diinisialisasi secara
langsung pada saat deklarasi, misalnya:
int nil[5] = { 1,3,6,12,24 }
Maka penyimpanan ke dalam array dapat digambarkan sebagai berikut:
27
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Hal ini ini dimaksudkan untuk mengisikan nilai awal (default) pada elemen array,
sehingga jika elemen tersebut tidak diisi dengan nilai baru, maka nilai yang digunakan
adalah nilai yang telah ada.
Bentuk umum dari proses inisialisasi array adalah sbb:
Tipe_data nama_array[N] = {nilai1, nilai2, …, nilaiN}
Contoh program yang menunjukkan inisialisasi nilai pada elemen-elemen array :
#include <iostream>
using namespace std;
int main() {
//Mendeklarasikan array
//dan langsung menginisialisasi nilainya
int A[5] = { 10, 20, 30, 40, 50 };
// Menampilkan nilai
// yang terdapat pada elemen array
cout<<"Sebelum dilakukan perubahan nilai"<<endl;
cout<<"A[0] = "<<A[0]<<endl;
cout<<"A[1] = "<<A[1]<<endl;
cout<<"A[2] = "<<A[2]<<endl;
cout<<"A[3] = "<<A[3]<<endl;
cout<<"A[4] = "<<A[4]<<endl;
return 0;
}
28
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Contoh program:
//contoh array
#include<iostream>
#include<conio.h>
using namespace std;
int nil[] = {16, 2, 77, 40};
int n, hasil = 0;
int main()
{
//cout<<nil[0]<<endl;
//cout<<nil[1]<<endl;
//cout<<nil[2]<<endl;
//cout<<nil[3]<<endl;
for (int data=0; data<4;data++)
{
cout<<nil[data] <<" "<<endl;
}
//
#include <iostream>
using namespace std;
int main() {
// Mendeklarasikan array A
// dengan 5 buah elemen bertipe int
int A[5];
29
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
30
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Contoh program pencarian nilai maximum dan minimum dari sebuah array yang
bertipe int:
#include <iostream>
using namespace std;
int main() {
// Mendeklarasikan sebuah array
// dan melakukan inisialisasi ke dalamnya
int A[10] = { 12, 34, 54, 32, 10, 67, 98, 11, 20, 22
};
31
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
int main() {
// Mengisikan nilai
// ke dalam elemen-elemen array A
for (j=0; j<3; j++) {
for (k=0; k<2; k++) {
cout<<"A["<<j<<"]["<<k<<"] = ";
cin>>A[j][k];
}
}
cout<<endl;
// Mengisikan nilai
// ke dalam elemen-elemen array B
for (j=0; j<3; j++) {
for (k=0; k<2; k++) {
cout<<"B["<<j<<"]["<<k<<"] = ";
cin>>B[j][k];
}
}
cout<<endl;
32
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
return 0;
}
int main() {
return 0;
}
33
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
BAB 7
STRING
7.1. String
Dalam pemrograman C++, karena string merupakan kumpulan dari karakter maka
untuk inisialisasi string, dapat dilakukan dengan cara sebagai berikut:
char namaku[20] ;
maka dari pernyataan di atas, dapat digambarkan sebagai deklarasi sebuah variabel
string (array dari karakter) dengan panjang hingga 20 karakter, termasuk diakhiri
dengan karakter null.
34
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
namaku[3] = ’h’;
namaku[4] = ’m’;
namaku[5] = ’a’;
namaku[6] = ’t’;
namaku[7] = ’\0’;
atau
char namaku[20] = “Rachmat”;
Perbedaannya, disini adalah pada tanda (‘) yang berarti menginputkan nilai berupa
karakter ke dalam variabel string sedangkan tanda (“) berarti menginputkan sebuah nilai
string ke dalam variabel string.
Untuk memberikan nilai kepada sebuah variabel string, biasanya digunakan perintah
input stream (cin) dan diikuti oleh metode getline.
Contoh penggunaannya:
// penggunaan cin untuk input string
#include<iostream.h>
int main()
{
char namaku[20];
35
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
36
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
BAB 8
POINTER
8.1. Pointer
Pointer dapat didefinisikan sebagai suatu variabel yang menyimpan alamat
memori. Jika kita mempunyai sebuah variabel dengan tipe tertentu, maka untuk
mendapatkan alamat dari variabel tersebut adalah dengan menggunakan operator &.
Alamat inilah yang kemudian disimpan kedalam variabel yang bertipe pointer. Untuk
mendeklarasikan variabel sebagai pointer, kita hanya menambahkan tanda asterisk (*)
di depan nama variabel. Bentuk umum dari pendeklarasian variabel yang bertipe
pointer:
tipe_data *nama_pointer.
Tipe data di atas berguna untuk menyatakan bahwa pointer yang kita deklarasikan akan
ditempati oleh data dengan tipe tertentu.
Contoh:
Kita akan mendeklarasikan pointer P yang akan ditempati oleh tipe data long, maka
bentuk pendeklarasiannya adalah sbb:
long *P;
Jika kita mempunyai sebuah variabel yang bertipe long (misalnya x), maka kita
memerintahkan pointer P di atas untuk menunjuk ke alamat yang ditempati oleh
variabel x. untuk melakukan hal tersebut, kita perlu menuliskan kode sbb:
//mendeklarasikan variabel x dengan tipe long
long x;
//mendeklarasikan pointer P
long *P;
//memerintahkan P untuk menunjuk alamat dari variabel x
P = &x;
Konsep potongan kode program di atas yaitu bahwa P adalah pointer (berisi alamat) dan
&x juga berisi alamat, maka kita dapat menyimpan alamat dari variabel x tersebut ke
dalam pointer P. kita tidak diijinkan untuk memasukkan sebuah nilai (bukan alamat) ke
dalam pointer P, seperti kode berikut:
// SALAH, karena x berupa nilai (bukan berupa alamat)
37
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
P = x;
// BENAR, karena *P adalah nilai yang berada pada pointer P
*P = x;
Contoh kode program:
#include <iostream>
int main() {
long *P;
long X;
P = &X;
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai *P : "<<*P<<endl;
cout<<"Nilai P : "<<P<<endl;
cout<<"Nilai &X : "<<&X<<endl;
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai *P : "<<*P<<endl;
cout<<"Nilai P : "<<P<<endl;
cout<<"Nilai &X : "<<&X<<endl;
return 0;
}
Nilai X : 10
Nilai *P : 10
Nilai P : 0x22ff08
Nilai &X : 0x22ff08
Nilai X : 200
Nilai *P : 200
Nilai P : 0x22ff08
Nilai &X : 0x22ff08
Penjelasan:
38
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Kita mengisi variabel x dengan nilai 10, *P juga akan bernilai 10. Begitu juga saat kita
memasukkan nilai ke dalam *P dengan nilai 200, variabel x juga akan berubah nilainya
menjadi 200. Hal ini menunjukkkan bahwa *P akan selalu sama dengan x, dan ini
disebabkan karena *P dan variabel x menempati alamat yang sama yaitu: 0x22ff08.
Dalam pointer, terdapat 2 jenis operator yang biasa digunakan:
1. Operator Alamat / Dereference Operator(&)
Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi memori dan
pengguna biasanya tidak mengetahui di alamat mana data tersebut disimpan. Dalam
C++, untuk mengetahui alamat tempat penyimpanan data, dapat digunakan tanda
ampersand(&) yang dapat diartikan “alamat”.
Contoh :
Bil1 = &Bil2;
dibaca: isi variabel bil1 sama dengan alamat bil2
2. Operator Reference (*)
Penggunaan operator ini, berarti mengakses nilai sebuah alamat yang ditunjuk
oleh variabel pointer.
Contoh :
Bil1=*Bil2;
dibaca: bil1 sama dengan nilai yang ditunjuk oleh bil2
Contoh program menggunakan pointer :
// program pointer
#include <iostream.h>
int main()
{
int nil1 = 5, nil2 = 15;
int *ptr;
ptr = &nil1;
*ptr = 10;
ptr=&nil2;
*ptr=20
cout<<”Nilai 1 = ”<<nil1<<”dan nilai 2 = “<<nil2;
return 0;
}
Hasil :
Nilai 1 = 10 dan nilai 2 = 20
39
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
int main() {
void *P; // Mendeklarasikan pointer P
// sebagai pointer tanpa tipe
// Menampilkan hasil
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai P : "<<P<<endl;
cout<<"Nilai &X : "<<&X<<endl;
cout<<endl;
// Menampilkan hasil
cout<<"Nilai Y : "<<Y<<endl;
cout<<"Nilai P : "<<P<<endl;
cout<<"Nilai &Y : "<<&Y<<endl;
cout<<endl;
40
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
// Menampilkan hasil
cout<<"Nilai Z : "<<Z<<endl;
cout<<"Nilai P : "<<P<<endl;
cout<<"Nilai &Z : "<<&Z<<endl;
return 0;
}
Nilai Y : 2000
Nilai P : 0x22fef4
Nilai &Y : 0x22fef4
Nilai Z : 21.0378
Nilai P : 0x22fee8
Nilai &Z : 0x22fee8
Penjelasan hasil di atas yaitu bahwa P dapat menunjuk ke tipe data yang berbeda-beda.
Sebagai bukti dari hal ini adalah nilai P yang berbeda, yaitu sesuai dengan alamat dari
variabel yang ditunjuk.
8.3. Referensi
Referensi (reference) merupakan alias atau nama lain dari sebuah variabel.
Contoh sesorang bernama Jon Meyer, maka kita dapat membuat alias atau julukan dari
nama tersebut yaitu JM. Karena Jon Meyer JM sebenarnya adalah satu orang, maka apa
yang dilakukan terhadap Jon Meyer itu juga terjadi pada JM, begitu juga sebaliknya.
Untuk membuat referensi adalah dengan menggunakan tanda & dibelakang tipe data
yang akan diacu. Bentuk umum pembuatan referensi :
tipe_data &nama_alias = nama variabel;
41
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
int main() {
// Menampilkan nilai
// yang disimpan dalam variabel X dan AliasX
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai AliasX : "<<AliasX<<endl;
cout<<endl;
return 0;
}
Nilai X : 35
Nilai AliasX : 35
Pada program di atas, tampak bahwa pada saat kita memasukkan nilai 12 ke dalam
variabel x, alias x juga bernilai 12, begitu sebaliknya pada saat kita memasukkan nilai
35 ke dalam alias x, variabel x juga bernilai 35. Ini membuktikan bahwa keduanya
sebenarnya merupakan satu buah variabel yang memiliki dua nama.
42
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
return 0;
}
Alamat X : 0x22ff08
Alamat AliasX : 0x22ff08
Alamat dari variabel x dan alamat dari alias x adalah sama, karena keduanya merupakan
objek yang sama sehingga alamat yang ditempatinya sama.
43
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
mengubah nilai dari variabel yang diacu oleh referensi tersebut, sedangkan referensi tadi
bersifat tetap?. Jawabnya adalah ya, kita masih dapat memanipulasinya. Artinya yang
menjadi konstanta disini adalah hanya referensinya saja, sedangkan variabelnya tidak
bersifat konstan.
Contoh kode program :
#include <iostream>
int main() {
// Mendeklarasikan varaibel X
// dengan nilai default 5
int X = 5;
// Mengubah nilai X
X = 12; // BENAR, hal ini diperbolehkan karena X
// tidak bersifat konstan
return 0;
}
Nilai X : 12
Nilai AliasX : 12
44
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
BAB 9
FUNGSI
9.1. Pengantar
Fungsi merupakan kumpulan statemen yang dikelompokkan menjadi satu bagian
kode (blok program) untuk menyelesaikan tugas tertentu. Fungsi yang telah dibuat
dalam bentuk kode program hanya didefenisikan sekali, namun dapat digunakan
berulang kali tanpa harus menuliskan kembali kode yang sama. Dengan kata lain, fungsi
merupakan subprogram dan berguna untuk menjadikan program lebih bersifat modular
sehingga mudah dipahami dan dapat digunakan kembali, baik untuk program itu sendiri
maupun untuk program lain yang memiliki proses yang sama.
Dalam setiap bahasa pemrograman (termasuk C++), fungsi dibedakan menjadi
dua yaitu user defined function dan built in function. User defined function adalah
fungsi-fungsi yang didefenisikan sendiri oleh programmer sedangkan built in function
adalah fungsi-fungsi siap pakai yang telah disediakan oleh bahasa pemrograman (C++).
Dalam C++, program merupakan kumpulan dari fungsi baik yang didefinisikan
langsung dalam program maupun yang dideklarasikan dalam suatu file header. C/C++
mempunyai fungsi utama yang disebut fungsi main(). Fungsi main() ini selalu ada
dalam setiap program C/C++ dan compiler akan menjalankan program melalui perintah-
perintah yang terdapat dalam fungsi ini. Dengan kata lain, fungsi main() akan dipanggil
pertama kali ketika program dijalankan.
Keterangan :
tipe_kembalian : fungsi bisa saja mempunyai nilai balik (nilai kembalian). Tipe
kembalian adalah nilai yang akan dikembalikan oleh fungsi
45
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
nama_fungsi : nama fungsi adalah nama yang akan digunakan dalam pemanggilan
fungsi. Pemanggilan fungsi harus disesuaikan dengan daftar parameter yang disertakan
pada saat pendefinisian fungsi.
daftar_parameter : fungsi bisa saja memiliki satu atau lebih parameter. Parameter itu
sendiri merupakan variabel berisi nilai yang akan disertakan ke dalam proses yang akan
dilakukan oleh fungsi.
Badan_fungsi : kode atau pernyataan-pernyataan yang akan dilaksanakan di dalam
fungsi guna menyelesaikan tugas tertentu.
Contoh penggunaan fungsi:
//Contoh Fungsi_penjumlahan
//#include <iostream.h>
#include <iostream>
#include <conio.h>
Ketika program dieksekusi, yang dijalankan pertama kali adalah fungsi main(). Terlihat
jelas bahwa dalam main() terdapat variable z dengan tipe data integer. Setelah itu,
fungsi penjumlahan dipanggil. Maka akan terdapat proses pertukaran data sebagai
berikut:
46
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Maka setelah terjadi pengisian nilai, variable a akan terisi dengan nilai 5 dan variable b
akan terisi dengan nilai 3. Fungsi penjumlahan mendeklarasikan sebuah variable baru
lagi (int r;) dan kemudian menjumlahkan nilai r = a+b; dengan hasil akhir variable r = 8.
Karena masing-masing variable a dan b sudah terisi dengan nilai 5 dan 3.
Kode :
return (r);
merupakan pengakhir fungsi penjumlahan dan memberikan hasil akhir nilai r kepada
fungsi yang memanggilnya (dalam hal ini fungsi main()). Proses pengembalian nilai
dapat digambarkan sebagai berikut:
maka ketika perintah cout<<"Hasil penjumlahan = " << z; dijalankan, hasilnya adalah 8.
47
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
int x= 5, y=3, z;
z=kurang(7,2);
cout<<"Pertama : " << z<<endl;
cout<<"Kedua : " << kurang(7,2)<<endl;
cout<<"Ketiga : " << kurang (x,y) <<endl;
z=4+kurang(x,y);
cout<<"Keempat : "<<z<<endl;
return 0;
}
Hasilnya adalah :
Pertama : 5
Kedua : 5
Ketiga : 2
Keempat :
Dalam program di atas, terdapat sebuah fungsi yang dinamakan kurang. Fungsi ini
mengerjakan tugas untuk mengurangkan nilai dua buah variable dan kemudian
mengembalikan hasilnya. Sedangkan di dalam fungsi main(), terdapat beberapa kali
pemanggilan terhadap fungsi kurang. Disana terdapat dengan jelas perbedaan cara
pengaksesan dan pengaruh terhadap hasilnya. Untuk lebih memperjelas, beberapa sintak
akan dijelaskan secara rinci sebagai berikut:
z=kurang(7,2);
cout<<"Pertama : " << z<<endl;
Jika diganti dengan hasil (sesuai dengan pemanggilan fungsinya), maka akan
didapatkan baris:
z=5;
cout<<"Pertama : " << z<<endl;
sama seperti baris:
cout<<"Kedua : " << kurang(7,2)<<endl;
jika sesuai dengan pemanggilan fungsinya, maka akan didapatkan:
cout<<"Kedua : " << kurang(7,2)<<endl;
sedangkan untuk:
cout<<"Ketiga : " << kurang (x,y) <<endl;
maka isi dari variabel x=5 dan y=3, sehingga dapat diartikan sebagai baris:
cout<<"Ketiga : " << kurang (5,3) <<endl;
demikian juga halnya dengan baris:
z=4+kurang(x,y);
dapat diartikan dengan baris:
z=4+kurang(5,3);
48
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
void Ucapan(void)
{
cout<<"Selamat Belajar C++";
}
//Fungsi utama dalam program C++
int main()
{
Ucapan();
return 0;
}
Yang harus diperhatikan adalah, pemanggilan fungsi harus disertai dengan tanda ().
Seperti contoh di atas, fungsi Ucapan walaupun didekarasikan tanpa tipe data dan tanpa
argumen, dipanggil dalam fungsi main dengan Ucapan().
49
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Karena fungsi dengan nilai balik ini sebenarnya adalah sebuah nilai atau ekspresi, maka
pemanggilannya dapat dilakukan seperti layaknya sebuah variabel. Sebagai contoh, nilai
yang dikembalikan dapat ditampung ke dalam suatu variabel tertentu yang memiliki tipe
data sama dengan tipe kembalian fungsi bersangkutan.
Nama_variabel = nama_fungsi (parameter1, parameter2, …);
Selain itu, pemanggilan fungsi juga bisa dilakukan langsung melalui perintah cout jika
keperluannya adalah ingin menampilkan nilai yang dihasilkan oleh fungsi.
Cout<<nama_fungsi (parameter1, parameter2, …);
Contoh kode program:
#include <iostream>
return 0;
}
50
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
return 0;
}
51
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
int TambahSatu(int X) {
int hasil;
hasil = X + 1;
return hasil;
}
int main() {
2. Parameter keluaran
Parameter keluaran adalah parameter yang berfungsi untuk menampung nilai yang
akan dikembalikan. Dengan kata lain parameter tersebut berguna sebagai nilai keluaran
(output) dari sebuah fungsi. Parameter keluaran harus berupa pointer maupun referensi
dan pada umumnya terdapat pada fungsi-fungsi yang tidak mengembalikan nilai.
Contoh kode program:
#include <iostream>
int main() {
52
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
// Menampilkan nilai
// setelah diproses di dalam fungsi
cout<<"Nilai akhir: "<<HASIL;
return 0;
}
3. Parameter masukan / keluaran
Jenis parameter ini adalah parameter yang digunakan sebagai masukan dan
keluaran. Karena akan dipergunakan sebagai parameter keluaran, maka parameter jenis
ini harus berupa pointer maupun referensi.
Contoh kode program:
#include <iostream>
// Fungsi utama
int main() {
int Bilangan;
// Menampilkan nilai
// setelah diproses di dalam fungsi
cout<<"Nilai akhir: "<<Bilangan;
return 0;
}
53
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
// Fungsi utama
int main() {
int Bilangan;
return 0;
}
54
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
Ketika fungsi Kali2() dipanggil, terdapat proses penyalinan nilai dari variabel bilangan
ke variabel x. Pada kasus di atas variabel Bilangan dan variabel x menempati alamat
memori yang berbeda sehingga pada saaat pemanggilan fungsi, nilai dari keduanya
tentu akan berbeda. Yang berubah hanya nilai dari variabel x, sedangkan variabel
Bilangan bernilai tetap karena kita tidak melakukan apa-apa terhadap variabel Bilangan.
Contoh kode program:
#include <iostream>
int Z = X;
X = Y;
Y = Z;
// Menampilkan bilangan
// yang terdapat di dalam fungsi
cout<<"Di dalam fungsi"<<endl;
cout<<"Bilangan ke-1: "<<X<<endl;
cout<<"Bilangan ke-2: "<<Y<<endl;
cout<<endl;
}
// Fungsi utama
int main() {
// Mendeklarasikan variabel
// Bilangan1 dan Bilangan2
int Bilangan1, Bilangan2;
55
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
return 0;
}
Hasil yang didapatkan dari program tersebut di atas saat Run dapat disimpulkan bahwa
fungsi tersebut tidak dapat mengubah (menukarkan) bilangan-bilangan yang dimaksud
karena nilai yang terdapat dalam fungsi tidak dapat mempengaruhi nilai luar. Untuk
menangani kasus ini, kita perlu menggunakan metode pass-by-reference untuk
melewatkan parameter ke dalam fungsi TukarBilangan().
2. Melewatkan parameter berdasarkan referensi
Untuk memahami hal ini perlu memahami materi tentang pointer dan referensi.
Berbeda dengan pass-by-value, pass-by-reference adalah metode untuk melewatkan
parameter ke sebuah fungsi berdasarkan alamatnya. Jika membuat alias (reference) dari
sebuah variabel, maka alamat dari variabel dan alias tersebut adalah sama. Hal inilah
yang menjadi konsep dasar pengiriman parameter berdasarkan alamat. Melewatkan
parameter dengan cara ini menyebabkan nilai yang terdapat di dalam fungsi akan sama
persis dengan nilai yang terdapat pada program (diluar fungsi). Hal ini disebabkan
karena alamat dari variabel yang berperan sebagai parameter formal sama dengan
alamat dari variabel yang berperan sebagai parameter actual (argument).
Contoh kode program:
#include <iostream>
// Mendefinsikan fungsi
// yang melewatkan parameter
// berdasarkan alamat
void Kali2(int& X) { // Gunakan tanda &
// untuk membuat alias
// atau referensi
X = X * 2;
cout<<"Nilai di dalam fungsi: "<<X<<endl;
}
int main() {
int Bilangan;
56
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
return 0;
}
Nilai awal: 10
Nilai di dalam fungsi: 20
Nilai akhir: 20
// Mendefinsikan fungsi
// untuk menukarkan dua buah bilangan
void TukarBilangan(int& X, int& Y) {
int Z = X;
X = Y;
Y = Z;
// Menampilkan bilangan
// yang terdapat di dalam fungsi
cout<<"Di dalam fungsi"<<endl;
cout<<"Bilangan ke-1: "<<X<<endl;
57
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
// Fungsi utama
int main() {
// Mendeklarasikan variabel
// Bilangan1 dan Bilangan2
int Bilangan1, Bilangan2;
return 0;
}
Selain menggunakan alias atau reference, dapat juga menggunakan pointer untuk
melewatkan parameter berdasarkan alamat. Namun perlu diperhatikan pada saat
pemanggilan fungsi tersebut kita harus memanggil alamat dari parameter actual
(argument) yaitu dengan menggunakan operator &.
Contoh kode program:
#include <iostream>
// Mendefinisikan fungsi
// dengan parameter bertipe pointer
58
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
// Menampilkan bilangan
// yang terdapat di dalam fungsi
cout<<"Di dalam fungsi"<<endl;
cout<<"Bilangan ke-1: "<<*X<<endl;
cout<<"Bilangan ke-2: "<<*Y<<endl;
cout<<endl;
}
// Fungsi utama
int main() {
// Mendeklarasikan variabel
// Bilangan1 dan Bilangan2
int Bilangan1, Bilangan2;
return 0;
}
59
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T
DAFTAR PUSTAKA
Munir, R dan Lidya, L, 2001, Algoritma dan Pemrograman Dalam Bahasa Pascal dan
C, Informatika Bandung.
60