Anda di halaman 1dari 63

Oleh :

Dr. Mingsep Rante Sampebua, S.T., M.T

FAKULTAS MIPA
UNIVERSITAS CENDERAWASIH
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

ALGORITMA DAN PEMROGRAMAN II

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.

Jayapura, Januari 2016

Penulis

i
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

DAFTAR ISI

Kata Pengantar ………………………………………………………………. i


Daftar Isi …………………………………………………………………….. ii
Bab 1 Pendahuluan …………………………………………………………. 1
Bab 2 Pengenalan C++ ……………………………………………………... 2
Bab 3 Input dan Output ……………………………………………………. 10
Bab 4 Seleksi Kondisi ……………………………………………………… 14
Bab 5 Pengulangan …………………………………………………………. 22
Bab 6 Array ………………………………………………………………… 27
Bab 7 String ………………………………………………………………… 34
Bab 8 Pointer ……………………………………………………………….. 37
Bab 9 Fungsi ………………………………………………………………... 45
Daftar Pustaka

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++

2.1. PENGANTAR C++


C++ diciptakan oleh Bjarne Stroustrup di laboratorium Bell pada awal tahun
1980-an, sebagai pengembangan dari bahasa C dan Simula. Saat ini, C++ merupakan
salah satu bahasa yang paling populer untuk pengembangan software berbasis OOP.
Kompiler untuk C++ telah banyak beredar di pasaran. Software developer yang paling
diminati adalah Borland Inc. dan Microsoft Corp. Produk dari Borland untuk kompiler
C++ adalah Turbo C++, Borland C++, Borland C++ Builder. Sedangkan dari Microsoft
adalah Ms. Visual C++. Yang digunakan dalam modul ini adalah IDE (Integrated
Development Environment) Dev-C++ 5.5.0.3 yang dirilis pada tanggal 11 november
2012. http://orwelldevcpp.blogspot.com/. Sebelum mulai melakukan kode program,
sebaiknya diingat bahwa C++ bersifat “case sensitive”, yang artinya huruf besar dan
huruf kecil dibedakan.

2.2. STRUKTUR BAHASA C++


Cara terbaik untuk balajar bahasa pemrograman adalah dengan langsung
mempraktikannya. Cobalah contoh program berikut :

// 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”

2.3. TIPE DATA


Tipe data berfungsi untuk merepresentasikan jenis dari nilai yang terdapat dalam
program. Contoh data dengan nilai 2, maka 2 termasuk ke dalam tipe bilangan bulat.
Pada saat mendeklarasikan suatu variabel maka perlu menyebutkan tipe data dari
variabel tersebut.
Terdapat 5 tipe data bawaan dari bahasa C, yaitu : void, integer, float, double, dan
char.
Type Keterangan
Void Diartikan sebagai tanpa tipe data dan tanpa pengembalian nilai
Int Bilangan bulat (integer)
Float Bilangan pecahan (floating point)
Double Bilangan pecahan dengan jangkauan data yang lebih luas
Char Karakter

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

Dengan jangkauannya adalah sebagai berikut :


Tipe Ukuran (bits) Range
unsigned char 8 0 s/d 255
Char 8 -128 s/d 127
short int 16 -32,768 s/d 32,767
unsigned int 32 0 s/d 4,294,967,295
Int 32 -2,147,483,648 s/d 2,147,483,647

4
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

unsigned long 32 0 s/d 4,294,697,295


Long 32 -2,147,483,648 s/d 2,147,483,647
Float 32 3.4 e-38 s/d 1.7 E +38
Double 64 1.7 E-308 s/d 3.4 E + 308
long double 80 3.4 E-4932 s/d 1.1 E + 4932

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

atau dapat disederhanakan dengan deklarasi :


int a,b,c;

Perhatikan contoh berikut:


// bekerja dengan variabel
#include <iostream.h>
int main ()
{
// inisialisasi variabel :
int a, b;
int hasil;
// proses :
a = 5;
b = 2;
a = a + 1;
hasil = a - b;
// cetak hasilnya :
cout << hasil;
// menghentikan program :
return 0;
}

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’;

contoh kode program:


#include <conio.h>
#include <iostream>
const int nomor = 100;
const float phi = 3.14;
const char huruf = 'K';
const char nama[] = "Hello";
using namespace std;
main()
{
cout << "Nilai konstanta nomor: "<< nomor;
cout << "\nNilai konstanta phi : "<< phi;
cout << "\nNilai konstanta huruf: "<< huruf;
cout << "\nNilai konstanta nama : "<< nama;
getch();
return 0 ;
}

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

d. Operator Penaikan dan Penurunan (++ dan --)


Operator penaikan (++) akan menaikkan atau menambahkan 1 nilai variable. Sedangkan
operator (--) akan menurunkan atau mengurangi 1 nilai variable.
Misalnya :
a++;
a+=1;
a=a+1;

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.

e. Operator Relasional (==, !=, >, <, >=, <=)


Yang dihasilkan dari operator ini bukan berupa sebuah nilai, namun berupa bilangan
boolean yaitu benar atau salah.
Operator Keterangan
== Sama dengan
!= Tidak sama dengan
> Lebih besar dari
< Kurang dari
>= Lebih besar dari atau sama dengan
<= Kurang dari atau sama dengan

Contoh :

(7==5) hasilnya adalah false


(5>4) hasilnya adalah true
(5<5) hasilnya adalah false

f. Operator Logika ( !, &&, || )


