Modul Pemrogram Komputer
Modul Pemrogram Komputer
MODUL PRAKTIKUM
PEMROGRAMAN KOMPUTER
TM 2202
Disusun oleh:
1. Nama : Hafid Suharyadi, M.Sc.
NIP : 19850518 201801 1 002
Modul Praktikum ini disusun sebagai bahan ajar Mata Kuliah Pemrograman Komputer di
Teknik Mesin Kilang PEM Akamigas. Saat ini Modul dalam tahap pengembangan dan
perbaikan. Segala saran dan kritik dapat disampaikan ke hafi[email protected].
Edisi: Revisi 02
ii
DAFTAR ISI
Halaman
HALAMAN JUDUL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
KATA PENGANTAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
DAFTAR ISI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
DAFTAR TABEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
DAFTAR GAMBAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
I PENGANTAR BAHASA C++ . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Tujuan Pembelajaran dan Pokok Bahasan . . . . . . . . . . . . . . . . . 1
1.2 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Komputer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Bahasa Pemrograman . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4.1 Bahasa Mesin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.2 Bahasa Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.3 Bahasa tingkat Tinggi . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Sekilas tentang C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Kebutuhan Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.7 Struktur Dasar Bahasa C++ . . . . . . . . . . . . . . . . . . . . . . . . 7
1.8 Siklus Pengembangan Program C++ . . . . . . . . . . . . . . . . . . . . 9
1.9 Gaya Pemrograman dan Dokumentasi . . . . . . . . . . . . . . . . . . . 11
1.10 Kesalahan Pemrograman . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.10.1 Syntax Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.10.2 Runtime Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.10.3 Logic Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.11 Tugas Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
II PEMROGRAMAN DASAR . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1 Tujuan Pembelajaran dan Pokok Bahasan . . . . . . . . . . . . . . . . . 16
iii
DAFTAR ISI iv
2.2 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3 Pembacaan Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5 Variabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6 Pernyataan dan Ekspresi Penugasan . . . . . . . . . . . . . . . . . . . . 24
2.7 Konstanta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.8 Evaluasi Ekspresi dan Prioritas Operator . . . . . . . . . . . . . . . . . . 26
2.9 Operator Penugasan Bertambah . . . . . . . . . . . . . . . . . . . . . . 27
2.10 Operator Penjumlahan dan Pengurangan . . . . . . . . . . . . . . . . . . 27
2.11 Tugas Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
III PERNYATAAN BERSYARAT . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1 Tujuan Pembelajaran dan Pokok Bahasan . . . . . . . . . . . . . . . . . 30
3.2 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3 Tipe Data bool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4 Pernyataan if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.5 Pernyataan if-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.6 Pernyataan nested if . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.7 Pernyataan switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.8 Produksi Bilangan Acak . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.9 Perhitungan Pangkat dan Akar Pangkat 2 . . . . . . . . . . . . . . . . . 41
3.10 Operator Logika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.11 Prioritas dan Asosiasi Operator . . . . . . . . . . . . . . . . . . . . . . . 43
3.12 Tugas Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
IV FUNGSI MATEMATIKA, KARAKTER, DAN STRING . . . . . . . . . . . . 48
4.1 Tujuan Pembelajaran dan Pokok Bahasan . . . . . . . . . . . . . . . . . 48
4.2 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3 Fungsi Matematika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3.1 Fungsi Trigonometri . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3.2 Fungsi Eksponen . . . . . . . . . . . . . . . . . . . . . . . . . . 50
DAFTAR ISI v
Halaman
vii
DAFTAR GAMBAR
Halaman
1.1 Sebuah komputer terdiri dari CPU, memori, perangkat penyimpanan, perangkat
input, perangkat output, dan perangkat komunikasi . . . . . . . . . . . . 3
1.2 Proses pengembangan program C++ terdiri dari membuat/memodifikasi
source code, compiling, linking, dan executing program. . . . . . . . . . . 10
viii
DAFTAR GAMBAR ix
1.2 Pendahuluan
Pemrograman komputer secara umum berarti membuat dan/atau mengembangkan sebuah
perangkat lunak (software) yang kemudian disebut sebagai sebuah program. Perangkat
lunak tersebut berisi sejumlah perintah (instructions) yang memerintahkan komputer atau
mesin yang terkomputerisasi untuk melakukan sesuatu.
1
MODUL I. PENGANTAR BAHASA C++ 2
Penggunaan perangkat lunak ada di sekitar Anda. Tentu saja, Anda mudah mene-
mukan dan menggunakan perangkat lunak pada komputer pribadi. Selain itu, perangkat
lunak juga dapat ditemukan dan digunakan dalam menjalankan pesawat terbang, mobil,
ponsel, dan pemanggang roti. Di komputer pribadi, Anda menggunakan pengolah kata
untuk menulis dokumen, Web browser untuk menjelajahi Internet, dan surel (email) un-
tuk mengirim pesan. Program-program ini adalah contoh perangkat lunak. Pengembang
perangkat lunak membuat sebuah perangkat lunak dengan bantuan alat yang kuat yang
disebut bahasa pemrograman (programming languages).
Setiap bahasa diciptakan untuk tujuan tertentu untuk membangun kekuatan dari ba-
hasa sebelumnya, misalnya, atau untuk memberi programmer satu set alat baru dan khusus.
Saat ini tersedia banyak bahasa pemrograman, dan akan alami bagi Anda untuk bertanya
mana yang terbaik. Namun, sebenarnya tidak ada bahasa "terbaik". Masing-masing ba-
hasa memiliki kelebihan dan kekurangan. Programmer berpengalaman tahu bahwa satu
bahasa mungkin berfungsi dengan baik dalam beberapa situasi, dan bahasa lain mungkin
lebih tepat pada situasi yang berbeda.
1.3 Komputer
Komputer mencakup perangkat keras dan perangkat lunak. Secara umum, perangkat keras
terdiri dari elemen fisik dari komputer, dan perangkat lunak memberikan instruksi yang
tidak terlihat dalam mengendalikan perangkat keras dan membuatnya melakukan tugas
tertentu. Mengetahui perangkat keras komputer tidak krusial untuk belajar bahasa pemro-
graman, tetapi ini dapat membantu Anda memahami efek dari suatu program instruksi ada
di komputer dan komponennya. Secara singkat, sebuah komputer terdiri dari komponen
perangkat keras utama sebagai berikut (lihat Gambar 1.1):
1. Central processing unit (CPU).
2. Memori (main memory).
3. Perangkat penyimpanan (seperti disk dan CD).
4. Perangkat input (seperti mouse dan keyboard).
5. Perangkat output (seperti monitor dan printer).
MODUL I. PENGANTAR BAHASA C++ 3
Gambar 1.1: Sebuah komputer terdiri dari CPU, memori, perangkat penyimpanan,
perangkat input, perangkat output, dan perangkat komunikasi
1101101010011010
add 2, 3, result
result = 2 + 3;
Ada banyak bahasa pemrograman tingkat tinggi, dan masing-masing dirancang untuk
tujuan tertentu. Tabel 1.1 mencantumkan beberapa bahasa yang populer. Program yang
ditulis dalam bahasa tingkat tinggi disebut kode sumber (source code). Karena komputer
tidak dapat menjalankan source code, sebuah source code harus diterjemahkan ke dalam
kode mesin untuk dieksekusi. Terjemahan dapat dilakukan dengan menggunakan alat
pemrograman lain yang disebut interpreter atau compiler.
Interpreter membaca satu pernyataan dari source code, menerjemahkannya ke kode
mesin atau kode mesin virtual, dan kemudian segera mengeksekusi, seperti yang ditun-
jukkan pada Gambar 1.9a. Perhatikan bahwa pernyataan dari kode sumber dapat diter-
jemahkan ke dalam beberapa instruksi mesin. Kompiler menerjemahkan seluruh instruksi
pada source code ke dalam bentuk bahasa mesin dan selanjutnya bahasa mesin dieksekusi.
Hello world !
return 0;
ditempatkan di akhir setiap fungsi utama untuk keluar dari program. Nilai 0 menunjukkan
bahwa program telah diakhiri dengan jalan keluar yang berhasil. Beberapa kompiler akan
berfungsi dengan baik jika pernyataan ini dihilangkan; Namun, kompiler lain tidak akan
melakukannya. Pada praktik, langkah yang baik untuk selalu menyertakan pernyataan ini
agar program Anda bekerja dengan semua kompiler C++.
Pernyataan di baris 1, 2, 3, 4, 6, 8, 9, dan 10 (berwarna hijau) adalah komentar yang
mendokumentasikan apa program itu dan bagaimana program itu dibangun. Komentar
membantu programmer untuk berkomunikasi dan memahami program. Komentar akan
diabaikan oleh kompiler. Dalam C ++, komentar didahului oleh dua garis miring // pada
MODUL I. PENGANTAR BAHASA C++ 9
baris, disebut komentar baris, atau diapit antara /* dan */ pada satu atau beberapa baris,
disebut komentar blok atau komentar paragraf.
Kata kunci atau keywords memiliki arti khusus untuk kompiler dan tidak dapat digu-
nakan dalam program untuk tujuan lain. Ada empat kata kunci dalam program ini: using,
namespace, int, dan return.
Tabel 1.1 memberikan penjelasan singkat tentang beberapa karakter khusus yang ser-
ing digunakan pada setiap program C++.
Karakter Uraian
# digunakan dalam #include untuk menunjukkan preprocessor directive
<> lampirkan nama library saat digunakan dengan #include
() digunakan pada fungsi, misalnya main()
{} menandakan sebuah blok dari sebuah pernyataan atau beberapa perny-
ataan
// mengawali sebuah komentar
« operator penyisipan stream, output ke console
" " membungkus sebuah string
; tanda akhir dari sebuah pernyataan
Anda dapat mengembangkan program C++ dari jendela perintah atau dari sebuah
IDE (integrated developed environment). IDE adalah perangkat lunak yang menyediakan
lingkungan pengembangan terintegrasi untuk mengembangkan program C++. Melakukan
editing, compiling, debugging, dan bantuan online terintegrasi dalam satu user interface.
MODUL I. PENGANTAR BAHASA C++ 11
Contoh populer dari IDE adalah Microsoft Visual C++, Dev-C++, Code::Blocks, Eclipse,
dan NetBeans.
Secara umum, syntax error mudah ditemukan dan mudah dikoreksi, karena kompiler
menunjukkan di mana letak kesalahan itu dan mengapa mereka salah.
6 int j = 0;
7
8 cout << i / j << endl;
9
10 return 0;
11 }
Runtime error tidak sulit ditemukan karena alasan dan lokasi kesalahan ditampilkan
pada konsol ketika program dibatalkan.
Anda akan mendapatkan nilai yang salah, 67◦ F. Seharusnya 95◦ F. Logic error semacam
ini cukup sulit untuk diidentifikasi langsung.
(a) Apa perbedaan antara bahasa pemrograman tingkat rendah dengan bahasa pem-
rograman tingkat tinggi? Sebutkan contoh dari jenis masing-masing bahasa pem-
rograman!
(b) Apa perbedaan antara interpreter dengan compiler?
(c) Apa yang dimaksud dengan kode sumber?
3. Buat matriks timeline pengembangan bahasa pemrograman C++ yang dimulai dari
bahasa pemrograman basic (BCPL)!
4. Tulislah sebuah program sederhana tentang perhitungan luas atau volume sebuah benda!
Jelaskan setiap pernyataan dengan menggunakan komentar!
5. Jawab pertanyaan-pertanyaan berikut ini:
(a) Apakah penulisan program di C++ bersifat case sensitive? Jelaskan!
(b) Apa nama ekstensi source file C++ dan apa nama ekstensi executable file C++
di OS Windows?
(c) Apa itu komentar? Tuliskan contoh penulisan komentar di C++?
6. Misalkan Anda menulis program untuk menghitung keliling persegi panjang dan Anda
keliru menulis program Anda sehingga menghitung luas persegi panjang. Termasuk
kesalahan tipe apa ini? Jelaskan!
7. Kenapa program ini tidak berhasil dikompilasi? Apa yang harus dilakukan untuk
memperbaikinya?
8. Kenapa program ini tidak menghasilkan output apapun? Apa yang harus dilakukan
untuk memperbaikinya?
MODUL I. PENGANTAR BAHASA C++ 15
16
MODUL II. PEMROGRAMAN DASAR 17
Verlag, 1994.
2. Delores M. Etter and Jeanine A. Ingber. Engineering Problem Solving With C++ (4th
Edition). Boston:Pearson, 2016.
2.2 Pendahuluan
Pada Modul I, Anda belajar cara membuat, menyusun, dan menjalankan program seder-
hana. Sekarang Anda akan belajar bagaimana menyelesaikan masalah dengan menulis
sebuah program sederhana. Melalui masalah ini, Anda akan belajar dasar pemrograman
menggunakan tipe data, variabel, konstanta, operator, ekspresi, dan input-output. Selain
itu, anda akan mempelajari langkah-langkah dasar yang diperlukan ketika menganalisis
masalah, merancang solusi, dan mengimplementasikan solusi dengan membuat sebuah
program.
Menulis sebuah program melibatkan merancang algoritma dan menerjemahkannya ke
dalam instruksi pemrograman, atau kode. Algoritma menjelaskan bagaimana masalah
diselesaikan dengan menyusun daftar tindakan yang harus diambil dan urutan pelak-
sanaannya. Algoritma dapat membantu programmer merencanakan program sebelum
menulisnya dalam bahasa pemrograman. Algoritma bisa dijelaskan dalam bahasa alami
atau pseudocode (bahasa alami dicampur dengan beberapa kode pemrograman). Algo-
ritma untuk menghitung luas (area) lingkaran dapat dijelaskan sebagai berikut:
1. Baca radius lingkaran.
2. Hitung area lingkaran dengan rumus berikut.
3. Tampilkan hasilnya.
Kode pemrograman C++ untuk menghitung area lingkaran akan muncul seperti berikut
ini.
int main ()
{
MODUL II. PEMROGRAMAN DASAR 18
Untuk menyimpan radius, program perlu mendeklarasikan simbol yang disebut vari-
abel (variable). Variabel mewakili nilai yang disimpan dalam memori komputer. Agar
kompiler mengetahui apa itu radius dan area, Anda harus menentukan tipe datanya,
misalnya tipe bilangan bulat (integer), desimal (floating-point), karakter (char), atau Boolean.
Di dalam C++, tipe-tipe ini dikenal sebagai tipe data dasar (primitive/fundamental data
types).
Langkah berikutnya, nyatakan radius dan area lingkaran sebagai angka dengan tipe
data floating-point dengan presisi ganda atau double. Programnya bisa diperluas sebagai
berikut.
int main ()
{
double radius ;
double area;
// Step 1: Read in radius
// Step 2: Compute area
// Step 3: Display the area
}
Program mendeklarasikan radius dan area sebagai variabel. Tipe data double me-
nunjukkan radius dan area tersebut adalah nilai dengan tipe data double yang disimpan
di memori komputer.
Langkah pertama adalah meminta pengguna untuk menetapkan radius. Selanjutnya,
adalah menghitung are dengan menetapkan hasil dan menyimpan dari perkalian radius,
radius dan π ke dalam area. Pada langkah terakhir, program akan menampilkan nilai
area pada konsol (console) dengan menggunakan cout « area (Lihat Listing 2.1).
Variabel seperti radius dan area berhubungan dengan lokasi memori. Setiap vari-
abel memiliki nama, tipe (type), ukuran (size), dan nilai (value). Baris 6 menyatakan
bahwa radius disimpan dengan tipe data double. Nilai variabelnya tidak ditentukan
sampai Anda menetapkan nilai. Baris 9 menetapkan 20 ke dalam radius. Demikian
pula, baris 7 mendeklarasikan variabel area dengan tipe data double dan baris 11 mem-
berikan nilai ke area.
Baris 16 mengirimkan string "Area is" ke konsol output. Ini juga mengirimkan nilai
area ke konsol output. Perhatikan bahwa tanda kutip tidak ditempatkan di sekitar area.
Jika ya, string "area" akan dikirim ke konsol output.
Enter a radius : 23
The area is 1661.9
pernyataan berikut membaca tiga nilai menjadi variabel x1, x2, dan x3.
2.4 Identifiers
Seperti yang Anda lihat pada Listing 2.3, main, number1, number2, number3, dan seba-
gainya adalah nama-nama hal yang dikelompokkan sebagai Identifiers.
Semua Identifiers harus memenuhi aturan berikut ini.
• Identifiers adalah urutan karakter yang terdiri dari huruf, angka, dan garis bawah.
• Identifiers harus dimulai dengan huruf atau garis bawah; tidak dapat dimulai dengan
angka.
• Identifiers harus berbeda dengan Keywords.
• Identifiers bisa berapa pun panjang karakternya, tetapi compiler C++ dapat menerap-
kan batasan jumlah karakter, yaitu maksimal 32 karakter atau kurang.
Karena C++ adalah case-sensitive, nama variabel untuk area, Area, danAREA adalah
Identifiers yang berbeda. Identifiers memberi nama variabel, konstanta, fungsi, dan label.
Identifiers dibuat deskriptif agar mudah dibaca. Hindari menggunakan singkatan untuk
Identifiers, misalnya, numberOfStudents lebih baik daripada numStuds, numOfStuds,
atau numOfStudents.
2.5 Variabel
Variabel (variables) digunakan untuk menyimpan nilai yang akan digunakan dalam suatu
program. Mereka disebut variabel karena nilainya dapat diubah.
Pada Listing 2.2, radius dan area adalah variabel dengan tipe double. Anda dapat
menetapkan nilai numerik apa pun ke radius dan area, dan nilai-nilai radius dan area
dapat diatur kembali. Pada contoh di Listing, radius awalnya bernilai 1.0 dan kemu-
dian diubah menjadi 2.0. Sehingga nilai area diatur ke 3.14159 dan kemudian diubah
kembali menjadi 12.56636.
datatype variableName ;
Jika variabel dari tipe data yang sama, mereka dapat dideklarasikan bersama, sebagai
berikut:
Berikut ini adalah contoh deklarasi variabel dengan tipe data yang sama.
Variabel sering memiliki nilai awal (initialization). Anda dapat mendeklarasikan vari-
abel dan menginisialisasi dalam satu langkah.
int count = 1;
int count ;
count = 1;
Anda juga bisa menyederhanakan deklarasi dan inisialisasi variabel dari tipe yang
sama secara bersamaan.
int i = 1, j = 2;
MODUL II. PEMROGRAMAN DASAR 24
Setiap variabel memiliki cakupan (scope). Ruang lingkup suatu variabel adalah bagian
dari program di mana variabel dapat dirujuk.
variable = expression ;
Ekspresi mewakili perhitungan yang melibatkan nilai, variabel, dan operator yang,
jika digabungkan, mengevaluasi suatu nilai.
Anda bisa menggunakan variabel dalam ekspresi. Variabel juga dapat digunakan di
kedua sisi = operator.
x = x + 1;
1 = x; // Wrong
Dalam C++, pernyataan penugasan pada dasarnya adalah ekspresi yang mengevaluasi
nilai yang akan diberikan ke variabel di sisi kiri operator penugasan. Karena alasan ini,
pernyataan penugasan juga dikenal sebagai ungkapan penugasan (assignment expression).
Misalnya berikut ini pernyataan itu benar.
cout << x = 1;
MODUL II. PEMROGRAMAN DASAR 25
x = 1;
cout << x;
Jika sebuah nilai yang sama diberikan kepada beberapa variabel, Anda dapat meng-
gunakan sintaks berikut ini.
i = j = k = 1;
k = 1;
j = k;
i = j;
2.7 Konstanta
Nilai variabel dapat berubah selama eksekusi suatu program, tetapi konstanta dapat mewak-
ili data permanen yang tidak pernah berubah. Pada Listing 2.2, Anda tidak ingin terus
mengetik 3.14159. Sebagai gantinya, Anda dapat mendeklarasikan konstanta untuk π
(lihat Listing 2.4). Berikut ini sintaks untuk mendeklarasikan konstanta.
Konstanta harus dideklarasikan dan diinisialisasi dalam pernyataan yang sama. const
adalah kata kunci C++ untuk mendeklarasikan konstanta.
3 + 4 * 4 + 5 * (4 + 3) - 1
3 + 4 * 4 + 5 * 7 - 1
3 + 16 + 5 * 7 - 1
3 + 16 + 35 - 1
19 + 35 - 1
MODUL II. PEMROGRAMAN DASAR 27
54 - 1
53
count = count + 1;
count += 8;
int i = 3, j = 3;
i++; // i becomes 4
j--; // j becomes 2
i++ dan i−− masing-masing disebut sebagai postincrement dan postdecrement karena
operator ++ dan −− ditempatkan setelah variabel.
Operator-operator ini juga dapat ditempatkan sebelum variabel. Sebagai contoh,
MODUL II. PEMROGRAMAN DASAR 28
int i = 3, j = 3;
++i; // i becomes 4
--j; // j becomes 2
int i, j, k,
(b) Poin b
(c) Poin c
DOUBLE D1 , D2 , D3;
(d) Poin d
float a1(a2);
(e) Poin e
int n, m_m;
3. Tulis program untuk menghitung area A dari permukaan bola dengan radius r.
MODUL II. PEMROGRAMAN DASAR 29
4. Tulis program yang membaca angka positif dan kemudian hitung dan cetak hasil
pangkat 3 dari angka tersebut!
5. Tulis program yang membaca angka dalam satuan feet, ubah menjadi meter, dan
tampilkan hasilnya. 1 feet adalah 0,305 meter. Berikut ini contoh proses.
Tulis program yang meminta pengguna untuk memasukkan kecepatan awal v0 dalam
m/s, kecepatan akhir v1 dalam m/s, dan rentang waktu t dalam s, dan menampilkan
percepatan rata-rata. Berikut ini contoh proses.
7. Tulis program yang menghitung energi yang dibutuhkan untuk memanaskan air dari
suhu awal ke suhu akhir. Program Anda harus mendorong pengguna untuk mema-
sukkan jumlah air dalam kilogram dan suhu awal dan akhir air. Rumus untuk menghi-
tung energi adalah:
di mana M adalah berat air dalam kg, suhu dalam derajat ◦ C, dan energi Q diukur
dalam J. Berikut ini contoh proses.
8. Tulis program untuk hitung dan cetak berat molekul (Molecular Weight) dari senyawa
Oktana (C8 H18 )
MODUL III
PERNYATAAN BERSYARAT
31
MODUL III. PERNYATAAN BERSYARAT 32
3.2 Pendahuluan
Jika Anda memasukkan nilai radius dengan bilangan negatif di Listing 2.2, program
menampilkan hasil yang tidak valid. Jika radius bernilai negatif, Anda ingin program
tersebut tidak melakukan perhitungan area. Untuk mengatasi hal tersebut, semua bahasa
pemrograman tingkat tinggi termasuk C++ menyediakan pernyataan bersyarat: perny-
ataan yang memungkinkan Anda memilih atau menyeleksi tindakan dengan beberapa al-
ternatif.
Adapun jenis-jenis pernyataan bersyarat di dalam C++ adalah sebagai berikut ini.
1. Pernyataan if
2. Pernyataan if-else
3. Pernyataan if bersarang (nested if)
4. Pernyataan switch
Semua pernyataan bersyarat tersebut menggunakan kondisi dengan ekspresi Boolean.
Bila Anda membandingkan dua nilai, misalnya apakah radius lebih besar dari 0,
sama dengan 0, atau kurang dari 0, C++ menyediakan 6 (enam) operator, ditunjukkan
pada Tabel 3.1, yang dapat digunakan dalam ekspresi Boolean. true dan false adalah
Keywords dan tidak dapat digunakan sebagai Identifiers dalam program Anda. C++
menggunakan 1 untuk mewakili true dan 0 untuk false. Jika Anda menampilkan nilai
bool ke konsol, 1 ditampilkan jika nilainya true dan 0 jika false.
3.4 Pernyataan if
Pernyataan if mengeksekusi tindakan jika dan hanya jika syaratnya benar (condition
= true). Syntax spernyataan if adalah sebagai berikut.
if( condition )
{
action
}
Diagram alir (flowchart) pada Gambar 3.1 menggambarkan bagaimana C++ mengek-
sekusi sintaks pernyataan if. Diagram alir adalah sebuah jenis diagram yang menggam-
barkan algoritma dan proses yang menunjukkan langkah-langkah dalam simbol grafis
dengan berbagai bentuk dan urutannya ditandai dengan panah. Operasi proses ditun-
jukkan dalam bentuk-bentuk simbol grafis dan panah yang menghubungkannya mewakili
aliran kontrol. Bentuk belah ketupat (diamond) menunjukkan kondisi yang disyaratkan
atau ekspresi Boolean dan kotak persegi panjang mewakili pernyataan yang akan diek-
sekusi bila kondisinya bersifat true.
Anda dapat menggunakan pernyataan bersyarat berikut untuk mengganti baris 8-12
pada Listing 2.2:
if ( radius < 0)
{
cout << " Incorrect input " << endl;
MODUL III. PERNYATAAN BERSYARAT 34
}
else
{
area = radius * radius * PI;
cout << "The area for the circle of radius " << radius
<< " is " << area << endl;
}
Jika nilai radius lebih besar dari atau sama dengan 0, maka area tersebut dihitung dan
hasilnya ditampilkan; jika sebaliknya, nilai radius lebih kecil dari 0, konsol output akan
menampilkan pernyataan berupa Incorrect input.
Ekspresi Boolean wajib dinyatakan di dalam tanda kurung.
Kurung kurawal dapat dihilangkan jika hanya satu pernyataan yang dilampirkan sete-
lah ekspresi Boolean.
if (i > 0)
cout << "i is positive " << endl;
Listing 3.1 berisi program yang meminta Anda untuk memasukkan bilangan bulat.
Jika angkanya adalah kelipatan 5, tampilkan HiFive. Jika angkanya genap, tampilkan
HiEven.
mana bila pernyataan if bernilai false, maka pernyataan if-else dapat digunakan.
Dengan kata lain, pernyataan if-else mengeksekusi sebuah pernyataan jika ekspresi
Boolean bernilai true; jika tidak, pernyataan lainnya dari ekspresi yang bernilaifalse
yang akan dieksekusi. Berikut ini adalah syntax untuk pernyataan if-else.
if ( condition )
{
statement (s)-for -the -true -case;
}
else
{
statement (s)-for -the -false -case;
}
Jika ekspresi boolean bernilai true, pernyataan untuk true-case yang dieksekusi; jika
tidak, pernyataan untuk false-case yang dieksekusi. Perhtikan contoh kode berikut ini.
if ( radius >= 0)
{// true -case statements
MODUL III. PERNYATAAN BERSYARAT 37
Jika radius >= 0 bernilai benar, area dihitung dan ditampilkan; jika salah, pesan "Negative
radius" ditampilkan.
Seperti yang sudah dijelaskan sebelumnya, penggunaan kurung kurawal dapat dia-
baikan jika hanya satu pernyataan yang dilampirkan. Perhatikan contoh kode berikut ini.
if ( number % 2 == 0)
cout << number << " is even.";
else
cout << number << " is odd.";
if (i > k)
{
if (j > k)
cout << "i and j are greater than k" << endl;
}
else
cout << "i is less than or equal to k" << endl;
Pernyataan ini memeriksa untuk melihat apakah statusnya cocok dengan nilai label_1,
MODUL III. PERNYATAAN BERSYARAT 39
label_2, atau sampai dengan label_n, sesuai urutan. Jika ada kecocokan, pernyataan
terkait akan dieksekusi. Jika tidak, pernyataan setelah default ditampilkan. Berikut ini
syntax lengkap untuk pernyataan switch:
Algoritma fungsi rand() menggunakan nilai yang disebut seed untuk mengontrol cara
menghasilkan angka-angka. Secara default, nilai seed adalah 1.
Jika Anda mengubah seed ke nilai yang berbeda, urutan angka acak akan berbeda.
Untuk mengganti seed, gunakan srand(seed) pada file header cstdlib. Perhatikan
contoh kode berikut ini.
16 return 0;
17 }
Praktisnya, Anda dapat menggunakan hasil dari panggilan time(0) sebagai seed.
Fungsi time() pada header ctime mengembalikan jumlah detik sejak jam 00:00, 1 Jan-
uari 1970 UTC. Nilai seed berubah seiring waktu. Jadi setiap kali kita menjalankan
program, satu set bilangan acak baru akan dihasilkan.
Seed = 1588897829
Random number = 22886
rand () % 10
MODUL III. PERNYATAAN BERSYARAT 42
0.0939144
Demikian juga, untuk menghitung akar pangkat 2 dari sebuah bilangan, C++ menye-
diakan sqrt(x) yang menghitung akar pangkat 2 dari x. Seperti halnya pow(x,y), fungsi
sqrt(x) didefinisikan di file header cmath. Perhatikan contoh kode berikut ini.
8
9 cout << sqrt(x);
10
11 return 0;
12 }
12
Operand !Operand
true false
false true
(d) Operator logika && dan || memiliki tingkat prioritas yang sama. T/F
(e) Keyword else selalu dikaitkan dengan pernyataan if terdekat kecuali tanda ku-
rung digunakan untuk mendefinisikan blok pernyataan. T/F
2. Dengan definisi variabel berikut, apa hasil pengujian dari masing-masing kondisi
berikut? Tandai setiap hasil dengan T (untuk True atau 1) atau F (untuk False atau
0).
(a) if (x > 0)
(b) if (x > y)
(c) (x == 0)
(d) if (x == z)
(e) if (x + y > z)
(f) if (x / y == z)
(g) if (x > z / y)
(h) if (x > 0 && z < 10)
(i) if (x > 0 && z >= 10)
(j) if (x > 0 || z < 10)
(k) if (x > 0 || z >= 10)
(l) if (x)
(m) if (!x)
3. Anda memiliki satu set data pengukuran suhu dalam rentang waktu tertentu yang di-
ambil dari alat penukar kalor (HE) tipe A dan tipe B. Data-data ini diplot seperti pada
Gambar 3.4.
Saat ini Anda ingin menginterpolasi suhu sedemikian sehingga tepat dengan:
(a) nilai 1,4 min untuk HE A (K1),
(b) nilai 2,4 min untuk HE A (K2),
(c) nilai 3,4 min untuk HE A (K3),
(d) nilai 2,5 min untuk HE B (K4),
(e) nilai 3,5 min untuk HE B (K5), dan
MODUL III. PERNYATAAN BERSYARAT 46
Gambar 3.4: Grafik suhu versus waktu yang diambil dari alat penukar kalor tipe A dan
tipe B.
b−a[ ]
f (b) = f (a) + f (c) − f (a) (3.1)
c−a
Dengan menggunakan C++, hitung suhu hasil interpolasi dengan memunculkan se-
mua alternatif output bila slope grafik dalam rentang data yang diamati adalah:
(a) Positive.
(b) Negative.
(c) Zero.
4. Anda dapat menggunakan aturan Cramer untuk menyelesaikan sistem persamaan lin-
ear 2×2 sebagai berikut:
ax + by = e (3.2)
cx + dy = f (3.3)
MODUL III. PERNYATAAN BERSYARAT 47
ed − b f
x= (3.4)
ad − bc
a f − ec
y= (3.5)
ad − bc
Tulis program C++ yang meminta Anda untuk memasukkan nilai a, b, c, d, e, dan
f , dan kemudian memunculkan hasilnya. Bila ad-bc sama dengan 0, tuliskan The
equation has no solution.
• Berikut ini adalah contoh input dan output:
if (s1 == s2 == s3);
{
cout << " equilateral triangle \n";
}
else;
cout >> "not an equilateral triangle \n";
Tujuan dari program di atas adalah untuk menampilkan equilateral triangle jika
ketiga sisi segitiga sama. Bila panjang salah satu sisi berbeda, tampilkan not an
equilateral triangle. Sebelumnya, Anda diminta untuk memasukkan nilai s1,
s2, dan s3. Tambahkan juga dengan perhitungan luas dan keliling segitiga!
6. Tulis sebuah program yang menampilkan akar-akar persamaan kuadrat ax2 + bx + c,
dimana nilai a, b dan c yang dimasukkan oleh pengguna. Anda dapat menggunakan
MODUL III. PERNYATAAN BERSYARAT 48
√
−b ± b2 − 4ac
x1,2 = (3.6)
2a
4.2 Pendahuluan
Misalkan Anda perlu memperkirakan area yang dilingkupi oleh empat kota, mengingat
lokasi GPS (lintang dan bujur) dari kota-kota ini, seperti yang ditunjukkan pada diagram
berikut. Bagaimana Anda menulis program untuk menghitung luas wilayah yang diarsir
(lihat Gambar 4.1).
49
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 50
Fungsi Deskripsi
sin(radian) Mengembalikan sin dari sudut dalam radian
cos(radian) Mengembalikan cos dari sudut dalam radian
tan(radian) Mengembalikan tan dari sudut dalam radian
asin(a) Mengembalikan sudut dalam radian untuk kebalikan dari sin
acos(a) Mengembalikan sudut dalam radian untuk kebalikan dari cos
atan(a) Mengembalikan sudut dalam radian untuk kebalikan dari tan
Fungsi Deskripsi
exp(x) Mengembalikan nilai e pangkat x (e x )
log(x) Mengembalikan logaritma natural dari x (ln(x) = loge (x))
log10(x) Mengembalikan logaritma basis 10 dari x (log10 (x))
pow(x, y) Mengembalikan nilai x pangkat y (xy ) √
sqrt(x) Mengembalikan nilai akar pangkat 2 dari x ( x) untuk x > 0
Berikut ini adalah contoh penggunaan fungsi eksponen (asumsi E adalah konstan den-
gan nilai 2.71828).
Fungsi Deskripsi
ceil(x) x dibulatkan ke atas ke bilangan bulat terdekat. Bilangan bulat
tersebut dikembalikan dengan tipe data double.
floor(x) x dibulatkan ke bawah ke bilangan bulat terdekat. Bilangan bulat
tersebut dikembalikan dengan tipe data double.
Operator kenaikan dan penurunan juga dapat digunakan pada variabel char untuk
mendapatkan karakter kode ASCII berikutnya atau sebelumnya. Sebagai contoh, perny-
ataan berikut menampilkan karakter b.
char ch = ’a’;
cout << ++ ch;
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 54
RefineryUnit
RefinerUnit
Refinery Unit
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 55
Refinery
Unit
Refinery
Unit
Unitnery
’a’ < ’b’; // is true , ASCII code for ’a’ (97) is less than
// the ASCII code for ’b’ (98).
’a’ < ’A’; // is false the ASCII code for ’a’ (97) is greater than
// the ASCII code for ’A’ (65).
’1’ < ’8’; // is true ASCII code for ’1’ (49) is less than
// the ASCII code for ’8’ (56).
Dalam pemrograman, Anda seringkali perlu menguji apakah sebuah karakter adalah
angka, huruf, huruf besar, atau huruf kecil. Misalnya, kode program berikut menguji
apakah karakter ch adalah huruf besar, huruf kecil, atau angka.
Fungsi Deskripsi
isdigit(ch) Mengembalikan nilai true bila karakter adalah angka.
isalpha(ch) Mengembalikan nilai true bila karakter adalah huruf.
isalnum(ch) Mengembalikan nilai true bila karakter adalah angka atau huruf.
islower(ch) Mengembalikan nilai true bila karakter adalah huruf kecil.
isupper(ch) Mengembalikan nilai true bila karakter adalah huruf besar.
isspace(ch) Mengembalikan nilai true bila karakter adalah spasi.
tolower(ch) Mengembalikan kode ASCII dari huruf kecil dari sebuah karakter.
toupper(ch) Mengembalikan kode ASCII dari huruf besar dari sebuah karak-
ter.
Enter a character : T
You entered T
It is an uppercase letter
Its equivalent lowercase letter is t
Di sini pesan tersebut mewakili objek string dengan konten Programming is fun.
string adalah objek yang telah didefinisikan pada file header <string>. Cara menggu-
nakan objek string ditunjukkan pada Tabel 4.7.
Anda bisa menggunakan fungsi size() di kelas string untuk mengembalikan uku-
ran objek string dan menggunakan fungsi at(index) untuk mengembalikan karakter
pada indeks yang ditentukan, seperti yang ditunjukkan dalam kode berikut ini.
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 58
Fungsi Deskripsi
length() Mengembalikan jumlah karakter yang ada di objek string.
size() Mengembalikan ukuran byte dari objek string.
at(index) Mengembalikan karakter pada indeks yang ditentukan dari string.
4
A
6
o
Gambar 4.2: Karakter pada objek string dapak diambil dengan at(index).
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 59
C++ juga menyediakan operator subscript untuk mengakses dan memodifikasi karak-
ter pada indeks yang ditentukan dalam string menggunakan syntax stringName[index].
Sebagai contoh, kode berikut menetapkan karakter P baru pada indeks 0 menggunakan
s[0] = ’P’ dan menampilkannya.
string s = "ABCD";
s[0] = ’P’;
cout << s[0] << endl;
string s3 = s1 + s2;
Anda juga dapat menggabungkan karakter dengan string. Perhatikan contoh berikut
ini.
string s = "ABC";
s += ’D’;
ABCD
string s1 = "ABC";
string s2 = "ABE";
cout << (s1 == s2) << endl; // Displays 0 ( means false )
cout << (s1 != s2) << endl; // Displays 1 ( means true)
cout << (s1 > s2) << endl; // Displays 0 (means false )
cout << (s1 >= s2) << endl; // Displays 0 ( means false )
cout << (s1 < s2) << endl; // Displays 1 (means true)
cout << (s1 <= s2) << endl; // Displays 1 ( means true)
Berikut ini adalah analisis evaluasi s1 > s2. Dua karakter pertama (A versus A) dari
s1 dan s2 dibandingkan. Karena A dan A sama, dua karakter berikutnya (B versus B)
dibandingkan. Karena B dan B juga sama, dua karakter terakhir (C versus E) dibandingkan.
Karena karakter C kurang dari E berdasarkan kode ASCII, perbandingan mengembalikan
0.
1 string city;
2 cout << " Enter a city: ";
3 cin >> city; // Read to string city
4 cout << "You entered " << city << endl;
Membaca string pada baris ke-3 terlihat sederhana, tetapi akan bermasalah ketika in-
put diakhiri dengan karakter spasi. Jika Anda ingin input New York, Anda harus menggu-
nakan pendekatan alternatif. C++ menyediakan fungsi getline dalam header <string>,
yang membaca string dari keyboard menggunakan syntax berikut ini.
1 string city;
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 61
Karena nilai default untuk argumen ketiga dalam fungsi getline adalah ’ n’, baris
ke-3 dapat diganti dengan
Berikut ini adalah contoh program yang meminta pengguna menginput 2 nama pe-
rusahaan dan menampilkan mereka menurut urut abjad.
Interest is 16.40
Fungsi Deskripsi
setprecission() Mengatur jumlah angka penting pada sebuah bilangan desimal.
fixed Mengatur jumlah digit setelah titik desimal pada sebuah bilangan
desimal.
showpoint Mengatur jumlah digit tetap yang ditampilkan pada sebuah bilangan
desimal.
setw(width) Mengatur jumlah kolom minimum untuk diisu sejumlah karakter
pada output.
left Mengatur tampilan menjadi rata kiri.
right Mengatur tampilan menjadi rata kanan.
Manipulasi setprecision tetap berlaku sampai presisi diubah. Presisi diatur ke 3 untuk
nilai pertama, dan tetap efektif untuk dua nilai berikutnya, karena belum diubah.
Jika argumen n yang ditentukan lebih kurang dari untuk sebuah bilangan, manipulator
setprecision menampilkan hanya sejumlahn angka penting saja.
2.35e+004
2.32123 e+08
Anda dapat menggunakan manipulator fixed untuk memaksa angka ditampilkan den-
gan jumlah digit tetap setelah titik desimal. Secara default, jumlah digit tetap setelah titik
desimal adalah 6.
232123434.357000
Anda dapat menentukan jumlah digit setelah titik desimal menggunakan manipulator
fixed dan setprecision.
345.46
78676.89
1.23
1.23000
123.000
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 65
cout << setw (8) << "C++" << setw (6) << 101 << endl;
cout << setw (8) << "Java" << setw (6) << 101 << endl;
cout << setw (8) << "HTML" << setw (6) << 101 << endl;
cout << setw (8) << "C++" << 101 << endl;
C++101
Jika suatu item membutuhkan lebih banyak ruang dari lebar yang ditentukan, lebar
tersebut secara otomatis bertambah.
cout << setw (8) << " Programming " << "#" << setw (2) << 101;
Programming #101
Lebar kolom yang ditentukan untuk "Programming" adalah 8, yang lebih kecil dari
ukuran sebenarnya 11. Lebar kolom secara otomatis bertambah menjadi 11. Lebar yang
ditentukan untuk 101 adalah 2, yang lebih kecil dari ukuran sebenarnya 3. Lebar kolom
secara otomatis bertambah menjadi 3.
Sebagai catatan bahwa argumen n untuk setw(n) dan setprecision(n) dapat berupa
variabel, ekspresi, atau konstanta bilangan bulat.
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 66
ofstream output ;
Untuk menentukan file output yang akan dibuat, gunakan fungsi open dari objek
output sebagai berikut:
Pernyataan ini membuat file bernama numbers.txt. Jika file dengan nama dan jenis
yang sama sudah ada, file tersebut dihapuskan dan file baru akan dibuat.
Anda dapat membuat file dan membuka file output dalam satu pernyataan seperti
berikut ini.
Untuk menulis data di dalam file output, gunakan operator penyisipan aliran (stream
insertion), «, dengan cara yang sama seperti Anda mengirim data ke objek cout. Perny-
ataan ini menulis angka 95, 56, dan 34 ke file output. Masing-masing angka dipisahkan
spasi.
output << 95 << " " << 56 << " " << 34 << endl;
Setelah Anda selesai dengan file output, gunakan fungsi close dari output sebagai
berikut:
Menggunakan fungsi close penting untuk memastikan data ditulis ke file sebelum
program keluar.
Listing 4.3 memberikan program lengkap untuk menulis data ke file output dan Gam-
bar 4.6 memberikan tampilan hasilnya.
12 // Write numbers
13 output << 95 << " " << 56 << " " << 34;
14
15 // close file
16 output . close ();
17
18 cout << "Done" << endl;
19
20 return 0;
21 }
input ifstream ;
Untuk menentukan file output yang akan dibuka, aktifkan fungsi open dari objek
input sebagai berikut:
Pernyataan ini membuka file bernama numbers.txt untuk input. Jika file yang Anda
coba buka tidak tidak ada, kesalahan runtime (logic runtime) dapat muncul.
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 69
Secara opsional, Anda dapat membuat objek input file dan membuka file dalam satu
pernyataan seperti ini:
Untuk membaca data, gunakan operator ekstraksi aliran (stream extraction), », dengan
cara yang sama membaca data dari objek cin.
Setelah selesai dengan file, gunakan fungsi close dari input sebagai berikut ini.
Listing 4.4 memberikan program lengkap untuk membaca data dari sebuah file:
20
21 // Close file
22 input .close ();
23
24 cout << "Done" << endl;
25
26 return 0;
27 }
b2 + c2 − a2
cos(A) = (4.1)
2bc
c2 + a2 − b2
cos(B) = (4.2)
2ca
a2 + b2 − c2
cos(C) = (4.3)
2ab
Gambar 4.7: Segitiga dengan A, B, C adalah sudut-sudut yang terletak di titik-titik koor-
dinat tertentu.
√
a= (x3 − x2 )2 + (y3 − y2 )2 (4.4)
√
b= (x3 − x1 )2 + (y3 − y1 )2 (4.5)
√
c= (x2 − x1 )2 + (y2 − y1 )2 (4.6)
Urutkan sudut-sudut tersebut berdasarkan nilai yang paling besar ke nilai yang paling
kecil.
2. Tulis program yang menerima kode ASCII (bilangan bulat antara 0 dan 127) dan
tampilkan karakternya. Gunakan char(1) untuk menampilkan karakter dari kode
ASCII 1. Berikut ini contoh tampilan proses.
3. Tulis program yang menerima sebuah karakter dan tampilkan kode ASCII-nya. Gu-
nakan int(x) untuk menampilkan kode ASCII dari karakter x. Berikut ini contoh
tampilan proses.
Enter a character : E
The ASCII code for the character is 69
4. Huruf A/a, E/e, I/i, O/o, dan U/u adalah huruf-huruf vokal (vowel). Sisanya adalah
huruf-huruf konsonan. Tulis sebuah program yang meminta pengguna untuk mema-
sukkan huruf dan memeriksa apakah huruf itu adalah huruf vokal atau konsonan.
Berikut ini contoh tampilan proses.
Enter a letter : B
MODUL IV. FUNGSI MATEMATIKA, KARAKTER, DAN STRING 72
B is a consonant
5.2 Pendahuluan
C++ memberikan sebuah konstruksi pemrograman yang memungkinkan Anda yang men-
gontrol berapa kali operasi atau urutan operasi dilakukan secara berurutan. Konstruksi
tersebut disebut dengan loop. Dengan menggunakan pernyataan loop, Anda cukup mem-
beri tahu komputer untuk menampilkan string 100 kali tanpa harus menulis objek cout
74
MODUL V. LOOP 75
int count = 0;
Jumlah variabel awal dari count adalah 0. loop memeriksa apakah count < 100
bernilai true. Jika demikian, program menjalankan loop body yang menampilkan pesan
Welcome to C++! dan setiap iterasi dihitung dengan kenaikan nilai count sebanyak 1
(count++. Loop ini akan berulang mengeksekusi loop body sampai nilai count < 100
menjadi false (misalnya ketika count mencapai 100). Pada titik ini, loop berakhir dan
program akan keluar dari loop body.
C++ menyediakan tiga jenis pernyataan loop sebagai berikut.
1. Pernyataan while,
2. Pernyataan do-while, dan
3. Pernyataan for.
Gambar 5.1 menunjukkan diagram alir pernyataan while. Bagian dari loop yang
berisi pernyataan yang akan diulang disebut loop body. Eksekusi loop body sebanyak 1
kali disebut iterasi (atau pengulangan) dari loop. Setiap loop berisi loop-continuation-
condition, ekspresi Boolean yang mengontrol loop body. Setiap iterasi, kondisi dari ek-
MODUL V. LOOP 76
spresi Boolean tersebut dievaluasi untuk menentukan apakah loop body dieksekusi. Jika
nilai hasil evaluasi bernilai true, loop body dieksekusi; namun jika sebaliknya, nilai hasil
evaluasi bernilai false, loop berakhir dan kontrol program akan keluar dari loop body.
Sebelumnya pada loop untuk menampilkan Welcome to C++! sebanyak 100 kali
(lihat Subbab 5.2), loop body adalah bagian yang dibatasi dengan kurung kurawal dan
loop-continuation-condition adalah count < 100.
Berikut ini adalah contoh kode program lain untuk memahami penyataan while.
int sum = 0, i = 1;
Jika i < 10 bernilai true, program menambahkan i ke sum. Variabel i mula-mula diatur
ke 1, kemudian bertambah menjadi 2, 3, dan hingga 10. Ketika i sama dengan 10, i <
10 bernilai false, loop akan berakhir dan program keluar dari loop body. Oleh karena
itu, nilai akhir sum adalah 1 + 2 + 3 + ... + 9 = 45.
Apa yang terjadi jika loop ditulis seperti berikut ini?
MODUL V. LOOP 77
int sum = 0, i = 1;
Listing 5.1 memuat cntohprogram yang meminta pengguna memasukkan jawaban un-
tuk pertanyaan tentang pengurangan. Menggunakan loop, Anda dapat menulis ulang pro-
gram untuk membiarkan pengguna memasukkan jawaban sampai benar.
What is 4 - 3? 4
Wrong answer . Try again. What is 4 - 3? 5
Wrong answer . Try again. What is 4 - 3? 1
You got it!
do
{
// Loop body
Statement (s);
}
while (loop -continuation -condition )
dieksekusi. Loop while dan do-while memiliki kekuatan ekspresif yang sama. Terkadang
yang satu lebih nyaman dari yang lain. Misalnya, Anda dapat menulis ulang loop while
di Listing 5.5 menggunakan loop do-while, seperti yang ditunjukkan pada Listing 5.2.
18 }
19 while (data != 0);
20
21 cout << "The sum is " << sum << endl;
22
23 return 0;
24 }
Atau secara umum, syntax pernyataan for dapat ditulis sebagai berikut.
for ( initial -action ; loop -continuation -condition ; action -after -each -iteration )
{
// Loop body;
Statement (s);
}
condition), dan iterasi setelah eksekusi (action-after-each-iteration), diikuti oleh loop body
yang tertutup di dalam kurung kurawal.
Pernyataan for umumnya menggunakan variabel untuk mengontrol berapa kali loop
body dieksekusi dan kapan loop berakhir. Ini disebut variabel kontrol. initial-action sering
menginisialisasi variabel kontrol, action-after-each-iteration biasanya meningkatkan atau
mengurangi variabel kontrol, dan loop-continuation-condition menguji apakah variabel
kontrol telah mencapai batas nilai terminasi. Misalnya, berikut ini untuk loop menampilkan
Selamat Datang di C ++! 100 kali:
Diagram alur pernyataan tersebut ditunjukkan pada Gambar 5.3b. Untuk loop mengin-
isialisasi i ke 0, kemudian berulang kali mengeksekusi pernyataan output dan mengeval-
uasi i ++ ketika saya kurang dari 100.
Aksi awal, i = 0, menginisialisasi variabel kontrol, i. Loop-continuation-condition,
i <100, adalah ekspresi Boolean. Ekspresi dievaluasi tepat setelah inisialisasi dan pada
awal setiap iterasi. Jika kondisi ini benar, tubuh loop dijalankan. Jika salah, loop berakhir
dan kontrol program beralih ke baris setelah loop.
Tindakan-setelah-setiap-iterasi, i ++, adalah pernyataan yang menyesuaikan variabel
kontrol. Pernyataan ini dieksekusi setelah setiap iterasi. Itu menambah variabel kontrol.
MODUL V. LOOP 82
Akhirnya, nilai variabel kontrol harus memaksa kondisi kelanjutan loop menjadi salah.
Jika tidak, loop tidak terbatas.
Variabel kontrol loop dapat dideklarasikan dan diinisialisasi dalam loop for.Jika hanya
ada satu pernyataan di badan loop, seperti dalam contoh ini, kawat gigi dapat dihilangkan.
initial -action ;
while (loop -continuation -condition )
{
// Loop body;
action -after -each -iteration ;
}
for ( initial -action ; loop -continuation -condition ; action -after -each -iteration )
{
// Loop body;
}
Secara umum, loop for dapat digunakan jika jumlah pengulangan diketahui sebelum-
nya, misalnya, ketika Anda perlu menampilkan pesan sebanyak 100 kali. Loop while
dapat digunakan jika jumlah pengulangan tidak diketahui secara pasti, misalnya dalam
kasus membaca angka sampai inputnya adalah 0. Loop do-while dapat digunakan untuk
mengganti loop while jika loop body harus dieksekusi sebelum kondisi kelanjutan diuji.
MODUL V. LOOP 83
28
29 return 0;
30 }
Multiplication Table
--------------------------------
| 1 2 3 4 5 6 7 8 9
1 | 1 2 3 4 5 6 7 8 9
2 | 2 4 6 8 10 12 14 16 18
3 | 3 6 9 12 15 18 21 24 27
4 | 4 8 12 16 20 24 28 32 36
5 | 5 10 15 20 25 30 35 40 45
6 | 6 12 18 24 30 36 42 48 54
7 | 7 14 21 28 35 42 49 56 63
8 | 8 16 24 32 40 48 56 64 72
9 | 9 18 27 36 45 54 63 72 81
2. Tulis sebuah program yang menampilkan tabel berikut ini (1 meter = 3,280 feet).
3. Biaya sewa untuk sebuah mobile crane adalah USD 10000 per tahun dan meningkat
3% setiap tahun. Tulis sebuah program yang menghitung sewa crane tersebut untuk
setiap tahun dalam 5 tahun mendatang dan total akumulasi sewa tahun ke-1 sampai
dengan tahun ke-5.
4. Analisis kode program berikut ini. Apakah nilai count < 100 selalu true, selalu
false, atau kadang-kadang true atau kadang-kadang false di Titik A, Titik B, dan
Titik C?
int count = 0;
while (count < 100)
{
// Point A
cout << " Welcome to C++!\n";
count ++;
// Point B
}
// Point C
5. Apa perbedaan antara loop while dan loop do-while? Ubah loop while berikut
menjadi loop do-while.
MODUL V. LOOP 86
int sum = 0;
int number ;
while ( number != 0)
{
sum += number ;
cin >> number ;
}
6. Apakah ada kesalahan dalam program berikut ini? Bila iya, temukan kesalahannya
dan perbaiki bagian tersebut.
do
{
// Read the next data
cout << " Enter an int value , " <<
"\ nexit if the input is 0: ";
int num;
cin >> num;
total += num;
}
while (num != 0);
7. Misalkan input program adalah 2 3 4 5 0. Apa output dari kode berikut ini.
int count = 0;
while ( count < n)
{
count ++;
}
(b) Program-2
(c) Program-3
int count = 5;
while ( count < n)
{
count ++;
}
(d) Program-4
int count = 5;
MODUL V. LOOP 88
89
MODUL VI. FUNGSI 90
Verlag, 1994.
2. Delores M. Etter and Jeanine A. Ingber. Engineering Problem Solving With C++ (4th
Edition). Boston:Pearson, 2016.
6.2 Pendahuluan
Misalnya Anda ingin melakukan perhitungan jumlah bilangan bulat dengan rentang dari
1 sampai dengan 10, dari 20 sampai dengan 37, dan dari 35 sampai dengan 49, Anda
mungkin menulis kode program sebagai berikut:
int sum = 0;
for (int i = 1; i <= 10; i++)
sum += i;
cout << "Sum from 1 to 10 is " << sum << endl;
sum = 0;
for (int i = 20; i <= 37; i++)
sum += i;
cout << "Sum from 20 to 37 is " << sum << endl;
sum = 0;
for (int i = 35; i <= 49; i++)
sum += i;
cout << "Sum from 35 to 49 is " << sum << endl;
Dari contoh program di atas terlihat bahwa ada pola yang sama untuk melakukan
3 tugas penjumlahan dengan rentang angka yang berbeda. Bagaimana C++ mengatasi
masalah seperti ini sedemikian sehingga pengguna cukup menulis sebuah kode program
yang dapat digunakan berkali-kali? Kita dapat melakukannya dengan fungsi, seperti pada
kode program berikut.
6
7 return sum;
8 }
9
10 int main ()
11 {
12 cout << "Sum from 1 to 10 is " << sum (1, 10) << endl;
13 cout << "Sum from 20 to 37 is " << sum (20 , 37) << endl;
14 cout << "Sum from 35 to 49 is " << sum (35 , 49) << endl;
15
16 return 0;
17 }
Baris 1-8 mendefinisikan fungsi yang bernama sum dengan dua parameter i1 dan i2.
Pernyataan dalam fungsi utama memanggil sum(1, 10) untuk menghitung jumlah dari
1 sampai dengan 10, dan sum(20, 37) untuk menghitung jumlah dari 20 sampai dengan
37, dan sum(35, 49) untuk menghitung jumlah dari 35 sampai dengan 49 .
Fungsi adalah kumpulan pernyataan yang dikelompokkan bersama untuk melakukan
operasi. Dalam bab-bab sebelumnya, Anda belajar tentang fungsi-fungsi seperti pow(a,
b), rand(), srand(seed), time(0), dan main(). Ketika Anda memanggil fungsi pow(a,
b), misalnya, sistem sebenarnya mengeksekusi pernyataan dalam fungsi dan mengemba-
likan hasilnya. Dalam bab ini, Anda akan belajar cara mendefinisikan dan menggunakan
fungsi untuk memecahkan masalah yang kompleks.
Misalnya Anda ingin menemukan bilangan yang lebih besar dari dua bilangan bulat.
Selain menggunakan fungsi max pada bab 4.3.4, Anda bisa mendefiniskan sendiri fungsi
MODUL VI. FUNGSI 92
tersebut seperti yang terlihat pada Gambar 6.1. Fungsi ini, dinamakan max dengan 2 (dua)
parameter int, num1 dan num2, dimana nilai yang lebih besar yang akan dikembalikan
oleh fungsi.
Header fungsi (function header) menentukan tipe nilai pengembalian (function re-
turn value type), nama (function name), dan parameter (function parameter) dari sebuah
fungsi.
Fungsi dapat mengembalikan sebuah atau beberapa nilai. ReturnValueType adalah
tipe data dari nilai tersebut. Beberapa fungsi melakukan operasi yang diinginkan tanpa
mengembalikan nilai. Dalam hal ini, returnValueType adalah keyword void. Misalnya,
returnValueType dalam fungsi srand adalah void. Sehingga fungsi dapat dibagi atas
2 kelompok: fungsi yang mengembalikan nilai disebut fungsi pengembalian nilai (value-
returning function) dan fungsi yang tidak mengembalikan nilai disebut fungsi void (void
function).
Variabel yang dideklarasikan dalam header fungsi dikenal sebagai parameter formal
(formal parameter). Ketika suatu fungsi dipanggil, Anda meneruskan nilai ke param-
eter. Nilai ini disebut sebagai parameter atau argumen aktual (actual parameter/actual
argument). Daftar parameter (parameter list )mengacu pada jenis (type), urutan (order),
dan jumlah (number) parameter dari sebuah fungsi. Nama fungsi dan daftar parameter
bersama-sama membentuk function signature. Parameter bersifat opsional; artinya, suatu
fungsi mungkin tidak mengandung parameter.
MODUL VI. FUNGSI 93
Badan fungsi (function body) berisi kumpulan pernyataan yang mendefinisikan fungsi
tersebut. Misalnya, badan fungsi dari fungsi max menggunakan pernyataan if untuk
menentukan angka mana yang lebih besar dan mengembalikan nilai angka tersebut. Perny-
ataan pengembalian dengan keyword return diperlukan untuk mengembalikan hasil dari
fungsi tersebut. Fungsi selesai ketika pernyataan return dieksekusi.
yang memanggil fungsi max(3, 4) dan memberikan hasil fungsi ke variabel larger.
Anda dapat juga menggunakan konsol output seperti berikut ini untuk memanggil fungsi.
6 {
7 int result ;
8
9 if (num1 > num2)
10 result = num1;
11 else
12 result = num2;
13
14 return result ;
15 }
16
17 int main ()
18 {
19 int i = 5;
20 int j = 2;
21 int k = max(i, j);
22 cout << "The maximum between " << i <<
23 " and " << j << " is " << k << endl;
24
25 return 0;
26 }
Program ini terdiri atas 2 bagian: fungsi max dan fungsi main. Fungsi main dipang-
gil oleh sistem operasi untuk menjalankan program. Semua fungsi, termasuk fungsi max,
harus dijalankan oleh pernyataan yang memanggil fungsi. Suatu fungsi harus didefin-
isikan sebelum dipanggil. Oleh karena fungsi max dipanggil oleh fungsi main, fungsi
tersebut harus ditentukan sebelum fungsi main.
Ketika fungsi max dipanggil (baris 21), nilai 5 dari variabel i diteruskan ke num1 dan
nilai 2 dari variabel j diteruskan ke num2 di fungsi max. Aliran kontrol program berpindah
ke fungsi max. Fungsi max dieksekusi. Ketika pernyataan return dalam fungsi max
dieksekusi, fungsi max mengembalikan kontrol program ke caller, dalam hal ini adalah
fungsi fungsi main. Proses ini dapat dilihat di Gambar .
Setiap kali sebuah fungsi dipanggil, sistem membuat rekaman aktivasi (activatoin
MODUL VI. FUNGSI 95
Gambar 6.2: Contoh memanggil fungsi dengan pengalihan kontrol program ke fungsi
yang dipanggil.
frame/record) yang menyimpan argumen dan variabel dari fungsi dan menempatkan reka-
man aktivasi di area memori yang dikenal sebagai call stack. Saat sebuah fungsi memang-
gil fungsi lain, rekaman aktivasi caller tetap utuh dan rekaman aktivasi baru dibuat untuk
panggilan fungsi baru. Ketika suatu fungsi menyelesaikan tugasnya dan mengembalikan
kontrol ke caller, rekaman aktivasi dihapus dari call stack.
Call stack menyimpan rekaman aktivasi dengan prinsip masuk terakhir dan keluar
pertama. Rekaman aktivasi untuk fungsi yang dipanggil terakhir dihapus terlebih dahulu
dari tumpukan. Misalkan fungsi m1 memanggil fungsi m2, dan kemudian fungsi m2 me-
manggil fungsi m3. Sistem mendorong rekaman aktivasi m1 ke dalam call stack, lalu m2,
dan kemudian m3. Setelah m3 selesai, rekaman aktivasi dihapus dari call stack. Setelah
m2 selesai, catatan aktivasi dihapus dari call stack. Setelah m1 selesai, catatan aktivasi
dihapus dari call stack.
Pemahaman akan call stack membantu Anda mengerti bagaimana sebuah fungsi di-
panggil. Variabel yang didefinisikan dalam fungsi utama adalah i, j, dan k. Variabel
yang didefinisikan dalam fungsi max adalah num1, num2, dan result. Variabel num1 dan
num2 didefinisikan dalam signature fungsi dan merupakan parameter fungsi. Nilai-nilai
num1 dan num2 dilewatkan melalui pemanggilan fungsi. Gambar 6.3 memberi ilustrasi
proses rekaman aktivasi di call stack.
MODUL VI. FUNGSI 96
19 int main ()
20 {
21 cout << "Enter a score : ";
22 double score ;
23 cin >> score ;
24
25 cout << "The grade is ";
26 printGrade ( score );
27
28 return 0;
29 }
Fungsi printGrade adalah sebuah fungsi void. Fungsi tersebut tidak mengemba-
likan nilai apa pun. Panggilan ke fungsi void harus berupa pernyataan.
Untuk melihat perbedaan antara fungsi void yang mengembalikan nilai dan yang tidak
mengembalikan nilai, Anda bisa mendesain ulang fungsi printGrade untuk mengemba-
likan nilai, seperti yang ditunjukkan pada Listing 6.3.
14 return ’D’;
15 else
16 return ’F’;
17 }
18
19 int main ()
20 {
21 cout << "Enter a score : ";
22 double score ;
23 cin >> score ;
24
25 cout << "The grade is ";
26 cout << getGrade ( score ) << endl;
27
28 return 0;
29 }
Anda dapat menggunakan nPrint(’a’, 3) untuk mencetak ’a’ tiga kali. Perny-
MODUL VI. FUNGSI 99
ataan nPrint(’a’, 3) memberikan parameter ’a’ ke ch dengan tipe data char dan
memberikan 3 ke n dengan tipe data int;. Hasilnya adalah program mencetak ’a’ se-
banyak tiga kali. Namun bila urutan parameter dibalik, pernyataan nPrint(3, ’a’)
memiliki arti yang berbeda dan memberikan hasil yang berbeda juga.
16
17 return true; // number is prime
18 }
19
20 void printPrimeNumbers (int numberOfPrimes )
21 {
22 const int NUMBER_OF_PRIMES = 50; // Number of primes to display
23 const int NUMBER_OF_PRIMES_PER_LINE = 10; // Display 10 per line
24 int count = 0; // Count the number of prime numbers
25 int number = 2; // A number to be tested for primeness
26
27 // Repeatedly find prime numbers
28 while ( count < numberOfPrimes )
29 {
30 // Print the prime number and increase the count
31 if ( isPrime ( number ))
32 {
33 count ++; // Increase the count
34
35 if (count % NUMBER_OF_PRIMES_PER_LINE == 0)
36 {
37 // Print the number and advance to the new line
38 cout << setw (4) << number << endl;
39 }
40 else
41 cout << setw (4) << number ;
42 }
43
44 // Check if the next number is prime
45 number ++;
46 }
47 }
48
49 int main ()
MODUL VI. FUNGSI 101
50 {
51 cout << "The first 50 prime numbers are \n";
52 printPrimeNumbers (50);
53
54 return 0;
55 }
return num2;
}
Jika Anda memanggil fungsi max dengan parameter int, fungsi max yang mengan-
dung parameter int akan dipanggil. Jika Anda memanggil fungsi max dengan parameter
double, fungsi max yang mengandung parameter double akan dipanggil. Ini disebut
sebagai fungsi overloading, dimana dua fungsi memiliki nama yang sama tetapi daftar
parameter berbeda dalam satu file. Compiler C++ menentukan fungsi mana yang digu-
nakan berdasarkan signature fungsi.
Program dalam Listing 6.5 berisi tiga fungsi bernama max: yang pertama menemukan
bilangan bulat maksimum, yang kedua menemukan bilangan desimal maksimum, dan
yang ketiga menemukan maksimum di antara tiga bilangan desimal.
21
22 // Return the max among three double values
23 double max( double num1 , double num2 , double num3)
24 {
25 return max(max(num1 , num2), num3);
26 }
27
28 int main ()
29 {
30 // Invoke the max function with int parameters
31 cout << "The maximum between 3 and 4 is " << max (3, 4) << endl;
32
33 // Invoke the max function with the double parameters
34 cout << "The maximum between 3.0 and 5.4 is "
35 << max (3.0, 5.4) << endl;
36
37 // Invoke the max function with three double parameters
38 cout << "The maximum between 3.0, 5.4, and 10.14 is "
39 << max (3.0, 5.4, 10.14) << endl;
40
41 return 0;
42 }
Bisakah Anda memanggil fungsi max mengandung parameter nilai int dan double,
seperti max(2, 2.5) pada baris ke-35? Jawabannya, ya Anda bisa. Kemudian, jika
Anda bisa, manakah dari fungsi max yang dipanggil? Fungsi max dengan parameter ni-
lai double yang dipanggil. Nilai argumen 2 secara otomatis dikonversi menjadi nilai
double.
Terkadang ada dua atau lebih kesamaan pada parameter fungsi yang menyebabkan
compiler tidak dapat menentukan kesamaan yang paling spesifik di antara 2 fungsi. Am-
bigu semacam ini dapat menyebabkan kesalahan kompilasi. Perhatikan contoh program
berikut ini.
int main ()
{
cout << maxNumber (1, 2) << endl;
return 0;
}
MaxNumber (int, double) dan maxNumber (double, int) adalah pasangan fungsi
yang cocok dengan maxNumber (1, 2). Karena tidak ada yang lebih spesifik, per-
mintaan itu bersifat ambigu, menghasilkan kesalahan runtime.
33 }
34
35 // Find the max between two double values
36 double max( double num1 , double num2)
37 {
38 if (num1 > num2)
39 return num1;
40 else
41 return num2;
42 }
43
44 // Return the max among three double values
45 double max( double num1 , double num2 , double num3)
46 {
47 return max(max(num1 , num2), num3);
48 }
Dalam prototipe fungsi, Compiler C++ mengabaikan nama parameter sehingga Anda
tidak perlu mencantumkan nama parameter. Prototipe memberitahu compiler nama fungsi,
tipe return, jumlah parameter, dan tipe data setiap parameter. Jadi baris 5-7 bisa diganti
dengan mencantumkan tipe data parameter sebagai berikut.
area is 3.14159
area is 50.2654
Ketika suatu fungsi berisi campuran parameter dengan dan tanpa nilai default, pa-
rameter yang memiliki nilai default harus dinyatakan paling akhir. Misalnya, deklarasi
berikut ini adalah ilegal.
Ketika sebuah parameter dari argumen dibiarkan kosong, semua parameter yang datang
setelah itu harus dibiarkan kosong juga. Misalnya, panggilan berikut ini adalah ilegal.
t3(1, , 20);
t4(, , 20);
month is 10
year is 2008
month is 9
MODUL VI. FUNGSI 109
year is 2010
Hasil eksekusi program pada baris 13-14 ekuivalen dengan kode program berikut ini.
8 {
9 t1();
10 t2();
11
12 return 0;
13 }
14
15 int y; // Global variable , default to 0
16
17 void t1 ()
18 {
19 int x = 1; // local variable
20 cout << "x is " << x << endl;
21 cout << "y is " << y << endl;
22 x++;
23 y++;
24 }
25
26 void t2 ()
27 {
28 int x = 1; // local variable
29 cout << "x is " << x << endl;
30 cout << "y is " << y << endl;
31 }
x is 1
y is 0
x is 1
y is 1
Variabel global y dideklarasikan di baris 15 dengan nilai default 0. Variabel ini dapat
diakses di fungsi t1 dan t2, tetapi tidak di fungsi main, karena fungsi main dideklarasikan
sebelum y dideklarasikan.
Ketika fungsi utama memanggil t1() di baris 9, variabel global y bertambah (baris
MODUL VI. FUNGSI 111
23) dan menjadi 1 di t1. Ketika fungsi main memanggil t2() pada baris 10, variabel
global y sekarang 1.
Variabel lokal x dideklarasikan pada t1 pada baris 19 dan variabel x lain dideklarasikan
pada t2 pada baris 28. Meskipun kedua variabel tersebut dinamai sama (x), kedua vari-
abel ini independen. Jadi, penambahan x dalam t1 tidak memengaruhi variabel x yang
didefinisikan dalam t2.
Ketika sebuah fungsi memiliki variabel lokal dengan nama yang sama dengan variabel
global, hanya variabel lokal yang dapat dilihat dari fungsi tersebut.
Gambar 6.4: Variabel yang dideklarasikan di bagian initial-action dari header loop for
memiliki cakupan di seluruh loop.
gunakan keyword static. Listing 6.10 memperlihatkan penggunaan variabel lokal statis.
x is 2
y is 2
x is 3
y is 2
Variabel lokal statis x dinyatakan pada baris 16 dengan nilai awal 1. Inisialisasi vari-
abel statis hanya terjadi satu kali dalam panggilan pertama. Ketika t1() dipanggil untuk
pertama kalinya di baris 8, variabel statis x diinisialisasi ke 1 (baris 16). x bertambah
menjadi 2 (baris 18). Karena x adalah variabel lokal statis, x disimpan dalam memori
MODUL VI. FUNGSI 113
setelah panggilan ini. Ketika t1() dipanggil lagi pada baris 9, x adalah 2 dan bertambah
menjadi 3 (baris 18).
Variabel lokal y dideklarasikan di baris 17 dengan nilai awal 1. Ketika t1() dipanggil
untuk pertama kali di baris 8, y ditambahkan ke 2 (baris 19). Karena y adalah variabel
lokal, nilainya hilang (dihapus) setelah panggilan ini. Ketika t1() dipanggil lagi pada
baris 9, y diinisialisasi ke 1 dan bertambah menjadi 2 (baris 19).
Tulis program yang memanggil fungsi-fungsi ini untuk menampilkan tabel berikut:
2. Tulis fungsi berikut yang menampilkan angka genap dalam sebuah digit/beberapa
digit dari sebuah bilangan bulat.
6 dan 8.
3. Apakah ada kesalahan dalam program berikut ini? Bila iya, temukan kesalahannya
dan perbaiki bagian tersebut.
4. Apakah ada kesalahan dalam program berikut ini? Bila iya, temukan kesalahannya
dan perbaiki bagian tersebut.
5. Apakah ada kesalahan dalam program berikut ini? Bila iya, temukan kesalahannya
dan perbaiki bagian tersebut.
1 void p(int i)
2 {
3 cout << i << endl;
4 }
MODUL VI. FUNGSI 115
5
6 int p(int j)
7 {
8 cout << j << endl;
9 }
6. Identifikasi variabel global, variabel lokal, dan variabel lokal statis dalam program
berikut. Apa yang akan menjadi output dari kode program tersebut?
1 1 1 1
f (n) = + + + ... + (6.2)
3 8 15 n(n + 2)
MODUL VI. FUNGSI 116
n f(n)
2 0.458333
4 0.566667
...
12 0.675824
14 0.685417