Operator logika juga digunakan untuk memberikan nilai atau kondisi true dan false.
Biasanya operator logika dipakai untuk membandingkan dua kondisi.
Misalnya:
((5= =5) && (3>6)) mengembalikan nilai false, karena (true && false)
Untuk logika NOT (!), contohnya !(5= =5) akan mengembalikan nilai false, karena
!(true).
g. Operator Kondisional ( ? )
Format penulisan operator kondisional adalah :
kondisi ? hasil1 : hasil2
Jika kondisi benar maka yang dijalankan adalah hasil1 dan jika kondisi salah, maka
akan dijalankan hasil 2.
Contoh :
7==5 ? 4 : 3 hasilnya adalah 3, karena 7 tidak sama dengan 5
5>3 ? a : b hasilnya adalah a, karena 5 lebih besar dari 3

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>

using namespace std;

int main() {

// Mendeklarasikan variabel X, Y dan Z


// yang masing-masing bertipe int
int X, Y, Z;

cout<<"Masukkan nilai X: ";


cin>>X;

cout<<"Masukkan nilai Y: ";


cin>>Y;

10
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

cout<<"Masukkan nilai Z: ";


cin>>Z;

// Menampilkan nilai X, Y dan Z


cout<<"Nilai X: "<<X<<endl;
cout<<"Nilai Y: "<<Y<<endl;
cout<<"Nilai Z: "<<Z<<endl;

return 0;
}

Contoh kode program dengan model lain :


#include <iostream>

using namespace std;

int main() {

// Mendeklarasikan variabel X, Y dan Z


// yang masing-masing bertipe int
int X, Y, Z;

cout<<"Masukkan nilai X, Y dan Z: ";


cin>>X>>Y>>Z;

// Menampilkan nilai X, Y dan Z


cout<<"Nilai X: "<<X<<endl;
cout<<"Nilai Y: "<<Y<<endl;
cout<<"Nilai Z: "<<Z<<endl;

return 0;
}

3.2. Output (cout)


Untuk cout menggunakan operator << (insertion operation).
cout << “Selamat
Datang”;//mencetak tulisan Selamat
datang ke layar
cout << 120; //mencetak angka 120 ke layar
cout << x; //mencetak isi nilai variable x ke layer

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

cout << ”Hello”; //menampilkan tulisan Hello ke layar


cout << Hello; //menampilkan isi dari variable Hello ke layar

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 “;

Maka tampilan di layar, adalah sebagai berikut:


Halo, saya berusia 23 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.”;

maka di layar akan tampil:


kalimat pertama.kalimat kedua.

Untuk menambahkan perintah ganti baris, ada dua perintah yang dapat dipakai:
cout<<”kalimat pertama.\n”;
cout<<”kalimat kedua.\nkalimat ketiga.”;

tampilan di layar adalah sebagai berikut:

kalimat pertama.
kalimat kedua.
kalimat ketiga.

atau dapat juga dengan menggunakan perintah endl:


cout<<”kalimat pertama.”<<endl;
cout<<”kalimat kedua.”<<endl;

tampilan dilayar adalah sebagai berikut:

kalimat pertama.
kalimat kedua.

Contoh kode program :

#include <iostream>

using namespace std;

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;
}

3.3. Membaca dan Menulis Teks dari/ke Dalam File


Membaca dan menuliskan teks ke file sama mudahnya seperti melakukan input
dan output ke I/O console, yaitu dengan menggunakan operator << dan >>.
Perbedaannya kita tidak menggunakan stream cin dan cout melainkan menggunakan
stream yang kita deklarasikan sendiri dan telah terhubung dengan sebuah file.
Contoh kode program yaitu :
#include <iostream>
#include <fstream>

using namespace std;

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.

Permasalahan yang sering dijumpai dalam pembuatan kode program adalah


percabangan. Percabangan adalah suatu pilihan statemen yang akan dieksekusi dimana
pemilihan tersebut didasarkan atas kondisi tertentu. Dalam C++ terdapat dua jenis
struktur percabangan yaitu struktur if dan struktur switch. Statemen-statemen yang
terdapat dalam sebuah blok percabangan akan dieksekusi hanya jika kondisi yang
didefinisikan terpenuhi (bernilai benar) dan jika bernilai salah maka statemen-statemen
tersebut tidak dieksekusi atau diabaikan oleh compiler. Contoh jika nilai andi lebih
besar dari 60 maka andi dinyatakan lulus ujian, sebaliknya jika nilai andi lebih kecil
atau sama dengan 60 andi dinyatakan tidak lulus ujian.

Struktur seleksi kondisi meliputi struktur if satu kondisi, if dua kondisi, if tiga
kondisi atau lebih, dan struktur switch.

4.1. Seleksi if satu Kondisi


Struktur ini merupakan struktur yang paling sederhana karena hanya melibatkan
satu buah ekspresi yang akan diperiksa.
Bentuk umumnya :
if (kondisi) {
pernyataan;

}

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>

using namespace std;

int main() {
int nilai;

// Memberikan informasi agar user memasukkan


// sebuah bilangan bulat
cout<<"Masukkan sebuah bilangan bulat dan bilangan
tersebut genap: ";

// Membaca nilai yang dimasukkan dari keyboard


// dan disimpan ke variabel nilai
cin>>nilai;

// Menampilkan sebuah teks jika nilai yang tersimpan


// lebih besar dari nol
//Penerapan operator relasional (>) dan operator logika
(&&) dan
//operator aritmetika % (Modulus -->sisa hasil bagi)
//if (nilai > 0 && nilai%2==0)
if (nilai > 0)
cout<<"Nilai yang Anda masukkan "
<<"adalah bilangan positif";

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>

using namespace std;

int main() {
int bil;
char huruf;

// Meminta user untuk memasukkan sebuah bilangan


cout<<"Masukkan sebuah bilangan bulat: ";
cin>>bil;

if ((bil > 0) && (bil < 10))


cout<<bil
<<" lebih besar dari nol"
<<" dan lebih kecil dari sepuluh";

// Meminta user untuk memasukkan sebuah huruf


cout<<endl<<endl;
cout<<"Masukkan sebuah huruf: ";
cin>>huruf;

if ((huruf == 'A') || (huruf == 'a') ||


(huruf == 'I') || (huruf == 'i') ||
(huruf == 'U') || (huruf == 'u') ||
(huruf == 'E') || (huruf == 'e') ||
(huruf == 'O') || (huruf == 'o')) {
cout<<huruf
<<" adalah salah satu huruf vokal";
}

return 0;
}

4.2. Struktur if Dua Kondisi


Struktur if dua kondisi memiliki statemen else yang akan mengatasi kejadian
apabila kondisi yang didefinisikan tidak terpenuhi (bernilai salah).
Bentuk umum struktur if dua kondisi adalah :
if (kondisi) {
pernyataan1 jika terpenuhi;
}
else {

16
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

pernyataan2 jika kondisi tidak terpenuhi;


}

Contoh kode program :

#include <iostream>

using namespace std;

int main() {
int bilangan;

cout<<"Masukkan bilangan bulat "


<<"yang akan diperiksa: ";
cin>>bilangan;

// Melakukan pengecekan bilangan apakah habis


// dibagi dua atau tidak
if (bilangan % 2 == 0) {
cout<<bilangan<<" adalah bilangan genap";
} else {
cout<<bilangan<<" adalah bilangan ganjil";
}

return 0;
}

Contoh kode program:

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
double X, Y, Z;

// Meminta user untuk memasukkan bilangan


cout<<"Masukkan bilangan yang akan dibagi : ";
cin>>X;
cout<<"Masukkan bilangan pembagi : ";
cin>>Y;

// Menghindari terjadinya pembagian dengan 0


if (Y == 0) {
cout<<"Kesalahan: "
<<"Bilangan pembagi tidak boleh NOL";
} else {
// Melakukan pembagian bilangan X dengan Y

17
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

Z = X/Y;

// Menentukan presisi dari hasil bagi


// dengan nilai dua angka
// di belakang koma
cout.setf(ios::fixed, ios::floatfield);
cout.precision(3);

// Menampilkan hasil bagi


cout<<"Hasil bagi = "<<Z;
}

return 0;
}

4.3. Struktur if Tiga Kondisi atau Lebih


Percabangan jenis ini merupakan perluasan dari struktur dua kondisi dengan
menyisipkan satu atau kondisi didalamnya. Bentuk umum struktur perulangan yang
memiliki lebih dari dua kondisi yaitu :
if (kondisi1) {
pernyataan jika terpenuhi;
}
else if (kondisi2){
pernyataan jika kondisi 2 terpenuhi;
}
else if (kondisi3){
pernyataan jika kondisi 3 terpenuhi;
}

else {
pernyataan jika semua kondisi di atas tidak terpenuhi;
}

Contoh kode program:


#include <iostream>

using namespace std;

int main() {
int bil;

cout<<"Masukkan sebuah bilangan bulat "


<<"yang akan diperiksa: ";
cin>>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>

using namespace std;

int main() {
double nilai;
char nilai_huruf;

// Meminta user untuk menentukan nilai


// yang diperoleh dalam bentuk bilangan
cout<<"Masukkan nilai mahasiswa: ";
cin>>nilai;

// Melakukan konversi nilai numerik


// menjadi nilai indeks
if (nilai >= 85) {
nilai_huruf = 'A';
} else if (nilai >= 70) {
nilai_huruf = 'B';
} else if (nilai >= 55) {
nilai_huruf = 'C';
} else if (nilai >= 40) {
nilai_huruf = 'D';
} else {

19
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

nilai_huruf = 'E';
}

// Menampilkan nilai indeks yang didapatkan


cout<<"Nilai huruf dari nilai mahasiswa "
<<nilai<<" adalah "<<nilai_huruf;

return 0;
}

4.4. Struktur Selektif dengan Switch


Logika menggunakan switch sama dengan menggunakan perintah if yang telah
dijelaskan sebelumnya.
Sintaknya adalah :
switch (pilihan)
{
case nilai1 :
blok pernyataan 1
break;
case nilai2 :
blok pernyataan 2
break;
-
-
-
default :
blok pernyataan default
}

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

using namespace std;

int main() {
int nohari;

cout<<"Masukkan nomor hari (1..7): ";


cin>>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)

Pengulangan adalah suatu proses yang melakukan statemen-statemen atau


(pernyataan) dalam sebuah program secara terus menerus sampai terdapat kondisi untuk
menghentikannya (terpenuhi). Struktur perulangan sangat membantu dalam efisiensi
program karena kita tidak perlu menuliskan sejumlah tampilan (cout) yang kita inginkan
tetapi kita dapat menggunakan perintah-perintah perulangan seperti while, do while, for,
dan statemen loncatan (break, continue, goto, exit).
5.1 Perulangan dengan while
Sintaknya adalah :
while (kondisi) pernyataan;
pernyataan akan dijalankan selama ekspresi bernilai
true.

Contoh :

//hitungan mundur menggunakan while


//#include<iostream.h>
#include<iostream> //Menggunakan Software DEV C++
Using namespace std //Menggunakan Software DEV C++
int main()
{
int n;
cout<<”Masukkan angka untuk mulai : ”;
cin>>n;
while (n>0)
{
cout << n << “, “;
--n;
}
cout <<”STOP!”;
return 0;
}

Di layar akan tampil :

Masukkan angka untuk mulai : 4


4, 3, 2, 1, STOP!

Algoritma untuk perulangan di atas adalah sebagai berikut :


1. User menginputkan sebuah nilai ke variable n.
2. Pernyataan while akan melakukan pengecekan apakah (n>0) ?.

22
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

Dalam kondisi ini, terdapat 2 kemungkinan :


a. true : lakukan pernyataan (langkah 3)
b. false : lompati pernyataan (lanjutkan ke langkah 5.)
3. Lakukan perintah :
cout << n << “, “;
--n;
(cetak n ke layar, dan turunkan 1 nilai n)
4. Akhiri blok. Kembali lagi ke langkah 2.
5. Lanjutkan program setelah blok while. Cetak STOP! Dan akhiri program.
5.2 Perulangan dengan do…while
Sintaknya :
do pernyataan while (kondisi);
Konsep do…while mirip dengan while. Namun pernyataan akan dijalankan terlebih
dahulu sebelum pengecekan kondisi. Untuk lebih jelasnya, perhatikan contoh berikut:
//sampai penekanan 0
#include<iostream.h>
int main()
{
unsigned long n;
do {
cout << “Masukkan nomor (tekan 0 untuk mengakhiri) : “;
cin>>n;
cout<<”Anda memasukkan angka : ” <<n<<”\n”;
} while (n!=0);
return 0;
}

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

5.3 Perulangan dengan for


Sintaknya :
for (inisialisasi; kondisi; counter) pernyataan;
Pernyataan akan diulangi jika kondisi bernilai true. Sama seperti perulangan dengan
while. Namun for menetapkan inisialisasi dan penaikan berada dalam ( dan ).
Penjelasannya adalah sebagai berikut:
1. Inisialisasi: akan dieksekusi. Biasanya merupakan variable yang akan dipakai
sebagai counter atau pencacah. Bagian ini akan dieksekusi hanya sekali.
2. Kondisi: akan diperiksa, jika bernilai true maka perulangan akan dilanjutkan dan
jika bernilai false maka perulangan akan dilewati.
3. Pernyataan: akan dieksekusi. Biasanya dapat terdiri dari sebuah instruksi atau
blok instruksi yang berada di antara { dan }.
4. Terakhir, apapun perintah dalam counter akan dijalankan dan kemudian
perulangan kembali lagi ke langkah 2.
Contoh :
// hitungan mundur dengan for
#include<iostream.h>
int main()
{
for(int n=10; n>0;n--)
{
cout<<n<<”, “;
}
cout<<”STOP!”;
return 0;
}

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.

5.4 Nested Loops (Perulangan Bertumpuk)


Perulangan bertumpuk secara sederhana dapat diartikan : terdapat satu atau lebih
loop di dalam sebuah loop. Banyaknya tingkatan perulangan, tergantung dari

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>

using namespace std;

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;

// Mengubah elemen ke-1 dan ke-2


A[0] = 12;
A[1] = 25;

// Menampilkan kembali nilai


// yang terdapat pada elemen array
cout<<"Setelah 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;
}

6.3 Mengakses nilai array


Untuk mengakses nilai yang terdapat dalam array, mempergunakan sintak:
nama[index]
Pada contoh di atas, variabel nil memiliki 5 buah elemen yang masing-masing berisi
data. Pengaksesan tiap-tiap elemen data adalah:

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;
}
//

for (n=0; n<4;n++)


{
hasil += nil[n];
cout<<"Hasil ke n "<<n <<"= "<<hasil<<endl;
}
//cout<<"Hasil= "<<hasil;
return 0;
}

Mengisikan nilai ke dalam elemen array


Contoh program:

#include <iostream>
using namespace std;
int main() {
// Mendeklarasikan array A
// dengan 5 buah elemen bertipe int
int A[5];

// Mengisikan nilai ke dalam elemen array


cout<<"Masukkan nilai yang diinginkan"<<endl;
for (int C=0; C<5; C++) {
cout<<"A["<<C<<"] = "; cin>>A[C];
}
cout<<'\n';

29
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

// Menampilkan nilai yang terdapat dalam elemen array


cout<<"Menampilkan nilai yang telah dimasukkan"<<endl;
for (int J=0; J<5; J++) {
cout<<"Nilai yang terdapat pada elemen ke-";
cout<<J+1<<": "<<A[J]<<endl;
}
return 0;
}

6.4 Melakukan Pencarian Pada Elemen Array


Salah satu permasalahan yang sering muncul pada array adalah melakukan
pencarian elemen array
Contoh program yang menunjukkan cara melakukan pencarian nilai dari
sekumpulan data yang bertipe int.
#include <iostream>
using namespace std;
int main() {
// Mendeklarasikan array
// dengan melakukan inisialisasi nilai ke dalamnya
int A[10] = { 12, 24, 14, 25, 10,
13, 21, 20, 15, 18 };
int BIL; // Variabel untuk menampung
// nilai yang akan dicari

// Menampilkan nilai yang terdapat


// pada elemen-elemen array di atas
for (int C=0; C<10; C++) {
cout<<"A["<<C<<"]: "
<<A[C]<<endl;
}
cout<<endl;
// Memasukkan nilai yang akan dicari
cout<<"Masukkan nilai yang akan dicari: ";
cin>>BIL;

// Melakukan pencarian data


for (int J=0; J<10; J++) {
if (A[J] == BIL) {
cout<<"Nilai yang dicari "
<<"terdapat pada indeks ke-"<<J;
break;
}
}
return 0;
}

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
};

// Mendeklarasikan variabel max dan min


// untuk menampung nilai maksimum dan minumum
int max = A[0], min = A[0];

// Menentukan nilai maksimum


for (int C=1; C<10; C++) {
if (A[C] > max) {
max = A[C];
}
}

// Menentukan nilai minimum


for (int c=1; c<10; c++) {
if (A[c] < min) {
min = A[c];
}
}
// Menampilkan nilai maksimum dan minimum
// yang ditemukan dalam array
cout<<"Nilai maksimum : "<<max<<endl;
cout<<"Nilai minimum: "<<min;
return 0;
}

6.5 Array Multi Dimensi


Array multidimensi yaitu array yang terdiri dari 2 dimensi atau 3 dimensi dan
seterusnya. Array multidimensi sering digunakan untuk pemrosesan matriks. Pada
bagian ini, ditunjukkan array berdimensi lebih dari satu, yang sering disebut dengan
array berdimensi dua. Sebagai contoh, sebuah matrik B berukuran 2 x 3 dapat
dideklarasikan sebagai berikut:
Int b[2][3] = {{2,4,1},{5,3,7}}; yang akan menempati lokasi
memori dengan susunan sebagai berikut:

31
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

Contoh program dengan array dua dimensi:

//contoh array dua dimensi


#include <iostream>

using namespace std;

int main() {

// Mendefinisikan tipe data


// yang berupa array dua dimensi
typedef int MATRIK32 [3][2];

// Mendeklarasikan array A sebagai array dua dimensi


MATRIK32 A, B, C;

int j, k; // Mendeklarasikan variabel


// untuk indeks pengulangan

// 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;

// Melakukan penjumlahan A dan B


// dan menyimpan hasilnya ke dalam array C
for (j=0; j<3; j++) {
for (k=0; k<2; k++) {
C[j][k] = A[j][k] + B[j][k];
}

32
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

// Menampilkan hasil penjumlahan


for (j=0; j<3; j++) {
for (k=0; k<2; k++) {
cout<<"C["<<j<<"]["<<k<<"] = "
<<C[j][k]<<endl;
}
}

return 0;
}

Contoh array 3 dimensi


#include <iostream>

using namespace std;

int main() {

// Melakukan inisialisasi nilai


// ke dalam elemen-elemen array dua dimensi
int A[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} };

// Menampilkan nilai yang tersimpan


// dalam elemen array
for (int j=0; j<3; j++) {
for (int k=0; k<3; k++) {
cout<<"A["<<j<<"]["<<k<<"] = "
<<A[j][k]<<endl;
}
cout<<endl;
}

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.

Ukuran maksimum 20 karakter untuk pernyataan di atas, dalam pengisiannya


tidak harus penuh. Contoh, variabel namaku, dapat diisi dengan string “Rachmat” yang
panjangnya 7 karakter , atau dapat digantikan dengan string “Johny” yang memiliki
panjang 5 karakter. Dari contoh tersebut, suatu string dapat menyimpan karakter kurang
dari panjang totalnya. Dan untuk mengakhiri string, di tiap-tiap akhir akan ditambahkan
sebuah karakter null yang dapat ditulis sebagai karakter konstan 0 atau ‘\0’. Contoh
berikut akan memberikan string “Rachmat” dan “Johny” pada variable namaku.
namaku

7.2. Inisialisasi String


Untuk inisialisasi string (pemberian nilai kepada variabel string), dapat dilakukan
dengan beberapa cara :
char namaku[20] = {‘R’,’a’,’c’,’h’,’m’,’a’,’t’,’\0’};
atau
char namaku[20];
namaku[0] = ‘R’;
namaku[1] = ’a’;
namaku[2] = ’c’;

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.

7.3. Fungsi-fungsi Untuk Manipulasi String


Salah satu fungsi yang paling sering digunakan adalah strcpy, yaitu fungsi untuk
mengkopi isi suatu nilai string ke dalam variabel string lainnya. Fungsi strcpy (string
copy) didefinisikan dalam library cstring(file header string.h) dan dipanggil dengan
cara:
strcpy(string1, string2);
dengan cara seperti di atas, maka isi dari string2 akan dikopikan ke dalam string1.
Contoh program
// penggunaan strcpy
#include<iostream.h>
#include<conio.h>
int main()
{
char namaku[20];
strcpy(namaku,”Ayu”);
cout<<namaku;
return 0;
}

Hasil outputnya adalah:


Ayu

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

cout<<”Inputkan data nama : ”;


cin.getline(namaku,20);
cout<<”Nama anda adalah : ”;
cout<<namaku;
return 0;
}

Hasil outputnya adalah:


Inputkan data nama : Ayu
Nama anda adalah : Ayu

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>

using namespace std;

int main() {

long *P;
long X;

P = &X;

X = 10; // Mengisikan nilai 10 ke dalam variabel X

cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai *P : "<<*P<<endl;
cout<<"Nilai P : "<<P<<endl;
cout<<"Nilai &X : "<<&X<<endl;

*P = 200; // Mengisikan nilai 200 ke dalam *P

cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai *P : "<<*P<<endl;
cout<<"Nilai P : "<<P<<endl;
cout<<"Nilai &X : "<<&X<<endl;

return 0;
}

Hasil setelah di run:

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

8.2. Pointer Tanpa Tipe


Pada sub bab 7.1 kita telah mengetahui bahwa pointer harus diisikan dengan
alamat dari variabel yang bertipe sama dengan tipe pointer. Ada cara khusus untuk
membuat pointer yang kita deklarasikan dapat menunjuk ke semua tipe data yaitu
dengan mendeklarasikan pointer tersebut sebagai pointer tanpa tipe. Pointer semacam
ini sering dinamakan dengan void pointer.
Bentuk umum deklarasi pointer tanpa tipe adalah sbb:
void *nama_pointer
Contoh kode program :
#include <iostream>

using namespace std;

int main() {
void *P; // Mendeklarasikan pointer P
// sebagai pointer tanpa tipe

// Mendeklarasikan variabel X, Y dan Z


// dengan tipe berbeda
int X;
long Y;
double Z;

// Memerintahkan P untuk menunjuk


// ke alamat dari variabel X
P = &X;
X = 10; // Mengisikan variabel X dengan nilai 10

// Menampilkan hasil
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai P : "<<P<<endl;
cout<<"Nilai &X : "<<&X<<endl;
cout<<endl;

// Memerintahkan P untuk menunjuk


// ke alamat dari variabel Y
P = &Y;
Y = 2000; // Mengisikan variabel Y dengan nilai 2000

// 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

// Memerintahkan P untuk menunjuk


// ke alamat dari variabel Z
P = &Z;
Z = 21.0378; // Mengisikan variabel Z
// dengan nilai 21.0378

// Menampilkan hasil
cout<<"Nilai Z : "<<Z<<endl;
cout<<"Nilai P : "<<P<<endl;
cout<<"Nilai &Z : "<<&Z<<endl;

return 0;
}

Hasil setelah di run adalah:


Nilai X : 10
Nilai P : 0x22fef8
Nilai &X : 0x22fef8

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

Contoh kode program:


#include <iostream>
using namespace std;

int main() {

int X; // Mendeklarasikan variabel X

// Membuat alias dari variabel X


// dengan nama AliasX
int& AliasX = X;

// Mengisikan nilai ke dalam variabel X


X = 12;

// Menampilkan nilai
// yang disimpan dalam variabel X dan AliasX
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai AliasX : "<<AliasX<<endl;
cout<<endl;

// Mengisikan nilai ke dalam AliasX


AliasX = 35;

// Menampilkan kembali nilai yang disimpan


// dalam variabel X dan AliasX
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai AliasX : "<<AliasX<<endl;

return 0;
}

Hasil dari program di atas saat run :


Nilai X : 12
Nilai AliasX : 12

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

8.4. Alamat Referensi


Perlu diperhatikan bahwa alias (referensi) dan variabel yang diacu akan menempati
alamat yang sama di memori, karena keduanya bukan merupakan dua buah variabel
yang berbeda melainkan satu variabel yang mempunyai dua nama.
Contoh kode program :
#include <iostream>

using namespace std;


int main() {

int X = 50; // Mendeklarasikan variabel X


// dengan nilai default 50

// Membuat alias dari variabel X


// dengan nama AliasX
int& AliasX = X;

// Menampilkan nilai yang disimpan


// dalam variabel X dan AliasX
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai AliasX : "<<AliasX<<endl;
cout<<endl;

// Menampilkan alamat dari variabel X dan AliasX


cout<<"Alamat X : "<<&X<<endl;
cout<<"Alamat AliasX : "<<&AliasX<<endl;

return 0;
}

Hasil dari program di atas setelah di run :


Nilai X : 50
Nilai AliasX : 50

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.

8.5. Referensi Konstan


Dalam C++ kita dapat mendefinisikan sebuah referensi yang bersifat tetap, artinya
nilai dari referensi tidak dapat diubah. Pertanyaannya apakah kita masih dapat

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>

using namespace std;

int main() {

// Mendeklarasikan varaibel X
// dengan nilai default 5
int X = 5;

// Mendeklarasikan referensi konstan


const int& AliasX = X;

// Menampilkan nilai dari AliasX dan variabel X


cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai AliasX : "<<AliasX<<endl<<endl;

// Mengubah nilai X
X = 12; // BENAR, hal ini diperbolehkan karena X
// tidak bersifat konstan

// Menampilkan kembali nilai


// dari AliasX dan variabel X
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai AliasX : "<<AliasX<<endl<<endl;

// Mengubah nilai AliasX


// AliasX = 25; // SALAH, hal ini tidak diizinkan
// oleh compiler

return 0;
}

Hasil program saat di run:


Nilai X : 5
Nilai AliasX : 5

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.

9.2. Mendefinisikan Fungsi


Dengan mempergunakan fungsi, maka struktur program akan lebih ramping.
Fungsi merupakan sebuah blok instruksi yang dieksekusi dan dipanggil dari bagian lain
tubuh program. Secara umum, bentuk pendefinisian fungsi dalam C++ adalah sebagai
berikut:
Tipe_kembalian nama_fungsi (daftar_parameter){
badan_fungsi
}

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>

int penjumlahan(int a, int b)


{
int r;
r=a+b;
return (r);
}
int main()
{
int z;
z=penjumlahan(5,3);
cout<<"Hasil penjumlahan = " << z;
return 0;
}

Hasil eksekusinya adalah :


Hasil penjumlahan = 8

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.

Scope (Batasan) Variabel


Variabel yang dideklarasikan di dalam tubuh fungsi, hanya dapat diakses oleh
fungsi itu. Dan tidak dapat dipergunakan di luar fungsi. Contoh:
Pada program sebelumnya, variable a dan b atau r tidak dapat digunakan dalam fungsi
main(), sebab variable tersebut merupakan variable lokal dalam fungsi penjumlahan.
Demikian juga halnya dengan variable z tidak dapat dipergunakan dalam fungsi
penjumlahan karena merupakan variable lokal dalam fungsi main(). Selain variable
lokal, terdapat pula variable global yang dapat diakses dari mana saja. Dari dalam
maupun luar tubuh fungsi. Untuk mendeklarasikan variable global, harus dituliskan di
luar fungsi atau blok instruksi.
Contoh lain fungsi: Variabel_global:
#include<iostream.h>
#include<conio.h>
using namespace std;

int kurang(int a, int b)


{
int r;
r=a-b;
return (r);
}
int main()
{

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

9.3. Fungsi Tanpa Nilai Balik (menggunakan void)


C++ tidak mengenal istilah prosedur seperti pada pemrograman pascal. Dalam
bahasa pascal, prosedur didefinisikan sebagai suatu proses yang tidak mengembalikan
nilai. Untuk melakukan hal ini dalam C++, maka kita harus membuat suatu fungsi
dengan tipe void yang berarti tidak memiliki nilai balik (return value).
Bentuk umum dari pembuatan fungsi tanpa nilai balik ini adalah sebagai berikut:
Void nama_fungsi (parameter1, parameter2, ….) {
Statemen_yang_akan_dilakukan
}
Bentuk umum untuk pemanggilan fungsi tanpa nilai balik ini adalah sebagai berikut:
Nama_fungsi (nilai_parameter1, nilai_parameter2, ….);
Kadang-kadang terdapat fungsi yang tanpa memerlukan adanya pengembalian nilai.
Misalkan, sebuah fungsi yang hanya bertugas mencetak kalimat ke layar monitor dan
tanpa memerlukan adanya pertukaran parameter. Dalam kondisi seperti ini, maka
dipergunakan kata kunci void.
Contoh program:
//#include<iostream.h>
#include<iostream>
#include<conio.h>
using namespace std;

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

9.4. Fungsi Dengan Nilai Balik


Berbeda dengan fungsi yang bertipe void, fungsi ini berguna untuk melakukan
suatu proses yang dapat mengembalikan nilai. Dalam membuat fungsi ini kita harus
mendefenisikan tipe data dari nilai yang akan dikembalikan.
Bentuk umum dari pembuatan fungsi yang memiliki nilai balik adalah sebagai
berikut:
Tipe_data nama_fungsi (parameter1, parameter2, ….) {
Statemen_yang_akan_dilakukan;

Return nilai_yang_akan_dikembalikan;
}

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>

using namespace std;

// Membuat fungsi sederhana


// yang mengembalikan tipe string
char* TestFungsiString() {
return (char*) "Ini adalah nilai dari fungsi";
}
// Fungsi utama
int main() {
// Memanggil dan menampilkan hasil fungsi
cout<<TestFungsiString();

return 0;
}

50
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

Contoh kode program:


#include <iostream>

using namespace std;

// Membuat fungsi dengan nilai kembalian


// bertipe double
double TestFungsiBilangan() {
return (3.14 * 2);
}
// Fungsi utama
int main() {
cout<<"Nilai yang terdapat dalam fungsi: ";
cout<<TestFungsiBilangan();

return 0;
}

9.5. Fungsi Dengan Parameter


Fungsi yang dibuat dengan tidak memiliki parameter maka setiap kali
pemanggilan fungsi tersebut hasil yang didapatkan selalu bernilai tetap. Fungsi dengan
parameter memberikan hasil yang bersifat dinamis, tergantung dari nilai parameter yang
dimasukkan.
Terdapat tiga jenis parameter yang dapat dilewatkan pada sebuah fungsi dalam
C++ yaitu:
• Parameter masukan
• Parameter keluaran
• Parameter masukan / keluaran
1. Parameter Masukan
Sesuai dengan namanya, parameter ini akan digunakan sebagai nilai masukan
(input) dalam sebuah fungsi. Nilai tersebut kemudian akan diproses oleh fungsi untuk
menghasilkan sebuah nilai kembalian (return valuae). Berikut ini contoh program yang
didalamnya terdapat sebuah fungsi dengan parameter yang bertipe masukan.
Contoh kode program:
#include <iostream>

using namespace std;

// Membuat fungsi dengan parameter


// bertipe masukan

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() {

/* Mendeklarasikan variabel yang akan digunakan sebagai


nilai parameter pada saat pemanggilan
*/
int Bilangan, HASIL;

cout<<"Masukkan sebuah bilangan bulat: ";


cin>>Bilangan;
HASIL = TambahSatu(Bilangan);
// Menampilkan nilai
// setelah diproses di dalam fungsi
cout<<"Nilai akhir: "<<HASIL;
return 0;
}

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>

using namespace std;

// Parameter X sebagai masukan


// dan parameter hasil sebagai keluaran
// *hasil: deklarasi variabel sebagai pointer
// &hasil alamat dari suatu variabel yg bertipe pointer
void TambahSatu(int X, int *hasil) {
*hasil = X + 1;
}

int main() {

int Bilangan, HASIL;

cout<<"Masukkan sebuah bilangan bulat: ";


cin>>Bilangan;

52
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

// Memanggil fungsi TambahSatu()


TambahSatu(Bilangan, &HASIL);

// 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>

using namespace std;

// Parameter X sebagai masukan


// dan juga sebagai keluaran
void TambahSatu(int *X) {
*X= *X + 1;
}

// Fungsi utama
int main() {

int Bilangan;

cout<<"Masukkan sebuah bilangan bulat: ";


cin>>Bilangan;

// Memanggil fungsi TambahSatu()


TambahSatu(&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

9.6. Melewatkan Parameter Pass-By-Value dan Pass-By-Reference


Terdapat dua metode atau cara yang digunakan untuk melewatkan parameter
kedalam sebuah fungsi yaitu berdasarkan nilai (Pass-By-Value) dan berdasarkan
referensi atau alamatnya (Pass-By-Reference).
1. Melewatkan parameter berdasarkan nilai
Melewatkan nilai parameter kedalam sebuah fungsi untuk digunakan sesuai proses
yang terdapat di dalam fungsi tersebut. Jika melewatkan parameter dengan cara ini
maka nilai yang dihasilkan oleh fungsi tidak akan mempengaruhi nilai yang terdapat
pada program (diluar fungsi tersebut). Hal ini disebabkan karena pada saat pemanggilan
fungsi, compiler hanya akan membuat salinan (copy) dari nilai yang terdapat pada
parameter actual (argument) ke parameter formal (parameter).
Contoh kode program:
#include <iostream>

using namespace std;

// Membuat fungsi dengan melewatkan


// nilai X ke dalamnya
void Kali2(int X) {
X = X * 2;
cout<<"Nilai di dalam fungsi: "<<X <<endl;
}

// Fungsi utama
int main() {
int Bilangan;

cout<<"Masukkan sebuah bilangan bulat: ";


cin>>Bilangan;
cout<<endl;

// Menampilkan nilai awal


cout<<"Nilai awal: "<<Bilangan<<endl;

// Memanggil fungsi Kali2


Kali2(Bilangan);

// Menampilkan nilai akhir


cout<<"Nilai akhir: "<<Bilangan<<endl;

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>

using namespace std;


// Mendefinisikan 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;
cout<<"Bilangan ke-2: "<<Y<<endl;
cout<<endl;
}

// Fungsi utama
int main() {

// Mendeklarasikan variabel
// Bilangan1 dan Bilangan2
int Bilangan1, Bilangan2;

cout<<"Masukkan bilangan pertama: ";


cin>>Bilangan1;
cout<<"Masukkan bilangan kedua : ";
cin>>Bilangan2;

// Menampilkan nilai awal


cout<<"Keadaan awal"<<endl;
cout<<"Bilangan ke-1: "<<Bilangan1<<endl;
cout<<"Bilangan ke-2: "<<Bilangan2<<endl;
cout<<endl;

// Memanggil fungsi TukarBilangan()


TukarBilangan(Bilangan1, Bilangan2);

55
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

// Menampilkan nilai akhir


// setelah pemanggilan fungsi TukarBilangan()
cout<<"Keadaan akhir"<<endl;
cout<<"Bilangan ke-1: "<<Bilangan1<<endl;
cout<<"Bilangan ke-2: "<<Bilangan2;

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>

using namespace std;

// 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

cout<<"Masukkan sebuah bilangan bulat: ";


cin>>Bilangan;
cout<<endl;

// Menampilkan nilai awal


cout<<"Nilai awal: "<<Bilangan<<endl;

// Memanggil fungsi Kali2()


Kali2(Bilangan);

// Menampilkan nilai akhir


cout<<"Nilai akhir: "<<Bilangan<<endl;

return 0;
}

Berdasarkan hasil dari program (saat di Run):

Masukkan sebuah bilangan bulat: 10

Nilai awal: 10
Nilai di dalam fungsi: 20
Nilai akhir: 20

Variabel Mengapa demikian ? karena x bukanlah sebuah variabel melainkan sebuah


alias (nama lain) atau reference dari variabel Bilangan. Sehingga alias x dan variabel
Bilangan tentu mempunyai alamat yang sama karena keduanya sebenarnya merupakan
objek yang sama. Dengan demikian, jika nilai x berubah, maka nilai yang terdapat pada
Bilangan akan ikut berubah.
Contoh kode program:
#include <iostream>

using namespace std;

// 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

cout<<"Bilangan ke-2: "<<Y<<endl;


cout<<endl;
}

// Fungsi utama
int main() {

// Mendeklarasikan variabel
// Bilangan1 dan Bilangan2
int Bilangan1, Bilangan2;

cout<<"Masukkan bilangan pertama: ";


cin>>Bilangan1;
cout<<"Masukkan bilangan kedua : ";
cin>>Bilangan2;
cout<<endl;

// Menampilkan nilai awal


cout<<"Keadaan awal"<<endl;
cout<<"Bilangan ke-1: "<<Bilangan1<<endl;
cout<<"Bilangan ke-2: "<<Bilangan2<<endl;
cout<<endl;

// Memanggil fungsi TukarBilangan()


TukarBilangan(Bilangan1, Bilangan2);

// Menampilkan nilai akhir


// setelah pemanggilan fungsi TukarBilangan()
cout<<"Keadaan akhir"<<endl;
cout<<"Bilangan ke-1: "<<Bilangan1<<endl;
cout<<"Bilangan ke-2: "<<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>

using namespace std;

// Mendefinisikan fungsi
// dengan parameter bertipe pointer

58
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

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;
cout<<"Bilangan ke-2: "<<*Y<<endl;
cout<<endl;
}

// Fungsi utama
int main() {

// Mendeklarasikan variabel
// Bilangan1 dan Bilangan2
int Bilangan1, Bilangan2;

cout<<"Masukkan bilangan pertama: ";


cin>>Bilangan1;
cout<<"Masukkan bilangan kedua : ";
cin>>Bilangan2;
cout<<endl;

// Menampilkan nilai awal


cout<<"Keadaan awal"<<endl;
cout<<"Bilangan ke-1: "<<Bilangan1<<endl;
cout<<"Bilangan ke-2: "<<Bilangan2<<endl;
cout<<endl;

// Memanggil fungsi TukarBilangan


// Ingat, gunakan operator &
TukarBilangan(&Bilangan1, &Bilangan2);

// Menampilkan nilai akhir setelah pemanggilan fungsi


tukar
cout<<"Keadaan akhir"<<endl;
cout<<"Bilangan ke-1: "<<Bilangan1<<endl;
cout<<"Bilangan ke-2: "<<Bilangan2;

return 0;
}

59
Modul: Algoritma & Pemrograman II
Dr. Mingsep Rante Sampebua, S.T., M.T

DAFTAR PUSTAKA

Abdul Kadir dan Heriyanto, 2005, Algoritma PemrogramanMenggunakan C++,


Yogyakarta: Penerbit Andi.

Antony Pranata, 2005, Algoritma dan Pemrograman, Graha Ilmu, Yogyakarta.

Budi Raharjo, 2014, Pemrograman C++. Informatika Bandung

Ellis Horowitz, Sartaj Sahni, Sanguthevar Rajasekaran, 1998, Computer Algorithms /


C++, Computer Science Press.

FathulWahid, 2004, Dasar-Dasar Algoritma & Pemrograman, PenerbitAndi,


Yogyakarta.

Munir, R dan Lidya, L, 2001, Algoritma dan Pemrograman Dalam Bahasa Pascal dan
C, Informatika Bandung.

60

Anda mungkin juga menyukai