Anda di halaman 1dari 246

i

E-Modul ini milik:


ANDI HARDIANTI
Kode modul:
12202020-06
MODUL PEMBELAJARAN INTERAKTIF (MOBELIN)
ALGORITMA DAN PEMROGRAMAN DASAR

TIM PENYUSUN:
Andi Baso Kaswar, S.Pd., M.Kom.
Nurjannah, S.Pd., M.Pd.
Dr. Satria Gunawan Zain, M.T.

DESAIN SAMPUL:
Andi Baso Kaswar, S.Pd., M.Kom.

GAMBAR ILUSTRASI DAN QR CODE:


Andi Baso Kaswar, S.Pd., M.Kom.

VIDEO PENJELASAN:
Andi Baso Kaswar, S.Pd., M.Kom.

Nomor Pencatatan Hak Cipta:


000223948

Program Studi Teknik Komputer


Jurusan Teknik Komputer dan Informatika
Fakultas Teknik
Universitas Negeri Makassar
Tahun 2020

ii
KATA PENGANTAR

Pada era revolusi industri 4.0 saat ini kemampuan pemrograman sangat dibutuhkan.
Hal ini terbukti dengan banyaknya aplikasi baik itu yang berbasis web, desktop, dan mobile
yang tumbuh subur dan berkembang pesat saat ini. Tak hanya itu, saat ini unicorn raksasa
Indonesia seperti Tokopedia, Traveloka, Gojek, dan Bukalapak sangat membutuhkan sumber
daya manusia yang handal di bidang pemrograman. Oleh karena itu, sumber daya manusia
yang memiliki kemampuan pemrograman yang baik perlu disiapkan melalui berbagai cara,
salah satunya melalui pendidikan formal.
Berdasarkan pengalaman yang telah dilalui oleh penulis, terdapat beberapa kendala
yang dihadapi oleh “calon programmer” yang baru akan masuk ke dalam dunia
pemrograman. Salah satu kendala yang paling terlihat adalah kesulitan mereka dalam
memahami sintaks dari suatu bahasa pemrograman. Hal tersebut terjadi karena mereka
kesulitan dalam memvisualisasikan teori yang abstrak.
Oleh karena itu, kami mengusulkan Modul Pembelajaran Interaktif (MOBELIN)
Algoritma dan Pemrograman Dasar sebagai solusi atas permasalahan di atas. MOBELIN
memiliki keunikan dibandingkan dengan modul pembelajaran atau praktikum yang
umumnya digunakan. MOBELIN disertai dengan QR Code di setiap materi dan contoh
program yang diberikan. QR Code tersebut akan menampilkan video penjelasan meteri
terkait yang dibuat secara khusus jika dipindai dengan menggunakan smartphone. Selain itu,
MOBELIN juga dilengkapi dengan gambar ilustrasi unik baik itu pada modul maupun pada
video penjelasan. Sehingga, dapat mempermudah pembaca modul untuk memahami materi
yang sedang dibacanya.
Puji syukur kehadirat Allah SWT atas limpahan rahmat dan karunianya sehingga
pembuatan Modul Pembelajaran Interaktif (MOBELIN) Algoritma dan Pemrograman Dasar
dapat terselesaikan. Modul ini tentunya masih jauh dari kesempurnaan sehingga kami
membutuhkan kritik dan saran yang membangun demi penyempurnaan modul ini
kedepannya. Ucapan terima kasih juga kami sampaikan kepada seluruh pihak yang telah
membantu dalam penyelesaian modul ini. Semoga MOBELIN ini bermanfaat.

Makassar, 4 Desember 2020

Tim Penyusun

iii
DAFTAR ISI

KATA PENGANTAR ....................................................................................................................iii

DAFTAR ISI ................................................................................................................................iv

PENGANTAR ALGORITMA DAN PEMROGRAMAN .................................................................... 3

STRUKTUR DASAR DAN NOTASI ALGORITMA ........................................................................ 19

VARIABEL & KONSTANTA ....................................................................................................... 37

OPERATOR .............................................................................................................................. 59

TIPE DATA DASAR ................................................................................................................... 75

TIPE DATA BENTUKAN I .......................................................................................................... 97

TIPE DATA BENTUKAN II ....................................................................................................... 119

STRING .................................................................................................................................. 135

PERCABANGAN..................................................................................................................... 151

PERULANGAN ....................................................................................................................... 173

ARRAY ................................................................................................................................... 189

FUNGSI ................................................................................................................................. 211

DAFTAR PUSTAKA ................................................................................................................. 239

iv
1
2
BAB I
PENGANTAR ALGORITMA DAN PEMROGRAMAN

1. Masalah dan Solusi


Hal penting yang perlu untuk diketahui sebelum mempelajari algoritma adalah
mengetahui defenisi dari “masalah” dan “solusi”.

“Masalah adalah sesuatu yang harus diselesaikan


(dipecahkan)”
-KBBI-

“Masalah adalah suatu kesenjangan yang perlu ditutup


antara hasil yang dicapai pada saat ini dan hasil yang
diharapkan.”
Simak penjelasan
-Roger Kaufman- Pak Dosen di sini!

Sebagai manusia, kita tentu tidak dapat terhindar dari berbagai macam masalah. Ada
banyak hal atau kondisi ideal yang kita inginkan namun fakta yang terjadi tidak sesuai dengan
apa yang kita harapkan. Kehidupan yang kita jalani saat ini sendiri saat ini pada dasarnya
adalah serangkaian aktivitas untuk menyelesaikan masalah. Berdasarkan defenisi di atas
maka defenisi dari masalah dapat disederhanakan menjadi ketidak sesuaian antara harapan
dan kenyataan. Agar masalah tersebut tidak terjadi maka perlu dilakukan serangkaian
tindakan untuk mencegahnya.
Agar lebih jelas, berikut contoh hal yang berpotensi untuk menimbulkan
permasalahan yang sering kita temui dalam kehidupan sehari-hari:
1) Diberikan sebuah daftar nama mahasiswa baru yang diterima di Program Studi Teknik
Komputer FT UNM. Daftar tersebut hanya berisi nomor-nomor peserta ujian yang
diterima.
• Permasalahannya adalah bagaimana cara untuk mengetahui seorang calon
mahasiswa baru diterima di Prodi Tekom FT UNM?

3
• Jawaban dari permasalahan ini adalah “diterima” jika nomor ujiannya terdapat
dalam daftar dan “tidak diterima” jika nomor ujiannya tidak terdapat di dalam
daftar
• Masalah yang akan muncul adalah tidak akan diketahui apakah seseorang diterima
atau tidak jika tidak ada daftar nomor ujuian peserta yang lulus yang diumumkan.
2) Diberikan daftar nama mahasiswa yang mendaftar beasiswa Bidik Misi.
• Permasalahannya adalah bagaimana cara untuk mengetahui apakah seorang
mahasiswa berhak untuk mendapatkan beasiswa bidik misi atau tidak?
• Jawaban dari permsalahan ini adalah melakukan pengumpulan berkas mahasiswa
terdaftar, melakukan verifikasi berkas, mengurutkan daftar nama mahasiswa mulai
dari yang paling berhak hingga yang tidak berhak, dan mengumumkan penerima
sejumlah kuota yang telah ditentukan.
• Permasalahan yang akan muncul adalah tidak akuratnya penerima beasiswa
bidikmisi jika langkah-langkah diatas tidak dilakukan.

Dalam menyelesaikan suatu permasalahan tentu ada parameter-parameter yang


menjadi acuan untuk mengambil langkah penyelesaian masalah. Setiap masalah pada
umumnya mengandung satu atau lebih parameter yang dinyatakan di dalam masalah
tersebut. Misalnya pada contoh berikut:
1) Diberikan sebuah list/daftar S yang terdiri dari n buah nilai bilangan bulat. Bagaimana
mengurutkan n buah nilai tersebut sehingga tersusun dari kecil hingga terbesar?
2) Diberikan list/daftar S yang terdiri n buah bilangan bulat. Carilah elemen terbesar di
dalam senarai tersebut!

Berdasarkan contoh di atas, S dan n adalah parameter dari masalah. Parameter


dalam pernyataan di atas belum diberi nilai spesifik, dan semua nilai parameter merupakan
input untuk masalah tersebut. Setiap pemberian nilai untuk semua parameter masalah
dinamakan instansiasi masalah. Jawaban atas instansiasi masalah disebut sebagai solusi.
Adapun contoh instansiasi dari kedua masalah di atas sebagai berikut:

1) S = [ 15, 1, 5, 2, 7], n=5


2) S = [ 1, 2, 5, 7, 15], n=5

4
Dari kedua contoh intansiasi di atas maka dapat diketahui bahwa nilai parameter (n)
banyaknya nilai dalam daftar adalah 5 dan paling besar alah 15.

2. Algoritma
Pernahkah kalian membuat nasi goreng? Jika pernah, tentu kalian mengetahui
langkah langkah pembuatannya yang dimulai dari beras hingga terhidang sebagai nasi
goreng. Langkah-langkah pembuatan itulah yang disebut dengan istilah algoritma.
Kata algoritma sendiri diambil dari nama seorang ilmuan Muslim Persia yaitu Abu
Ja`far Mohammed Ibn Musa Al-Khwarizmi, yang menulis buku kitab Al Jabr Wal Al-Muqabala
(Rules of Restoration and Reduction) pada tahun 825 M.

“Algoritma adalah urutan langkah-langkah atau metode khusus yang logis untuk
menyelesaikan suatu masalah ”
- Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi -

“Algoritma adalah deretan instruksi yang jelas untuk memecahkan masalah yaitu untuk
memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang
terbatas”
- Annany Levitin -

Algoritma dapat dikatakan sebagai solusi khusus yang diberikan untuk


menyelesaikan sebuah permasalahan. Algoritma bukanlah jawaban atas permasalahan
namun prosedur untuk menemukan jawaban atas permasalahan tersebut.
Berdasarkan defenisi di atas, maka dapat diketahui
bahwa algoritma merupakan urutan langkah-langkah dalam
menyelesaikan suatu permasalahan. Langkah-langkah tersebut
disusun sedemikian rupa secara logis dan sistematis sehingga
dapat menyelesaikan masalah yang terjadi. Jika suatu masalah
terjadi lalu untuk menyelesaikannya dilakukan langkah—
langkah yang tidak logis dan tidak terstruktur maka hal
tersebut kemungkinan tidak akan menyelesaikan masalah Simak penjelasan
namun justru akan menimbulkan masalah yang baru. Pak Dosen di sini!

5
Agar dapat lebih mudah memahami defenisi algoritma, berikut kami berikan contoh
algoritma.

1) Algoritma menulis surat


Langkah 1. Siapkan kertas, ballpoin, dan amplop
Langkah 2. Mulai menulis pesan pada kertas menggunakan ballpoin
Langkah 3. Masukkan kertas yang telah berisi pesan ke dalam amplop
Langkah 4. Rekatkan amplop
Langkah 5. Tulis nama dan alamat tujuan pada amplop
Langkah 6. Pergi ke kantor Pos untuk mengirim surat

2) Algoritma menghitung sisi miring segitiga siku-siku menggunakan rumus Phytagoras


Langkah 1. Tentukan nilai sisi tegak lurus dan simpan pada variabel t
Langkah 2. Tentukan nilai alas dan simpan pada variabel a.
Langkah 3. Pangkat duakan nilai t dan a.
Langkah 4. Jumlahkan hasil pemangkatan a dan t dan simpan di variabel r.
Langkah 5. Hitung nilai akar dari r dan hasilnya simpan pada variabel s.
Langkah 6. Tentukan nilai s sebagai panjang sisi miring.

Dari contoh algoritma di atas maka dapat kita ketahui bahwa idealnya suatu
algoritma terdiri atas input, proses, dan output.

3. Proses Desain dan Analisis Algoritma


Pada Gambar 1.1 disajikan bagan proses desain dan analisis algoritma. Memahami
masalah merupakan langkah awal yang harus dilakukan untuk dapat menyelesaikan sebuah
permasalahan. Tanpa memahami suatu permsalahan secara benar, maka kemungkinan dari
solusi yang ditawarkan akan tidak tepat dan bahkan salah.
Menentukan cara komputasi, bentuk penyelesaian masalah (secara tepat atau
perkiraan), bentuk struktur data, dan teknik desain algoritma adalah langkah berikutnya
setelah memahami masalah yang terjadi. Langkah ini merupakan strategi atau pendekatan
umum yang dilakukan untuk menyelesaikan suatu permasalahan.

6
Mendesain algoritma adalah lengkah berikutnya yang dapat dilakukan dengan cara
menggunakan bahasa natural, flowchart atau pseudocode.
Kemudian melakukan pembuktian apakah algoritma yang telah dibuat telah sesuai
dengan cara mengujinya, memberikan input lalu melihat hasilnya apakah telah sesuai atau
tidak. Jika telah sesuai maka algoritma yang dibuat telah benar.
Menganalisis algoritma dilakukan setelah algoritma tersebut dinyatakan benar
secara proses. Analisis yang dilakukan berkaitan dengan efisiensi waktu, efisiensi
penggunaan memory, simplisitas, dan generalitas. Jika algoritma yang telah dibuat efisien
dalam penggunaan waktu dan memory serta sederhana dan mudah dipahami maka
algoritma tersebut dapat dinyatakan optimal.

Memahami masalah

Menentukan:
Cara komputasi, penyelesaian secara tepat atau
berupa perkiraan, struktur data, teknik desain
algoritma

Mendesain sebuah algoritma

Pembuktian

Menganalisa algoritma

Mengubah algoritma ke
dalam bentuk kode program

Gambar 1.1. Proses desain dan analisis algoritma.

7
Terakhir adalah mengubah algoritma yang telah disusun dan optimal tersebut ke
dalam bentuk kode program untuk selanjutnya dapat digunakan untuk menyelesaiakan suatu
permaslaahan tertentu.

4. Jenis Proses dalam Algoritma


1) Sequence process, proses yang berurutan (runut)
Jenis proses ini memiliki ciri mengeksekusi langkah atau perintah secara berurutan.
Proses kedua dikerjakan setelah proses pertama selesai, kemudian dilanjutkan dengan
proses ketiga. Instruksi dikerjakan satu persatu mulai dari instruksi pertama sampai dengan
instruksi terakhir.
2) Selection process, proses pemilihan.
Pada proses ini, suatu proses dikerjakan jika suatu kondisi yang menjadi syaratnya
terpenuhi. Suatu instruksi adakalanya dapat dikerjakan apabila memenuhi persyaratan
tertentu. Sebagai contoh, jika traffic light berwarna hijau maka kendaraan boleh lewat. Jika
berwarna merah, kendaraan berhenti.
3) Iteration process, proses pengulangan
Pada proses ini, suatu proses dikerjakan berulang kali selama kondisi tertentu
terpenuhi. Misalnya boleh memasukkan password email selama password masih salah dan
belum tiga kali mencoba.

5. Syarat Algoritma
Suatu algoritma yang dibangun untuk menyelesaikan suatu masalah tentu harus
memiliki kualitas yang baik. Efektif dan efisien dalam menyelesaikan suatu permasalahan
agar tidak menimbulkan permasalahan yang baru. Menurut seorang pakar Ilmu Komputer
bernama Donald E. Knuth, sebuah algoritma harus memenuhi persyaratan berikut:
1) Finiteness
Algoritma harus berakhir (terminate, halt) setelah melakukan sejumlah langkah
proses.
2) Definiteness
Setiap langkah algoritma harus didefenisikan dengan tepat dan tidak menimbulkan
makna ganda (ambiguous). Makna ganda dapat membingungkan yang berakitbat kepada
kesalahan langkah dan tidak tercapainya penyelesaian permasalahan yang diinginkan. Oleh

8
karena itu maka sebetulnya cara paling tepat untuk menuliskan algoritma adalah dengan
menggunakan formal language (Bahasa pemrograman computer).
c) Input
Setiap algoritma memerlukan data sebagai masukan untuk diolah. Algoritma yang
tidak memerlukan apa-apa sebetulnya tidak bergitu bermanfaat karena jumlah kasus yang
dapat diselesaikan juga terbatas.
d) Output
Setiap algoritma memberikan satu atau beberapa hasil keluaran.
e) Effectiveness
Langkah-langkah algoritma dikerjakan dalam waktu yang wajar.

6. Program dan Pemrograman


Suatu algoritma dapat menyelesaikan suatu masalah
jika dieksekusi oleh pemroses. Pemroses tersebut dapat
berupa manusia, komputer, robot, mesin, dan sebagainya.
Pemroses tersebut bertugas untuk membaca setiap langkah
instruksi di dalam algoritma lalu mengerjakannya secara
berurut. Oleh karena itu, dalam pembacaan dan
pengeksekusian suatu algoritma, suatu pemroses harus:
• Mengerti setiap langkah dalam algoritma Simak penjelasan
Pak Dosen di sini!
• Mengerjakan operasi yang bersesuaian dengan
langkah tersebut.
Dalam konteks pemrograman, kita akan fokus kepada komputer sebagai pemroses
dari algoritma yang kita bangun. Beberapa istilah berikut perlu kita ketahui sebelum
melangkah lebih jauh dalam pembelajaran algoritma dan pemrograman dasar.

“Program adalah algoritma yang ditulis dalam bahasa komputer”

Algoritma yang telah dituliskan sebelumnya, dikonversi kedalam bentuk kode


program sehingga program tersebut dapat menyelesaikan masalah sesuai dengan
dibangunnya algoritma tersebut.

9
“Bahasa pemrograman adalah bahasa komputer yang digunakan untuk menulis
program”

Dalam membangun program kita dapat menggunakan bahasa pemrograman.


Seperti bahasa manusia yang beragam, bahasa pemrograman itu sendiri ada banyak jenis.
Kita dapat memilih dan menetap di satu atau beberapa bahasa pemrograman yang ingin kita
kuasai. Berikut beberapa istilah lainnya yang perlu untuk diketahui:
• Programmer adalah orang yang membuat program.
• Pemrograman adalah kegiatan merancang dan menulis program.
• Dalam pemrograman tedapat aktifitas menulis kode program, kegiatan ini dinamakan
coding.

7. Bahasa Pemrograman
Pada saat belajar membuat sebuah program, hal tersebut berarti bahwa kita sedang
mempelajari cara atau metode untuk menyelesaikan suatu permasalahan, kemudian
menuliskan algoritma pemecahan masalah tersebut ke dalam notasi tertentu. Pada saat kita
membuat program menggunakan bahasa pemrograman tertentu, hal tersebut berarti bahwa
kita sedang belajar memaknai suatu bahasa komputer. Belajar memaknai berarti kita
mempelajari aturan tata bahasanya (sintaks), instruksi-instruksinya, tata cara pengoperasian
compilernya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang
ditulis hanya menggunakan bahasa itu saja.
Pada dasarnya dalam pemrograman, kita lebih ditekankan pada pemecahan
masalah-masalah, sedangkan menulis kode program merupakan kegiatan terakhir. Tahap
awal dari pembuatan program adalah mendefenisikan masalah, menentukan solusi, memilih
algoritma, menulis program, menguji program, menulis dokumentasi program, dan
perawatan program. Rancangan solusi berisi urutan langkah-langkah pencapaian solusi yang
biasanya ditulis dengan notasi-notasi deskriptif.
Terdapat banyak bahasa pemrograman yang tersedia saat ini, tetapi desain
pemecahan masalah harus dapat diterjemahkan ke dalam bahasa apapun. Berdasarkan
tujuan pengaplikasiannya, bahasa pemrograman dikelompokkan ke dalam 2 jenis, yaitu;

10
1) Bahasa pemrograman bertujuan khusus (Specific Purpose Programming Language).
Bahasa pemrograman yang termasuk dalam kelompok ini adalah Cobol (untuk
penerapan bisnis administrasi), Fortran (aplikasi komputasi ilmiah), Bahasa assembly
(aplikasi pemrograman mesin), Prolog (aplikasi kecerdasan buatan), MySQL (database),
dan lain sebagainya.
2) Bahasa pemrograman bertujuan umum (General Purpose Programming Language).
Bahasa pemrograman ini dapat digunakan untuk berbagai aplikasi. Yang termasuk ke
dalam kelompok ini adalah bahasa Pascal, basic, C, C++, Python, Java, dan lain-lain.

Berdasarkan kedekatan bahasa pemrograman, apakah lebih condong ke bahasa


mesin atau bahasa manusia, maka bahasa pemrograman juga dikelompokkan atas dua
macam, yakni;
1) Bahasa pemrograman tingkat rendah
Bahasa jenis ini dirancang agar setiap isntruksinya langsung dikerjakan oleh computer,
tanpa harus melalui penerjemmah. Contohnya adalah Bahasa mesin. Bahasa mesin
adalah sekumpulan kode biner (0 dan 1) setiap perintah dalam Bahasa mesin langsung
dimengerti oleh mesin dan langsung dikerjakan. Bahasa tingkat rendah bersifat primitif,
sangat sederhana, dan relatif sulit dipahami oleh manusia. Bahasa Assembly dimasukkan
ke dalam kelompok ini karena notasi yang dipakai dalam bahasa ini merupakan bentuk
yang lebih manusiawi dari bahasa mesin. Dalam melaksanakan instruksinya masih
diperlukan penerjemah (oleh assembler) ke dalam bahasa mesin. Bahasa tingkat rendah
adalah bahasa pemrograman generasi pertama yang pernah ditulis.
2) Bahasa pemrograman tingkat tinggi
Bahasa pemrograman jenis ini membuat program menjadi lebih mudah dipahami dan
lebih dekat ke bahasa manusia. Program yang dibangun menggunakan bahasa
pemrogrman tingkat tinggi tidak dapat langsung dieksekusi oleh komputer. Mengingat
mesin hanya mengenali bahasa mesin atau kode 0 dan 1, maka kode dalam bahasa
tingkat tinggi ini perlu diterjemahkan lebih dahulu oleh sebuah translator bahasa
(compiler) ke dalam bahasa mesin sebelum akhirnya dieksekusi oleh CPU. Contoh Bahasa
tingkat tinggi yaitu; C, C++, Java, Python.

11
Agar dapat lebih memahami materi di atas, berikut diberikan contoh algoritma dan
bentuk kode programnya.

• Contoh 1 - Algoritma menghitung luas lingkaran


Langkah 1 Tentukan nilai PHI.
Langkah 2 Tentukan nilai jari-jari lingkaran (r).
Langkah 3 Pangkatduakan nilai r dan simpan pada variabel R.
Langkah4 Kalikan nilai PHI dengan R dan simpan pada variabel luasLingkaran.
Langkah5 Tentukan isi variabel luasLingkaran sebagai nialai luas dari lingkaran yang
diukur.
Atau
Langkah 1 Tentukan nilai PHI.
Langkah 2 Tentukan nilai jari-jari lingkaran (r).
Langkah 3 R = r*r.
Langkah4 luasLingkaran = PHI * R.
Langkah5 Tentukan isi variabel luasLingkaran sebagai nialai luas dari lingkaran yang
diukur.

Program dari algoritma di atas adalah sebagai berikut:


#include <iostream>
using namespace std;
int main() {
const float PHI = 3.14f;
float r = 2.5f;
float R = r*r;
float luasLingkaran = PHI*R;
Simak penjelasan
cout<<"Luas lingkaran adalah "<<luasLingkaran<<endl; Pak Dosen di sini!
return 0;
}

12
Output:
Luas lingkaran adalah 19.625

Program di atas adalah contoh program penerapan algoritma yang telah dibuat
untuk mengetahui luas suatu lingkaran berdasarkan nilai jari-jari tertentu. Berdasarkan
contoh program di atas, maka dapat diketahui bahwa:
• Dideklarasikan konstanta PHI bertipe float yang menampung nilai 3.14.
• Dideklarasikan variabel r bertipe float untuk menampung nilai jari-jari dengan nilai
2.5.
• Dideklarasikan variabel R bertipe float untuk menampung hasil pemangkatduaan r.
• Dideklarasikan variabel luasLingkaran bertipe float untuk menampung hasil perkalian
PHI * R.
• Nilai luasLingkaran ditampilkan melalui perintah cout.

1. Buatlah algoritma untuk menghitung volume suatu kubus dengan panjang sisi tertentu.
Tuliskan algoritma yang telah anda buat pada tempat yang telah disediakan berikut ini.

13
2. Berdasarkan algoritma pada soal nomor 1 yang telah anda buat, buatlah program dari
algoritma tersebut dan tuliskan kode programnya pada tempat yang telah disediakan
berikut ini.

output

1. Untuk membuat segelas teh dibutuhkan 1 sendok gula, 1 teh seduh, dan 250 ml air
mendidih. Buatlah algoritma dan program untuk menampilkan proses pembuatan teh
tersebut. Dimana banyaknya gula, teh seduh, dan air akan menyesuaikan tergantung dari
inputan berapa gelas teh yang akan dibuat.
2. Buatlah algoritma dan program untuk menghitung volume bola dengan diameter
tertentu.

14
15
16
17
18
BAB II
STRUKTUR DASAR DAN NOTASI ALGORITMA

1. Struktur Dasar Algoritma


a. Pernyataan
Sebuah algoritma merupakan deskripsi langkah-
langkah pelaksanaan suatu proses. Setiap langkah dalam
algoritma dinyatakan dalam sebuah pernyataan (statement)
atau istilah lainnya adalah instruksi. Sebuah pernyataan berisi
aksi yang dilakukan. Jika sebuah pernyataan dieksekusi oleh
Simak penjelasan
pemroses, maka aksi bersesuaian dengan pernyataan itu Pak Dosen di sini!
dikerjakan.
Sebagai contoh, didalam sebuah algoritma terdapat pernyataan-pernyataan berikut:
1) Tulis “Halo, Dunia”.
Maka pernyataan tersebut menggambarkan aksi menulis pesan, “Halo, Dunia”.
2) Kalikan x dengan 5.
Menggambarkan aksi mengalikan x dengan 5 dan hasil perkalian disimpan di dalam
variabel x lagi.
3) Jika bulan =’januari’ maka tulis “jumlah hari = 31”.
Terdiri dari dua aksi, yaitu membandingkan nilai variable bulan dengan ‘januari’, dan
aksi tulis pesan ‘jumlah hari = 31’ jika perbandingan itu benar.
Di dalam algoritma terdapat berbagai jenis pernyataan, seperti pernyataan ekspresi,
pemilihan, pengulangan, prosedur, gabungan, dan sebagainya.

b. Konstruksi dasar
Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkah langkah
tersebut dapat berupa runtunan aksi, pemilihan aksi, dan pengulangan aksi. Ketiga jenis
langkah tersebut membentuk konstruksi suatu algoritma.

1) Runtutan (Sequence)
Sebuah runtutan terdiri atas satu atau lebih pernyataan, setiap pernyataan ditulis
dalam satu baris atau dipisahkan dengan tanda titik koma. Tiap pekerjaan dikerjakan secara

19
berurutan (sekuensial) sesuai dengan urutannya di dalam teks algoritma, yaitu sebuah
instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan. Jika urutannya
diubah maka hasil akhirnya juga mungkin berubah. Runtutan satu atau lebih pernyataan
dinamakan pernyataan gabungan (compound statement). Sebagai contoh, meninjau kembali
algoritma mempertukarkan isi dua buah ember, A dan B:

1) Algoritma menukarkan isi dua buah ember


Langkah 1. Tuangkan air dari ember A ke dalam ember C
Langkah 2. Tuangkan air dari ember B ke dalam ember A
Langkah 3. Tuangkan sir dari Ember C ke dalam ember B

Algoritma di atas terdiri atas 3 buah pernyataan. Tiap pernyataan akan dieksekusi
dalam urutan yang sama sebagaimana tertulis di dalam teks algoritma tersebut. Hasil
algoritma ini adalah: ember A berisi air dari ember B semula, dan ember B berisi air dari
ember A semula.
Pertukaran isi kedua ember memberikan inspirasi bagaimana mempertukarkan nilai
dari dua buah peubah. Misalkan peubah A berisi nilai 8 dan peubah B berisi nilai 5. Kita ingin
mempertukarkan nilai A dan B sedemikian sehingga A bernilai 5 dan B bernilai 8. Jika anda
menulis algoritmanya sebagai berikut:

2) Algoritma menukarkan isi dua buah variabel yang keliru


Langkah 1. Masukkan nilai A ke dalam B
Langkah 2. Masukkan nilai B ke dalam A

Maka hasilnya A=8 dan B=8, tidak terjadi pertukaran karena algoritmanya salah. Agar
pertukaran keduanya berjalan dengan benar maka kita memerlukan peubah bantu, misalnya
peubah C, sehingga algoritmanya menjadi:

3) Algoritma menukarkan isi dua buah variabel yang benar


Langkah 1. Masukkan nilai A ke dalam C
Langkah 2. Masukkan nilai B ke dalam A
Langkah 3. Masukkan nilai C ke dalam B

20
2) Pemilihan (Decision)
Ada saat dimana sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Misalnya
kendaraan anda tiba di perempatan yang terdapat traffic light. Jika lampu berwarna merah,
maka kendaraan harus berhenti. Langkah ini ditulis dalam pernyataan berikut:

Jika lampu traffic light berwarna merah, maka berhenti.

Pada proses ini, suatu proses dikerjakan jika suatu kondisi terpenuhi. Suatu instruksi
adakalanya dapat dikerjakan apabila memenuhi persyaratan tertentu. Sebagai contoh, jika
traffic light berwarna hijau maka kendaraan boleh lewat. Jika berwarna merah, kendaharaan
berhenti.

3) Pengulangan (Repetition)
Salah satu kelebihan komputer adalah kemampuannya untuk mengerjakan
pekerjaan yang sama berulang kali tanpa kenal Lelah dan bosan. Ini berbeda dengan manusia
yang cepat lelah bila mengerjakan pekerjaan yang sama berulang-ulang. Tidak hanya Lelah
tapi juga cepat bosan.
Mungkin waktu sekolah anda pernah dihukum oleh bapak/ibu guru dengan
menuliskan kalimat yang sama sebanyak 100 kali. Tentu hal tersebut sangat melelahkan dan
membutuhkan waktu lama. Namun jika dikerjakan dengan bantuan program komputer maka
hal tersebut dapat diselesaikan dalam waktu kurang dari 1 detik.

2. Notasi Algoritma
a. Flowchart
Flowchart merupakan suatu bagan dengan symbol-simbol tertentu yang
menggambarkan urutan proses secara mendetail dan
hubungan antara suatu proses (intruksi) dengan proses lainnya
dalam suatu algoritma.
1) Simbol flowchart
Dalam perancangan flowchart sebenarnya tidak ada
patokan mutlak. Hal ini didasari bahwa bagan flowchart
merupakan sebuah gambaran hasil pemikiran dalam
Simak penjelasan
menganalisa suatu permasalahan dalam computer. Secara Pak Dosen di sini!

21
garis besar, suatu flowchart terdiri atas 3 bagian utama; Input, Proses, dan Output. Adapun
symbol-simbol flowchart dapat dilihat pada Tabel 2.1.

Tabel 2.1. Simbol Flowchart.

No Simbol Fungsi
1 Simbol Flow Direction
Simbol yang digunakan untuk menghubungkan
antara symbol yang satu dengan symbol yang
lainnya. Symbol ini juga disebut sebagai connecting
line.
2 Simbol Terminator
Simbol permulaan (start) dan pengakhiran (stop) dari
suatu kegiatan

3 Simbol Konektor
Yaitu simbol keluar-masuk atau penyambungan
proses dalam lembar/halaman yang sama

4 Simbol Konektor
Yaitu symbol keluar-masuk atau penyambungan
proses dalam lembar / halaman yang berbeda

5 Simbol Proses
Simbol yang menunjukan pengolahan/pemrosesan
yang dilakukan oleh komputer

22
6 Simbol Pemilihan
Simbol pemilihan proses berdasarkan kondisi yang
ada

7 Simbol Input-Output
Simbol yang menyatakan proses input dan output
tanpa bergantung dengan jenis peralatannya

8 Simbol Predefine Process


Simbol untuk pelaksanaan suatu bagian (sub-
program)/prosedur

2) Jenis proses dalam flowchart


Pada Gambar 2.1. dapat kita ketahui bahwa sesuai konstruksi dasar dari sebuah
algoritma, flowchart juga terdiri atas 3 jenis proses yaitu proses sekuensial, seleksi kondisi
dan perulangan.

Gambar 2.1. Jenis proses pada flowchart.

23
Dapat kita lihat pada flowchart sekuensial bahwa setiap tahapannya dilakukan atau
diproses secara berurutan dari awal hingga akhir. Sedangkan pada proses seleksi kondisi, ada
satu simbol percabangan yang memecah alur pengeksekusian. Aliran proses pengeksekusian
bergantung kepada hasil pengujian pada percabangan B. Jika hasilnya bernilai true maka
proses akan berlanjut ke proses D, jika tidak maka terlebih dahulu ke proses C dan lanjut ke
proses D. Pada proses perulangan dapat kita lihat bahwa terjadi pengeksekusian sebuah
proses secara berulang jika kondisi yang diuji pada percabangan C bernilai false. Proses
pengeksekusian lanjut ke proses D dan kembali ke proses B. Perulangan terus dilakukan
selama kondisi bernilai true dan kan lanjut ke output E jika kondisi bernilai falase.

3) Contoh proses dalam flowchart


Agar dapat lebih mudah memahai proses dalam flowchart yang dimaksud maka
berikut kami berikan contoh algoritma dalam struktur bahasa dan bentuknya dalam
flowchart.
• Runtutan
Suatu algoritma yang pernyataannya dieksekusi secara berurutan disebut dengan
runtutan sequence. Artinya, perintah kedua hanya akan dieksekusi jika perintah pertama
selesai dieksekusi, perintah ke tiga akan dieksekusi jika perintah kedua selesai dieksekusi dan
seterusnya. Perhatikan Gambar 2.2.

Gambar 2.2. Contoh algoritma dan flowchart proses runtutan (Sequence)

24
Pada Gambar 2.2. dapat diketahui bahwa terdapat suatu algoritma untuk
menghitung luas persegi panjang. Untuk mendapatkan luas suatu persegi maka perlu
diketahui panjang dan lebarnya. Kemudian panjang dan lebar dikalikan sehingga
memperoleh luas. Pada gambar dapat kita lihat perintah pembacaan nilai dan output berupa
nilai luas disimbolkan dengan jajargenjang. Proses penentuan nilai luas diperoleh dari hasil
perkalian panjang dan lebar yang disimbolkan dengan persegi panjang. Simbol mulai dan
selesai selalu ada dalam flowchart yang ditunjukkan oleh simbol terminator.

• Seleksi kondisi
Seleksi kondisi berarti suatu perintah tertentu akan diekseskusi hanya jika kondisi
yang menjadi syaratnya terpenuhi. Adapun contoh seleksi kondisi dapat dilihat pada Gambar
2.3. Pada gambar tersebut diketahui bahwa terdapat suatu algoritma untuk menentukan
apakah suatu nilai dinyatakan lulus atau tidak. Pada algoritma yang telah disusun kemudian
dibuat ke dalam bentuk flowchart.
Pada flowchart mulai dan selesai menggunakan symbol terminator. Pembacaan
input NA kemudian disimbolkan dengan symbol input, begitupula dengan output. Pada
flowchart dapat juga kita lihat terdapat seleksi kondisi dimana jika kondisi yang
dipertanyakan bernilai benar maka akan mengarahkan ke perintah pencetakan string
“Lulus”. Namun jika salah akan mengarahkan ke pencetakan string “Tidak Lulus”. Setelah itu
selesai.

Gambar 2.3. Contoh algoritma dan flowchart proses seleksi kondisi (Decision).

25
Pada bagian decision atau seleksi kondisi, hanya boleh terdapat dua panah keluar
yakni yang bernilai true dan false. Jika terdapat 2 panah keluar dengan nilai yang sama (sama-
sama benar/salah) maka hal tersebut keliru dan tidak logis. Dalam contoh di atas, proses akan
melewati arah benar jika nilai NA lebih besar dari 65 dan akan melewati arah salah jika NA
bernilai dibawah atau sama dengan 65.

• Perulangan
Perulangan atau repetition adalah proses mengeksekusi perintah yang sama
berulang kali. Pada contoh Gambar 2.4 dapat diketahui bahwa terdapat algoritma mencetak
angka 0 hingga N, dimana N adalah inputan pengguna. Dapat kita lihat bahwa untuk
mencetak angka 0 hingga N yang ditentukan terdapat 3 perintah/langkah yang dieksekusi
berulang kali yaitu langkah 5, 6, dan 7.
Pertama tama nilai N diinput. Kemudian menentukan nilai I sama dengan 0.
Selanjutnya ada seleksi kondi yang menguji kondisi I>N. Jika I lebih besar dari N berarti
program selesai dan jika tidak atau salah maka nilai I dicetak lalu ditambah dengan satu dan
kembali ke proses pengujian. Hal tersebut dilakukan berulang hingga kondisi/proses
pengujian memberikan nilai benar. Dengan alur flowchart tersebut maka dapa dicetak angka
0 hingga N sesuai yang diinputkan.

Gambar 2.4. Contoh algoritma dan flowchart proses perulangan (Repetition).

26
b. Pseudocode
Algoritma Juga dapat dituangkan dengan menggunakan pseudecode
(pseudo=bayangan, code=proram). Pseudecode menggunakan instruksi tulisan yang mirip
instruksi bahasa pemrograman. Salah satu versi pseudecode disebut Structured English
menggunakan kode instruksi berikut:

1) Untuk mendapatkan data masukan: input, read, get, key-in


2) Untuk menampilkan keluaran hasil proses: print, write, display
3) Untuk menyatakan pemberian nilai: 
4) Untuk menyatakan proses pemilihan:
If <kondisi benar>
<proses>
Else
<proses>
Endif
---------------------------------------------
If<kondisi benar>
<proses>
Endif

5) Untuk menyatakan proses pengulangan:


For<kondisi benar>
<proses>
Endfor
----------------------------------------------
While <kondisi benar>
<proses>
Endwhile
-----------------------------------------------
Repeat
<proses>
until <kondisi benar>
----------------------------------------------

27
do
<proses>
while<kondisi benar>

1) Fungsi Pseudocode
• Pseudocode memiliki fungsi sebagai alat dokumentasi
• Pseudocode dapat mempemudah penggunanya dalam memahami serta
memperjelas cara menyelesaikan masalanya.
• Pseudocode dapat membantu penggunanya dalam menuliskan sebuah algoritma
yang akan dibuatnya.
• Pseudocode memiliki aspek yang sangat ringkas dan mudah karena pseudocode
tidak bergantung pada suatu sistem tertentu dan itulah yang menjadikannya prinsip
utama dari sebuah algoritma.

2) Struktur Pseudocode
• Bagian judul
o Judul tidak boleh terdapat spasi. Spasi bisa diganti dengan karakter “_”
(underscore).
o Judul tidak boleh diawali dengan angka.
o Judul tidak boleh menggunakan istilah – istilah yang biasa digunakan
sebagai keyword di bahasa pemrograman.
o Judul boleh menggunakan huruf besar, huruf kecil, dan kombinasinya
selama tidak melanggar aturan diatas.
• Bagian deskripsi
o Bagian deskripsi ini digunakan untuk mendefinisikan atau mendeklarasikan
jenis – jenis variabel, masukan dan keluaran yang akan digunakan dalam
proses algoritma.
• Bagian implementasi
o Bagian implementasi ini bisa dikatakan sebagai bagian inti atau utama, yang
mana merupakan bagian jalannya sebuah algoritma. Pada bagian ini
terdapat sekumpulan perintah algoritma, perintahnya pun bisa berupa
runtutan, kondisional ataupun perulangan.

28
3) Contoh pseudocode
Program hitung_luas_segitiga
Declaration:
Variable panjang1, tinggi1, panjang2, tinggi2, luas and Kaleng
Input:
panjang1, tinggi1, panjang2, tinggi2
Output:
Kaleng
Process:
Read panjang1, tinggi1, panjang2, tinggi2
Luas  panjang1*tinggi1+panjang2*tinggi2
Kaleng luas/12
Print “kebutuhan cat =” kaleng

c. Kode maya
Selain menggunakan flowchart dan pseudocode, kita juga dapat menuangkan
algoritma kedalam bentuk pseudecode versi Bahasa Indonesia atau disebut sebagai kode
maya.
Sebagai contoh, untuk memperindah Toko Tekom Jaya, akan dilakukan pengecatan
dinding di kedua sisinya. Sekaleng cat dapat digunakan untuk mengecat dinding seluas 12
meter persegi. Tuliskan algoritma untuk menghitung berapa kaleng cat yang diperlukan

• Contoh kode maya


Program hitung_luas_segitiga
Deklarasi:
Variabel panjang1, tinggi1, panjang2, tinggi2, luas dan Kaleng
Masukan:
panjang1, tinggi1, panjang2, tinggi2
Keluaran:
Kaleng
Proses:
Baca panjang1, tinggi1, panjang2, tinggi2
Luas  panjang1*tinggi1+panjang2*tinggi2

29
Kaleng luas/12
Cetak “kebutuhan cat =” kaleng

Dari algoritma kode maya tersebut di atas juga dapat dibuat flowchartnya seperti
ditunjukkan pada Gambar 2.2.

Gambar 2.5. Contoh flowchart

Agar dapat lebih memahami algoritma, berikut diberikan contoh program dari
flowchart pada Gambar 2.2 dan kode maya di atas. Program dari algoritma di atas adalah
sebagai berikut:
• Contoh 1 – Program mengitung kaleng cat yang dibutuhkan untuk mengecat dinding.
#include <iostream>
using namespace std;
int main() {
float P1, T1, P2, T2, luas, kaleng;
cout<<"Masukkan tinggi dinding sisi bagian dalam :"<<endl;
cin>>T1;
cout<<"Masukkan panjang dinding sisi bagian dalam :"<<endl;

30
cin>>P1;
cout<<"Masukkan tinggi dinding sisi bagian luar :"<<endl;
cin>>T2;
cout<<"Masukkan panjang dinding sisi bagian luar :"<<endl;
cin>>P2;

luas = (P1*T1) + (P2*T2);


kaleng = luas/12;

cout<<"Jumlah kaleng cat yang dibutuhkan adalah "<<kaleng<<" kaleng cat"<<endl;


return 0;
}
Output:
Masukkan tinggi dinding sisi bagian dalam :
2
Masukkan panjang dinding sisi bagian dalam :
6
Masukkan tinggi dinding sisi bagian luar :
2
Masukkan panjang dinding sisi bagian luar :
3
Jumlah kaleng cat yang dibutuhkan adalah 1.5 kaleng cat

Program di atas adalah contoh program penerapan algoritma yang telah dibuat
untuk mengetahui jumlah kaleng cat yang dibutuhkan untuk mengecat dinding. Dimana 1
kaleng cat dapat digunakan untuk mengecat dinding seluas 12 meter persegi.
Pada program di atas dapat kita ketahui bahwa:
• Dideklarasikan variabel Klg, Ls, T1, T2, P1, P2 bertipe float. Hal tersebut berarti bahwa
seluruh variabel tersebut dapat menampung nilai real atau pecahan.
• Kemudian string "Masukkan tinggi dinding sisi bagian dalam :" dicetak lalu disuse
dengan pengiinputan nilai dari keyboard
• Nilai variabel T1 diperoleh dari input keyboard menggunakan perintah cin. Hal yang
sama juga berlaku untuk P1, T2, dan P2.

31
• Nilai variabel Ls diperoleh dari hasil (P1*T1) + (P2*T2).
• Nilai Klg diperoleh dari Ls/12
• Kemudian setelah nilai Klg diperoleh, nilai tersebut ditampilkan ke layar melalui
perintah cout.

1. Buatlah flowchart untuk membuat teh manis hangat, dimana teh tersebut harus diaduk
sebanyak 20 kali sebelum disajikan. Gunakan perulangan!

32
2. Buatlah Flowchart untuk menghitung volume suatu kubus. Kubus dinyatakan besar jika
volumenya lebih besar dari 30 cm3 dan selain itu dianggap kecil. Gambarkan
flowchartnya pada tempat yang telah disediakan berikut ini.

1. Buatlah algoritma dan flowchart menarik uang di ATM!


2. Buatlah flowchart login ke akun emailmu!
3. Buatlah algoritma dan flowchart untuk menampilkan nama ayah dan ibumu sebanyak
100 kali!

33
34
35
36
BAB III
VARIABEL & KONSTANTA

1. Variabel
Variabel merupakan sebuah "wadah" yang digunakan
untuk menampung data/nilai dengan tipe data tertentu. Jika
dianalogikan, variabel dapat dianggap sebagai sebuah gelas.
Gelas tersebut ditujukan untuk menampung benda cair seperti
teh ataupun kopi. Variabel kurang lebih seperti gelas tersebut.
Variabel digunakan untuk menampung data sementara yang
akan diolah pada baris perintah yang ada pada suatu program.
Simak penjelasan
Lebih spesifiknya, variabel adalah penamaan terhadap
Pak Dosen di sini!
lokasi memori (Random Access Memory) untuk menyimpan
nilai sementara di dalamnya. Penamaan ini bertujuan untuk mempermudah kita menyimpan
ataupun mengolah suatu data. Dapat dibayangkan jika tidak ada mekanisme penamaan
variabel. Maka kita harus menghafal alamat memori dan mengkonversi nilai yang kita simpan
ke dalamnya secara manual. Setelah itu, barulah nilai tersebut dapat kita proses. Hal tersebut
tentu akan sangat merepotkan seorang programmer.
Jadi, dapat dikatakan bahwa variabel merupakan unit dasar dari sebuah program.
Tanpa variabel kita akan kesulitan untuk mengolah data pada program yang kita buat.
a. Sifat suatu variabel
Adapun sifat dari sebuah variabel adalah sebagai berikut:
1) Nilai yang disimpan dalam variabel dapat diubah selama eksekusi program. Variabel
yang telah menampung suatu nilai dapat diisi kembali dengan nilai yang berbeda.
Namun, harus tetap dengan tipe data yang sama. Nilai yang tersimpan adalah nilai
yang terakhir dimasukkan.
2) Variabel hanyalah sebuah nama yang diberikan ke lokasi memori. Semua operasi
yang dilakukan pada variabel akan memberikan efek kepada lokasi memori, bukan
kepada nama variabel.

37
3) Dalam bahasa pemrograman C++, sebuah variabel harus dideklarasikan terlebih
dahulu sebelum dapat digunakan. Hal tersebut bertujuan untuk mengalokasikan
memori yang akan digunakan untuk menyimpan data tertentu.
b. Aturan penamaan variabel/identifier
Dalam memberikan nama variabel /identifier juga terdapat aturan khusus yang wajib
untuk dipenuhi dan diperhatikan. Berikut aturan pemberian nama variabel dalam C++:
1) Nama variabel dapat terdiri atas satu atau beberapa karakter. Karakter terebut
dapat terdiri dari angka (0-9), huruf (A-Z, a-z), simbol dollar ($), garis bawah (_).
2) Tidak boleh diawali dengan angka.
3) Tidak diperbolehkan untuk menggunakan simbol tertentu dalam nama variabel
seperti ?, !, &, %, @, #, *, (, ), -, +, =, ', ", dan lain-lain.
4) Variabel hanya terdiri dari satu kata (tidak boleh lebih dari satu kata), dengan kata
lain tidak boleh megandung spasi. Jika nama variabel yang akan diberikan terdiri
atas dua kata maka pisahkan menggunakan underscore (_) bukan spasi.
5) Bersifat case sensitive. Nama variabel yang sama akan dianggap berbeda jika bentuk
hurufnya (kapital/non-kapital) berbeda.
6) Tidak boleh mengandung keyword atau kata kunci tertentu yang digunakan pada
C++. Contohnya seperti int, float, char, private, class, struct dan lain-lain.
7) Panjang variabel tidak dibatasi.
Selain syarat di atas, yang perlu diperhatikan juga adalah nama variabel sebaiknya
merepresentasikan data yang ditampungnya. Hal ini bertujuan agar mempermudah
programmer mengetahui isi dan gambaran data yang tersimpan dalam suatu variabel.
c. Sintaks pendeklarasian variabel
Terdapat beberapa sintaks yang dapat digunakan dalam pendeklarasian variabel.
1) Sintaks mendeklarasikan sebuah variabel
Adapun sintaks untuk mendeklarasikan sebuah variabel adalah sebagai berikut:

tipe_data nama_variabel;
Keterangan:
• Tipe_data: Diisi dengan tipe data yang diinginkan. Misalnya berupa integer, double,
float, char, dan tipe data lainnya.
• Nama_variabel: Diisi dengan nama variabel yang kita inginkan. Baca Kembali syarat
pemberian nama suatu variabel.

38
Agar lebih mudah untuk memahami sintaks di atas, berikut kami berikan contoh
penggunaannya dalam sebuah gambar ilusrasi. Perhatikan Gambar 3.1.

Gambar 3.1. Contoh pendeklarasian sebuah variabel.

Berdasarkan contoh pada Gambar 3.1, dapat diketahui bahwa telah dideklarasikan
sebuah variabel bernama tinggiBadan bertipe integer, dimana:
• int adalah tipe data yang digunakan untuk mendeklarasikan variabel. Sehingga
variabel yang ada di depan int dapat digunakan untuk menampung nilai bertipe
integer atau bilangan bulat.
• tinggiBadan adalah nama variabel yang dideklarasikan yang dapat menampung data
bertipe integer. Nama variabel sudah memenuhi syarat.
• “;” adalah penanda akhir baris perintah.
2) Sintaks mendeklarasikan lebih dari satu variabel sekaligus
Adapun sintaks untuk mendeklarasikan beberapa variabel sekaligus dalam satu baris
perintah pendeklarasian adalah sebagai berikut:

tipe_data nama_variabel1, nama_variabel2, nama_variabelN;


Keterangan:
• Tipe_data: Diisi dengan tipe data yang diinginkan. Misalnya berupa integer, double,
float, char, dan tipe data lainnya.
• Nama_variabel1: Diisi dengan nama variabel pertama yang diinginkan.
• Nama_variabel2: Diisi dengan nama variabel kedua yang diinginkan.

39
• Nama_variabelN: Diisi dengan nama variabel ke-N yang diinginkan.
• “,” : Tanda baca koma merupakan tanda pemisah tiap nama variabel.
Agar lebih mudah untuk memahami sintaks di atas, berikut kami sertakan contoh
penggunaan sintaks di atas dalam sebuah gambar ilustrasi. Perhatikan Gambar 3.2.

Gambar 3.2. Contoh pendeklarasian beberapa variabel sekaligus.

Berdasarkan Gambar 3.2, dapat diketahui bahwa telah dideklarasikan 2 buah


variabel yang bertipe float, dimana:
• float adalah tipe data yang digunakan untuk mendeklarasikan dua buah variabel
dalam satu baris perintah.
• tinggiBadan dan beratBadan adalah nama variabel yang dideklarasikan dan dapat
digunakan untuk menampung data bertipe float (desimal/real).
3) Sintaks mendeklarasikan sebuah variabel disertai inisialisasi nilai
Adapun sintaks untuk mendeklarasikan sekaligus menginisialisasiakan sebuah nilai
ke dalam suatu variabel adalah sebagai berikut:

tipe_data nama_variabel = nilai;


Keterangan:
• Tipe_data: Diisi dengan tipe data yang diinginkan. Misalnya berupa integer, double,
float, char, dan tipe data lainnya
• Nama_variabel: Diisi dengan nama variabel yang kita inginkan. Baca Kembali syarat
pemberian nama suatu variabel/identifier.

40
• “=”: Adalah operator penugasan. Tanda sama dengan akan menugaskan nilai yang
berada di sebelah kanannya untuk masuk ke dalam variabel di sebelah kirinya.
• nilai: Diisi dengan nilai yang diinginkan. Nilai harus sesuai dengan tipe data yang
digunakan untuk mendeklarasikan variabel.
Agar lebih mudah untuk memahami sintaks di atas, berikut kami sertakan contoh
penggunaan sintaks di atas dalam sebuah gambar ilustrasi. Perhatikan Gambar 3.3.

Gambar 1.3. Contoh pendeklarasian sebuah variabel disertai inisialisasi nilai.

Pada Gambar 3.3 dapat kita ketahui bahwa telah dideklarasikan sebuah variabel
bernama Usia yang bertipe integer lalu diisi dengan nilai 27. Adapun penjelasan tiap bagian
dari sintaksnya dalah sebagai berikut:
• int adalah tipe data yang digunakan untuk mendeklarasikan sebuah variabel.
• Usia adalah nama variabel yang dideklarasikan yang dapat menampung data
bertipe integer (bilangan bulat).
• 27 adalah nilai bertipe integer yang akan disimpan pada variabel Usia. Bahasa yang
lebih tepat adalah 27 akan ditugaskan masuk ke dalam variabel Usia.
4) Sintaks mendeklarasikan beberapa variabel dengan tipe data yang sama disertai
inisialisasi nilai dalam satu baris
Adapun sintaks untuk mendeklarasikan beberapa variabel sekaligus
menginisialisasikan nilai ke dalamnya adalah sebagai berikut:

tipe_data nama_variabel1 = nilai1, nama_variabel2 = nilai2, nama_variabelN = nilaiN;

41
Keterangan:
• tipe_data: Diisi dengan tipe data yang diinginkan. Misalnya berupa integer, double,
float, char, dan tipe data lainnya.
• Nama_variabel1: Diisi dengan nama variabel pertama yang diinginkan.
• nilai1: Disisi dengan nilai yang diinginkan yang akan disimpan pada variabel1.
• Nama_variabelN: Diisi dengan nama variabel ke-N yang diinginkan.
• “,” : Merupakan tanda pemisah tiap nama variabel.
• “=”: Adalah operator penugasan. Tanda sama dengan akan menugaskan nilai yang
berada di sebelah kanannya untuk masuk ke dalam variabel di sebelah kirinya.
• nilaiN: Disisi dengan nilai yang diinginkan yang akan disimpan pada variabelN.
Agar lebih mudah untuk memahami sintaks di atas, kami sertakan contoh
penggunaan sintaks di atas dalam sebuah gambar ilustrasi. Perhatikan Gambar 3.4.

Gambar 3.4. Contoh pendeklarasian beberapa variabel sekaligus penginisialisasian


nilainya.

Dari Gambar 3.4, dapat diketahui bahwa dideklarasikan dua buah variabel bertipe
char yaitu variabel hurufKapital dan hurufKecil. Variabel hurufKapital diisi dengan karakter
‘A’ sedangakan variabel hurufKecil diisi dengan karakter ‘a’. Penjelasan lebih detail sebagai
berikut:
• char adalah tipe data yang digunakan untuk mendeklarasikan dua buah variabel.
• hurufKapital dan hurufbesar adalah dua variabel yang dideklarasikan.
• ‘A’ adalah nilai char yang disimpan ke dalam variabel hurufKapital yang bertipe char.

42
• ‘a’ adalah nilai char yang disimpan ke dalam variabel hurufKKecil yang bertipe char.
• “,” adalah pemisah tiap variabel dan penginisialisasian nilainya.
• “=” adalah operator penugasan. Nilai di sebelah kanan operator akan ditugaskan
masuk ke dalam variabel di sebelah kiri operator.

2. Konstanta
Konstanta merupakan kebalikan dari variabel. Jika pada variabel nilai yang
ditampugnya dapat diubah, maka konstanta tidak. Konstanta adalah tetapan dari suatu nilai
yang bersifat tetap. Nilai akan ditetapkan saat sebelum kompilasi program. Jika program
telah berjalan (runtime), maka nilai/data tersebut tidak akan bisa diubah disepanjang source
code program. Konstanta berguna untuk menentukan nilai yang merupakan tetapan, seperti
misalnya nilai PHI dan lainnya. Secara umum terdapat dua cara untuk membuat sebuah
konstanta dalam bahasa pemrograman C++, yaitu dengan menggunakan preprocessor
directive #define dan menggunakan kata kunci const.
a. Sintaks pendeklarasian konstanta
Berikut beberapa sintaks yang dapat digunakan dalam pendeklarasian konstanta:
1) Sintaks preprocessor directive #define
Adapun sintaks untuk mendeklarasikan konstanta menggunakan #define adalah
sebagai berikut:

#define nama_konstanta nilai


Keterangan :
• #define: Merupakan tanda preprocessor directives yang diawali pada suatu baris
yang ada pada kode program. Baris ini bukanlah suatu statement tapi arahan untuk
preprocessor. Tidak diakhiri dengan tanda “;”.
• Nama_konstanta: Diisi dengan nama konstanta yang
diinginkan.
• nilai: diisi dengan nilai yang diinginkan.

Agar lebih mudah untuk memahami sintaks di atas,


kami sertakan contoh penggunaan sintaks di atas dalam
sebuah gambar ilustrasi. Perhatikan Gambar 3.5. Simak penjelasan
Pak Dosen di sini!

43
Gambar 3.5. Contoh pendeklarasian konstanta menggunakan #define.

Berdasarkan Gambar 3.5, dapat diketahui bahwa telah dideklarasikan sebuah


konstanta bernama PHI dengan nilai 3.14, dimana:
• #define digunakan untuk mendeklarasikan sebuah konstanta.
• PHI adalah nama konstanta yang dideklarasikan.
• 3.14 adalah nilai konstan yang dimasukkan ke dalam konstanta PHI.
2) Sintaks menggunakan kata kunci const
Adapun sintaks untuk mendeklarasikan konstanta menggunakan const adalah
sebagai berikut:

const tipe_data nama_konstanta = nilai_tetapan ;


Keterangan:
• #const: Merupakan keyword yang digunakan untuk memberitahu compiler bahwa
variabel yang dideklarasikan adalah sebuah konstanta.
• Tipe_data: Diisi dengan tipe data yang diinginkan. Misalnya berupa integer, double,
float, char, dan tipe data lainnya.
• Nama_konstanta: Diisi dengan nama konstanta yang diinginkan.
• “=” : Adalah operator penugasan. Nilai di sebelah kanan operator akan ditugaskan
masuk ke dalam variabel di sebelah kiri operator.

44
• Nilai_tetapan: Diisi dengan nilai tetap yang diinginkan. Nilai ini tidak dapat diubah
sepanjang program dijalankan walaupun terdapat perintah untuk mengubahnya di
tengah proses pengeksekusian program.
Agar lebih mudah untuk memahami sintaks di atas, kami sertakan contoh
penggunaan sintaks di atas dalam sebuah gambar ilustrasi. Perhatikan Gambar 3.6.

Gambar 3.6. Contoh pendeklarasian konstanta menggunakan const.

Berdasarkan Gambar 3.6, maka dapat diketahui bahwa dideklarasikan sebuah


konstanta bernama PHI yang menampung nilai float yaitu 3.14. Pada baris perintahnya
diketahui bahwa:
• const adalah keyword yang digunakan untuk mendeklarasikan konstanta.
• float adalah tipe data yang digunakan untuk mendeklarasikan konstanta PHI.
• PHI adalah nama konstanta yang dideklarasikan yang bertipe float.
• 3.14 adalah nilai konstan yang dimasukkan ke dalam konstanta PHI.

3. Variabel Lokal dan Global


Berdasarkan ruang lingkupnya, variabel dibedakan menjadi dua yaitu variabel lokal
dan variabel global. Penentuan variabel untuk dijadikan sebagai variabel global atau lokal
tentu akan tergantung dari penempatannya dalam program.
a. Variabel lokal
Variabel lokal adalah variable yang dideklarasikan dalam suatu blok fungsi atau
method. Variabel tersebut hanya akan terlihat dan hanya dapat digunakan di dalam blok

45
fungsi/method dimana variabel tersebut dideklarasikan.
Variabel lokal akan dibuat pada saat compiler melewati
perintah deklarasi yang ada di dalam suatu blok
fungsi/method. Kemudian variabel tersebut dihancurkan
setelah compiler keluar dari blok tersebut.
Berikut ini sifat dari suatu variabel lokal:
• Segala sesuatu yang berada di dalam ‘{‘ dan ‘}’ berarti
Simak penjelasan
berada di dalam blok fungsi. Termasuk parameter Pak Dosen di sini!
fungsi.
• Variabel lokal berada di dalam blok suatu fungsi, termasuk pada bagian parameter.
• Variabel lokal tidak dapat diakses atau digunakan di luar blok.
• Variabel lokal hanya bisa digunakan oleh statement yang ada di dalam fungsi/blok.
Agar lebih mudah untuk memahami maksud dari defenisi variabel lokal di atas,
berikut kami sertakan contoh penerapannya dalam sebuah program sederhana berbentuk
gambar ilustrasi. Perhatikan Gambar 3.7.

Gambar 3.7. Contoh variabel lokal pada sebuah program sederhana.


Berdasarkan Gambar 3.7, maka dapat diketahui bahwa:
• Terdapat 3 variabel lokal yaitu a, b, dan c.
• Variabel a, b, dan c dideklarasikan pada fungsi penjumlahan().
• Variabel a, b, dan c hanya dikenali pada fungsi penjumlahan().
• Variabel a, b, dan c tidak dapat dikses dari fungsi main().

46
b. Variabel global
Variabel global adalah variabel yang memiliki ruang lingkup file. Maksudnya adalah
variabel global dideklarasikan di luar fungsi apapun dalam file. Berdasarkan konvensi,
variabel global dideklarasikan di bagian atas file, di bawah keyword include dan di atas kode
apapun. Dengan begitu variabel global dapat:
• Diakses dari titik awal hingga akhir file di mana variabel tersebut dideklarasikan.
• Digunakan di mana saja di dalam file dimana variabel tersebut dideklarasikan.
• Dianggap sebagai namespace global.
Agar lebih mudah untuk memahami maksud dari defenisi variabel global di atas,
berikut kami sertakan contoh penerapannya dalam sebuah program sederhana berbentuk
gambar ilustrasi. Perhatikan Gambar 3.8.

Gambar 3.8. Contoh variabel global dan lokal pada sebuah program sederhana.

Berdasarkan Gambar 3.8 maka dapat diketahui bahwa:


• Terdapat dua buah variabel global yaitu a dan b.
• Kedua variabel global a dan b di deklarasikan di luar fungsi apapun dalam program
dan diletakkan di atas sebelum semua fungsi yang ada.
• Terdapat 2 variabel lokal yaitu b dan d.
• Variabel b dideklarasikan pada fungsi penjumlahan() .
• Variabel d dideklarasikan pada fungsi main().
• Variabel global a dan c dapat digunakan pada fungsi penjumlahan() tanpa
mendeklarasikannya terlebih dahulu pada badan fungsi.

47
Seperti yang kita ketahui bahwa program dalam C++ selalu terdapat fungsi utama
dengan nama main(). Apabila kita mendeklarasikan sebuah variable diluar fungsi main(), dan
fungsi lainnya, maka dengan sendirinya compiler akan menganggap variabel tersebut sebagai
variable global. Kemudian, karena dideklarasikan di awal file maka variabel global dibuat saat
program dimulai, dan dimusnahkan ketika program berakhir. Ini disebut durasi statis.

Agar dapat lebih memahami penggunaan variabel dan konstanta, berikut kami
berikan contoh program sederhana.
1. Contoh 1 – Program penggunaan variabel dan konstanta.
#include <iostream>
using namespace std;
const float PHI = 3.14f;

int main(){
float r = 2.5f;
float L = PHI * r * r;
cout << "Luas lingkaran adalah: "<<L<< " Cm"<<endl;
return 0;
}
Output:
Luas lingkaran adalah: 19.625 Cm
Berdasarkan program di atas dapat diketahui bahwa terdapat sebuah program
sederhana untuk mengitung luas sebuah lingkaran. Pada baris
kode program const float PHI = 3.14f;. Baris perintah tersebut
menyatakan bahwa dideklarasikan sebuah variabel konstan
bernama PHI yang bertipe float. PHI dapat diketahui sebagai
konstanta sebab di belakang tipe data float terdapat keyword
const. Pada baris perintah ini juga dilakukan inisialisasi nilai
yaitu 3.14 yang kemudian ditugaskan untuk masuk ke dalam
konstanta PHI. Simak penjelasan
Pak Dosen di sini!

48
Selanjutnya pada fungsi main() terdapat baris perintah float r = 2.5f;. Baris perintah
tersebut berarti bahwa terdapat pendeklarasian variabel r yang bertipe float dan
diiniisialisasikan dengan nilai 2.5. Jika baris perintah tersebut dieksekusi maka nilai 2.5 akan
masuk ke dalam variabel r.
Pada baris berikutnya terdapat perintah float L = PHI * r * r;. pada baris perintah ini
variabel L dideklarasikan dengan tipe data float. Pada saat yang bersamaan variabel L diisi
dengan nilai hasil perkalian antara konstan PHI dan r * r. Hal itu berarti bahwa L menampung
hasil dari 3.14 * 2.5 * 2.5.
Pada baris berikutnya terdapat perintah untuk menampilkan output ke layar monitor
yaitu cout << "Luas lingkaran adalah: "<<L<< " Cm"<<endl;. Dari pengeksekusian baris
perintah ini maka output akan tampil ke layar. Sesuai output yang diperoleh L berisi nilai
19.625.

2. Contoh 2 – Penerapan variabel lokal dan global


#include <iostream>
using namespace std;

#define PHI 3.14


float pPersegi,lPersegi,rLingkaran;

float LuasLingkaran(float jariJari){


float luas = PHI * jariJari * jariJari;
return luas;
}
float LuasPersegi(float panjang, float lebar){
float luas = panjang * lebar;
return luas;
}

int main(){
pPersegi = 1.5;
lPersegi = 2.0;
float luasPersegi = LuasPersegi(pPersegi,lPersegi);

49
rLingkaran = 2.5;
float luasLingkaran = LuasLingkaran(rLingkaran);

cout<<"Luas persegi adalah "<<luasPersegi<< " Cm persegi"<<endl;


cout<<"Luas lingkaran adalah "<<luasLingkaran<< " Cm persegi"<<endl;

return 0;
}
Output:
Luas persegi adalah 3 Cm persegi
Luas lingkaran adalah 19.625 Cm persegi
Berdasarkan contoh program kedua di atas dapat diketahui bahwa program tersebut
dapat digunakan untuk menghitung luas persegi jika diketahui panjang dan lebarnya. Selain
itu juga dapat digunakan untuk menghitung luas lingkaran jika diketahui jari-jari
lingkarannya.
Pada program di atas, terdapat 3 fungsi yaitu fungsi main(), LuasLingkaran(), dan
LuasPersegi(). Baris perintah yang pertamakali akan dieksekusi adalah baris perintah yang
berada pada fungsi main(). Jika pada fungsi main() terdapat
perintah untuk memanggil fungsi lainnya maka pada saat itulah
fungsi lain tersebut akan dieksekusi.
Pada contoh program di atas dapat kita ketahui bahwa
terdapat konstanta dan variabel biasa. Variabel biasapun
terbagi kedalam dua jenis lagi yaitu variabel lokal dan global.
Salah satu contoh dari variabel lokal pada rogram di atas adalah
Simak penjelasan
variabel panjang pada fungsi LuasPersegi(). Sedangkan salah
Pak Dosen di sini!
satu contoh untuk variabel global adalah variabel pPersegi.

1. Berdasarkan contoh program 1 pada bagian B, apa yang terjadi jika ditambahkan
perintah PHI =5.5; di atas baris float r = 2.5; dan di bawah int main(){ ? Lakukan analisis
sederhana mengapa hal tersebut bisa terjadi?

50
2. Berdasarkan contoh program 1 pada bagain B, identifikasi semua yang merupakan
konstanta serta variabel! Tuliskan pula berapa isi dari setiap variabel dan konstanta yang
ada setelah kode program dieksekusi!

3. Berdasarkan contoh program 2 pada bagain B, identifikasi semua yang merupakan


konstanta, variabel lokal, dan variabel global! Tuliskan jumlahnya masing-masing!
Tuliskan pula analisis singkat mengapa hal yang anda identifikasi itu disebut konstanta,
variabel lokal, dan variabel global!

4. Kerjakanlah program berikut ini. Pada program berikut ini terdapat kesalahan. Perbaiki
kesalahan tersebut dan tentukan outputnya!
#include <iostream>
using namespace std;

float LuasLingkaran(float jariJari){


float luas = PHI * jariJari * jariJari;
return luas;
}

51
float VolumeTabung(float luasTB, float tinggiTB){
float volume = luasTB * tinggiTB;
return volume;
}

int main(){
const float PHI = 3.14;
float tLingkaran,rLingkaran;
tLingkaran = 5.0;
rLingkaran = 2.5;
float luasLingkaran = LuasLingkaran(rLingkaran);
float volumeTabung = VolumeTabung(luasLingkaran,tLingkaran);
cout<<"Volume tabung adalah "<<volumeTabung<< " Cm kubik"<<endl;
return 0;
}
Output :

a. Berdasarkan program yang telah anda perbaiki di atas, ada berapa konstanta, variabel
lokal, dan variabel global di dalamnya? Lakukan analisis sederhana mengapa hal yang
kalian identifikasi tersebut disebut contant, variabel lokal, dan global!

b. Berdasarkan program di atas, apa yang terjadi pada luaran akhir (volume tabung) jika
variabel luasTB dan tinggiTB diganti menjadi bertipe integer sedangkan nilai
inisialisasinya tetap? Lakukan analisis sederhana mengapa hal tersebut bisa terjadi?

52
5. Lengkapilah program berikut ini! Kemudian tuliskan outputnya pada tempat yang telah
disediakan!
#include <iostream>
using namespace std;
string _______ , ________ ;

void identitas() {
cout<<"Nama: "<<nama<<endl;
cout<<"Alamat: "<<_______<<endl;
}

void bb_Ideal(int ________, int beratBadan) {


int beratIdeal= tinggi - ___________;
cout<<"Berat badan ideal: "<<__________<<endl;
}

int main() {
______ = "Andi Baso Kaswar";
______ = "BTN Pao-Pao Permai E5/22";
int _________=160;
int beratBadan=60;

identitas();
bb_Ideal(tinggi, _________);

return 0;
}
Output :

53
Berdasarkan program yang telah kalian lengkapi di atas, ada berapa constant, variabel lokal,
dan variabel global di dalamnya? Lakukan analisis sederhana mengapa hal yang kalian
identifikasi tersebut disebut contant, variabel lokal, dan global!

1. Buatlah flowchart dan program untuk menghitung volume sebuah bola dengan
ketentuan sebagai berikut:
a. Setiap variable diinput melalui keyboard kecuali konstanta (PHI).
b. Semua konstanta dideklarasikan sebagai variable konstanta.
c. Setiap variable dideklarasikan dengan tipe data yang PALING TEPAT.
d. Kode program mengandung variable lokal dan global.
e. Setiap variable ataupun kostanta harus digunakan pada operasi tertentu pada
program.
f. Kode program harus rapi dan terbebas dari variable, dan perintah yang tidak
berguna/terpakai.
2. Buatlah flowchart dan program untuk menghitung volume sebuah limas persegi
dengan ketentuan sebagai berikut:
a. Setiap variable diinput melalui keyboard kecuali konstanta.
b. Semua konstanta dideklarasikan sebagai variable konstanta.
c. Kode program mengandung variable lokal dan global.
d. Setiap variable dideklarasikan dengan tipe data yang PALING TEPAT.
e. Setiap variable ataupun kostanta harus digunakan pada operasi tertentu pada
program.
f. Kode program harus rapi dan terbebas dari variable, dan perintah yang tidak
berguna/terpakai.

54
55
56
57
58
BAB IV
OPERATOR

1. Operator
Operator adalah dasar dari bahasa pemrograman apa
pun. Dengan demikian fungsionalitas bahasa pemrograman
C++ tidak lengkap atau tidak dapat berjalan tanpa
menggunakan operator. Dalam membuat program tentunya
akan ada banyak data yang diolah sehingga menghasilkan suatu
output. Pengolahan data tersebut tentu akan membutuhkan
operator.
Maka dari itu, kita dapat mendefinisikan operator Simak penjelasan
Pak Dosen di sini!
sebagai simbol yang membantu kita melakukan perhitungan
matematis dan logis tertentu pada operan. Dengan kata lain, kita dapat mengatakan bahwa
operator mengoperasikan operan.
Operator adalah simbol atau karakter khusus yang digunakan untuk melakukan suatu
operasi membantu kompilator untuk memanipulasi secara matematis atau logis pada data
yang diberikan. Bahasa pemrograman C++ menyediakan banyak operator yang sangat
berguna untuk melakukan operasi. Pada bab ini kita membahas beberapa informasi tentang
operator yang umum harus diketahui.
Sebagai contoh:

c = a + b;

Pada contoh di atas dapat diketahui bahwa ‘+’ adalah operator penjumlahan
sedangkan ‘a’ dan ‘b’ adalah operan. Penggunaan operator tersebut memberitahukan
kepada compiler untuk menjumlahkan a dan b dan simpan hasilnya pada c.

2. Sifat-Sifat Operator
Dalam banyaknya macam-macam operator, kita bisa menggolongkanya berdasarkan
sifatnya. Berikut sifat-sifat dari operator:

59
a. Unary
Sifat Unary adalah operator yang hanya melibatkan sebuah operand pada suatu
operasi. Ada dua operator unary utama yaitu increment dan decrement operator.

Bentuk Penulisan:
a++;

b. Binary
Sifat Binary adalah operator yang melibatkan dua buah operand dan satu operator
di tengah dua operand pada suatu operasi .

Bentuk penulisan:
a + b;

c. Ternary
Sifat Tenary pada operator adalah operator kondisi ( atau Conditional Operator) yang
melibatkan tiga buah operand pada suatu operasi.

Bentuk penulisan:
expresi?pilhan1:pilihan2;

3. Jenis Operator
Dalam bahasa pemrograman C++, terdapat banyak operator yang dapat digunakan
untuk memanipulasi/mengolah data. Setiap operator memiliki fungsinya masing masing.
a. Operator aritmatika
Satu operator aritmatika digunakan untuk memproses dua buah operand yang akan
menghasilkan suatu nilai tertentu tergantung nilai operand dan operator apa yang
digunakan. Operator aritmatika dapat dilihat pada Tabel 4.1.

Tabel 4.1. Operator aritmatika


Operator Keterangan Contoh
* Perkalian A*B
/ Pembagian A/B

60
% Sisa Pembagian A%B
+ Penjumlahan A+B
- Pengurangan A-B

b. Operator penugasan
Operator penugasan digunakan untuk memberikan
nilai pada suatu variabel. Operan sisi kiri operator penugasan
adalah variabel dan operan sisi kanan operator penugasan
adalah sebuah nilai. Nilai di sisi kanan harus dari tipe data yang
sama dari variabel di sisi kiri kalau tidak kompiler akan
menimbulkan kesalahan.Adapun jenis operator penugasan Simak penjelasan
dapat dilihat pada Tabel 4.2. Pak Dosen di sini!

Tabel 4.2. Operator penugasan.


Operator Keterangan Contoh
+= Penjumlahan X += Y
-= Pengurangan X -= Y
*= Perkalian X *= Y
/= Pembagian X /= Y
%= Sisa Pembagian X %= Y
>>= Pergeseran bit ke kiri X >>= Y
<<= Pergeseran bit ke kanan X <<= Y
&= Bitwise DAN X &= Y
^= Bitwise OR Eksklusif X ^= Y
|= Bitwise OR Inklusif X |= Y

Agar dapat memudahkan anda untuk memahami beberapa operator penugasan di


atas, maka kami beri contoh ilustrasi penggunaannya pada Gambar 4.1. pada gambar
tersebut dapat kita ketahui bahwa terdapat sebuah variabel bernama a yang dideklarasikan
bertipe data integer. Hal tersebut berarti bahwa variabel a dapat digunakan untuk
menampung bilangan bulat (bilangan basis 10 (decimal), ingat kembali konversi bilangan).
Selanjutnya dapat kita lihat operator penugasan pergeseran bit ke kiri diterapkan ke
variabel a dengan banyaknya pergeseran sebanyak 1 kali. Sehingga nilai 1 yang jika dikonversi

61
Gambar 4.1. Contoh penggunaan operator penugasan pergeseran bit ke kiri (<<=).

ke dalam bentuk biner bernilai “0001” jika digeser ke kiri menjadi “0010”. Nilai biner 4 bit
“0010” jika dikonversi ke bilangan basis 10 (decimal) menjadi 2. Hasil pergeseran yakni 2 akan
kembali disimpan pada variabel a. Itulah sebabnya disebut sebagai operator penugasan,
karena ditugaskan masuk kembali ke suatu variabel.

Gambar 4.2. Contoh penggunaan operator penugasan bitwise DAN (&=).

Satu lagi contoh kami berikan seperti pada Gambar 4.2 di atas. Masih menggunakan
operator penugasan namun pada Gambar 4.2. operator penugasan yang digunakan adalah
operator penugasan bitwise DAN (&=).

62
Dapat kita lihat pada gambar tersebut, diketahui bahwa dideklarasikan 2 buah
variabel bertipe integer yaitu a dengan nilai 10 dan y dengan nilai 1. Operator penugasan
bitwise DAN diterapkan kepada variabel a dengan y sebagai pembandingnya. Variabel a
berisi nilai bilangan bulat basis 10 (decimal) 10 yang jika dikonversi ke dalam bentuk biner
menjadi “1010”. Sedangkan variabel b berisi nilai bilangan bulat basis 10(decimal) yaitu 1
yang jika dikonversi ke dalam bentuk biner menjadi “0001”.
Oleh karena itu, dari hasil penerapan operator “&=” maka akan diperoleh nilai biner
“0000” sebab jika kedua nilai dalam bentuk bilangan biner tadi tiap bitnya dibandingkan
sesuai urutan menggunakan logika DAN, maka tidak ada satupun urutan bit yang sama-sama
bernilai 1. Dimana kita ketahui bahwa logika DAN akan menghasilkan 1 jika kedua-duanya
bernilai 1. Nilai biner 4 bit “0000” jika dikonversi ke dalam bentuk bilangan basis 10 (decimal)
akan menjadi 0. Sehingga isi variabel a sama dengan 0.

c. Operator increment atau decrement


Increment dan Decrement Operator adalah operator yang digunakan untuk
meningkatkan dan menurunkan nilai suatu operand. Increment berupa operator ++
digunakan untuk meningkatkan/menambah nilai operand sebanyak 1. Sedangkan decrement
adalah kebalikan dari increment. Decrement berupa operator -- berfungsi untuk untuk
menurunkan/mengurangi nilai operand sebanyak 1. Adapun operator increment dan
decrement dapat dilihat pada Tabel 4.3.

Tabel 4.3. Operator increment dan decrement.


Operator Keterangan Contoh Penjabaran
++ Increment / Penaikan / X++ X=X+1
Penambahan
-- Decrement / Penurunan / X-- X=X–1
Pengurangan

Dalam peletakan operator, operator increment dan decrement dapat diletakan pada
awal atau akhir. Peletakan operator ini akan mempengaruhi cara kerja dari operator
tersebut, seperti yang di jelaskan di bawah ini:
• ++X (Prefix) adalah Nilai variabel X dinaikan dahulu sebelum diproses.
• X++ (Postfix) adalah Nilai variabel X diproses dahulu sebelum dinaikan.

63
d. Operator relasi dan pembanding
Dua buah ekspresi dapat dibandingkan dengan
menggunakan operator relasi dan pembanding. Misalnya,
untuk dapat menentukan apakah suatu variable memiliki nilai
lebih besar atau lebih kecil dari nilai lainnya, hal itu dapat
ditentukan dengan menggunakan operator relasi dan
pembanding. Dari hasil operai relasi dan pembandingan
tersebut akan dikembalikan nilai true/benar (1) atau
Simak penjelasan
false/salah (0) yang merupakan tipe data boolean. Adapun Pak Dosen di sini!
jenis operator relasi dan pembanding dapat dilihat pada Tabel
4.4.
Tabel 4.4. Operator relasi dan pembanding
Operator Keterangan Contoh
== Sama dengan (a==a) atau (a==5) atau (5==5)
!= Tidak sama dengan (a!=a) atau (a!=5) atau (5!=5)
< Kurang dari (a<a) atau (a<5) atau (5<5)
> Lebih besar dari (a>a) atau (a>5) atau (5>5)
<= Kurang dari sama dengan (a<=a) atau (a<=5) atau (5<=5)
>= Lebih dari sama dengan (a>=a) atau (a>=5) atau (5>=5)

Gambar 4.3. Contoh penggunaan operator pembanding <=.

64
Pada Gambar 4.3 diberikan sebuah contoh penggunaan oprator pembanding. Pada
gambar tersbut dapat diketahui bahwa dideklarasikan sebuah variabel bernama a yang
bertipe boolean. Hal tersebut berarti bahwa variabel a hanya dapat digunakan untuk
menampung nilai logika “true” atau (1) atau “false” atau (0). Selanjutnya variabel a diisi
dengan hasil pembandingan atara nilai 15 dan nilai 20. Operator pembanding yang digunakan
adalah operator “<=” kecil dari atau sama dengan. Jika diperhatikan, nilai 15 memang lebih
kecil dari nilai 20 sehingga ekpresi “15<=20” akan bernilai true. Nilai true kemudian disimpan
pada variabel a.

e. Operator logika
Operator logika digunakan untuk memeriksa kesamaan
nilai dari dua data atau lebih dan juga ekspresi yang dapat
mengembalikan nilai bertipe boolean. Sebagai contoh jika kita
memiliki dua operand A dengan nilai 1 (true) dan B dengan nilai
Simak penjelasan
0 (false), maka jika operator logika diterapkan pada kedua Pak Dosen di sini!
operand tersebut hasilnya dapat dilihat pada Tabel 4.5.

Tabel 4.5. Operator logika.


Operator Keterangan Contoh
&& Disebut sebagai Logical AND operator. Jika kedua A && B = false
operand tidak memiliki nilai yang sama maka akan
bernilai false
|| Disebut sebagai Logical OR operator. Jika keduanya A || B = true
atau salah satu data bernilai true maka akan
menghasilkan nilai true
! Disebut sebagai Logical NOT operator. Untuk !(A && B) =
mengembalikan nilai, jika A adalah true maka akan true
bernilai false

Agar dapat lebih mudah memahami penggunaan operator logika, berikut kami
berikan contoh dalam bentuk gambar ilustrasi. Perhatikan Gambar 4.4. pada gambar
tersebut dapat diketahui bahwa telah dideklarasikan sebuah variable bernama a yang bertipe
boolean.

65
Gambar 4.4. Contoh penggunaan operator logika &&.

Selanjutnya variabel a diisi dengan nilai hasil pembandingan logika DAN.


Sebagaimana yang kita ketahui bahwa logika DAN (&&) akan bernilai true (1) jika kedua nilai
yang dibandingkan sama sama bernilai true (1) dan selain itu akan bernilai false(0). Pada
gambar di atas dapat kita lihat nilai logika yang dibandingkan adalah true dan false, sehingga
hasilnya akan bernilai false yang kemudian disimpan pada variabel a.

f. Operator ternary kondisi


Operator ternary kondisi akan mengevaluasi ekspresi dan memilih dua pilihan nilai,
menjadi memiliki nilai satu jika ekspresi yang dievaluasi adalah true dan memiliki nilai dua
jika ekspresi bernilai sebagai false.

Bentuk penulisan:
variabel = ekspresi1? ekspresi2 : ekspresi3

Contoh:
max = (n1 > n2) ? n1 : n2;

66
Agar dapat lebih memahami penggunaan operator, berikut kami berikan contoh
program sederhana.
1. Contoh 1 – Program penerapan operator penugasan bitwise.
#include <iostream>
using namespace std;

int main() {
int a = 1;
int b = 10;
a<<=3;
Simak penjelasan
b>>=1; Pak Dosen di sini!

cout<<"Isi variabel a saat ini adalah "<<a<<endl;


cout<<"Isi variabel b saat ini adalah "<<b<<endl;
return 0;
}
Output:
Isi variabel a saat ini adalah 8
Isi variabel b saat ini adalah 5

Program di atas adalah contoh program penerapan operator pergeseran bit ke kiri
dan ke kanan. Berdasarkan contoh program di atas, maka dapat diketahui bahwa:
• Dideklarasikan dua buah variabel bertipe integer yaitu a dan b.
• Variabel a berisi nilai bilangan bulat yaitu 1. Jika dikonversi kedalam biner 4 bit
menjadi 0001.
• Variabel b berisi nilai bilangan bulat yaitu 10. Jika dikonversi kedalam biner 4 bit
menjadi 1010.
• Pada variabel a, dilakukan pergeseran bit ke kiri sebanyak 3 kali. Sehingga bitnya
berubah menjadi 1000. Jika dikonversi ke bentuk bilangan basis 10 (decimal) menjadi
8.

67
• Pada variabel b, dilakukan pergeseran bit ke kanan sebanyak 1 kali. Sehingga bitnya
menjadi 0101. Jika dikonversi ke bentuk bilangan basis 10 (decimal) menjadi 5.
• Pada saat variabel a dan b ditampilkan, maka akan tampil nilai 8 dan 5.

2. Contoh 2 – Penereapan operator perbandingan dan logika.


#include <iostream>
using namespace std;

int main() {
int a = 10;
int b = 5;

Simak penjelasan
bool c = a < b; Pak Dosen di sini!
bool d = a > b;
bool e = (a>b) && (a!=b);

cout<<"Isi variabel c saat ini adalah "<<c<<endl;


cout<<"Isi variabel d saat ini adalah "<<d<<endl;
cout<<"Isi variabel e saat ini adalah "<<e<<endl;
return 0;
}
Output:
Isi variabel c saat ini adalah 0
Isi variabel d saat ini adalah 1
Isi variabel e saat ini adalah 1

Program di atas adalah contoh program penerapan operator relasi dan pembanding
serta logika. Berdasarkan contoh program di atas, maka dapat diketahui bahwa:
• Dideklarasikan dua buah variabel bertipe integer yaitu a yang berisi nilai 10 dan b
berisi nilai 5.
• Kemudian dideklarasikan variabel c bertipe bool yang berarti variabel c akan
menampung nilai bertibe logika yaitu true atau false. Nilai true atau false diperoleh
dari pembandingan antara variabel a dan b melalui ekspresi a<b. Karena nilai

68
variabel a tidak lebih kecil dari variabel b maka ekspresi ini akan menghasilkan nilai
logika false (0) yang kemudian ditugaskan masuk ke dalam variabel c.
• Selanjutnya dideklarasikan variabel d bertipe boolean. Nilainya diperoleh dari
ekspresi a>b. Karena nilai a memang lebih besar dari nilai variabel b, maka ekspresi
ini mengembalikan nilai true (1). Nilai logika tersebut kemudian dimasukkan ke
dalam variabel d.
• Terakhir, dideklarasikan variabel e bertipe boolean. Nilainya diperoleh dari ekspresi
(a>b) && (a!=b). Ekspresi a>b akan menghasilkan nilai true. Ekspresi a!=b akan
menghasilkan nilai true. Sehingga dapat dutuliskan (true) &&(true). Ekspresi (true)
&&(true) akan menghasilkan nilai true (1) yang kemudian dimasukkan ke dalam
variabel e.

1. Berdasarkan contoh program 1 pada bagian B. Ubah nilai variabel b menjadi 16


menggunakan operator pergeseran bit. Berapa output yang dihasilkan dan jelaskan hasil
analisis anda berkaitan dengan output yang muncul, mengapa hal tersebut dapat terjadi!

2. Berdasarkan contoh program 2 pada bagian B. Apa yag terjadi jika operator &&
digantikan dengan operator ||? Jelaskan analisis yang anda lakukan terhadap output
yang diperoleh!

3. Kerjakan program berikut!


#include <iostream>
using namespace std;

69
int main() {
int nilaiUTS = 95;
int nilaiUAS = 65;

if ((nilaiUTS>69)&&(nilaiUAS>69)){
cout<<"Anda Lulus"<<endl;
} else {
cout<<"Anda tidak lulus"<<endl;
}
return 0;
}
Output:

a. Berdasarkan output yang anda peroleh dari program di atas, jelaskan hasil analisis
anda mengapa output tersebut diperoleh!

b. Berdasarkan program di atas, jika ekspresi nilaiUAS>69 diganti menjadi nilaiUAS<69,


apa output yang diperoleh? Jelaskan hasil analisis anda terhadap output yang anda
peroleh tersebut!

70
1. Buatlah sebuah program sederhana dengan menerapkan operator logika (!, &&, dan
||). Jalankan program tersebut dan jelaskan bagaimana output yang muncul bisa
diperoleh!
2. Buatlah sebuah program sederhana dengan menerapkan operator (&=, ^=, |=,).
Jalankan program tersebut dan jelaskan bagaimana output yang muncul bisa diperoleh!

71
72
73
74
BAB V
TIPE DATA DASAR

1. Tipe Data Dasar


Tipe data merupakan jenis data yang digunakan untuk merepresentasikan jenis/tipe
nilai yang dapat ditampung oleh sebuah variabel. Jika dikelompokkan, secara umum terdapat
3 jenis tipe data yaitu tipe data dasar (primitive/primary), turunan (Derived), dan bentukan
(User-Defined).
Dalam C++, terdapat beberapa jenis tipe data dasar yang didefenisikan dengan
keyword yang berbeda dalam pemrograman C++. Adapun sintaks pendeklarasian tipe data
terhadap suatu variable adalah sebagai berikut:

tipe_data nama_variabel;

Jika disertai dengan inisialisasi nilai variabel maka sintaksnya seperti berikut:

tipe_data nama_variabel = nilai;


Keterangan :
• Tipe_data: Diisi dengan tipe data yang ada yang kita inginkan seperti integer, char,
bool, float, dan tipe data lainnya.
• Nama_variabel: Diisi dnegan nama variabel yang kita inginkan untuk menampung
data dengan jenis tipe data yang sudah kita tentukan. Pemberian nama variabel
harus mengikuti syarat nama variabel atau identifier
yang telah ditentukan.
• “=”: Merupakan operator sama dengan atau
penugasan yang berarti bahwa nilai yang berada di
sebelah kanan operator akan dimasukkan ke dalam
variabel yang berada di sebelah kiri operator.
• nilai: Diisi dengan nilai yang diinginkan yang tipe
datanya sesuai dengan tipe data yang digunakan untuk Simak penjelasan
Pak Dosen di sini!
mendeklarasikan variabel.

75
Contoh :
int a;
int b = 10;

2. Tipe bilangan bulat


Tipe data integer adalah tipe data yang diterapkan
pada suatu variabel untuk menampung nilai berupa bilangan
bulat. Secara umum untuk menggunakan tipe data ini cukup
Simak penjelasan
dengan menggunakan keyword: int. Contoh bilangan bulat yakni Pak Dosen di sini!
1, 5, 11, 99.
Agar dapat lebih mudah mengingat, beriktu kami berikan gambar ilustrasi tipe data
integer. Perhatikan Gambar 5.1.

Gambar 5.1. Tipe data integer (bilangan bulat).

Ukuran tipe data ini adalah 4 bytes atau 32 bit (namun ukuran ini bergantung kepada
compiler yang anda gunakan, jadi bisa saja berbeda). Tipe ini terbagi lagi ke dalam beberapa
jenis seperti terlihat pada Tabel 5.1.
Tabel 5.1. Tipe data bilangan bulat
Ukuran
Tipe Data Rentang
(dalam bit)
int 32 -2.147.483.648 sampai 2.147.483.647
unsigned int 32 0 sampai 65.535 atau 0 sampai 4.294.967.295

76
signed int 32 Sama seperti int
short int 16 -32.768 sampai 32.767
unsigned short int 16 0 sampai 65.535
signed short int 16 Sama seperti short int
long int 32 -2.147.483.648 sampai 2.147.483.647
signed long int 32 Sama seperti long int
unsigned long int 32 0 sampai 4.294.967.295

Sebagai informasi tambahan, bahwa ukuran tipe data merepresentasikan besarnya


range nilai yang dapat dihasilkan dari tipe data tersebut. Misalnya 4 bytes jika semua bitnya
bernilai 1 (11111111 11111111 11111111 11111111) dan tipenya unsigned maka nilainya
adalah 4.294.967.295 (ingat kembali konversi biner ke bilangan basis 10/desimal).
Sebaliknya, jika semua bitnya bernilai 0 maka nilainya adalah 0. Sedangkan jika signed, maka
nilainya terbagi dua dari negatif ke positif dimana 1 bit akhir digunakan sebagai penanda
([0/1]1111111 11111111 11111111 11111111). Inilah sebab mengapa tipe signed int
rangenya berkisar antara -2.147.483.648 sampai 2.147.483.647.
Agar dapat lebih mudah untuk memahami penerapannya, kami berikan contoh
penerapannya dalam pendeklarasian variabel. Perhatikan Gambar 5.2.

Gambar 5.2. Contoh penggunaan tipe data integer.

Seperti yang nampak pada Gambar 5.2, dapat diketahui bahwa:


• Usia adalah nama dari variabel yang dideklarasikan

77
• int adalah keyword yang digunakan untuk mendeklarasikan tipe data integer pada
variabel Usia (bilangan bulat)
• 27 adalah bilangan bulat atau integer yang disimpan pada variabel Usia.
• Variabel Usia adalah penamaan alamat memory yang menampung nilai 27.
3. Tipe Bilangan Real (Floating Point)
Tipe data ini adalah tipe data yang digunakan pada suatu variabel untuk menampung
nilai dalam bentuk bilangan real. Secara umum untuk menggunakan tipe data ini cukup
dengan menggunakan keyword: float atau double. Adapun tipe yang termasuk ke dalam
kategori ini dapat dilihat pada Tabel 5.2.

Tabel 5.2. Tipe data bilangan ril


Ukuran
Tipe Data Rentang Presisi
(dalam bit)
float 32 1.2E-38 sampai 3.4E+38 Secara umum 7 digit
double 64 2.3E-308 sampai 1.7E+308 Secara umum 15 digit

Agar dapat lebih mudah mengingat, berikut kami berikan gambaran ilustrasi
mengenai tipe float. Perhatikan Gambar 5.3.
Seperti ditunjukkan pada Gambar 5.3, tipe data float digunakan untuk menyimpan
data bertipe bilangan real dengan ukuran memory 4 bytes. Namun, jika anda menginginkan
nilai yang lebih presisi, maka gunakan tipe double.

Gambar 5.3. Tipe data float

78
Agar dapat lebih mudah memahami penerapannya, berikut kami berikan contoh
penggunaan tipe data ini dalam bentuk gambar ilustrasi. Perhatikan Gambar 5.4.

Gambar 5.4. Contoh penggunaan tipa data float.

Pada Gambar 5.4 di atas, dapat diketahui bahwa:


• Dideklarasikan sebuah variabel dengan nama Berat_badan.
• Berat_badan bertipe float yang berarti dapat menampung nilai bilangan real.
• float adalah keyword yang digunakan untuk mendeklarasikan variabel bertipe float.
• 65.5f adalah bilangan bertipe float yang disimpan pada variabel Berat_badan.
• f adalah penanda bahwa nilai tersebut adalah float.

Untuk dapat memahami perbedaan float dan double, perhatikan contoh pada
Gambar 5.5. Pada gambar tersebut dapat kita lihat bahwa sebuah nilai akan diidentifikasi
bertipe float jika dibelakangnya diakhiri dengan ‘f’. Jika suatu
nilai breal tidak diakhiri dengan ‘f’ maka compiler akan secara
otomatis mengidentifikasinya sebagai double. Namun jika nilai
tanpa ‘f’ diinputkan ke dalam variabel bertipe float maka
compiler akan secara otomatis mengubah tipenya. Selama
nilainya tidak lebih dari 7 digit, maka mendeklarasikan variabel
bertipe float lalu diisi dengan nilai bilangan real tanpa ‘f’ maka
hal tersebut tidak masalah. Simak penjelasan
Pak Dosen di sini!

79
Gambar 5.5. Tipe data bool.
Kemudian, seperti ditunjukkan pada Gambar 5.6, Jika nilainya tidak lebih dari 7 digit
maka sebaiknya cukup menggunakan float. Namun jika lebih, sebaiknya menggunakan
double agar nilai yang disimpan tidak berubah.
Jadi, dapat disimpulkan bahwa jika ingin menyimpan nilai real dengan tingkat presisi
hingga lebih dari 7 digit maka gunakanlah tipe double. Namun tipe double membutuhkan
ruang memory sebesar 8 bytes. Jika nilai yang akan disimpan kurang atau sama dengan 7
digit maka cukup menggunakan float dimana tipe data float lebih hemat memory karena
hanya menggunakan ruang sebesar 4 bytes.

Gambar 5.6. Tipe data bool.

80
4. Tipe Logika
Tipe data ini adalah tipe data yang digunakan pada suatu variabel untuk menampung
nilai benar (true) atau salah (false), seperti ditunjukkan pada Tabel 5.3. Secara umum untuk
menggunakan tipe data ini cukup dengan menggunakan keyword: bool.

Tabel 5.3. Tipe data boolean.


Tipe Data Nilai
bool true atau false

Agar dapat lebih mudah mengingat tipe data ini, berikut kami berikan gambar
ilustrasi tipe data boolean. Perhatikan Gambar 5.7.
Berdasarkan Gambar 5.7, dapat diketahui bahwa tipe boolean hanya memiliki dua
buah nilai yaitu nilai true atau false.

Gambar 5.7. Tipe data bool.

Jika bingung dalam penerapannya, berikut kami berikan contoh penggunaannya


dalam sebuah gambar ilustrasi. Perhatikan Gambar 5.8.
Pada Gambar 5.8 di bawah, dapat diketahui bahwa:
• Terdapat sebuah variabel bernama gagah yang dideklarasikan dengan tipe data bool.
• bool adalah keyword yang digunakan untuk mendeklarasikan variabel bertipe
boolean.
• True adalah nilai bolean yang dimasukkan ke dalam variabel gagah.

81
Gambar 3.8. Contoh penggunaan tipa data bool.

5. Tipe Data Karakter


Tipe data ini adalah tipe data yang digunakan pada
suatu variabel untuk menampung nilai berupa karakter.
Karakter yang dimaksud adalah nilai yang diapit dengan tanda
petik satu. Misalnya seperti : ‘1’, ‘a’, dan ‘?’. Secara umum
untuk menggunakan tipe data ini cukup dengan
menggunakan keyword: char. Adapun informasi mengenai
tipe data, ukuran dan rentang nilainya dapat dilihat pada Simak penjelasan
Pak Dosen di sini!
Tabel 5.4.

Tabel 5.4. Tipe data karakter.


Tipe Data Ukuran (dalam bit) Rentang
char 8 -127 sampai 127
unsigned char 8 0 sampai 255
signed char 8 -127 sampai 127
wchar_t 16 tau 32 1 wide character

Agar dapat lebih mudah mengingat tipe data ini, kami berikan gambar ilustrasi tipe
data char. Perhatikan Gambar 5.9.

82
Gambar 5.9. Tipe data char.

Gambar 5.10. Contoh penggunaan tipa data char.

Selanjutnya agar dapat memahami penggunaan tipe data char, kami berikan contoh
penggunaannya pada gambar ilustrasi. Perhatikan Gambar 5.10.
Pada Gambar 5.10 dapat diketahui bahwa telah dideklarasikan sebuah variabel
bernama nilai_MK yang bertipe char. Variabel tersebut menampung sebuah nilai karakter
yaitu ‘A’. Secara detailnya adalah sebagai berikut:
• Untuk menggunakan tipe karakter sederhana cukup menggunakan keyword char
yang dimana ukuran memorynya adalah 1 bytes.

83
• nilai_MK adalah nama variabel yang dideklarasikan untuk menampung nilai bertipe
karakter.
• ‘A’ adalah karakter. Karakter ditandai dengan sebuah huruf, angka atau symbol yang
diapit oleh tanda petik satu.
• Karakter ‘A’ ditugaskan masuk ke dalam variabel nilai_MK menggunakan operator
“=”.

Agar dapat lebih memahami penggunaan tipe data, berikut kami berikan contoh
program sederhana.
1. Contoh 1 – Penggunaan tipe data integer.
#include <iostream>
using namespace std;
int main()
{
int x;
x=3;
cout<<"Nilai x:"<<x;
return 0;
}
Output:
Nilai x:3
Pada kode program di atas dapat kita lihat bahwa pada baris 5 variabel x
dideklarasikan dengan menggunakan tipe data integer (x dapat menampung nilai antara -
2.147.483.648 sampai 2.147.483.647). Kemudian pada baris 6 variabel x diisi dengan nilai 3.
Sehingga, ketika isi variabel x ditampilkan melalui perintah pada baris 7, nilai yang
ditampilkan adalah 3.
Jika anda mencoba untuk mengisi variabel x dengan nilai 2.147.483.650, maka nilai
yang akan ditampilkan tidak akan sesuai yang seharusnya. Hal tersebut disebabkan tipe data
yang digunakan tidak dapat menampung nilai di luar range antara -2.147.483.648 sampai
2.147.483.647.

84
2. Contoh 2 – Penggunaan tipe data float.
#include <iostream>
using namespace std;
int main()
{
float PHI;
PHI =3.14f;
cout<<"Nilai PHI: "<<PHI;
return 0;
}
Output:
Nilai PHI: 3.14
Pada contoh prorgram sederhana di atas dapat kita lihat bahwa pada baris ke-5,
variabel PHI dideklarasikan menggunakan tipe float. Lalu kemudian pada baris ke-6 variabel
diisi dengan bilangan pecahan/real. Ingat bahwa penggunaan koma pada C++ adalah dengan
menggunakan ".". Pada 3.14 kita lihat terdapat ‘f’. ‘f’ menandakan bahwa nilai tersebuat
adalah float. Jika dihilangkan maka nilai dianggap double. Namun jika f tidak disertakan pada
nilai float maka compiler akan secara otomatis mengonversi nilai double tersebut ke tipe
float.

3. Contoh 3 – Penggunaan tipe data boolean.


#include <iostream>
using namespace std;

int main()
{
bool x;
x =true;

cout<<"Nilai x:"<<x;
return 0;
}

85
Output:
Nilai x:1
Pada cotoh program sederhana di atas variabel x dideklarasikan dengan tipe
data boolean. Pada program di atas, variabel x diisi dengan nilai true. Kemudian
pada baris ke-7 isi dari variabel x ditampilkan. Nilai yang tampil adalah 1 yang
merupakan representasi dari true. Jika anda mencoba untuk memasukkan nilai false,
maka nilai yang tampil adalah 0.

4. Contoh 4 – Penggunaan tipe data char


#include <iostream>
using namespace std;

int main()
{
char x, y;
x ='a';
y = 100;

cout<<"Nilai x: "<<x<<endl;
cout<<"Nilai y: "<<y<<endl;
return 0;
}
Output:
Nilai x: a
Nilai y: d
Pada cotoh program sederhana di atas variabel x dan y dideklarasikan dengan tipe
data char. Untuk menugaskan sebuah nilai char ke dalam variabel x maka harus diapit
dengan petik satu. Jika anda mencoba untuk memasukkan dua karakter atau lebih pada
variabel x, maka karakter terakhir yang akan ditampilkan jika perintah baris ke-7 dieksekusi.
Jika anda memasukkan nilai bilangan bulak ke variabel bertipe char, maka nilai
tersebut akan dianggap oleh compiler sebagai kode atau nilai desimal yang mewakili sebuah
karakter sesuai tabel ASCII. Pada contoh di atas, sesuai tabel ASCII nilai 100 mewakili karakter
‘d’, sehingga nilai karakter yang tersimpan di variabel y adalah ‘d’.

86
5. Contoh 5 – Penggunaan berbagai tipe data dasar.
#include <iostream>
using namespace std;
int main()
{
//Pendeklarasian variabel dan tipedatanya
unsigned short int usia;
float tinggiBadan;
bool tampan;
char karakter;

//Menginisialisasikan nilai ke dalam variabel


usia = 27;
tinggiBadan = 165.5;
tampan = true;
karakter = 'A';

//Menampilkan isi variabel


cout<<"Isi variabel usia: "<<usia<< " tahun"<<endl;
cout<<"Isi variabel tinggiBadan: "<<tinggiBadan<< " cm"<< endl;
cout<<"Isi variabel tampan: "<<tampan<< endl;
cout<<"Isi variabel karakter: "<<karakter<< endl;
return 0;
}
Output:
Isi variabel usia: 27 tahun
Isi variabel tinggiBadan: 165.5 cm
Isi variabel tampan: 1
Isi variabel karakter: A
Berdasarkan contoh program di atas dapat kita ketahui bahwa terdapat empat
variable yang pada mulanya dideklarasikan dengan tipe data berbeda yaitu: usia yang bertipe
integer (short dan tidak bernilai negatif), tinggiBadan yang bertipe float, tampan yang
bertipe boolean, dan karakter yang bertipe char.

87
Setelah dideklarasikan keempat variabel tersebut kemudian diisi dengan nilai
tertentu sesuai dengan tipe data dari variabel tersebut. Misalnya variabel usia yang bertipe
unsigned short integer diisi dengan nilai 27 yang merupakan nilai bilangan bulat atau integer.
Unsigned short digunakan karena data usia biasanya tidak terlalu besar dan usia tidak ada
yang bernilai negatif.
Kemudian setelah mengisi seluruh variabel dengan nilai, selanjutnya isi dari tiap
variabel ditampilkan seperti yang ditunjukanpada bagian output. Sebagai contoh, cout<<"Isi
variabel usia: "<<usia<< " tahun"<<endl;
cout adalah perintah yang digunakan untuk menampilkan output ke layar. Usia tidak
diapit oleh tanda petik dua maka dianggap sebagai variabel. Karena dianggap sebagai
variabel maka yang ditampilkan bukanlah teks “usia” melainkan isi dari variabel usia tersebut
yaitu 27. Aturan yang sama berlaku untuk variabel yang lain.

1. Berdasarkan contoh 5 program sederhana pada bagain B, apa yang terjadi jika variabel
usia diisi dengan nilai 100.8? Jelaskan analisis jawabanmu!

2. Kerjakanlah program berikut ini!


#include <iostream>
using namespace std;
int main()
{
int x;
x=3;
cout<<"Nilai x:"<<x;
return 0;
}

88
Output:

a. Berdasarkan program di atas, jika variabel x pada perintah x=3; diganti dengan a, apa
yang terjadi setelah program dijalankan? Lakukan analisis sederhana dan jelaskan
mengapa hal tersebut bisa terjadi?

b. Berdasarkan program di atas, jika nilai 3 pada perintah x=3; diganti dengan -2.5, apa
yang terjadi setelah program dijalankan? Lakukan analisis sederhana dan jelaskan
mengapa hal tersebut bisa terjadi?

c. Berdasarkan program di atas, jika nilai 3 pada perintah x=3; diganti dengan
4294967299, apa yang terjadi setelah program dijalankan? Lakukan analisis sederhana
dan jelaskan mengapa hal tersebut bisa terjadi?

3. Kerjakanlah program berikut ini!


#include <iostream>
using namespace std;
int main()
{
float y;
y=10.5;

89
cout<<"Nilai y:"<<y;
return 0;
}

Output:

a. Berdasarkan program di atas, jika variabel y pada perintah cout<<"Nilai y:"<<y; diberi
tanda petik dua “y”, apa yang terjadi setelah program dirun? Lakukan analisis
sederhana dan jelaskan mengapa hal tersebut bisa terjadi?

b. Berdasarkan program di atas, jika nilai 10.5 pada perintah y=10.5; diganti dengan 100,
apa yang terjadi setelah program dirun? Lakukan analisis sederhana mengapa hal
tersebut bisa terjadi?

4. Kerjakanlah program berikut ini!


#include <iostream>
using namespace std;
int main()
{
bool a,b;
a=false;
b=true;
cout<<"Nilai a:"<<a<<endl;
cout<<"Nilai b:"<<b<<endl;
return 0;
}

90
Output:

a. Berdasarkan program di atas, jika huurf b pada perintah bool a,b; diganti dengan huruf
B besar, apa yang terjadi setelah program dirun? Lakukan analisis sederhana dan
jelaskan mengapa hal tersebut bisa terjadi?

b. Berdasarkan program di atas, jika huruf f pada false diganti dengan F, apa yang terjadi
setelah program dieksekusi? Lakukan analisis sederhana dan jelaskan mengapa hal
tersebut bisa terjadi?

5. Kerjakanlah prigram berikut ini!


#include <iostream>
using namespace std;
int main()
{
float p;
int l, L;
p=5.5;
l=4.5;
L=p*l;
cout<<"Jika panjang persegi adalah "<<p<<" meter"<<endl;
cout<<"Jika lebar persegi adalah "<<l<<" meter"<<endl;

91
cout<<"maka luas persegi L adalah "<<L<<" meter persegi"<<endl;
return 0;
}
Output:

a. Terdapat beberapa kesalahan pada program di atas. Tuliskan setiap baris perintah yang
salah dan solusi untuk perbaikannya. Jelaskan pula analisis sederhana atas solusi yang
anda tuliskan!

1. Buatlah flowchart dan program untuk menghitung luas sebuah segitiga jika diketahui
alas (10 meter) dan tinggi (15 meter)
2. Buatlah flowchart dan program untuk menghitung luas sebuah lingkaran jika yang
diketahui hanya kelilingnya (88 cm) dan PHI (22/7)!

92
93
94
95
96
BAB VI
TIPE DATA BENTUKAN I

1. Pengantar Tipe Data Bentukan


Tipe data bentukan merupakan tipe data yang dibentuk atau dibuat sendiri sesuai
kebutuhan dalam program yang akan kita buat. Dalam bahasa Inggris, tipe ini dikenal dengan
istilah User Defined Types. Tipe data bentukan diperoleh atau dibentuk dari tipe data yang
sudah ada (tipe data primitif) namun dianggap terpisah dan tidak seperti tipe data dasar
tersebut. Adapun jenis tipe data bentukan, yaitu:
• Structure
• Union
• Enumeration
• Typedef

2. Struktur
Dalam bahasa Indonesia tipe structure dikenal dengan istilah struktur. Sesuai
namanya, struktur adalah tipe data bentukan yang menyimpan lebih dari satu variable
bertipe sama maupun berbeda. Struktur yang keywordnya adalah struct merupakan
sekelompok elemen data yang dikelompokkan dalam satu nama. Jadi dapat dianalogikan
bahwa struct merupakan sebuah pembungkus dari beberapa tipe data primitif yang diberi
nama sendiri.
Data elemen yang disebut juga sebagai “data member“ ini dapat memiliki tipe data
dan panjang data yang berbeda. Dengan kemampuan itu struktur dapat digunakan untuk
mengelompokkan beberapa data dengan tipe data berbeda
dalam sebuah tipe data baru.

a. Sintaks mendeklarasikan struct


struct nama_struct {
tipe_data1 nama_member1;
tipe_data1 nama_member2;
Simak penjelasan
….
Pak Dosen di sini!

97
tipe_dataN nama_memberN;
};
Keterangan:
• struct: Merupakan keyword yang digunakan untuk mendeklarasikan sebuah tipe
struct.
• nama_struct: Diisi dengan nama struct yang diinginkan. Syarat pemberian nama
seperti pada syarat pemberian nama variabel.
• tipe_data1: Merupakan tipe data dari variabel member ke-1 dari struct yang diberi
nama nama_member1
• tipe_N: Merupakan tipe data dari variabel member ke-N dari struct yang diberi nama
nama_memberN
• nama_member1: Merupakan nama variabel member yang menjadi member dari
struct yang dideklarasikan
Pada sintaks di atas dapat kita lihat bahwa untuk mendeklarasikan sebuah struct
harus diawali dengan keyword struct. Adapun nama_struct adalah nama dari struktur yang
akan dideklarasikan. Pemberian nama harus memperhatikan syarat-syarat pemberian nama
identifier. Selanjutnya yang termasuk data member dari struct ini adalah seluruh variabel
yang berada di dalam “{ }”.
Agar dapat lebih mudah untuk memahami sintaks di atas, maka kami berikan gambar
ilustrasi contoh penggunaannya. Perhatikan Gambar 6.1.

Gambar 6.1. Contoh pendeklarasian struct.

98
Dari Gambar 6.1, dapat diketahui bahwa:
• struct merupakan keyword pendeklarasian struct.
• paket_internet adalah nama tipe struct yang dideklarasikan. Dengan kata lain telah
dideklarasikan sebuah tipe data baru (bentukan) bernama paket_internet.
• String nama_paket, int kuota_telpon, dan int kuota_internet semuanya adalah
member dari tipe paket_internet.
Jadi, dapat diketahui bahwa nama struct adalah paket_internet yang memiliki 3
varaiabel/data member yaitu nama_paket, kuota_telpon, dan kuota_internet. Jika struct
paket_internet digunakan untuk membentuk objek, maka objek tersebut akan
mengandung ketiga data member tersebut juga.
b. Sintaks pembentukan objek struct (cara I)
Setelah mendeklarasikan struct, maka tentunya kita akan membentuk objek dari
struct tersebut. Adapun sintaks yang dapat digunakan untuk membentuk objek dari suatu
struct adalah sebagai berikut:

nama_struct nama_objek;
Keterangan :
• nama_struct: Diisi dengan nama struct yang telah dideklarasikan sebelumnya.
• nama_objek: Diisi dengan nama objek yang diinginkan. Penamaan objek mengikuti
aturan penamaan identifier.
Berdasarkan sintaks di atas dapat diketahui bahwa cukup dengan menuliskan nama
struct diikuti dengan nama objek yang diinginkan dan diakhiri dengan titik koma maka kita
sudah dapat membentuk sebuah objek. Pendeklarasian/pembentukan objek dapat dilakukan
secara terpisah dari pendeklarasian struct. Objek dideklarasikan dalam satu baris perintah
tersendiri. Namun perlu diingat bahwa pembentukan objek hanya dapat dilakukan setelah
pendeklarasian struct pembentuk objek tersebut
Objek pada dasarnya adalah variabel untuk menampung nilai. Tipenya adalah struct
yang digunakan untuk membentuknya. Namun karena dideklarasikan dengan menggunakan
tipe data bentukan, maka kita menyebutnya sebagai sebuah objek. Jika sebuah tipe struct
memiliki data member yang dapat menampung nilai integer dan float, maka objeknya juga
memiliki hal yag sama.
Agar dapat lebih mudah memahami maksud dari sintaks di atas, berikut kami berikan
contoh penggunaannya. Perhatikan Gambar 6.2.

99
Gambar 6.2. Contoh pembentukan objek struct.

Berdasarkan contoh ilustrasi pada Gambar 6.2. maka dapat diketahui bahwa:
• Sebuah objek bernama telkomsul dideklarasikan.
• Objek (dapat juga disebut variabel) telkomsul dibentuk oleh tipe struct
paket_internet.
• Objek telkomsul juga mengandung 3 data member yang sama dengan
paket_internet yang dapat diisi dengan nilai yang sesuai.
c. Sintaks pembentukan objek struct (Cara II)
Selain cara diatas terdapat cara lain juga untuk membentuk objek. Perhatikan sintaks
berikut ini:

struct nama_struktur {
tipe_data1 variabel1;
tipe_data2 variabel2;

tipe_dataN variabelN;
} nama_objek;

Keterangan:
• struct: Merupakan keyword yang digunakan untuk mendeklarasikan sebuah tipe
struct.

100
• nama_struct: Diisi dengan nama struct yang diinginkan. Syarat pemberian nama
seperti pada syarat pemberian nama variabel.
• tipe_data1: Merupakan tipe data dari variabel member ke-1 dari struct yang diberi
nama nama_member1.
• tipe_dataN: Merupakan tipe data dari variabel member ke-N dari struct yang diberi
nama nama_memberN.
• nama_objek: Merupakan objek yang akan dibentuk menggunakan tipe struct yang
dideklarasikan.
Berdasarkan sintaks di atas, dapat kita ketahui bahwa sebuah objek dapat dibentuk
bersamaan pada saat pendeklarasian sebuah struct. Cukup dengan menambahkan nama
objek yang diinginkan di belakang blok setelah blok “}” dan sebelum tanda titik koma. Objek
ini nanti akan memiliki “karakteristik” yang sama dengan struct pembentuknya. Jika objek
yang akan dibentuk lebih dari satu objek, maka pisahkan tiap objek dengan tanda koma dan
objek paling akhir diakhiri dengan titik koma.

Gambar 6.3. Contoh pembentukan objek struct pada saat pendeklarasian struct.

Agar dapat lebih mudah memahami maksud dari sintaks tersebut, berikut kami
berikan contoh ilustrasi. Perhatikan Gambar 6.3.
Berdasarkan Gambar 6.3, terdapat beberapa hal yang dapat kita ketahui, yaitu:
• Terdapat keyword struct yang berarti tipe yang dideklarasikan adalah struktur.
• paket_internet adalah nama_struct yang dideklarasikan.

101
• nama_paket, kuota_telpon, kuota_internet adalah data/variabel member dari
struct paket_internet.
• Begadang adalah nama objek yang dibentuk dari struct paket_internet.
d. Sintaks mengakses (menyimpan nilai) pada data member objek
Adapun sintaks untuk menyimpan nilai ke dalam data/variabel member dari sebuah
objek yang dibentuk dari tipe struct dapat dilihat pada sintaks berikut ini:

nama_objek.nama_member = nilai ;
Keterangan:
• nama_objek: Merupakan nama objek dari data member yang akan diekses. Objek
tentunya harus dideklarasikan terlebih dahulu.
• Nama_member: Merupakan nama member dari struct yang akan disimpan nilainya
• “.”: Tanda titik pada nama_objek.nama_member berarti bahwa variabel
nama_member yang akan diakses berada di dalam objeknama_objek.
• nilai: Merupakan nilai yang akan dimasukkan ke dalam data member. Pastikan
bahwa nilai dan tipe data variabel yang akan diisi memiliki tipe yang sama.
Dari sintaks di atas dapat diketahui bahwa untuk mengakses sebuah data member
dari objek cukup dengan menuliskan nama objeknya diikuti tanda titik dan nama variabel
member yang akan diakses. Untuk memasukkan nilai kedalam variabel member tersebut

Gambar 6.4. Contoh cara menyimpan nilai pada data member objek struct.

102
cukup tambahkan tanda sama dengan dan nilai yang sesuai dengan tipe data dari data
member tersebut.
Untuk dapat lebih mudah memahami sintaks di atas, berikut diberikan contoh
gambar ilustrasi. Perhatikan Gambar 6.4
Berdasarkan contoh pada Gambar 6.4, dapat diketahui bahwa:
• “begadang” adalah nama objek yang telah dibentuk dari struct.
• Kuota_internet adalah data/variabel member dari objek begadang. Variabel ini
juga dimiliki oleh objek begadang karena objek begadang dibentuk dari struct yang
memiliki variabel tersebut juga.
• “=” adalah operator penugasan.
• 50 adalah nilai yang akan ditugaskan untuk masuk ke variabel kuota_internet yang
ada di dalam objek begadang.
• Tanda titik antara nama objek dan nama data member adalah penanda bahwa data
member yang dimaksud adalah data member yang ada di dalam objek begadang.
e. Sintaks mengakses (mengambil nilai) pada data member objek
Selain menyimpan, kita tentu ingin mendapatkan atau mengakses nilai dari suatu
data member. Sintaks menndapatkan nilai dari suatu data member dapat dilihat pada sintaks
berikut.

nama_objek.nama_member ;
Keterangan:
• nama_objek: Merupakan nama objek dari data member yang akan diekses. Objek
tentunya harus dideklarasikan terlebih dahulu.
• Nama_member: Merupakan nama member dari struct yang akan diakses nilainya
• “.”: Tanda titik pada nama_objek.nama_member berarti bahwa variabel
nama_member yang akan diakses berada di dalam objeknama_objek.
Hampir sama dengan sintaks menyimpan nilai, untuk mendapatkan nilai data
member objek cukup dengan menuliskan nama_objek.nama_member;. Hal tersebut
menunjukkan bahwa variabel yang akan diakses adalah variabel data member yang berada
di dalam objek.
Untuk dapat lebih mudah memahami sintaks di atas, diberikan gambar ilustrasi
contoh penggunaannya. Perhatikan Gambar 6.5.
Berdasarkan contoh pada Gambar 6.5 di atas, maka dapat diketahui bahwa:

103
• Begadang adalah nama objek yang dibentuk dari sebuah tipe struct paket_internet.
• Kuota_internet adalah nama data member.
• Tanda titik diantara begadang dan kuota_internet berarti bahwa data member
kuota_internet yang dimaksud adalah data member yang berada di dalam objek
begadang.

Gambar 6.5. Contoh cara mendapatkan nilai dari sebuah data member objek

Contoh di atas menunjukkan bahwa kita akan mengakses (mendapatkan nilai) dari
variabel kuota_internet yang berada di dalam objek begadang.

3. Union
Seperti struktur, union adalah tipe data yang ditentukan pengguna. Dalam union,
semua anggota berbagi lokasi memori yang sama. Dengan kata lain union memungkinkan
satu bagian memory diakses sebagai tipe data yang berbeda.
Pendeklarasian Union mirip dengan pendeklarasian struktur.
a. Sintaks mendeklarasikan union
Adapun sintaks sintaks untuk mendeklarasikan sebuah
union adalah sebagai berikut:

union nama_union {
tipe_data nama_variabel1; Simak penjelasan
Pak Dosen di sini!
tipe_data nama_variabel2;

104
tipe_data nama_variabel3;

};
Keterangan:
• union: Merupakan keyword yang digunakan untuk mendeklarasikan union.
• nama_union: Merupakan nama_union yang akan dideklarasikan. Pemberian nama
mengikuti syarat penamaan variabel/identifier.
• tipe_data1: Merupakan tipe data dari variabel member ke-1 dari union yang diberi
nama nama_member1.
• nama_varaiabel1: Merupakan nama variabel member 1 yang dideklarasikan
menggunakan tipe data 1.
• tipe_dataN: Merupakan tipe data dari variabel member ke-N dari struct yang diberi
nama nama_memberN.
• nama_varaiabelN: Merupakan nama variabel member ke-N yang dideklarasikan
menggunakan tipe data ke-N.
Pada sintaks di atas dapat kita ketahui bahwa keyword union digunakan untuk
mendeklarasikan sebuah union. Seluruh variabel yang terdapat di dalam tanda kurung
kurawal adalah merupakan data member dari union tersebut.

Gambar 6.6. Contoh cara mendeklarasikan union


Agar dapat lebih mudah memahami sintaks di atas, kami berikan contoh dalam
bentuk gambar ilustrasi. Perhatikan Gambar 6.6.

105
Berdasarkan Gambar 6.6 di atas maka dapat diketahui bahwa:
• Terdapat sebuah union dengan nama paket_internet.
• Terdapat 3 variabel member yaitu kuota_malam, kuota_pagi, dan kuota_siang
yang sama-sama bertipe integer.
b. Sintaks pembentukan objek union (Cara I)
Adapun sintaks sintaks untuk membentuk objek sebuah tipe union adalah sebagai
berikut:

nama_union nama_objek;
Keterangan:
• nama_union: Diisi dengan nama union yang telah dideklarasikan sebelumnya.
• nama_objek: Diisi dengan nama objek yang diinginkan. Penamaan objek mengikuti
aturan penamaan variabel.
Berdasarkan sintak di atas maka dapat diketahui bahwa untuk membentuk objek dari
sebuah union cukup dengan menuliskan nama union yang telah dideklarasikan diikuti
dengan nama objek yang akan dibentuk.

Gambar 6.7. Contoh cara I membentuk objek union


Agar lebih mudah memahami sintaks di atas, kami berikan gambar contoh ilustrasi
penggunaannya. Perhatikan Gambar 6.7.
Berdasarkan contoh pada Gambar 6.7, maka dapat diketahui bahwa:
• paket_internet adalah nama union yang telah dideklarasikan sebelumnya.
• Begadang adalah nama objek yang dibentuk dari union paket_internet.

106
c. Sintaks pembentukan objek union (Cara II)
Selain cara sebelumnya, terdapat cara lain juga untuk mendeklarasikan sebuah
objek. Pada cara ini, objek union langsung dibentuk saat union tersebut dideklarasikan.
Berikut sintaksnya:
union nama_struktur {
tipe_data variabel1;
tipe_data variabel2;

tipe_data variabelN;
} nama_objek;
Keterangan :
• union: Merupakan keyword yang digunakan untuk mendeklarasikan sebuah tipe
union.
• nama_struct: Diisi dengan nama struct yang diinginkan. Syarat pemberian nama
seperti pada syarat pemberian nama variabel.
• tipe_data Variabel1: Merupakan tipe data dari variabel member ke-1 dari struct
yang diberi nama variabel1.
• Nama_objek: Merupakan nama objek yang ingin dibentuk menggunaka tipe union.
Berdasarkan sintaks di atas maka dapat diketahui bahwa sebuah objek dari union
dpat dibentuk bersamaan dengan pendeklarasian union pembentuknya. Cukup dengan
menambahkan nama objek yang diinginkan setElah tanda “}” dan sebelum tanda “;”.

Gambar 6.8. Contoh cara II membentuk objek union.

107
Agar dapat lebih memahami sintaks di atas, maka kami berikan gambar ilustrasi
contoh penggunaanya. Perhatikan Gambar 6.8.
Berdasarkan contoh pada Gambar 6.8, maka dapat diketahui bahwa:
• Sebuah union dideklarasikan dengan nama paket_internet.
• Union paket_internet mengandung 3 variabel/data member yaitu kuota_malam1,
kuota_malam2, dan kuota_malam3.
• Begadang adalah nama objek union yang dibentuk.
Adapun perintah untuk menyimpan nilai atau mengakses data member sama dengan
sintaks yang digunakan pada objek struct.

4. Persamaan dan Perbedaan Antara Struct dan Union


a. Persamaan
• Keduanya sama-sama merupakan user-defined data types (tipe data bentukan) yang
digunakan untuk menyimpan lebh dari satu data dengan tipe berbeda ke dalam
sebuah unit tipe data bentukan.
• Data membernya dapat berupa objek atau variabel jenis apapun termasuk struct,
union, array, dan jenis data lainnya.
• Sebuah struct atau union dapat dikirim sebagai argument pada sebuah fungsi
(passed by value) dan dikembalikan dengan nilai oleh fungsi. Argument tentunya
harus memiliki tipe yangs ama dengan parameter fungsi
• Tanta titik “.” Digunakan untuk mengekses data member dari objek struct dan union.
b. Perbedaan
Adapun perbedaan antara struct dan union dapat diliha pada Tabel 6.1.
Tabel 6.1. Perbedaan struct dan union.
No Struct Union
1 Menggunakan keyword struct Menggunakan keyword union
2 Ketika sebuah variabel menjadi Ketika sebuah variabel menjadi member
member dari struct, maka compiler dari sebuah union, maka compiler akan
akan mengalokasikan memory untuk mengalokasikan memory berdasarkan
setiap member. Sehingga ukuran dari ukuran memory terbesar dari
structure akan lebih besar dari atau membernya. Sehingga ukuran dari union
minimal sama dengan total ukuran akan sama dengan ukuran memory dari
dari variabel/data membernya. variabel/member terbesarnya

108
3 Setiap member dari struktur akan Berbagi pengalokasian memory oleh
ditempatkan pada alamat memory setiap variabel/data membernya
yang unik
4 Setiap member dapat diakses secara Hanya satu member yang dapat diakses
bersamaan dalam satu waktu
5 Setiap member dapat diinisialisasikan Hanya member pertama yang dapat
dengan nilai secara bersamaan diinisialisasikan

Adapun ilustrasi perbedaan penggunaan memory pada struct dan union dapat dilihat
pada Gambar 6.9.

Gambar 6.9. Ilustrasi penggunaan memory struct dan union.

Agar dapat lebih memahami struct dan union, berikut kami berikan contoh program
sederhana.
1. Contoh 1 – Program menyimpan dan menampilkan data pada objek struct.
#include <iostream>
#include <cstring>
using namespace std;

109
struct paket_internet {
string nama_paket;
int kuota_telpon;
int kuota_internet;
}begadang;
int main() {
begadang.nama_paket = "Begadang";
begadang.kuota_telpon = 50;
begadang.kuota_internet = 25;

cout<<"Nama paket : "<< begadang.nama_paket << endl;


cout<<"Kuota telpon : "<< begadang.kuota_telpon << " Menit" << endl;
cout<<"Nama internet : "<< begadang.kuota_internet << " GB" << endl;
return 0;
}
Output:
Nama paket : Begadang
Kuota telpon : 50 Menit
Nama internet : 25 GB

Program di atas merupakan program untuk menyimpan dan menampilkan data pada
suatu struct. Pada program juga dapat diketahui bahwa terdapat pendeklarasian struct
bernama paket_internet. Struct paket_internet membungkus 3 data member yaitu:
nama_paket yang bertipe string, kuota_telpon yang bertipe integer, dan kuota_internet
yang bertipe integer. Selain itu, pada saat yang bersamaan
dilakukan pembentukan objek bernama begadang.
Objek begadang yang terbentuk dari struct
paket_internet akan memiliki struktur data member yang
sama dengan struct pembentuknya dalam hal ini adalah paket-
internet. Sehingga ketika perintah begadang.nama_paket =
"Begadang"; , begadang.kuota_telpon = 50; ,
Simak penjelasan
begadang.kuota_internet = 25; dieksekusi, data-data tersebut Pak Dosen di sini!
dapat masuk ke dalam data member dari objek begadang.

110
2. Contoh 2 - Program menyimpan dan menampilkan data pada objek union.
#include <iostream>
using namespace std;

union daftar_nilai {
float pengetahuan;
float sikap;
float psikomotorik;
Simak penjelasan
}budi; Pak Dosen di sini!

int main() {
budi.sikap = 70.5f;
budi.pengetahuan = 85.5f;

cout<<"nilai pengetahuan : "<< budi.pengetahuan << endl;


cout<<"nilai sikap : "<< budi.sikap << endl;
cout<<"nilai psikomotorik : "<< budi.psikomotorik << endl;
cout<<"ukuran objek : "<< sizeof(budi) << endl;
return 0;
}
Output:
nilai pengetahuan : 85.5
nilai sikap : 85.5
nilai psikomotorik : 85.5
ukuran objek : 4
Program di atas merupakan contoh program penerapan union. Dapat diketahui
bahwa pada program di atas dideklarasikan sebuah union bernama daftar_nilai. Union daftar
nilai memiliki variabel/data member yaitu pengetahuan dan psikomotorik serta sikap yang
bertipe float.
Pada saat yang bersamaan dibentuk sebuah objek union bernama budi. Karena budi
dibentuk dari union daftar_nilai, maka budi selanjutnya juga akan memiliki 3 data member
yang sama dengan union pembentuknya.

111
Pada program, pada fungsi main(), dapat kita lihat bahwa data member budi yakni
sikap diisi dengan nilai 70.5 dan pengetahuan diisi dengan nilai 85.5. Namun pada saat nilai
dari ketiga data member budi tersebut ditampilkan diperoleh hasil pengetahuan, sikap, dan
psikomotorik berisi 85.5. Hal tersebut terjadi karena memory yang dirujuk oleh ketiga
variabel member tersebut sama. Jadi, nilai terakhir yang diinputkan ke dalam variabel
member manapun juga akan dirujuk oleh variabel member lainnya.
Pada program di atas juga kita dapat melihat bahwa ukuran memory objek adalah 4
bytes bukan 12 bytes (penjumlahan ukuran 3 variabel member), hal tersebut disebabkan
karena union menggunakan alamat memory dengan ukuran terbesar dan terjadi sharing
memory diantara ketiga variabel tersebut.

1. Berdasarkan contoh program 1 pada bagian B. Apa maksud dari perintah


begadang.kuota_internet = 25; ? Jelaskan !

2. Berdasarkan contoh program 1 pada bagian B. Modifikasi program tersebut diatas.


Tambahkan satu paket belajar online dimana kuota internetnya sebesar 50 Gb dan kuota
telponnya sebesar 0 menit. Tulis Kembali kode programnya pada tempat yang telah
disediakan.

112
3. Berdasarkan contoh program 2 pada bagian B. Mengapa variabel psikomotorik pada
objek budi menghasilkan nilai 85.5 sedangkan variabel psikomotorik pada objek budi
tidak pernah diisi dengan nilai apapun. Dan mengapa pula nilainya bukan 70.5? Lakukan
analisis mengapa hal tersebut dapat terjadi!

4. Kerjakan program berikut ini


#include <iostream>
#include <string>
using namespace std;

struct mahasiswa{
int nim ;
string nama;
float nilai ;
};

int main(){
mahasiswa aco, eca;
aco.nim = 1;
aco.nama = "Aco Aswar";

113
aco.nilai = 90.5;

eca.nim = 2;
eca.nama = "Eca Cantika";
eca.nilai = 99.9;

cout<<aco.nama<<" memperoleh nilai "<<aco.nilai<<endl;


cout<<eca.nama<<" memperoleh nilai "<<eca.nilai<<endl;
return 0;
}
Output:

a. Berdasarkan program di atas, tentukan nama struct dan variabel/data membernya!

b. Berdasarkan program di atas, tentukan ada berapa objek yang dibentuk dari struct
tersebut dan apa saja data member dari objek tersebut!

c. Apa maksud dari tanda titik pada perintah eca.nim = 2; ? Jelaskan!

114
1. Terdapat 3 warung yang menjual nasi kuning yaitu warung “bone tamparang”, “sarla”,
dan “panyingkul”. Ketiga warung tersebut menjual nasi kuning dengan harga, lauk
utama, dan rasa sambal yang berbeda. Berdasarkan deskripsi tersebut, buatlah sebuah
program untuk menyimpan dan menampilkan keterangan menu nasi kuning setiap
warung tersebut menggunakan struct!
2. Berdasarkan program yang telah kalian buat, identifikasi ada berapa variabel lokal dan
global? Tentukan pula nama variabel yang termasuk lokal dan global tersebut!

115
116
117
118
BAB VII
TIPE DATA BENTUKAN II

1. Tipe Data Bentukan


Tipe data bentukan merupakan tipe data yang dibentuk atau dibuat sendiri sesuai
kebutuhan dalam program yang akan kita buat. Dalam bahasa inggris, tipe ini dikenal dengan
istilah User Defined Types. Tipe data bentukan diperoleh atau dibentuk dari tipe data yang
sudah ada (tipe data primitif) namun dianggap terpisah dan tidak seperti tipe data dasar
tersebut. Adapun jenis tipe data bentukan, yaitu:
• Structure
• Union
• Enumeration
• Typedef

2. Enumeration
Enumeratin (enumerasi) atau yang lebih dikenal dengan istilah enum adalah tipe
data bentukan pengguna (user-defined data type) dimana nilainya terbatas hanya pada
himpunan nilai dalam konstanta yang ditentukan sendiri (nilai yang diperbolehkan untuk
disimpan ke dalam variabel). Tipe enumerasi digunakan untuk membentuk tipe data yang
nilainya bersifat pasti. Misalnya untuk mendefenisikan tipe jenis kelamin, nama hari, nama
warna dan lain sebagainya.
Nilai yang terbatas pada nilai konstanta yang ditentukan sendiri disebut sebagai
enumerator. Variabel / objek bertipe enum hanya dapat menyimpan satu dari setnilai yang
ditentukan tersebut.
a. Kapan kita perlu menggunakan enum
1) Enum digunakan ketika kita hanya menginginkan nilai-nilai
tertentu (set nilai) yang dapat disimpan ke dalam suatu
variabel. Sebagai contoh, misalnya kita memiliki tipe enum
merek_motor_jepang yang hanya dapat menampung nilai
konstanta yamaha, honda, dan suzuki. Jika suatu objek
Simak penjelasan
dideklarasikan dengan tipe enum tadi, maka variabel
Pak Dosen di sini!

119
tersebut hanya dapat diisi dengan nilai dari ketiga konstanta tadi. Selain itu maka akan
dianggap salah atau error.
2) Ketika ingin mencegah terjadinya kesalahan pengisian nilai variabel. Suatu objek yang
dideklarasikan menggunakan tipe enum maka variabel tersebut hanya dapat
menampung nilai yang termasuk kedalam nilai yang telah ditentukan. Selain itu akan
bernilai salah pada saat dicompile. Hal ini mencega terjadinya kesalahan pemrosesan
data.
3) Ketika menggunakan switch case. Nilai setiap blok case dapat didefenisikan pada enum
sehingga dapat dipastikan bahwa nilai yang digunakan adalah nilai yang dapat diterima.
Dari sisi efisiensi penggunaan memory, enum membutuhkan lebih sedikit memory
dibanding array dan struct. Enum hanya menggunakan satu nilai dari konstanta yang ada.
Sedangkan struct dan array ukurannya akan menyesuaikan dengan banyaknya nilai yang ada.
b. Mendeklarasikan enum
Adapun sintaks untuk mendeklarasikan sebuah enum adalah sebagai berikut:
enum nama_enum {
konstanta1,
konstanta2,

konstantaN
};

Keterangan :
• enum: Merupakan keyword yang digunakan untuk mendeklarasikan sebuah tipe
enumerasi.
• Nama-enum: Diisi dengan nama tipe enum yang diinginkan. Pemberian nama
harusmemenuhi syarat pemberian nama variabel atau identifier
• Konstanta1: Merupakan konstanta yang ditentukan programmer sesuai kebutuhan.
Secara default nilai setiap konstanta dimulai dari 0, 1, 2, dan seterusnya sesuai urutan
konstanta. Konstanta ini dikenal juga dengan enumerator.
• KonstantaN: Merupakan konstanta ke-N;
Berdasarkan sintaks di atas, dapat kita ketahui bahwa untuk mendeklarasikan
sebuah enum dengan konstanta atau enumerator-enumeratornya diperlukan keyword
enum. Seluruh enumerator/konstanta yang berada di dalanm tanda “{ }” adalah bagian dari

120
enum tersebut. Perhatikan pula bahwa setiap enumerator dipisahkan dengan tanda koma
jika terdapat lebih dari satu enumerator.
Agar dapat lebih mudah memahami sintaks di atas, berikut kami berikan gambar
ilustrasi contoh penggunaannya. Perhatikan Gambar 7.1.

Gambar 7.1. Contoh cara pendeklarasian enumerasi.

Berdasarkan contoh pada Gambar 7.1, kita dapat mengidentifikasi beberapa hal,
yaitu:
• Enum adalah keyword yang digunakan untuk mendeklarasikan enum.
• hariKantor adalah nama tipe enumerasi yang dideklarasikan
• Senin, Selasa, hingga Sabtu adalah enumerator dari enum hariKantor.
• Secara default Senin berisi nilai 0, Selasa berisi nilai 1, dan seterusnya.
c. Menginisialisasi nilai enumerator
Nilai pada enumerator juga dapat ditentukan sesuai dengan keinginan kita. Adapun
sintaks untuk menginisialisasikan nilai pada enumerator adalah sebagai berikut:
enum nama_enum {
konstanta1 = nilai1,
konstanta2 = nilai2,

konstantaN = nilai N
};

121
Keterangan:
• enum: Merupakan keyword yang digunakan untuk mendeklarasikan sebuah tipe
enumerasi.
• nama_enum: Diisi dengan nama tipe enum yang diinginkan. Pemberian nama harus
memenuhi syarat pemberian nama variabel atau identifier
• konstanta1: Merupakan konstanta/enumerator yang ditentukan programmer sesuai
kebutuhan. Secara default nilai setiap konstanta dimulai dari 0, 1, 2, dan seterusnya
sesuai urutan konstanta. Konstanta ini dikenal juga dengan enumerator.
• konstantaN: Merupakan konstanta ke-N;
• “=”: Merupakan operator penugasan sama dengan. Nilai di sebelah kanan operator
akan dimasukkan ke dalam variabel di sebelah kiri operator.
• nilai1: Adalah nilai yang diinisialisasikan ke dalam konstanta1.
Berdasarkan sintaks di atas maka dapat diketahui bahwa untuk menginisialisasikan
nilai pada konstanta enumerator, cukup dengan melakukan penginisialisasian nilai seperti
biasanya.
Agar dapat lebih mudah memahami maksud dari sintaks di atas, berikut kami berikan
contoh gambar ilustrasinya. Perhatikan Gambar 7.2.

Gambar 7.2. Contoh penginisialisasian nilai enumerator.

Berdasarkan Gambar 7.2 di atas, maka dapat diketahui bahwa:


• hariKantor adalah nama enumerasi yang dideklarasikan.
• Senin, Selasa hingga Sabtu adalah enumerator dari harikantor.

122
• Karena nilainya diinisialisasikan secara manual, maka nilai enumerator bukan lagi
Senin berisi 0, Selasa berisi 1 dan seterusnya. Namun, Senin berisi 1, Selasa berisi 2,
dan seterusnya sesuai dengan nilai yang diinisialisasikan.
d. Membuat objek enum (cara I)
Setelah sebuah tipe enum dideklarasikan, maka untuk dapat menggunakannya harus
dibentuk objek dari enum tersebut. Adapun sintaks untuk membentuk objek adalah sebagai
berikut:

nama_enum nama_objek;
Keterangan:
• nama_enum: Diisi dengan nama enum yang telah dideklarasikan sebelumnya yang
akan dibentuk objeknya
• nama_objek: Diisi dengan nama objek yang diinginkan. Objek hanya dapat
menerima nilai (enumerator) yang terdaftar pada enum pembentuknya.
Dari sintaks di atas dapat diketahui bahwa untuk mendeklarasikan objek dari enum
cukup dengan menuliskan nama enum yang telah dideklarasikan kemudian nama objek yang
diinginkan.
Agar dapat lebih memahami sintaks di atas, berikut contoh penggunaannya kami
sajikan dalam gambar ilustrasi. Perhatikan Gambar 7.3.

Gambar 7.3. Contoh pembentukan objek tipe enum.

123
Berdasarkan contoh pada Gambar 7.3, maka dapat diketahui bahwa:
• hariKantor adalah nama enumerasi yang akan digunakan untuk membuat objek.
• hariKerja adalah objek yang dibentuk dari enum hariKantor.
• hariKerja hanya dapat menerima nilai enumerator yang dideklarasikan pada enum
hariKantor.
e. Membuat objek enum (cara II)
Selain cara di atas, kita juga dapat membentuk objek enum bersamaan pada saat
pendeklarasian tipe enum. Perhatikan sintaks berikut ini:

enum nama_enum {
konstanta1 = nilai1,
konstanta2 = nilai2,

konstantaN = nilai N
} nama_objek ;
Keterangan:
• enum: Merupakan keyword yang digunakan untuk mendeklarasikan sebuah tipe
enumerasi.
• nama-enum: Diisi dengan nama tipe enum yang diinginkan. Pemberian nama
harusmemenuhi syarat pemberian nama variabel atau identifier
• konstanta1: Merupakan konstanta yang ditentukan programmer sesuai kebutuhan.
Secara default nilai setiap konstanta dimulai dari 0, 1, 2, dan seterusnya sesuai urutan
konstanta. Konstanta ini dikenal juga dengan enumerator.
• konstantaN: Merupakan konstanta ke-N.
• nama_objek: Diisi dengan nama objek yang diinginkan.
Dari sintaks di atas, dapat kita ketahui bahwa nama objek yang akan dibentuk
disisipkan setelah tanda “ } “ dan sebelum “ ; “. Dengan begitu pada saat tipe enum
dideklarasikan maka secara otomatis terbentuk pula objek dari enum tersebut.
Agar dapat lebih memahami maksud dari sintaks di atas, kami berikan contoh
penggunaannya pada Gambar 7.4.
Berdasarkan contoh pada Gambar 7.4, dapat diketahui bahwa:
• Keyword enum digunakan untuk mendeklarasikan enum.
• hariKantor adalah nama enum yang dideklarasikan.

124
• Senin, Selasa, hingga Sabtu adalah enumerator dari enum hariKantor.
• hariKerja adalah objek yang dibentuk dari enum hariKantor.
• Objek hariKerja hanya dapat menerima nilai Senin hingga Sabtu.

Gambar 7.4. Contoh pembentukan objek tipe enum pada saat pendeklarasian tipe
enum.

3. Typedef
C ++ memungkinkan Anda untuk mendefinisikan nama tipe data baru secara eksplisit
dengan menggunakan kata kunci typedef. Menggunakan typedef sebenarnya tidak membuat
kelas data baru, melainkan mendefinisikan nama untuk tipe yang sudah ada. Ini dapat
meningkatkan portabilitas. Dengan kata lain typedef adalah membuat alias dari tipe data
yang ada.
Adapun sintaks untuk membuat alias atau typedef adalah sebagai berikut:

typedef tipedata_yangada nama_baru;


Keterangan :
• typedef: Merupakan keyword yang digunakan untuk
mendeklarasikan typedef.
• tipedata_yangada: Diisi dengan tipe data yang sudah
ada atau dideklarasikan.
• nama_baru: Diisi dengan nama alias dari tipe data
Simak penjelasan
yang diinginkan. Pak Dosen di sini!

125
Berdasarkan sintaks di atas dapat kita ketahui bahwa untuk membuat alias atau
nama lain dari suatu tipe cukup dengan menggunakan keyword typedef lalu diikuti tipe data
yang ada yang ingin kita buatkan aliasnya. Selanjutnya diikuti dengan nama alias/nama baru
dari tepe data tersebut. Dengan begini kita dapat menggunakan alias tersebut untuk
mendeklarasikan variabel yang tipenya sama dengan tipe data yang dialiaskan. Agar dapat
lebih memahami penggunaan sintaks di atas, kami berikan contoh penggunaannya dalam
sebuah gambar ilustrasi. Perhatikan Gambar 7.5.

Gambar 7.5. Contoh pendeklarasian typedef.

Berdasarkan Gambar 7.5, dapat kita ketahui bahwa:


• Typedef adalah keyword yang digunakan untuk membuat alias dari tipe char di
depannya.
• Char adalah tipe data yang sudah ada (built-in) atau telah dibentuk sebelumnya
• Karakter adalah nama alias dari char.
Dari contoh di atas, amka dapat diketahui bahwa karakter telah dapat digunakan
untuk mendeklarasikan sebuah variabel. Variabel yang dideklarasikan menggunakan alias
karakter akan dapat menampung data bertipe char. Hal itu disebabkan karena karakter
adalah alias dari char.

126
Agar dapat lebih memahami enumerasi dan typedef, berikut kami berikan contoh
program sederhana.
1. Contoh 1 – Program menampilkan urutan presiden menggunakan enum.
#include <iostream>
using namespace std;

enum namaPresiden {
Soekarno,
Soeharto,
Habibie,
Simak penjelasan
Megawati, Pak Dosen di sini!
Gusdur,
SBY,
Jokowi
} presidenku;

int main()
{
namaPresiden presiden;
presiden = Habibie;
cout << "Presiden Indonesia ke-" << presiden + 1 <<endl;

presidenku = Jokowi;
cout << "Presiden Indonesia ke-" << presidenku + 1;
return 0;
}
Output:
Presiden Indonesia ke-3
Presiden Indonesia ke-7
Berdasarkan program di atas dapat kita ketahui bahwa:
• Dideklarasikan sebuah enumerasi bernama namaPresiden.

127
• Soekarano, Soeharto, Habibie, Megawati, Gusdur, SBY, dan Jokowi adalah nama
presiden yang menjadi enumerator pada enum namaPresiden.
• presidenku adalah nama objek yang dibentuk bersamaan pada saat
dideklarasikannya enum namaPresiden.
• Presiden adalah objek yang dibentuk dari enum namaPresiden secara terpisah diluar
pendeklarasian enum.
• Karena objek presiden dan presidenku dibentuk dari enum namaPresiden maka
objek tersebut hanya dapat diisi dengan nilai berupa enumerator dari enum
namaPresiden.

2. Contoh 2 – Program menggunakan nama alias tipe data.


#include <iostream>
using namespace std;

typedef int bbulat;


typedef float breal;

int main()
Simak penjelasan
{ Pak Dosen di sini!
bbulat usia = 27;
breal beratBadan = 62.5;

cout<<"Saya Andi"<<endl;
cout<<"Usia saya adalah "<< usia<< " tahun"<<endl;
cout<<"Berat badan saya adalah "<< beratBadan<< " Kg"<<endl;

return 0;
}
Output:
Saya Andi
Usia saya adalah 27 tahun
Berat badan saya adalah 62.5 Kg
Berdasarkan contoh pada program di atas, dapat diketahui bahwa:

128
• Bbulat adalah alias dari tipe data integer.
• Breal adalah alias dari tipe data bilangan real.
• Variabel usia dideklarasikan dengan menggunakan tipe data bbulat yang merupakan
alias dari tipe data integer. Sehingga, variabel usia akan dapat menampung tipe data
alias dari bbulat yaitu integer.
• Variabel beratbadan dideklarasikan dengan menggunakan tipe data breal yang
merupakan alias dari tipe data float. Sehingga, variabel beratBadan akan dapat
menampung tipe data alias dari bbulat yaitu integer.
• Variabel usia diisi dengan nilai 27 dan beratBadan diisi dengan nilai 62.5.

1. Berdasarkan contoh program 1 pada bagian B. darimana diperoleh angka 3 dan 7 dari
output program di atas? Lakukan analisis sederhana mengapa hal tersebut bisa terjadi!

2. Berdasarkan contoh program 1 pada bagian B. Berapa nilai enumerator yang


dideklarasikan pada enum namaPresiden? Lakukan analisis sederhana dan jelaskan
mengapa hal tersebut terjadi!

3. Berdasarkan contoh program 1 pada bagian jika objek/variabel presidenku diisi dengan
“Trump”, maka apa yang terjadi setelah program dieksekusi? Lakukan analisis mengapa
hal tersebut bisa terjadi!

129
4. Kerjakan program berikut!
#include <iostream>
using namespace std;

enum namaPresiden {
Soekarno = 2,
Soeharto,
Habibie = 5,
Megawati,
Gusdur,
SBY,
Jokowi
};

int main()
{
namaPresiden presiden;
presiden = Soeharto;
cout << presiden << endl;
return 0;
}
Output:

a. Berdasarkan program yang telah anda kerjakan di atas, berapa nilai dari setiap
enumerator setelah program dijalankan?

130
b. Berdasarkan program yang telah kalian kerjakan, jika enumerator Gusdur diisi dengan
nilai 9, berapa isi dari enumerator, SBY, Jokowi, dan Megawati? Analisis dan jelaskan
mengapa hal tersebut bisa terjadi.

5. Kerjakan program berikut!


#include <iostream>
using namespace std;

typedef int tipe_bBulat;

int main()
{
tipe_bBulat panjang, lebar, tinggi, volume;
panjang = 5;
lebar = 10;
tinggi = 2;
volume = panjang * lebar * tinggi;

cout <<"Volume persegi adalah " << volume <<" Cm kubik" <<endl;
return 0;
}
Output:

a. Berdasarkan program yang telah anda kerjakan di atas, ubahlah tipe data variabel
panjang, lebar, tinggi, volume menjadi tipe float yang dialiaskan!

131
1. Buatlah sebuah program untuk menampilkan biodata seorang anggota TNI AD dimana
salah satu data yang ditampilkan adalah pangkatnya. Buat enumerasi pangkat TNI AD
dari terendah hingga tertinggi. Pada program tersebut terapkan pula penggunaan
typedef pada variabel yang digunakan.

132
133
134
BAB VIII
STRING

1. Pengantar String
String sebagai tipe data bentukan adalah representasi data berupa
kumpulan/deretan karakter. Adapun contoh dari deretan karakter yang dimaksud adalah
teks seperti “C++“, “Programmer“, “pemula“, dan lain sebagainya. Pada bahasa
pemrograman C++ terdapat dua cara yang bisa kita lakukan untuk merepresentasikan dan
menyimpan deretan karakter tersebut, yaitu:
• String gaya bahasa C (C-strings /C-style Strings)
• String gaya bahasa C++ (String sebagai objek dari class string)

2. String Gaya Bahasa C


Dalam pemrograman C, string adalah sekumpulan karakter yang disatukan dalam
sebuah array. Hal tersebut berarti bahwa cara tersebut juga dapat dilakukan dalam bahasa
pemrograman C++. Dalam bahasa C++ cara ini dikenal dengan istilah C-strings atau C-style.
Untuk mendefenisikan sebuah string menggunakan gaya C-strings, maka kita harus
mendeklarasikan sebuah aray sebagai wadah untuk menampung string (deretan karakter).
Perhatikan sintaks pendeklarasian array untuk menampung string berikut ini:

char nama_array[ ]= "teks"


Keterangan:
• char: adalah keyword untuk tipe data karakter.
• nama_array[ ]: diisi dengan nama array yang diinginkan
diikuti dengan kurung siku.
• “teks”: diisi dengan teks yang akan dimasukkan kedalam
array yang diapit dengan tanda petik dua.
• “[ ]”: Dikosongkan karena ukuran array akan
menyesuaikan secara otomatasi berdasarkan panjang
karakter pada string.
Simak penjelasan
Pak Dosen di sini!

135
Agar dapat lebih memahami penggunaan sintaks di atas, berikut kami berikan
contoh penggunaannya dalam gambar ilustrasi. Perhatikan Gambar 8.1.

Gambar 8.1. Array dengan gaya C-Strings.

Berdasarkan contoh pada Gambar 8.1 dapat diketahui bahwa:


• Dideklarasikan sebuah array bertipe char dengan nama array namaPanggilan.
• “Budi” adalah string yang akan disimpan pada array namaPanggilan.
• Array namaPanggilan menampung karakter 'B'-'u'-'d'-'i'.
• Pada C++, nilai null atau \0 akan ditambahkan secara otomatis di akhir array.
Kondisi array setelah diisi dengan teks “Budi” dapat diilustrasikan seperti Gambar
8.2. Sesuai ilustrasi Gambar 8.2, kita dapat mengetahui bahwa teks yang diinputkan, dalam
hal ini “Budi“, akan disimpan perkarakter pada array. Setiap indeks atau ruang pada array
akan menyimpan sebuah karakter. Lalu setelah karakter terakhir, secara otomatis akan
ditambahkan karakter null “\0“. Kumpulan karakter dalam array yang membentuk teks inilah
yang dikenal dengan istilah string gaya C (C-style) atau C-strings.
Jika menggunakan sintaks di atas, maka ukuran array akan menyesuaikan dengan
banyaknya teks. Namun, juga terdapat cara lain seperti pada contoh berikut:

char strng[5] = "Budi";


char strng[] = {'B','u','d','i','\0'};
char strng[i] = {'B','u','d','i','\0'};

136
Gambar 8.2. Ilustrasi string dalam array.

3. String Gaya Bahasa C++


Library standar C++ menyediakan tipe class string. Dengan menggunakan cara ini,
kita tidak perlu lagi membuat array bertipe char untuk menampung kumpulan karakter.
Cukup dengan membentuk objek dari class string maka sebuah objek atau variabel dapat
menampung deretan karakter.
Objek string dibentuk dari class tring.Objek string tidak memiliki panjang yang tetap
seperti ketika menggunakan gaya C-string. Objek yang dibentuk dapat menyesuaikan
ukurannya sesuai panjang string yang disimpan.
a. Pembentukan objek string
Adapun cara mendefenisikan mendeklarasiakan objek atau variabel bertipe string
dapat dilihat pada sintaks berikut.

string nama_objek;

Keterangan:
• string: Merupakan keyword class string.
• nama_objek: Diisi dengan nama objek/variabel yang akan digunakan untuk
menampung teks/string.

137
Agar dapat lebih mudah memahami sintaks di atas, berikut contoh penerapan sintaks
di atas kami sajikan dalam Gambar 8.3.

Gambar 8.3. Contoh pembentukan objek class string.

Berdasarkan contoh pada Gambar 8.3, dapat diketahui bahwa:


• Dibentuk sebuah objek bernama namaPanggilan dari class string.
• Karena objek namaPanggilan dibentuk dari class string, maka objek namaPanggilan
dapat menampung teks serta digunakan untuk mengakses fungsi yang ada pada class
string.
b. Menginisialisasikan nilai ke dalam objek
Terdapat 2 cara untuk menginisialisasikan string ke dalam objek yang telah dibentuk.
Cara 1, penginisialisasian pada saat pendeklarasian. Perhatikan sintaks berikut:

string nama_objek = "teks";


Keterangan:
• string: Merupakan keyword class string.
• nama_objek: Diisi dengan nama objek yang diinginkan. Objek dapat juga disebut
sebagai variabel. Objek ini akan meyimpan string.
• “teks”: Diisi dengan teks atau string yang akan disimpan.

138
Adapun contoh penggunaan sintaks di atas dapat dilihat pada Gambar 8.4.

Gambar 8.4. Contoh pembentukan objek class string sekaligus penginisialisasian nilai.

Dari sintaks dan contoh di atas, kita dapat mengetahui bahwa:


• Telah dibentuk sebuah objek bernama namaPanggilan.
• namaPanggilan dibentuk dari class string.
• namaPanggilan diinisialisasikan dengan nilai string “Becce“.
• String Becce diapit oleh tanda petik dua.
• Pendeklarasian dan penginilisasian nilai dilakukan pada satu baris perintah.
Selain cara pertama di atas terdapat dara lain untuk menginisialisasikan sebuah
nilai. Cara 2, penginisialisasian setelah pendeklarasian. Perhatikan sintaks berikut.

nama_objek = "teks";
Keterangan:
• nama_objek: diisi dengan nama objek/variabel yang akan digunakan untuk
menampung teks/string.
• “teks”: adalah string atau teks yang akan disimpan ke dalam objek bernama
nama_objek yang telah dideklarasikan.
Agar dapat lebih mudah memahami sintaks di atas, berikut kami berikan contoh
penggunaannya dalam gambar ilustrasi. Perhatikan Gambar 8.5.
Berdsaarkan sintaks dan contoh pada Gambar 8.5, kita telah mengetahui bahwa :
• Pendeklarasian dan penginisialisasian nilai dilakukan secara terpisah.

139
• Sebuah objek dapat digunakan hanya jika sebelumnya telah dideklarasikan.
• namaPanggilan adalah objek yang telah dideklarasikan sebelumnya.
• “Becce” adalah string atau teks yang akan disimpan pada objek namaPanggilan.

Gambar 8.5. Contoh penginisialisasian nilai objek class string.

c. Menggunakan fungsi class string


Karena objek string dibentuk dari class string, maka objek tersebut dapat digunakan
untuk mengakses fungsi seperti dalam class string . Berikut beberapa contoh fungsi yang ada
pada class string:
• size()
Mengembalikan nilai panjang string dalam satuan bytes.
• length()
Mengembalikan nilai panjang string dalam satuan bytes.
• at(i)
Mengembalikan nilai berupa karakter yang berada pada indeks ke i.
• back()
Mengembalikan nilai berupa karakter terakhir dari string.
• front()
Mengembalikan nilai berupa karakter pertama dari string.
Selain beberapa fungsi di atas, masih banyak fungsi lainnya yang dapat digunakan
pada class string. Salah satu referensi mengenai fungsi dalam class string dapat anda
temukan pada tautan http://www.cplusplus.com/reference/string/string/.

140
Agar dapat lebih memahami penggunaan string, berikut kami berikan contoh
program sederhana.
1. Contoh 1 – Program penggunaan array char untuk menyimpan nama panggilan.
#include <iostream>
using namespace std;

int main()
{
char namaPanggilan[50];

Simak penjelasan
cout << "Masukkan nama panggilan anda: "; Pak Dosen di sini!
cin >> namaPanggilan;
cout << "Anda memasukkan nama: " << namaPanggilan << endl;

return 0;
}
Output:
Masukkan nama panggilan anda: Andi
Anda memasukkan nama: Andi
Program di atas adalah program untuk menginput nama melalui keyboard lalu
kemudian menampilkannya sebagai output. Berdasarkan contoh program di atas, maka
dapat diketahui bahwa:
• Sebuah array bernama namaPanggilan dideklarasikan
• Array namaPanggilan bertipe char dengan panjang array 50. Artinya namaPanggilan
dapat menampung 50 data bertipe char.
• cout << "Masukkan nama panggilan anda: "; menampilkan string "Masukkan nama
panggilan anda: "
• Cin >> namaPanggilan berarti bahwa karakter yang diinput dari keyboard akan
disimpan pada array namaPanggilan.
• cout << "Anda memasukkan nama: " << namaPanggilan << endl; menampilkan
string “Anda memasukkan nama:” dan menampilkan isi variabel namaPanggilan.

141
2. Contoh 2 – Program penggunaan array char dan fungsi get() untuk menyimpan data
nama lengkap
#include <iostream>
using namespace std;

int main()
{
char namaLengkap[50];
cout << "Masukkan nama lengkap anda: ";
Simak penjelasan
cin.get(namaLengkap, 50); Pak Dosen di sini!

cout << "Anda memasukkan: " << namaLengkap << endl;


return 0;
}
Output:
Masukkan nama lengkap anda: Andi Baso Kaswar
Anda memasukkan: Andi Baso Kaswar
Program di atas merupakan program untuk menampilkan nama sebagai output,
dimana nama lengkap diinput melalui keyboard. Dari contoh program di atas maka dapat
diketahui bahwa:
• Namalengkap adalah array yang dapat menampung data bertipe char sebanyak 50
karakter.
• Deretan karakter yang diinput melalui keyboard akan tersimpan pada array
namaLengkap.

3. Contoh 3 – Program penggunaan class string dan fungsinya.


#include <iostream>
using namespace std;

int main()
{
string namaPanggilan;
namaPanggilan="Becce";

142
cout<<"Nama panggilan saya adalah "<<namaPanggilan<<endl;
cout<<"Panjang string nama saya adalah "<<namaPanggilan.length()<<endl;
cout<<"Karakter kedua nama saya adalah "<<namaPanggilan.at(1)<<endl;
}
Output:
Nama panggilan saya adalah Becce
Panjang string nama saya adalah 5
Karakter kedua nama saya adalah e
Berdasarkan program di atas maka dapat diketahui bahwa:
• namaPanggilan adalah objek yang dibentuk dari class
string.
• namaPanggilan menampung nilai string “Becce”
• fungsi namaPanggilan.length() berarti bahwa
mendapatkan panjang karakter string yang tersimpan
pada objek namaPanggilan.
• namaPanggilan.at(1) berarti bahwa mendapatkan
Simak penjelasan
karakter indeks 1 atau karakter kedua dari nilai string Pak Dosen di sini!
yang tersimpan pada objek namaPanggilan.

1. Berdasarkan contoh program 1 pada bagian B. Jalankan program di atas dan input nama
panggilanmu. Tuliskan outputnya dan gambarkan bagaimana posisi karakter dari nama
panggilanmu di dalam array namaPanggilan!

2. Berdasarkan contoh program 2 pada bagian B, cobalah masukkan nama lengkapmu dari
keyboard! Apa yang tampil pada output? Mengapa hal tersebut terjadi?

143
3. Berdasarkan contoh program 2 pada bagian B. Apa fungsi dari pemanggilan fungsi
cin.get()? Tuliskan sintaksnya!

4. Berdasarkan contoh program 3 pada bagian B. Ganti string “Becce” manjadi nama
panggilanmu. Kemudian jalankan program tersebut. Tuliskan output yang kamu peroleh
dan jelaskan analisis kenapa hal tersebut bisa terjadi!

5. Kerjakan program berikut!


#include<iostream>
#include<string>
using namespace std;
int main()
{
string str1 = "Teknik Komputer FT UNM";
string str2 = "Teknik Komputer Jaya";

char ch[80];
str1.copy(ch,6,0);

cout << "Karakter array baru yang di copy adalah: ";


cout << ch << endl << endl;

cout << "String pertama sebelum ditukar adalah: ";


cout << str1 << endl;

144
cout << "String kedua sebelum ditukar adalah: ";
cout << str2 << endl;

str1.swap(str2);

cout << "String pertama setelah ditukar adalah: ";


cout << str1 << endl;
cout << "String kedua sebelum ditukar adalah: ";
cout << str2 << endl;

return 0;

}
Output:

a. Berdasarkan program di atas, apa maksud dari perintah str1.copy(ch,6,0); ? Jelaskan


hasil analisismu!

b. Berdasarkan program di atas, apa maksud dari perintah str1.swap(str2);? Jelaskan


hasil analisismu!

145
1. Buatlah sebuah program untuk menampilkan data 2 orang temanmu berupa:
• Nama Lengkap
• Alamat Rumah
• Hobby
2. Berdasarkan program yang anda buat pada soal no.1 di atas, tambahkan perintah
untuk:
• Menampilkan panjang karakter setiap nama
• Menampilkan karakter ke 2 dan ke 4 setiap nama
• Menampilkan karakter tarakhir dari setiap nama

146
147
148
149
150
BAB IX
PERCABANGAN

1. Percabangan
Sebelum masuk ke sintaks penggunaan blok percabangan if terlebih dahulu kita
harus memahami apa itu percabangan. Istilah percabangan juga dikenal dengan istilah
penyeleksian/seleksi kondisi, control flow, decision, struktur kondisi, struktur if.
Sebagai contoh, jika dianalogikan, jika saya hanya memiliki uang 10.000 rupiah, saya
akan membeli nasi goreng. Namun, jika saya memiliki uang 20.000 saya akan membeli Coto
Makassar. Saat ini saya memiliki uang 20.000 rupiah. Jika melihat pernyataan sebelumnya,
maka dapat diketahui bahwa saya akan membeli coto Makassar.
Dari analogi yang diberikan di atas, kita dapat menyimpulkan bahwa percabangan
adalah penentuan pengeksekusian statement berdasarkan kondisi tertentu.
Secara umum terdapat 2 jenis percabangan, yaitu:
• If
• Switch case

2. Percabangan If
Blok percabangan “if” adalah salah satu bentuk blok pernyataan penyeleksian yang
memungkinkan kita untuk memanipulasi alur pengeksekusian perintah pada program
berdasarkan conditional expression tertentu. Dengan adanya blok percabangan ini, kita dapat
membuat program berjalan secara fleksibel sesuai keadaan dari pengguna dan mesin.
Terdapat beberapa jenis bentuk dari blok percabangan if. Kita akan mambahasnya satu
persatu.
a. If
Pernyataan if adalah bentuk pernyataan percabangan
yang paling sederhana. Bentuk percabangan ini digunakan
untuk memutuskan apakah suatu pernyataan atau blok
pernyataan tertentu akan dieksekusi atau tidak, jika kondisi
tertentu benar maka blok pernyataan dieksekusi, namun jika
Simak penjelasan
salah maka tidak akan dieksekusi. if hanya memiliki 1 blok Pak Dosen di sini!
pilihan yang akan dieksekusi jika kondisi bernilai benar.

151
Adapun sintaks if paling sederhan adalah sebagai berikut:

if (kondisi) {
//pernyataan yang akan dieksekusi
//jika kondisi bernilai benar
}
Keterangan:
• if: Merupakan keyword pendeklarasian struktur percabangan if.
• (kondisi): Diisi dengan kondisi yang akan diuji sebagai syarat apakah perintah
didalam blok if dieksekusi atau tidak. Jika kondisi bernilai benar, maka perintah
dalam blok if akan dieksekusi.
• “{ }”: Merupakan penanda area blok if.
Sintaks adalah aturan penulisan yang digunakan untuk membuat suatu ekspresi
tertentu. Pada sintaks di atas kita telah melihat salah satu bentuk sintaks dari penggunaan
seleksi kondisi if. Pada bagian kondisi akan diisi dengan ekspresi boolean yang menghasilkan
nilai true atau false. Jika kondisi bernilai true maka blok perintah if akan dieksekusi. Namun,
jika bernilai false, maka blok perintah tidak akan dieksekusi (dilompati).
Agar dapat lebih memahami sintaks di atas berikut kami berikan contoh gambar
ilustrasi. Perhatikan Gambar 9.1.

Gambar 9.1. Contoh if sederhana.

152
Berdasarkan contoh pada Gambar 9.1. maka dapat diketahui bahwa:
• if adalah keyword yang digunakan untuk memulai struktur percabangan.
• Bagian “( )” marupakan area pengujian kondisi yang akan menentukan apakah
badan if “{ }” akan dieksekusi atau tidak.
• x<y adalah kondisi yang akan diuji. Jika bernilai true maka badan if dieksekusi,
namun jika tidak maka badan if akan dilompati (tidak dieksekusi).
Pada contoh di atas, string “x lebih kecil dari y” akan ditampilkan jika x<y bernilai
benar. x<y akan bernilai benar jika x menampung nilai yang lebih kecil daripada y.
b. if else
Pada pernyataan if, kita hanya diberi sebuah pilihan atau pernyataan yang dieksekusi
jika kondisi bernilai benar. Namun, ada suatu kondisi tertentu dimana kita membutuhkan
pengeksekusian suatu perintah khusus jika kondisi bernilai salah.
Pernyataan if-else adalah bentuk pernyataan percabangan yang memiliki dua blok
pilihan. Blok pilihan pertama akan dieksekusi jika kondisi benar dan blok pilihan kedua akan
dieksekusi jika kondisi bernilai salah.
Adapun sintaks untuk membentuk struktur if else adalah sebagai berikut:

if (kondisi) {
//pernyataan yang akan dieksekusi
//jika kondisi bernilai benar
} else {
//pernyataan yang akan dieksekusi
//jika kondisi bernilai salah
}
Keterangan:
• if (kondisi) { }: Keyword if adalah keyword yang digunakan
untuk mendeklarasikan struktur if. Kondisi diisi dengan
statemen yang akan diuji sebagai syarat apakah perintah
didalam blok if dieksekusi atau tidak. Jika kondisi bernilai
true, maka perintah dalam blok If “{ }” akan dieksekusi.
• else { }: Keyword else digunakan untuk mengalihkan
pengeksekusian program ke dalam blok “{ }” else jika hasil Simak penjelasan
Pak Dosen di sini!
pengujian kondisi bernilai false.

153
Pada sintak di atas dapat kita lihat dapat kita lihat bahwa terdapat penambahan
keyword else dan badannya. Hal tersebut berarti bahwa jika kondisi terpenuhi, maka yang
akan dieksekusi adalah bagian badan dari kondisi. Namun, jika bernilai false, maka yang akan
diekse kusi adalah bagian badan dari else.
Agar dapat lebih mudah memahami sintaks di atas berikut kami berikan contoh
penggunaannya dalam gambar ilustrasi. Perhatikan Gambar 9.2.

Gambar 9.2. Contoh if else.

Berdasarkan contoh pada Gambar 9.2, maka dapat diketahui bahwa:


• if adalah keyword pendeklarasian struktur seleksi kondisi.
• ( 5<10) adalah kondisi yang akan diuji untuk mendapatkan kondisi yang bernilai true
atau false. 5<10 adalah benar maka kondisi akan bernilai true.
• Area { } pertama adalah area yang akan dieksekusi jika kondisi bernilai true.
• else adalah keyword penanda bahwa jika kondisi bernilai false ada bagian lain yang
akan dieksekusi.
• Area { } kedua setelah else adalah area yang dieksekusi jika kondisi bernilai false.
Perintah cout<<”Benar”<<endl; akan dieksekusi jika kondisi 5<10 bernilai benar.
Namun jika salah maka yang dieksekusi adalah perintah cout<<”Salah”<<endl;. Pada gambar
di atas, kondisi bernilai benar (true).
c. if else if
Percabangan jenis ini merupakan perluasan dari struktur if else yang memiliki dua
kondisi atau lebih, yaitu dengan menyisipkan 1 atau lebih kondisi ke dalamnya. Percabangan

154
if-else if ini penting untuk diketahui sebab pada kondisi
tertentu kita memerlukan pengeksekusian suatu perintah
khusus dari beberapa perintah khusus yang ada.
Pada sintaks if-else if berikut kita dapat melihat bahwa
terdapat lebih dari satu kondisi di dalam rangkaian blok
percabangan. Proses pengujian kondisinya dimulai dari kondisi
paling atas ke bawah. Simak penjelasan
Adapun sintaks unyuk membentuk struktur if else Pak Dosen di sini!

adalah sebagai berikut:

if (kondisi1) {
//pernyataan yang akan dieksekusi
//jika kondisi1 bernilai benar
} else if (kondisi2) {
//pernyataan yang akan dieksekusi
//jika kondisi1 salah dan kondisi2 benar
} else {
//pernyataan yang akan dieksekusi
//jika kondisi1 dan kondisi 2 bernilai salah
}
Keterangan:
• if (kondisi1) { }: Keyword if adalah keyword yang digunakan untuk mendeklarasikan
struktur if. Kondisi diisi dengan statemen yang akan diuji sebagai syarat apakah perintah
didalam blok if dieksekusi atau tidak. Jika kondisi bernilai benar, maka perintah dalam
blok If “{ }” akan dieksekusi. Jika bernilai salah maka akan dilanjutkan dengan mengecek
kondisi2 pada bagian else if.
• else if (kondisi2) { }: Merupakan bagian pengujian kondisi lainnya yang dilakukan jika
kondisi1 bernilai false. Jika kondisi2 bernilai true maka perintah yang terdapat pada blok
else if “{ }” dieksekusi. Setelah itu proses pengeksekusian keluar dari struktur if.
• Else { }: Keyword else digunakan untuk mengalihkan pengeksekusian program ke dalam
blok “{ }” else jika hasil pengujian kondisi1 dan kondisi2 bernilai false.
Agar dapat lebih mudah memahami penggunaan sontaks di atas, berikut kemi
berikan contoh penggunaannya dalam bentuk gambar ilustrasi. Perhatikan Gambar 9.3.

155
Gambar 9.3. Contoh if else if.

Berdasarkan contoh pada gambar 9.3. maka dapat diketahui bahwa:


• if adalah keyword pendeklarasian struktur if.
• (x>0) pada bagian if adalah kondisi pertama yang akan diuji.
• Area { } pertama setelah if adalah bagian yang akan dieksekusi jika kondisi x>0
bernilai benar.
• else if adalah keyword yang digunakan untuk menguji kondisi lain jika kondisi pada
bagian if salah.
• (x<0) pada bagian else if adalah kondisi kedua yang akan diuji jika kondisi pertama
bernilai salah.
• Area { } kedua setelah else if adalah bagian yang akan dieksekusi jika kondisi pertama
salah dan kondisi kedua benar.
• else adalah keyword yang digunakan untuk menambahkan area { } ketiga.
• Area { } ketiga adalah area yang akan dieksekusi jika kondisi pertama dan kedua
bernilai salah.
Pada contoh program di atas kondisi1 adalah x>0. Jika nilai x lebih besar dari 0 maka
kondisi akan bernilai true. Jika bernilai true maka perintah cout<<”x lebih besar dari
0”<<endl; akan dieksekusi. Namun jika salah maka akan dilanjutkan dengan mengecek
kondisi2. Jika kondisi2 dalam hal ini x<0 bernilai benar maka perintah cout<<”x lebih kecil
dari 0”<<endl; dieksekusi. Namun jika salah maka perintah pada bagian else akan langsung
dieksekusi.

156
Dari contoh di atas kita juga dapat mengetahui perbedaan else dengan else if. Else
tidak memiliki pengujian kondisi sedangkan else if memiliki pengujian kondisi.

3. Percabangan Switch Case


Selain menggunakan struktur percabangan if, kita juga dapat menggunakan struktur
percabangan/seleksi kondisi switch. Switch adalah bentuk percabangan yang lebih mengarah
kepada pemilihan kondisi.
Adapun sintaks struktur switch adalah sebagai berikut:

Switch (variabel) {
case nilai_konstan1:
perintah_yang_akan_dieksekusi;
break;
case nilai_konstan2:
perintah_yang_akan_dieksekusi;
break;

case nilai_konstanN:
perintah_yang_akan_dieksekusi;
break;
default:
Perintah_perintah-alternatif;
}
Keterangan:
• Switch: Merupakan keyword yang digunakan untuk
mendeklarasikan struktur switch.
• Variabel: Diisi dengan nilai atau variabel yang berisi
suatu nilai. Variabel ini nantinya akan dijadikan
pembanding dengan nilai konstanta case yang ada.
Jika sama, maka perintah pada case tersebut akan
dieksekusi.
Simak penjelasan
• Case: Digunakan untuk membandingkan nilai variabel
Pak Dosen di sini!
dengan nilai_konstan.

157
• break: Adalah perintah yang digunakan untuk keluar dari proses pengeksekusian
program struktur switch.
• Default: Merupakan perintah yang akan dieksekusi jika tidak ada satupun case yang
sama denga nisi variabel.
Agar dapat lebih memahami sintaks di atas, berikut kami berikan contoh berupa
gambar ilustrasi penggunaannya. Perhatikan Gambar 9.4.

Gambar 9.4. Contoh switch.

Dari Gambar 9.4. dapat diketahui bahwa:


• Switch adalah keyword yang digunakan untuk mendeklarasikan struktur switch
• noHari adalah variabel yang isinya akan dibandingkan dengan nilai konstan pada
setiap case yang ada.
• 1, 2, 3, dan 4 adalah nilai yang akan dibandingkan denga nisi dari variabel noHari.
Misalnya, jika isi variabel noHari adalah 4 maka perintah yang akan dieksekusi
adalah perintah yang ada pada case 4 yaitu cout<<”Rabu”<<endl;
• break adalah perintah yang digunakan untuk keluar dari struktur switch. Break
akan dieksekusi setelah perintah pada case dieksekusi.
• default adalah bagian yang akan dieksekusi jika isi dari variabel noHari tidak
satupun yang sama dengan nilai konstan dari setiap case yang ada.
Jadi pada contoh di atas, jika noHari berisi nilai 2 maka perintah pada case 2 yang
akan dieksekusi, setelah itu. Setelah case 2 dieksekusi maka dilanjutkan dengan
mengeksekusi perintah break;. Hal itu bertujuan agar proses pengeksekusian keluar dari

158
struktur switch sehingga compiler tidak mengeksekusi perintah dibawah case yang
dieksekusi saat ini.
Jika noHari berisi nilai 5, maka yang akan dieksekusi adalah perintah pada bagian
default. Hal tersebut terjadi karena tidak ada satupun case yang memiliki nilai konstan 5.

Agar dapat lebih memahami penggunaan seleksi kondisi, berikut kami berikan
contoh program sederhana.
1. Contoh 1 – Program penerapan if sederhana satu kondisi.
#include<iostream>
using namespace std;

int main()
{
int x = 10;
int y = 10;
Simak penjelasan
Pak Dosen di sini!
if (x >= y)
{
cout<<"x lebih besar atau sama dengan y."<<endl;
}

cout<<"Nilai x : "<< x<<endl;


cout<<"Nilai y : "<< y<<endl;
}
Output:
x lebih besar atau sama dengan y.
Nilai x : 10
Nilai y : 10
Program di atas merupakan program sederhana penerapan percabangan if untuk
menampilkan string “x lebih besar atau sama dengan y” jika kondisi terpenuhi. Berdasarkan
contoh program di atas dapat diketahui bahwa:

159
• Terdapat dua variabel yang dideklarasikan yaitu variabel x dan y yang bertipe
integer.
• Variabel x dan y berisi nilai 10.
• If adalah keyword pendeklarasian struktur if.
• (x>= y) adalah kondisi yang akan diuji pada struktur if. Pengujian kondisi ini akan
memberikan nilai true jika nilai x lebih besar atau sama dengan y dan false jika
nilai x lebih kecil dari y.
• { cout<<"x lebih besar atau sama dengan y."<<endl; } adalah area dari blok if yang
akan dieksekusi jika kondisi di atas bernilai true.
• Jika kondisi bernilai false area blok if tidak akan dieksekusi dan proses
pengeksekusian melompat keluar dari struktur if di atas.
Berdasarkan program di atas, variabel x dan y berisi 10. Kondisi tersebut
mengakibatkan ekspresi kondisi x>= y bernilai benar. Karena ekspresi kondisi yang diuji
bernilai benar, maka blok perintah di dalam area “{ }” if dieksekusi. Setelah dieksekusi,
proses pengeksekusian dilanjutkan ke baris berikutnya di luar struktur if.

2. Contoh 2 – Program penerapan if-else


#include<iostream>
using namespace std;

int main() {
int x = 7;
int y = 10;

Simak penjelasan
if (x >= y){ Pak Dosen di sini!
cout<<"x lebih besar atau sama dengan y."<<endl;
} else {
cout<<"x lebih kecil daripada y."<<endl;
}

cout<<"Nilai x : "<< x<<endl;


cout<<"Nilai y : "<< y<<endl;
}

160
Output:
x lebih kecil daripada y.
Nilai x : 7
Nilai y : 10
Program di atas merupakan program sederhana penerapan percabangan if else
untuk menampilkan string <<"x lebih besar atau sama dengan y." Jika kondisi bernilai true
dan menampilkan string <<"x lebih kecil daripada y." jika kondisi bernilai false. Berdasarkan
contoh program di atas dapat diketahui bahwa:
• Terdapat dua variabel yang dideklarasikan yaitu variabel x dan y yang keduanya
bertipe integer
• Nilai variabel x adalah 7 dan y adalah 10.
• (x >= y) adalah kondisi yang akan diuji.
• { cout<<"x lebih besar atau sama dengan y."<<endl; } adalah area blok perintah if.
• { cout<<"x lebih kecil daripada y."<<endl; } adalah blok area dari else.
• Else adalah keyword yang digunakan untuk mengalihkan proses pengeksekusian dari
area blok perintah if ke area blok perintah else jika kondisi bernilai salah.
• Jika kondisi bernilai benar maka blok perintah if akan dieksekusi. Namun jika kondisi
bernilai false maka blok perintah di area else yang akan dieksekusi.
Pada program di atas karena x = 7 dan y = 10, maka ekspresi kondisi x>=y bernilai
salah maka perintah pada blok else dieksekusi. Setelah perintah pada blok else di eksekusi,
proses pengeksekusian keluar dari struktur if dan dilanjutkan ke baris perintah setelah tutup
kurung kurawal terakhir dari struktur if tersebut. Output yang dihasilkan seperti yang
ditunjukkan di atas.

3. Contoh 3 – Program penerapan if-else if


#include<iostream>
using namespace std;

int main() {
unsigned short int usia = 5;

if (usia <= 1){


cout<<"Usia bayi (0-1 tahun)"<<endl;

161
} else if (usia<=10) {
cout<<"Usia anak-anak (2-10 tahun)"<<endl;
} else if (usia<=19) {
cout<<"Usia remaja (11-19 tahun)"<<endl;
} else if (usia<=60) {
cout<<"Usia dewasa (20-60 tahun)"<<endl;
} else {
Simak penjelasan
cout<<"Usia tua ( lebih dari 60 tahun)"<<endl; Pak Dosen di sini!
}

cout<<"Usia yang dimasukkan adalah "<<usia<<" tahun"<<endl;


}
Output:
Usia anak-anak (2-10 tahun)
Usia yang dimasukkan adalah 5 tahun
Program di atas merupakan program sederhana penerapan percabangan if-else if
untuk menampilkan keterangan tingkatan usia berdasarkan nilai usia yang dimasukkan ke
dalam variabel usia. Berdasarkan contoh program di atas dapat diketahui bahwa:
• Terdapat sebuah variabel yang dideklarasikan yaitu variabel usia yeng bertipe
integer dengan modifier unsigned dan short. Hal ini berarti bahwa variabel usia
hanya dapat diisi dengan nilai positif dan dengan menggunakan ukuran memory
terkecil dari tipe data integer.
• Nilai variabel x adalah 5.
• Terdapat 4 kondisi pada struktur if else if yang dibentuk.
• Proses pengeksekusian dimulai dari bagian if (usia <= 1). Jika ekspresi kondisi ini
bernilai benar maka blok perintah { cout<<"Usia bayi (0-1 tahun)"<<endl; }
dieksekusi. Namun, jika tidak maka blok perintah tersebut tidak akan dieksekusi dan
proses pengujian berlanjut ke else if berikutnya.
• else if (usia<=10) akan diuji jika ekspresi kondisi if (usia <= 1) bernilai false. Jika
ekspresi kondisi usia<=10 bernilai true, maka blok perintah { cout<<"Usia anak-anak
(2-10 tahun)"<<endl;} dieksekusi. Namun, jika false maka proses pengujian
dilanjutkan ke ekpresi kondisi pada bagian else if berikutnya.

162
• else if (usia<=19) akan diuji jika ekspresi kondisi if (usia <= 1) dan else if (usia<=10)
bernilai false. Jika ekspresi kondisi usia<=19 bernilai true, maka blok perintah
{cout<<"Usia remaja (11-19 tahun)"<<endl;} dieksekusi. Namun, jika false maka
proses pengujian dilanjutkan ke ekpresi kondisi pada bagian else if berikutnya.
• else if (usia<=60) akan diuji jika ekspresi kondisi if (usia <= 1), else if (usia<=10), dan
else if (usia<=19) bernilai false. Jika ekspresi kondisi usia<=60 bernilai true, maka
blok perintah { cout<<"Usia dewasa (20-60 tahun)"<<endl; } dieksekusi. Namun, jika
false maka proses pengujian dilanjutkan ke ekpresi kondisi pada bagian else.
• Bagian else akan langsung dieksekusi jika semua ekspresi kondisi sebelumnya
mengembalikan nilai false.
• Setelah mengeksekusi salah satu perintah pada struktur if, proses pengeksekusian
langsung berlanjut ke baris perintah berikutnya di bawah struktur if yaitu
cout<<"Usia yang dimasukkan adalah "<<usia<<" tahun"<<endl;
Pada program di atas karena usia = 5, maka ekspresi kondisi usia <= 1 bernilai salah
sehingga pengujian dilanjutkan ke ekpresi kondisi kedua yaitu else if (usia<=10). Karena else
if (usia<=10) bernilai true maka perintah { cout<<"Usia anak-anak (2-10 tahun)"<<endl;}
dieksekusi. Setelah itu proses pengeksekusian keluar dari struktur if dan dilanjutkan dengan
pengeksekusian baris perintah di bawahnya. Output yang dihasilkan seperti yang ditunjukkan
di atas.

4. Contoh 4 – Program penerapan switch case.


#include <iostream>
using namespace std;
int main() {
char nilaiMK;
cout << "Input nilai Mata Kuliah Anda: (A,B,C,D,E)"<<endl;
cin >> nilaiMK;
switch (nilaiMK) {
case 'A':
cout <<"Nilai anda adalah A"<<endl;
break;
case 'B':
cout <<"Nilai anda adalah B"<<endl;

163
break;
case 'C':
cout <<"Nilai anda adalah C"<<endl;
break;
case 'D':
cout <<"Nilai anda adalah D"<<endl;
break;
Simak penjelasan
case 'E': Pak Dosen di sini!
cout <<"Nilai anda adalah E"<<endl;
break;
default:
cout << "Anda keliru menginputkan nilai!";
break;
}
return 0;
}
Output:
Input nilai Mata Kuliah Anda: (A,B,C,D,E)
C
Nilai anda adalah C
Program di atas merupakan program sederhana penerapan seleksi kondisi switch
untuk menampilkan nilai mata kuliah yang diinput oleh user. Berdasarkan contoh program
di atas dapat diketahui bahwa:
• Terdapat sebuah variabel bernama nilaiMK yang akan digunakan untuk
menampung nilai yang diinput dari keyboard
• Variabel nilaiMK bertipe char adalah variabel yang akan dijadikan pembanding
terhadap nilai konstan setiap case.
• cin >> nilaiMK; adalah perintah untuk menerima inputan dari keyboard. Setelah
menekan enter setelah menginputkan karakter yang diinginkan maka karakter akan
tersimpan ke variabel nilaiMK.
• switch (nilaiMK) menjadi tanda bahwa nilai dari variabel nilaiMK akan mendaji
pembanding terhadap nilai konstan setiap case yang ada..

164
• case 'A': cout <<"Nilai anda adalah A"<<endl; break; berarti bahwa jika nilai
variabel nilaiMK adalah ‘A’ maka perintah cout <<"Nilai anda adalah A"<<endl; akan
dieksekusi. Setelah itu akan perintah break; akan dieksekusi yang mengakibatkan
proses pengeksekusian akan keluar dari struktur switch. Baris perintah ini akan
dieksekusi jika nilai dari variabel nilaiMK berisi karakter ‘A’.
• default: cout << "Anda keliru menginputkan nilai!"; break; adalah perintah yang
akan dieksekusi jika tidak ada case yang sama dengan isi nilai dari variabel nilaiMK.
Pada program di atas, jika yang diinput adalah karakter ‘B’ maka perintah pada case
‘B’ akan dieksekusi yaitu cout <<"Nilai anda adalah B"<<endl; dan break;. Perintah break;
akan mengakibatkan proses pengeksekusian keluar dari struktur switch case dan dilanjutkan
ke baris perintah dibawah struktur switch case. Jika karakter yang diinputkan tidak cocok
dengan case manapun (misalnya ‘M’), maka perintah pada bagian default akan dieksekusi.

1. Berdasarkan contoh program 1 pada bagian B. jika kondisi x >= y diganti menjadi x==y,
apa output yang dihasilkan jika program dijalankan? Jelasakan hasil analisismu terhadap
hal tersebut!

2. Berdasarkan contoh program 1 pada bagian B. jika kondisi x >= y diganti menjadi x<y,
apa output yang ditampilkan jika program dijalankan? Jelasakan hasil analisismu
terhadap hal tersebut!

165
3. Kerjakan program berikut!
#include<iostream>
using namespace std;

int main() {
int x = 10;
int y = 10;

if (x > y){
cout<<"x lebih besar dari y."<<endl;
} else if (x < y){
cout<<"x lebih kecil daripada y."<<endl;
} else {
cout<<"x sama dengan y."<<endl;
}
cout<<"Nilai x : "<< x<<endl;
cout<<"Nilai y : "<< y<<endl;
}
Output:

4. Berdasarkan contoh program 4 pada bagian B. Jika nilai yang diinputkan adalah ‘G’, apa
output yang ditampilkan jika program dijalankan? Jelasakan hasil analisismu terhadap
hal tersebut!

166
5. Kerjakan program berikut!
#include <iostream>
using namespace std;

int main() {
char opertr;
float angka1, angka2;
cout << "Masukkan sebuah operator (+, -, *, /): " <<endl;
cin >> opertr;
cout << "Maukkan dua angka yang diinginkan :" << endl;
cin >> angka1 >> angka2;

switch (opertr) {
case '+':
cout << angka1 << " + " << angka2 << " = " << angka1 + angka2;
break;
case '-':
cout << angka1 << " - " << angka2 << " = " << angka1 - angka2;
break;
case '*':
cout << angka1 << " * " << angka2 << " = " << angka1 * angka2;
break;
case '/':
cout << angka1 << " / " << angka2 << " = " << angka1 / angka2;
break;
default:
cout << "Error! Operator yang anda masukkan keliru!";
break;
}

167
return 0;

}
Output:

a. Berdasarkan program di atas, apa maksud dari perintah default: cout << "Error!
Operator yang anda masukkan keliru!"; break; ? Pada kondisi seperti apa perintah
tersebut dieksekusi? Jelaskan analisismu terhadap perintah tersebut!

b. Berdasarkan program di atas, apa maksud dari perintah case '+': cout << angka1 << " +
" << angka2 << " = " << angka1 + angka2; break; ? Jelaskan analisismu terhadap
perintah tersebut!

1. Buatlah sebuah program beserta flowchartnya untuk menentukan apakah seorang


mahasiswa dinyatakan lulus atau tidak. Inputnya berupa nilai pengetahuan dan sikap.
Jika nilai pengetahuan dan sikapnya mendapatkan nilai di bawah 60 maka mahasiswa
tersebut dinyatakan tidak lulus. Selain itu dianggap lulus.
2. Buatlah sebuah program sederhana untuk memilih menu makanan dan ukuran porsinya
(buat juga flowchartnya).
Adapun daftar menunya sabagai berikut:

168
• Nasi Goreng
o Porsi Besar (Rp. 25.000)
o Porsi kecil (Rp. 15.000)
• Nasi Campur
o Porsi Besar (Rp. 20.000)
o Porsi kecil (Rp. 10.000)
• Coto Makassar
o Porsi Besar (Rp. 35.000)
o Porsi kecil (Rp. 20.000)
Seorang user hanya dapat memilih jenis makanan beserta ukuran porsinya.

169
170
171
172
BAB X
PERULANGAN

1. Perulangan
Perulangan dalam C++ dikenal juga dengan istilah “loop”. Perulangan merupakan
proses pengeksekusian statement atau baris perintah secara berulang selama kondisi yang
menjadi syaratnya terpenuhi. Dengan kata lain, pengeksekusian statement secara berulang
akan terhenti saat syarat tersebut tidak terpenuhi lagi.
Sebagai contoh, pernahkah kamu dihukum untuk melakukan sesuatu secara
berulang? Misalnya seorang guru menghukum muridnya yang terlambat. Hukuman yang
diberikan adalah menulis kalimat “Saya tidak akan terlambat lagi” sebanyak 100 kali. Maka
murid tersebut akan melakukan hal yang sama, yaitu menulis kalimat yang diperintahkan
sebanyak 100 kali. Si murid akan berhenti menulis jika sudah terdapat 100 kalimat “Saya tidak
akan terlambat lagi”.
Bayangkan jika hal tersebut kamu lakukan dalam bahasa pemrograman C++. Hal yang
paling mungkin kamu lakukan adalah mengetikkan perintah cout<<"Saya tidak akan
terlambat lagi"<<endl; sebanyak 100 baris perintah. Suatu hal yang berlebihan dan
melelahkan bukan?
Agar kita dapat melakukannya dengan mudah tanpa menuliskan perintah yang sama
secara berulang, kita membutuhkan perulangan. Dalam bahasa pemrograman C++ terdapat
dua jenis perulangan yang dapat digunakan yaitu:
• For
• While
• Do while

2. For Loop
For merupakan salah satu bentuk perulangan yang sering digunakan. Adapun sintaks
dari for-loop adalah sebagai berikut:
for(variable=nilai_awal; kondisi; variable++) {
//Baris perintah yang akan dieksekusi berulang;
}

173
Keterangan:
• for: Merupakan keyword yang digunakan untuk
memulai struktur perulangan for.
• Variabel=nilai_awal: Variabel yang diinisialisasi
dengan nilai awal merupakan bagian yang akan
menjadi variabel counter atau pembanding pada
pengujian kondisi. Bagian ini hanya dieksekusi sekali,
yaitu di awal perulangan/pengeksekusian struktur for
Simak penjelasan
saja. Setelah struktur for berulang, bagian ini tidak Pak Dosen di sini!
dieksekusi lagi.
• Kondisi: Merupakan bagian yang berisi statemen logika yang akan mengembalikan
nilai true atau false tergantung kondisi yang diuji. Kondisi yang diuji berkaitan
dengan isi dari variabel.
• Variabel++ : Merupakan increment terhadap isi dari variabel.
• “{ }” : Berisi baris perintah yang akan dieksekusi jika kondisi bernilai true. Setelah
bagian ini dieksekusi, proses akan kembali ke atas ke baris for untuk mengecek
kondisi saat ini.
Inisialisasi merupakan nilai awal yang diberikan kepada suatu variabel tertentu yang
kemudian akan digunakan sebagai counter. Selama nilai i masih memenuhi syarat kondisi
maka pengeksekusian baris perintah di dalam blok for dapat dilakukan. Ketika nilai variabel i
mencapai suatu nilai tertentu atau kondisi bernilai false maka perulangan akan dihentikan.
Inisialisasi hanya akan dieksekusi sebanyak 1 kali pada awal proses perulangan.
Kondisi merupakan bagian yang akan diuji setiap akan dilakukannya perulangan.
Selama kondisi bernilai true atau benar, maka statement di dalam blok perulangan for akan
dieksekusi. Setelah pengeksekusian kondisi kembali diuji setelah proses increment atau
decrement dilakukan.
Increment /decrement adalah bagian yang berfungsi untuk merubah nilai dari
variabel pada bagian inisialisasi. Perubahan dapat berupa penambahan atau pengurangan
dengan jumlah tertentu. Tujuannya adalah agar suatu saat kondisi bernilai false atau salah
sehingga perulangan terhenti.
Agar dapat lebih mudah memahami penggunaan sintaks di atas, kami berikan contoh
berupa gambar ilustrasi. Perhatikan Gambar 10.1.

174
Gambar 10.1. Contoh penggunaan for loop.

Berdasarkan contoh program pada Gambar 10.1, maka dapat diketahui bahwa:
• For: Merupakan keyword yang digunakan untuk memulai struktur perulangan for.
• int i = 0: Merupakan bagian tahap inisialisasi nilai awal. Variabel i dideklarasikan
bertipe integer dengan nilai awal 0. Penginisialisasian dilakukan di awal
pengeksekusian for saja (hanya dieksekusi sekali selama proses perulangan).
• i<5: Merupakan bagian pengujian kondisi. Selama nilai i masih sesuai dengan kondisi
ini (mengembalikan nilai true) maka selama itu pula perintah yang ada pada area “{
}” akan dieksekusi. Pengujian dilakukan sekali setiap perulangan.
• i++: Merupakan perintah untuk menambah nilai variabel i dengan 1 lalu kemudian
disimpan kembali pada variabel i. perintah ini dieksekusi setiap perulangan. Sehingga
setiap perulangan terjadi nilai variabel i bertambah 1. Jika nilai variabel i sudah sama
dengan 5 maka kondisi akan bernilai false dan proses perulangan berhenti.
• “{ }”: merupakan area perintah yang akan dieksekusi selama kondisi bernilai true
disetiap perulangan.
Pada Gambar 10.2, kami sajikan gambar flowchart proses pada contoh Gambar 10.1.
Gambar ini sebagai pendukung untuk memahami contoh pada gambar 10.1. Berdasarkan
Gambar 10.2. yang merupakan potongan flowchart dari Gambar 10.1, dapat diketahui bahwa
tahap ini inisialisasi variable i dilakukan terlebih dahulu, lalu kemudian dilakukan proses
pengujian kondisi. Kondisi yang diuji adalah berkaitan dengan isi dari variabel i apakah masih
lebih kecil daripada 5 atau tidak. Jika tidak atau bernilai false maka proses pengeksekusian

175
Gambar 10.2. Flowchart penggunaan for loop.
akan keluar dari struktur for. Jika bernilai true maka perintah untuk menampilkan output “ini
contoh perulangan” akan dieksekusi sekali.
Setelah dieksekusi, maka variabel i diincrement melalui perintah i++. Setelah
perintah i++; dieksekusi, proses akan kembali menguji kondisi dan jika bernilai true maka
perintah untuk menampilkan output kembali dieksekusi. Proses perulangan ini berlangsung
terus menerus hingga kondisi bernilai false. Kondisi bernilai false jika i telah bernilai 5.
Kondisi yang bernilai false mengakibatkan proses pengeksekusian keluar dari struktur for.

3. While
Hampir sama dengan for, while juga dapat digunakan untuk melakukan
pengeksekusian perintah tertentu pada program secara
berulang. Namun, perbedaan while dengan for adalah while
melakukan pemeriksaan kondisi di awal blok.
Sebagaimana yang kita ketahu bersama bahwa
perintah dalam area blok perulangan hanya akan dieksekusi jika
kondisi yang menjadi syarat di dalamnya terpenuhi. Hal itu
berarti bahwa jika kondisi yang syaratkan tidak terpenuhi, maka
semua perintah yang ada di dalam blok program tidak akan Simak penjelasan
Pak Dosen di sini!
pernah dieksekusi.

176
Adapun sintaks pengguaan while adalah sebagai berikut:
while (kondisi){
Statement yang akan dieksekusi secara berulang;
}
Keterangan:
• while merupakan keyword yang digunakan untuk memulai struktur perulangan
while.
• Kondisi merupakan bagian yang berisi statemen logika yang akan mengembalikan
nilai true atau false tergantung kondisi yang diuji. Kondisi yang diuji berkaitan dengan
isi dari variabel.
• “{ }” merupakan area blok while dimana seluruh baris perintah yang ada di dalamnya
hanya akan dieksekusi jika kondisi bernilai true. Biasanya di dalam blok ini
ditambahkan perintah increment terhadap variabel counter yang diuji pada bagian
kondisi.
Agar dapat lebih mudah untuk memahami sintaks di atas berikut kami berikan contoh
dalam bentuk gambar ilustrasi. Perhatikan Gambar 10.3.

Gambar 10.3. Contoh while loop.

Berdasarkan Gambar 10.3. dapat diketahui bahwa:


• While adalah keyword yang digunakan untuk memulai struktur while.
• i<5 merupakan statemen yang akan diuji. Jika nilai i lebih kecil dari pada 5 maka
kondisi bernilai true. Jika nilai i lebih besar atau sama dengan 5 maka kondisi akan
bernilai false.

177
• i++ digunakan untuk menambah nilai i dengan 1 di setiap perulangan sehingga
perulangan dihentikan ketika i bernilai 5.

4. Do While
Berbeda dengan struktur while yang melakukan pengujian kondisi di awal blok
perulangan, do-while terlebih dahulu mengeksekusi perintah lalu kemudian menguji kondisi
yang menjadi syarat perulangan. Sehingga, walaupun syarat
kondisi tidak terpenuhi sejak awal, do-while akan tetap
mengeksekusi perintah pada bloknya sebanyak satu kali.
Adapun sintaks dari do-while adalah sebagai berikut:

do {
Statement yang akan dieksekusi secara berulang; Simak penjelasan
} while (kondisi); Pak Dosen di sini!

Keterangan:
• do merupakan keyword yang digunakan untuk mengawali perulangan do-whlie. Do
juga sekaligus menjadi penanda bahwa statemen atau perintah yang ada di dalam “{
}” akan langsung dieksekusi terlebih dahulu.
• while merupakan keyword yang digunakan untuk menguji kondisi.
• Kondisi merupakan bagian yang akan diuji untuk mengembalikan nilai true atau
false.
• “{ }” berisi baris perintah yang akan dieksekusi selama kondisi bernilai true.
Agar dapat lebih mudah memahami sintaks di atas, maka berikut kami berikan
contoh dalam bentuk gambar ilustrasi. Perhatikan Gambar 10.4.
Berdasarkan Gambar 10.4, maka dapat diketahui bahwa:
• Area blok perintah “{ }” berisi 2 baris perintah yang akan dieksekusi selama kondisi
bernilai true. Dieksekusi pertamakali tanpa memperhatikan kondisi.
• Perintah cout<< “ini contoh while”; akan mencetak output string “ini contoh while”
ke layar. Dieksekusi 1 kali setiap perulangan.
• i++ berarti menambah nilai i dengan 1. i++ berguna sebagai counter sehingga ada
saat dimana nilai i akan sama dengan 5.

178
Gambar 10.4. Contoh do while loop.

• While adalah keyword yang menjadi penanda bahwa selama kondisi bernilai true
maka lakukan perulangan.
• i<5 akan bernilai true jika nilai i lebih kecil dari pada 5. Bernilai salah jika i sama
dengan atau lebih besar dari 5.

Agar dapat lebih memahami mengenai struktur perulangan, berikut kami berikan
contoh program sederhana.
1. Contoh 1 – Perogram penerapan perulangan for.
#include <iostream>
using namespace std;

int main() {
for(int i=0; i<5; i++){
cout << "ini contoh perulangan"<<endl;
}
Simak penjelasan
Pak Dosen di sini!
}

179
Output:
ini contoh perulangan
ini contoh perulangan
ini contoh perulangan
ini contoh perulangan
ini contoh perulangan

Berdasarkan program pada contoh 1 di atas, dapat diketahui bahwa:


• Variabel i sebagai counter diinisialisasikan dengan nilai 0 melalui perintah int i=0;.
Perintah ini hanya dieksekusi sekali di awal perulangan. Pada perulangan selanjutnya
akan langsung mengecek kondisi.
• Kondisi diuji dengan membandingkan nilai i dan 5 melalui perintah i<5;. Selama nilai i
lebih kecil daripada 5 maka kondisi bernilai true.
• Variabel i ditambah dengan 1 di setiap proses perulangan menggunakan perintah
increment i++.
• Perintah mencetak string "ini contoh perulangan" akan dieksekusi sekali di setiap
perulangan melalui perintah cout << "ini contoh perulangan"<<endl; dalam blok “{ }”.
Output berupa string “ini contoh perulangan” dicetak sebanyak 5 kali. Nilai i
diinisialisasikan dengan 0. Lalu kemudian pengujian kondisi dilakukan dengan
membandingkan nilai i dengan 5. Karena nilai i lebih kecil daripada 5 maka kondisi akan
bernilai true sehingga perintah pada blok for dieksekusi. Lalu kemudian nilai i ditambah
dengan 1. Selanjutnya dilakukan lagi pengecekan kondisi yang jika nilainya true maka
perintah pada blok for dieksekusi kembali. Begitu seterusnya hingga kondisi bernilai false.
Kondisi bernilai false akan tercapai jika i sudah mencapai 5 yang artinya telah dicetak 5
output karena nilai i dimulai dari 0 dan pengeksekusian output terakhir dilakukan saat i masih
bernilai 4. Ingat bahwa penambahan nilai i dengan 1 dilakukan di setiap perulangan
berdasarkan perintah i++.

2. Contoh 2 - Program penerapan perulangan while.


#include <iostream>
using namespace std;
int main() {
int i =0;

180
while(i<5){
cout << "ini contoh perulangan"<<endl;
i++;
}
}
Output:
ini contoh perulangan
ini contoh perulangan
ini contoh perulangan
ini contoh perulangan
ini contoh perulangan
Berdasarkan contoh 2 di atas, maka dapat diketahui bahwa:
• Variabel i diinisialisasikan dengan nilai 0.
• Pada struktur while, kondisi yang akan diuji adalah i<5. Hal tersebut berarti bahwa
selama nilai i lebih kecil daripada 5 maka kondisi bernilai benar dan seluruh baris
perintah yang ada pada blok while “{ }” dieksekusi.
• String “ini contoh perulangan” ditampilkan sebagai output melalui perintah cout << "ini
contoh perulangan"<<endl;
• i++ berarti menambah nilai i dengan 1 dan hasilnya disimpan kembali ke i. Perintah i++
ini menyebabkan variabel i nilainya bertambah 1 di setiap
perulangan sehingga akan ada saat dimana nilai i sama
dengan 5 yang mengakibatkan kondisi bernilai false.
Jadi, pada dasarnya hampir sama dengan for, while
akan mengecek kondisi sebelum mengeksekusi perintah yang
ada pada blok while. Pada blok while, increment dan
penginisialisasian nilai variabel yang menjadi counter Simak penjelasan
dilakukan terpisah atau tidak termasuk ke dalam sintaks Pak Dosen di sini!

while.

3. Contoh 3 – Program penerapan do-while


#include <iostream>
using namespace std;
int main() {

181
int i =5;
do{
cout << "ini contoh perulangan"<<endl;
i++;
} while(i<5);
}
Output:
ini contoh perulangan
Berdasarkan contoh3 di atas, maka dapat diketahui bahwa:
• Variabel i diinisialisasikan dengan nilai 5.
• Sejak awal, kondisi i<5 sudah mengembalikan nilai false.
• Blok do { } dieksekusi terlebih dahulu sebelum pengujian kondisi dilakukan. Sehingga
walaupun kondisi telah bernilai false sejak awal perulangan, dua baris perintah di dalam
blok tetap dieksekusi.
• i++ berarti menambah nilai i dengan 1 dan hasilnya disimpan kembali ke i. Perintah i++
ini menyebabkan variabel i nilainya bertambah 1 sebelum diuji. Hal ini mengakibatkan
nilai i semakin lebih besar dari 5.
Jadi, pada dasarnya hampir sama dengan while, hanya
saja do-while akan mengeksekusi perintah pada blok “{ }”
terlebih dahulu baru kemudian menguji kondisinya. Sehingga
walaupun sejak awal kondisinya sudah false seperti contoh
program di atas, maka perintah pada blok do-while tetap
dieksekusi. Barulah kemudian setelah kondisi dicek dan Simak penjelasan
bernilai false, proses perulangan dihentikan. Pak Dosen di sini!

1. Berdasarkan contoh program 1 pada bagian B. jika kondisi variabel i diinisialisasikan


dengan 10, apa output yang dihasilkan jika program dijalankan? Jelasakan hasil
analisismu terhadap hal tersebut!

182
2. Berdasarkan contoh program 2 pada bagian B. jika perintah i++ pada blok while dihapus,
apa output yang dihasilkan jika program dijalankan? Jelasakan hasil analisismu terhadap
hal tersebut!

3. Berdasarkan contoh program 3 pada bagian B. jika perintah while(i<5) diganti menjadi
while(i>5) apa output yang dihasilkan jika program dijalankan? Jelasakan hasil analisismu
terhadap hal tersebut!

4. Kerjakan program berikut!


#include <iostream>
using namespace std;
int main() {
cout<<"--Nested loop dimulai--"<<endl;
for(int i=1; i<3; i++){
for(int j=1; j<3; j++){
cout << "ini baris ke-"<<i<<" kolom ke-"<<j<<endl;
}
}

183
cout<<"--Nested loop selesai--"<<endl;
}
return 0;
}
Output:

a. Berdasarkan program pada no.4 di atas. Jelaskan alur kerja program di atas!

b. Berdasarkan program pada no 6 di atas. Gambarkan flowchart program di atas!

1. Buatlah flowchart dan program untuk menentukan bilangan faktorial antara 0 hingga
100 menggunakan perulangan dan percabangan. Kemudian berdasarkan program yang
telah dibuat, tentukan variable lokal dan globalnya.

184
185
186
187
188
BAB XI
ARRAY

1. Array
Jika anda diminta untuk membuat sebuah program
sederhana untuk menyimpan dan menampilkan nilai dari 30
orang teman anda, apa yang akan anda lakukan?
Hal yang paling mungkin akan anda lakukan adalah
menyimpan setiap nilai pada sebuah variabel. Sehingga jika
terdapat 30 nilai maka anda akan mendeklarasikan 30 variabel
dengan tipe data yang sama. Hal ini tentunya cukup
Simak penjelasan
melelahkan dan tidak efektif. Oleh karena itu kita
Pak Dosen di sini!
membutuhkan array untuk menyelesaikan masalah di atas.
Agar dapat mudah untuk memahami penjelasan mengenai array pada bagian
berikutnya, perlu diketahui beberapa istilah berkaitan dengan array berikut ini:
• Indeks merupakan angka yang menunjukkan posisi atau tempat suatu nilai pada
array. Pada C++, array dimulai dari indeks-0.
• Elemen adalah bagian yang menyusun array dimana setiap elemen ini diakses
menggunakan indeks array.

Gambar 11.1. Ilustrasi sebuah array.

189
• Panjang array adalah banyaknya elemen dari suatu array.
Agar dapat lebih mudah memahami istilah di atas, perhatikan Gambar 11.1.
Pada Gambar 11.1 dapat kita lihat terdapat sebuah array dengan 6 elemen, dimulai
dari indeks 0 hingga indeks 5. Elemen pertama adalah 10, elemen kedua adalah 5, hingga
elemen kelima adalah 18. Untuk mengakses nilai dari elemen pada array digunakan indeks
array. Misalnya indeks 1 berisi nilai 5. Indeks pada array C++ selalu dimulai dari 0.

2. Array 1 Dimensi
a. Pendeklarasian array
Sebuah array harus dideklarasikan terlebih dahulu sebelum dapat digunakan.
Pemberian nama variabel array pun memiliki syarat yang sama seperti variabel biasa. Hanya
saja yang membedakan adalah terdapat kurung siku “[ ]” untuk mendeklarasikan panjang
array. Terdapat beberapa cara untuk mendekalarasikan sebuah array.
Adapun cara pertama mendeklarasikan array dapat dilihat pada sintaks berikut:

tipe_data nama_array [elemen];


Keterangan:
• tipe_data: diisi dengan tipe data yang ingin digunakan. Tipe data berlaku untuk
semua elemen array. Misalnya, jika mendeklarasikan int maka data yang
diperbolehkan masuk ke dalam array hanya data bertipe integer.
• nama_array: diisi dengan nama array yang diinginkan. Syarat nama array sama
dengan syarat pemberian nama pada variabel biasa.
• elemen: diisi elemen dengan banyaknya elemen yang akan ditampung oleh array.
Agar dapat memudiahkan untuk memahami sintaks di atas, kami berikan contoh
penggunaanya pada Gambar 11.2.
Berdasarkan sintaks dan Gambar 11.2, dapat diketahui bahwa telah dideklarasikan
sebuah variabel array dengan nama usia yang dapat menampung 5 nilai berbeda tetapi
dengan tipe data yang sama yaitu integer. Namun, array usia hanya sekedar dideklarasikan
tanpa menginisialisasikan nilai ke dalam indeks array. Sehingga, array usia tidak memiliki nilai
apa-apa hingga diisi dengan nilai tertentu.
Selain cara pertama di atas, kita juga dapat mendeklarasikan sebuah array disertai
dengan penginisialisasian nilainya secara langsung. Pendeklarasian tidak memerlukan

190
Gambar 11.2. Ilustrasi pendeklarasian sebuah array.

penentuan panjang array secara langsung. Compiler akan menyesuaikan panjang array
dengan banyaknya elemen yang diinisialisasikan. Perhatikan sintaks berikut:

tipe_data nama_array [ ] = {nl1, nl2, …,nlN};


Keterangan:
• tipe_data: isi dengan tipe data yang ingin digunakan. Tipe data berlaku untuk semua
elemen array. Misalnya, jika mendeklarasikan int, maka data yang diperbolehkan
masuk ke dalam array hanya data bertipe integer.

Gambar 11.3. Ilustrasi pendeklarasian dan penginisialisasian sebuah array .

191
• nama_array: isi dengan nama array yang diinginkan. Syarat nama array sama dengan
syarat pemberian nama pada variabel biasa.
• nl1: merupakan nilai elemen pertama yang akan masuk ke dalam indeks ke-(1-1).
• nlN: merupakan nilai elemen ke-N yang akan masuk ke dalam indeks ke-(N-1).
Agar dapat lebih mudah memahami sintaks di atas, kami berikan contoh
penggunaannya berupa gambar ilustrasi. Perhatikan Gambar 11.3.
Berdasarkan contoh pada Gambar 11.3, dapat diketahui bahwa telah dideklarasikan
sebuah array bernama usia yang dapat menampung data bertipe integer. Jumlah elemennya
menyesuaikan dengan banyaknya elemen yang diinisialisasikan seperti terlihat pada gambar.
Elemen yang diinisialisasikan akan menempati indeks array dari terkecil hingga terbesar
sesuai urutan penginisialisasiannya.

b. Mengisi array pada indeks tertentu dengan sebuah nilai


Selain mendeklarasikan array, kita tentunya juga membuthkan operasi untuk mengisi
nilai tertentu pada indeks tertentu dari sebuah array. Perhatikan sintaks berikut.

nama_array [indeks ] = nilai;


Keterangan:
• nama_array: diisi dengan nama dari array yang telah dideklarasikan sebelumnya.
• Indeks: diisi dengan nomor indeks dari indeks array yang akan diisi sebuah nilai.

Gambar 11.4. Ilustrasi pengisian nilai ke indeks tertentu dari sebuah array.

192
• Nilai: merupakan nilai yang akan diisikan ke dalam indeks array yang dituliskan pada
bagian indeks. Tipe data nilai harus sesuai dengan tipe data array.
Agar dapat lebih mudah memahami sintaks di atas, kami berikan contoh
penggunaanya dalam bentuk gambar ilustrasi. Perhatikan Gambar 11.4 pada halaman
sebelumnya. Berdasarkan Gambar 11.4 tersebut, dapat diketahui bahwa indeks ke-1 dari
sebuah array bernama usia diisi dengan nilai 100 dimana sebelumnya nilai dari indeks
tersebut adalah 20. Jadi, nilai yang baru diinputkan akan menimpa nilai yang telah ada
sebelumnya. Indeks ke-1 berarti elemen ke-2 karena indeks array dalam C++ selalu dimulai
dari indeks ke-0.
c. Mendapatkan nilai dari indeks array tertentu
Selain mengisi nilai ke dalam indeks tertentu dari sebuah array, kita juga dapat
mendapatkan atau menampilkan nilai dari indeks tertentu sebuah array. Perhatikan sintaks
berikut:

nama_array [indeks];
Keterangan:
• nama_array: diisi dengan nama dari array yang telah dideklarasikan sebelumnya.
• Indeks: diisi dengan no indeks dari indeks array yang akan didapatkan nilainya
Agar dapat lebih mudah memahami sintaks di atas, kami berikan contoh
penggunaanya dalam bentuk gambar ilustrasi. Perhatikan Gambar 11.5.

Gambar 11.5. Ilustrasi pengaksesan untuk mendapatkan nilai indeks tertentu sebuah
array.

193
Berdasarkan contoh yang disajikan pada Gambar 11.5., dapat diketahui bahwa
dengan menggunakan sintaks di atas, nilai dari indeks ke-1 dari array usia diakses untuk
kemudian dimasukkan ke dalam variabel a yang bertipe integer. Nilai indeks ke-1 adalah 20
sehingga variabel a juga bernilai 20.

3. Array 2 Dimensi (Multidimensi)


Pada array 1 dimensi, dapat dikatakan bahwa array 1 dimensi terdiri atas 1 baris dan
banyak kolom. Berbeda halnya dengan array multidimensi. Array multidimensi seperti
seperti array 2 dimensi memiliki lebih dari satu baris dan kolom tergantung ukuran dimensi
yang diinginkan. Olah karena itu, cara pendeklarasian, penginilisasian, serta pengaksesan
arraynya berbeda dengan array 1 dimensi.

Gambar 11.6. Ilustrasi array 2 dimensi.

Seperti ditunjukkan pada Gambar 11.6, kita dapat mengetahui bahwa array 2
dimensi memiliki dimensi baris dan kolom. Artinya, jumlah elemen array 2 dimensi adalah
sebanyak jumlah baris x kolomnya. Hal yang perlu juga diingat bahwa indeks array 2 dimensi
juga dimulai dari 0 sehingga indeks tertinggi dari baris adalah baris-1 dan kolom adalah
kolom-1.
a. Pendeklarasian array 2 dimensi
Adapun cara mendeklarasian array 2 dimensi dengan ukuran baris x kolom dapat
dilihat pada sintaks berikut:
tipe_data nama_array [baris][kolom];

194
Keterangan:
• tipe_data: isi dengan tipe data yang ingin digunakan.
Tipe data berlaku untuk semua elemen array. Jika
mendeklarasikan int, maka data yang diperbolehkan
masuk ke dalam array hanya data bertipe integer.
• nama_array: isi dengan nama array yang diinginkan.
Syarat nama array sama dengan syarat pemberian
Simak penjelasan
nama pada variabel biasa. Pak Dosen di sini!
• Baris: isi dengan jumlah baris yang diinginkan.
• Kolom: isi dengan jumlah kolom yang diinginkan.
Dari sintaks di atas dapat diketahui bahwa untuk mendeklarasikan array dua dimensi
maka perlu ditentukan seberapa banyak jumlah elemen baris dan kolom yang diperlukan.
Sebuah array multidimensi dapat menampung data dengan tipe data yang sama sebanyak
baris x kolom elemen. Karena array 2 dimensi terdiri atas baris dan kolom maka indeks
arraynya juga terdiri atas dua indeks yaitu indeks baris dan indeks kolom. Indeksnya juga
dimulai dari 0 hingga baris – 1 / kolom-1.Agar dapat lebih memahami sintaks di atas, berikut
kami berikan contoh gambar ilustrasinya. Perhatikan Gambar 11.7.

Gambar 11.7. Ilustrasi pendeklarasian array 2 dimensi.


Pada Gambar 11.7 dapat kita ketahui bahwa telah dideklarasikan sebuah array
bernama usia dan bertipe integer. Array usia terdiri atas 8 elemen yang diperoleh dari jumlah
baris dan kolomnya yaitu 2 dan 4. Karena jumlah barisnya adalah 2 maka indeksnya dimulai
dari 0 hingga 1. Sedangkan untuk kolomnya dimulai dari 0 hingga 3. Karena array usia hanya

195
dideklarasikan tanpa menginisialisasikan nilai ke dalamnya, maka array usia tidak memiliki
nilai. Pada gambar juga dapat kita ketahui bahwa setiap elemen memiliki indeks baris dan
kolomnya masing-masing.
Selain cara di atas, pendeklarasian array 2 dimensi juga dapat dilakukan dengan
sekaligus menginisialisasikan nilai ke dalamnya. Perhatikan sintaks berikut:

tipe_data nama_array [baris][kolom] = {


{nilai[0][0],…, nilai[0],[kolom-1]},
{nilai[baris-1][0],…, nilai[baris-1],[kolom-1]},
};
Keterangan:
• tipe_data: isi dengan tipe data yang ingin digunakan. Tipe data berlaku untuk semua
elemen array.
• nama_array: isi dengan nama array yang diinginkan.
• Baris: isi dengan jumlah baris yang diinginkan.
• Kolom: isi dengan jumlah kolom yang diinginkan
• Nilai[0][0]: adalah nilai yang diinisialisasikan yang akan menempati indeks baris ke-
0 kolom ke-0. Nilai akan menempati indeks sesuai urutannya.
• { , }: operator koma di dalam kurung kurawal berarti memisahkan nilai dalam kolom
berbeda namun masih pada baris yang sama.
• {{ } , { }}: operator koma di antara kurung kurawal berarti memisahkan nilai dalam
baris berbeda.
Berdasarkan sintaks pendeklarasian dan penginisialisasian nilai di atas maka dapat
diketahui bahwa nilai yang diinisialisasikan pada array 2D disusun sedemikian rupa agar
dapat menempati indeks baris dan kolom yang seharusnya. Pada array 2D, nilai-nilai pada
baris yang sama berada pada blok kurung kurawal yang sama dan nilainya langsung
dipisahkan dengan operator koma. Operator koma yang memisahkan nilai di dalam blok
kurung kurawal tersebut menandakan nilai berada pada kolom yang berbeda. Adapun
operator koma yang memisahkan blok kurung kurawal merupakan tanda bahwa nilai pada
blok kurung kurawal yang saling terpisah tersebut berada pada baris yang berbeda.
Agar dapat memahami sintaks di atas dengan lebih sempurna, berikut kami berikan
gambar ilustrasinya. Pada Gambar 11.8 dapata diketahui bahwa telah dideklarasikan
variabel array bernama nilai bertipe char. Array nilai dideklarasikan dengan jumlah baris

196
sebanyak 2 dan kolom sebanyak 3. Sehingga jumlah total elemen yang membentuk array 2
dimensi ini adalah 2 x 3 elemen.

Gambar 11.8. Ilustrasi pendeklarasian dan penginisialisasian array 2 dimensi.

Contoh lain kami berikan pada Gambar 11.9. dimana dideklarasikan sebuah array
bernama beratBadan bertipe integer. Dapat kita lihat bahwa nilai yang diinisialisasikan
menempati indeks sesuai urutan penempatannya pada perintahnya. Nilai pada { 45, 50, 55}
berada pada baris yang sama namun pada kolom yang berbeda. Sedangkan nilai pada { 45,
50, 55} berada pada baris yang berbeda dengan nilai { 60, 65, 70}.

Gambar 11.9. Visualisasi pendeklarasian dan penginisialisasian array 2 dimensi.

197
b. Mengisi array 2 dimensi pada indeks tertentu dengan sebuah nilai
Selain mendeklarasikan array, kita tentunya juga tentunya akan membutuhkan
perintah untuk mengisi nilai tertentu pada indeks tertentu dari sebuah array. Perhatikan
sintaks berikut:

nama_array [indeks_baris ][indeks_kolom] = nilai;


Keterangan:
• nama_array: diisi dengan nama dari array yang telah dideklarasikan sebelumnya.
• Indeks_baris: diisi dengan nomor indeks dari indeks baris array yang akan diisi
dengan sebuah nilai.
• Indeks_kolom: diisi dengan nomor indeks dari indeks kolom array yang akan diisi
dengan sebuah nilai.
• Nilai: merupakan nilai yang akan diisikan ke dalam indeks array yang dituliskan pada
bagian indeks. Tipe data nilai harus sesuai dengan tipe data array.
Agar dapat memahami sintak di atas, berikut kami berikan gambar ilustrasi
penggunaan sintaks di atas. Perhatikan Gambar 11.10.
Pada Gambar 11.10 dapat diketahui bahwa terdapat array berukuran 2 x 3 bernama
nilai, bertipe char dan menampung nilai karakter A, B, C, D, E, dan T. Array pada indeks baris
ke-0 dan kolom ke-1 diisi dengan nilai Z. Sehingga nilai array nilai saat ini menjadi A, Z, C, D,
E, T.

Gambar 11.10. Ilustrasi penugasan nilai pada indeks tertentu array 2D..

198
c. Mendapatkan nilai dari indeks tertentu pada array 2 dimensi
Selain mengisi nilai ke dalam indeks tertentu dari sebuah array, kita juga dapat
mengakses atau mengambil nilai dari indeks tertentu sebuah array dua dimensi. Perhatikan
sintaks berikut:

nama_array [indeks_baris][indeks_kolom];
Keterangan:
• nama_array: diisi dengan nama dari array yang telah dideklarasikan sebelumnya.
• Indeks_baris: diisi dengan nomor indeks dari indeks baris array yang akan
diakses/diambil nilainya.
• Indeks_kolom: diisi dengan nomor indeks dari indeks kolom array yang akan
diakses/diambil nilainya.
Berdasarkan sintaks di atas, maka dapat diketahui bahwa utuk dapat mengakses atau
mendapatkan nilai yang diinginkan pada suatu array 2 dimensi, maka diperlukan informasi
mengenai indeks baris dan kolom dimana nilai tersebut berada. Agar dapat lebih memahami
mengenai array, berikut kami berikan contoh program sederhana.
Agar dapat memahami sintaks di atas dengan lebih baik, berikut kami sajikan gambar
ilustrasi contoh penggunaannya. Perhatikan Gambar 10.11.
Pada Gambar 10.11 dapat diketahui bahwa terdapat array bernama nilai bertipe
char dengan ukuran 2 x 3 elemen. Array nilai berisi nilai A, B, C, D, E, dan T. Lalu kemudian

Gambar 11.10. Ilustrasi pengaksesan nilai array 2 dimensi pada indeks tertentu.

199
dideklarasikan variabel x bertipe char yang nilainya diperoleh dari pengaksesan array nilai
indeks baris ke-0 dan indeks kolom ke-2 yaitu ‘C’.

1. Contoh 1 – Program penulisan nilai indeks dan elemen dengan berbagai cara.
#include <iostream>
using namespace std;

int main()
{
int nilai[5];
nilai[0] = 6;
Simak penjelasan
nilai[4] = -2; Pak Dosen di sini!

// sama dengan nilai[1] = 2


nilai[3 / 2] = 2;
nilai[2] = nilai[0];

// sama dengan nilai[3] = 2 + 6


nilai[3] = nilai[1] + nilai[2];

cout <<"Elemen array nilai adalah sebagai berikut:"<< endl;


cout << nilai[0] << " " << nilai[1]
<< " " << nilai[2] << " " << nilai[3] << " " << nilai[4];

return 0;
}
Output:
Elemen array nilai adalah sebagai berikut:
6 2 6 8 -2

200
Dari contoh program di atas dapat diketahui bahwa dideklarasikan sebuah array
bernama nilai dengan 5 elemen. Dimana pada awalnya indeks ke-0 pada array tersebut diisi
dengan nilai 6 dan indeks ke-4 diisi dengan nilai - 2. Selanjutnya indeks ke-1 diisi dengan nilai
2. Indeks ke-1 diperoleh dari indeks [3/2] yang hasilnya dibulatkan ke bawah. Kemudian
indeks ke-2 diisi dengan nilai indeks ke-0. Adapun indeks ke-3 diisi dengan nilai dari indeks
ke-1 ditambah dengan nilai dari indeks ke-2.

2. Contoh 2 – Program penerapan array 2 dimensi.


#include <iostream>
using namespace std;

int main(){
int nilai[2][2]={
{65, 70},
{75, 80}
Simak penjelasan
}; Pak Dosen di sini!

nilai[1][1]=100;
int x =nilai[1][1];

for (int i=0; i<2; i++){


for(int j=0; j<2; j++){
cout<<"Array nilai indeks ke-["<<i<<"]["<<j<<"] = "<<nilai[i][j]<<endl;
}
}

cout<<"Nilai variabel x dari array nilai indeks ke-3: "<<x<<endl;


return 0;
}
Output:
Array nilai indeks ke-[0][0] = 65
Array nilai indeks ke-[0][1] = 70
Array nilai indeks ke-[1][0] = 75

201
Array nilai indeks ke-[1][1] = 100
Nilai variabel x dari array nilai indeks ke-3: 100

Dari contoh program di atas dapat diketahui bahwa:


• Telah dideklarasikan sebuah array bernama nilai bertipe integer
• Array nilai terdiri atas 2 baris dan 2 kolom. Sehingga jumlah elemennya sebanyak 4
elemen.
• Array nilai menampung 4 nilai bertipe integer yaitu 65, 70, 75, dan 80.
• Pada awalnya nilai 65 menempati indeks ke-[0][0] dari array nilai, 70 pada indeks ke-
[0][1], 75 pada indeks ke-[1][0], dan 85 pada indeks ke-[1][1].
• Nilai pada array nilai indeks ke-[1][1] kemudian diganti dengan nilai 100 menggunakan
perintah nilai[1][1]=100;
• Sebuah variabel bernama x bertipe integer dideklarasikan dimana nilainya diperoleh dari
array nilai indeks ke[1][1] yaitu 100
• Dengan menggunakan perulangan (for bersarang), nilai setiap indeks ditampilkan. Jika
anda memperhatikan kode program di atas. Pada bagian perulangan, indeks dari variabel
array nilai diisi dengan variabel i dan j. Variabel i dan j awalnya bernilai 0 dan akan
berubah di setiap perulangannya sehingga secara otomatis di setiap perulangan tersebut
nilai setiap indeks secara berurut akan ditampilkan.

3. Contoh 3 – Program penerapan operasi aritmatika pada elemen array.


#include <iostream>
using namespace std;

int main(){
int jmlTugas;
float totalNilai, rataRata;

cout<<"==Program menghitung rata-rata nilai tugas=="<<endl;


cout<<"Berapa nilai tugas yang ingin anda masukkan?"<< endl;
cin>>jmlTugas;

202
float Tugas[jmlTugas];
for(int i=0;i<jmlTugas;i++){
cout<<"Inputkan nilai tugas ke-"<<i+1<<" :"<<endl;
cin>>Tugas[i];
}

for(int i=0;i<jmlTugas;i++){
totalNilai+=Tugas[i];
}
rataRata = totalNilai/jmlTugas;

cout<<"Nilai rata-rata tugas anda adalah


"<<rataRata<<endl;

return 0;
}

Simak penjelasan
Pak Dosen di sini!

Output:
Berapa nilai tugas yang ingin anda masukkan?
4
Inputkan nilai tugas ke-1 :
90.5
Inputkan nilai tugas ke-2 :
90.6
Inputkan nilai tugas ke-3 :
90.4
Inputkan nilai tugas ke-4 :
90.5
Nilai rata-rata tugas anda adalah 90.5

203
Dari contoh program di atas dapat diketahui bahwa:
• Variabel jmlTugas bertipe integer dideklarasikan untuk menampung banyaknya nilai
tugas yang akan diinput oleh user
• Variabel totalNilai yang bertipe float dideklarasikan untuk menampung hasil
perhitungan total nilai yang tersimpan pada array.
• Variabel rataRata yang bertipe float dideklarasikan untuk menampung hasil perhitungan
nilai rata-rata dari tugas
• String "Berapa nilai tugas yang ingin anda masukkan?" akan ditampilkan ke layar lalu
kemudian user menginputkan nilai bertipe integer yang merupakan banyaknya nilai yang
akan diinput melalui perintah cin>>jmlTugas;.
• Dideklarasikan variabel array bertipe float dengan nama Tugas yang jumlah elemennya
sebanyak nilai yang diinput oleh user yang tersimpan pada variabel jmlTugas.
• Pada struktur for, string untuk meminta user menginputkan nilai tugas akan ditampilkan
dan disimpan pada array Tugas mulai indeks ke-i yaitu 0 hingga indeks ke-(jmlTugas-1).
• Pada struktur for berikutnya total nilai dihitung dengan menjumlahkan seluruh nilai yang
ada pada array lalu kemudian disimpan pada variabel totalNilai.
• Variabel rataRata diisi dengan nilai hasil pembagian nilai yang tersimpan pada variabel
totalNilai/jmlTugas. Lalu kemudian ditampilkan.

1. Berdasarkan contoh program 1 pada bagian B. Berapa nilai dari indeks ke-3 array nilai
dan bagaimana nilai tersebut diperoleh? Jelaskan hasil analisis anda dari jawaban yang
anda peroleh!

2. Kerjakanlah program berikut!


#include <iostream>
using namespace std;

204
int main() {
int nilaiTugas[5]={75, 80, 90, 100, 95};
for(int i = 0; i<5; i++){
cout<<"Nilai tugas-"<<i+1<<" adalah "<< nilaiTugas[i]<<endl;
}

return 0;
}
Output:

a. Berdasarkan program yang telah kalian kerjakan di atas, mengapa variabel I


diinisialisasikan dengan nilai 0? Jelaskan hasil analisis anda!

b. Berdasarkan program yang telah kalian kerjakan di atas, pada baris perintah
cout<<"Nilai tugas-"<<i+1<<" adalah "<< nilaiTugas[i]<<endl;, terdapat perintah i+1?
Apa tujuan perintah tersebut diletakkan dalam program? Jelaskan hasil analisis anda!

205
c. Berdasarkan program yang telah kalian kerjakan di atas, mengapa variabel i diincrement
melalui perintah i++? Jelaskan hasil analisis anda!

1. Buatlah sebuah program sederhana untuk menampung nilai tinggi badan berikut:
• 165.5
• 160.1
• 172.4
• 180.0
• 145.9
• 169.7
2. Berdasarkan program pada no 1, tampilkan output berupa:
• Keseluruhan isi indeks
• Isi indeks berurut dari indeks tertinggi ke terendah menggunakan struktur for
• Isi indeks ganjil

206
207
208
209
210
BAB XII
FUNGSI

1. Mengenal Fungsi
Setiap program dalam C++ setidaknya memiliki sebuah
fungsi. Fungsi tersebut adalah fungsi main(). Pada fungsi inilah
semua perintah utama diletakkan untuk dieksekusi. Selain
fungsi main(), kita juga dapat mendeklarasikan dan
mendefenisikan fungsi tambahan sendiri. Fungsi juga dikenal
dengan istilah function.
Jadi, apa itu fungsi? Fungsi merupakan kumpulan
Simak penjelasan
perintah atau statemen yang dikelompokkan ke dalam suatu
Pak Dosen di sini!
blok program untuk menyelesaikan suatu tugas khusus
tertentu. Fungsi juga dapat dikatakan sebagai program kecil yang berada di dalam program
utama yang digunakan untuk menyelesaikan masalah khusus sesuai dengan paramater yang
diberikan.
Untuk memahami lebih jelas mengenai apa itu fungsi perhatikan Gambar 12.1 dan
12.2 berikut ini:

Gambar 12.1. Contoh program tanpa fungsi buatan.

211
Pada gambar 12.1 dapat kita ketahu bahwa pada program tersebut terdapat 2 baris
perintah untuk menjumlahkan dua buah nilai. Perintah tersebut memiliki sintaks yang sama
untuk tujuan yang sama. Seharusnya perintah dengan sintaks yang sama tersebut dapat
disatukan menjadi sebuah fungsi seperti ditunjukkan pada Gambar 12.2.

Gambar 12.2. Contoh program dengan fungsi buatan.

Contoh yang diberikan pada gambar 12.1 dan 12.2 memberikan output yang sama.
Dapat kita lihat pada Gambar 12.2, dengan adanya fungsi penjumlahan(), maka cukup
dengan memanggil fungsi tersebut kita dapat menjumlahkan nilai apapun dan
menampilkannya tanpa perlu menuliskan kembali perintah untuk menjumlahkan dan
menampilkan output yang sama. Jadi, dengan menggunakan fungsi kita dapat mengurangi
duplikasi baris perintah yang pada dasarnya memiliki tujuan atau fungsi yang sama.

2. Manfaat Penggunaan Fungsi


Terdapat beberapa manfaat atau kelebihan jika anda dapat menerapkan
penggunaan fungsi pada kode program yang anda buat, diantaranya:
• Membuat kode program menjadi lebih mudah untuk dipahami. Fungsi dapat
menguraikan tugas pemrograman yang rumit menjadi langkah-langkah yang lebih
sederhana atau kecil.
• Menghemat baris perintah, mengurangi duplikasi kode. Programer tidak perlu lagi
membuat deretan perintah secara berulang untuk menyelesaikan suatu masalah
yang sama. Cukup dengan memanggil fungsi yang sudah ada.

212
• Fungsi mudah untuk digunakan kembali. Suatu fungsi dapat digunakan kembali.
Cukup memanggil fungsi tersebut sesuai nama dan parameternya, maka fungsi
tersebut akan menjalankan perintah.
• Fungsi yang dibuat dapat digunakan dalam berbagai program yang berbeda.
• Memecah program besar menjadi subprogram yang lebih kecil sehingga dapat
dikerjakan oleh programmer-programmer atau dipecah menjadi beberapa tahap
sehingga mempermudah pengerjaan dalam sebuah projek.
• Menyembunyikan informasi dari user sehingga mencegah adanya perbuatan tidak
bertanggungjawab seperti memodifikasi atau mengubah program yang kita buat.
• Meningkatkan kemampuan pelacakan kesalahan, jika terjadi suatu kesalahan kita
tinggal mencari fungsi yang bersangkutan saja dan tak perlu mencari kesalahan
tersebut di seluruh program

3. Jenis Fungsi Berdasarkan Pembentukannya


Berdasarkan pembentukannya terdapat dua jenis
fungsi, yaitu:
• Built-in function
• User-defined function
Simak penjelasan
Pak Dosen di sini!
a. Built-in function
Built-in function merupakan fungsi yang sudah disediakan oleh compiler ataupun
library suatu bahasa pemrograman. Artinya, fungsi tersebut tidak perlu kita deklarasikan
sendiri. Cukup dengan memanggil library/file header fungsi built-in tersebut maka kita sudah
dapat menerapkannya pada program yang kita buat.
Agar dapat menggunakan suatu fungsi built-in maka file header yang
mendeklarasikan fungsi tersebut perlu dipanggil terlebih dahulu. Adapun sintaksnya sebagai
berikut:

#include <nama_file_header>
Keterangan:
• #include: berfungsi untuk mengimpor fungsi-fungsi yang sudah didefinisikan pada
header file.
• < >: diisi dengan nama file header yang diperlukan.

213
• Nama_file_header: adalah nama file yang berisi definisi fungsi yang sudah dibuat.
Dokumentasi daftar header C++ dapat dilihat pada http://www.cplusplus.com.

Selanjutnya, setelah memanggil file header barulah kita dapat menggunakan fungsi
di dalamnya. Adapun sintaks penggunaan fungsi built-in adalah sebagai berikut:

Nama_fungsi_built-in(argumen);
Keterangan:
• Nama_fungsi_built-in: diisi dengan nama fungsi yang akan digunakan dimana file
header fungsi tersebut sebelumnya telah dipanggil melalui perintah include.
• ( ): diisi dengan argumen jika fungsi memiliki parameter.
• argumen: adalah nilai yang akan dikirimkan ke fungsi yang dipanggil. Jika argument
lebih dari satu maka pisahkan dengan koma.

Agar dapat lebih memahami maksud dari built-in function di atas, perhatikan
Gambar 12.3.

Gambar 12.3. Contoh penggunaan Fungsi Built-In.


Pada contoh program pada Gambar 12.3, fungsi akar yaitu sqrt() digunakan untuk
mencari akar dari nilai yang tersimpan pada variabel b. Fungsi sqrt() tersebut dapat
digunakan karena pada awal program, file header yang menampung pendeklarasian dan
pendefenisiannya telah dipanggil melalui #include. File header yang dimaksud adalah cmath.
Tanpa pemanggilan cmath tersebut, fungsi sqrt() tidak dapat digunakan. Begitupula fungsi
lain yang tersimpan pada file header cmath.

214
Oleh karena itu dapat diketahui bahwa untuk menggunakan fungsi built-in, maka
beberapa hal berikut harus diperhatikan:
• Fungsi dapat digunakan jika file headernya telah di”include”kan terlebih dahulu.
• Panggil header atau library yang mendeklarasikan fungsi yang akan digunakan dengan
menggunakan #include<nama file header>.
• Gunakan nama file header yang sesuai dengan fungsi yang anda gunakan. Misalnya jika
anda ingin memnggunakan fungsi sqrt() maka gunakan file header cmath karena fungsi
sqrt() dideklarasikan pada header tersebut. Contoh lain, jika anda ingin menggunakan
fungsi strcpy() maka gunakan file header cstring.

b. User-defined function
User-defined function adalah sitilah yang digunakan
untuk menyebutkan fungsi yang dideklarasikan dan
didefenisikan sendiri. Karena fungsi ini dapat kita bentuk sendiri,
maka nama, parameter dan tipe nilai balik fungsi tersebut dapat
Simak penjelasan
kita tentukan sendiri sesuai kebutuhan kita.
Pak Dosen di sini!
1). Sintaks umum penggunaan User-defined function pada C++
Sebelum membahas mengenai jenis-jenis fungsi built-in ini, perlu diketahui terlebih
dahulu mengenai sintaks umum fungsi dalam C++. Terdapat 2 versi penggunaan fungsi built-
in dalam C++, yaitu:
• Sintaks umum fungsi C++ dengan prototype fungsi

Gambar 12.4. Sintaks umum fungsi C++ dengan prototype fungsi.

215
Seperti ditunjukkan pada Gambar 12.4, jika sebuah pendefenisian fungsi C++ dilakukan
setelah fungsi main(), maka fungsi tersebut harus dibuat prototypenya/pendeklarasiannya
di atas fungsi main() terlebih dahulu. Pendeklarasian fungsi di atas fungsi main tanpa
mendefenisikan badan fungsi dikenal dengan istilah prototipe fungsi. Pendefenisian
fungsinya dilakukan di bawah fungsi main().
• Sintaks umum fungsi C++ tanpa prototype fungsi
Seperti ditunjukkan pada Gambar 12.5, jika pendefenisian fungsi dilakukan sebelum fungsi
main() maka pendefenisian tersebut telah mencakup pendeklarasian fungsinya. Sehingga
tidak perlu lagi melakukan pendefenisian fungsi setelah fungsi main().

Gambar 12.5. Sintaks umum fungsi C++ tanpa prototype fungsi.

2). 4 Jenis fungsi berdasarkan nilai balik dan parameternya


Selanjutnya, berdasarkan tipe nilai balik dan parameternya, terdapat 4 jenis fungsi,
yaitu:
• Fungsi dengan nilai balik dan parameter
• Fungsi berparameter dan tanpa nilai balik
• Fungsi dengan nilai balik dan tanpa parameter
• Fungsi tanpa nilai balik dan tanpa parameter
Sebelum membahas keempat jenis fungsi tersebut, berikut terlebih dahulu kita
pahami maksud dari nilai balik, parameter, dan argument. Perhatikan anlogi yang diberikan
pada Gambar 12.6.

216
Gambar 12.6. Analogi nilai balik dan parameter.

Jika dianalogikan, seperti ditunjukkan pada Gambar 12.6, fungsi ini adalah seperti
sebuah toko penjual jalangkote (pastel). Jika anda ingin membeli jalangkote pada toko
tersebut anda tentu memberikan uang sesuai harga yang ditentukan oleh pemilik toko.
Setelah anda memberikan uang maka anda mendapatkan jalangkote yang anda inginkan.
Jadi, toko dapat diibaratkan sebagai sebuah fungsi, harga jalangkote adalah parameter
fungsi tersebut, uang yang anda berikan adalah argumen yang dikirimkan dari perintah
pemanggil, anda adalah perintah pemanggil yang dimaksud, dan jalangkote adalah nilai
balik yang anda peroleh setelah anda memberikan uang kepada warung tersebut.
Jadi dapat diketahui bahwa:
• Parameter adalah variabel yang dideklarasikan pada fungsi yang bertugas untuk
menerima nilai yang dikirim dari argumen perintah pemanggil.
• Argumen adalah nilai yang dikirim oleh perintah pemanggil kepada suatu fungsi.
• Nilai balik adalah nilai hasil pemrosesan data pada
suatu fungsi yang dikembalikan kepada perintah
pemanggil fungsi tersebut.

2.a). Fungsi dengan nilai balik berparameter


Fungsi dengan nilai balik berarti bahwa fungsi tersebut
akan mengembalikan nilai hasil pemrosesannya kepada
Simak penjelasan
perintah yang memanggilnya. Sedangkan parameter berarti Pak Dosen di sini!

217
bahwa fungsi tersebut membutuhkan argumen/nilai tertentu yang dikirimkan melalui
perintah pemanggilnya agar dapat menghasilkan suatu nilai balik.
• Sintaks pendeklarasian dan pendefenisian fungsi bernilai balik dan berparameter
Adapun sintaks pendeklarasian dan pendefenisian fungsi dengan nilai balik dan
parameter adalah sebagai berikut:

Tipe_data_nilai_balik nama_fungsi (parameter){


//Perintah yang akan diproses
return nilai_balik;
}
Keterangan:
• tipe_data_nilai_balik: diisi dengan tipe data yang sesuai dengan tipe data dari nilai
yang akan dikembalikan. Misalnya, jika nilai yang akan dikembalikan adalah float,
maka bagian ini diisi dengan float.
• nama_fungsi: diisi dengan nama fungsi yang diinginkan. Nama fungsi harus
mengikuti syarat pemberian nama identifier dan sebaiknya merepresentasikan
maksud atau tujuan dari fungsi itu sendiri.
• parameter: diisi dengan parameter yang dibutuhkan oleh fungsi tersebut.
Parameter berupa pendeklarasian suatu variabel dengan tipe data tertentu sesuai
dengan nilai yang akan diterimanya dari argumen perintah pemanggil fungsi. Jika
parameter lebih dari satu maka setiap parameter dipisahkan dengan koma.
• { }: blok ini diisi dengan isi perintah yang akan dieksekusi pada fungsi tersebut dan
diakhiri dengan perintah return nilai_balik;.
• return: merupakan keyword yang digunakan untuk mengembalikan nilai_balik yang
ada didepannya.
• nilai_balik: diisi dengan nilai atau variabel yang menampung hasil/output fungsi
tersebut. Nilai inilah yang akan dikembalikan ke perintah pemanggil fungsi.

Agar dapat memahami sintaks di atas dengan lebih baik, berikut kami berikan
gambar ilustrasi penerapannya. Perhatikan Gambar 12.7.

Pada gambar 12.7 dapat diketahui bahwa nama fungsi yang dideklarasikan adalah
penjumlahan. Fungsi ini memiliki 2 parameter yaitu nilai1 dan nilai2 yang bertipe integer.
Variabel nilai1 dan nilai2 ini akan menerima nilai dari argumen yang dikirimkan melalui

218
perintah pemanggil sesuai urutannya. Selanjutnya, pada blok fungsi ini terdapat proses
penjumlahan nilai parameter nilai1 dan nilai2 yang hasil penjumlahannya disimpan pada
variabel hasil yang bertipe integer. Karena variabel hasil merupakan variabel yang
menampung output (nilai yang akan dikembalikan), maka perintah return diterapkan pada
variabel hasil. return hasil berarti nilai yang ada pada variabel hasil akan dikirimkan kembali
sebagai nilai balik/kembalian pada perintah pemanggil fungsi.

Gambar 12.7. Contoh pendeklarasian dan pendefenisian fungsi bernilai balik dan
berparameter.

• Sintaks pemanggilan fungsi bernilai balik dan berparameter


Adapun sintaks pemanggilan fungsi bernilai balik dan berparameter adalah sebagai
berikut:

Tipe_data nama_variabel = nama_fungsi ( argumen );


Keterangan:
• tipe_data nama_variabel: diisi dengan pendeklarasian variabel yang akan
menampung nilai balik dari pemanggilan fungsi.
• = : merupakan operator penugasan yang akan menugaskan nilai balik fungsi ke
dalam variabel penampung yang dideklarasikan.
• nama_fungsi: diisi dengan nama fungsi yang akan dipanggil. Pastikan bahwa fungsi
yang dipanggil telah dideklarasikan dan didefenisikan sebelumnya.
• argumen: diisi dengan nilai argumen yang akan dikirimkan ke fungsi yang
selanjutnya diterima oleh parameter fungsi yang bersangkutan. Banyaknya argumen

219
menyesuaikan dengan parameter pada fungsi yang dipanggil. Jika lebih dari satu,
maka pisahkan dengan koma.
Agar dapat memahami sintaks di atas berikut kami berikan gambar ilustrasi
penggunaannya. Perhatikan Gambar 12.8.

Gambar 12.8. Contoh pemanggilan fungsi bernilai balik dan berparameter.

Pada Gambar 12.8 dapat diketahui bahwa dilakukan pemanggilan fungsi yang
bernama penjumlahan. Pemanggilan fungsi disertai dengan pengiriman 2 nilai argumen
yaitu 5 dan 2. Nilai 5 akan diterima oleh parameter nilai1 dan nilai2 akan diterima oleh
parameter nilai2. Sesuai dengan proses/perintah yang ada di dalam blok fungsi
penjumlahan, maka nilai1 dan nilai2 yang telah menerima nilai argumen tadi dijumlahkan
lalu kemudian disimpan di variabel hasil. Kemudian, nilai pada variabel hasil dikembalikan ke
perintah pemanggil. Nilai kembalian pada perintah pemanggil kemudian ditugaskan masuk
ke variabel x. Sehingga variabel x bernilai 7.

2.b). Fungsi berparameter tanpa nilai balik


Fungsi berparameter tanpa nilai balik berarti bahwa
fungsi tersebut tidak akan mengembalikan suatu nilai hasil
pemrosesannya kepada perintah yang memanggilnya. Dengan
kata lain fungsi tersebut dipanggil hanya untuk memproses
argumen yang dikirimkan namun hasil pengolahannya tidak
Simak penjelasan
dikembalikan ke perintah pemanggilnya.
Pak Dosen di sini!

220
• Sintaks pendeklarasian dan pendefenisian fungsi berparameter tanpa nilai balik
Adapun sintaks pendeklarasian dan pendefenisian fungsi berparameter tanpa nilai
balik adalah sebagai berikut:

void nama_fungsi (parameter){


//Perintah yang akan diproses
}
Keterangan:
• void: merupakan keyword penanda bahwa fungsi tidak mengembalikan nilai kepada
perintah pemanggilnya.
• nama_fungsi: diisi dengan nama fungsi yang diinginkan. Nama fungsi harus
mengikuti syarat pemberian nama identifier dan sebaiknya merepresentasikan
maksud atau tujuan dari fungsi itu sendiri.
• parameter: diisi dengan parameter yang dibutuhkan oleh fungsi tersebut.
Parameter berupa pendeklarasian suatu variabel dengan tipe data tertentu sesuai
dengan nilai yang akan diterimanya dari argumen perintah pemanggil fungsi. Jika
parameter lebih dari satu maka setiap parameter dipisahkan dengan koma.
• { }: blok ini diisi dengan isi perintah yang akan dieksekusi pada fungsi tersebut dan
diakhiri dengan perintah return nilai_balik;.

Gambar 12.9. Contoh pendeklarasian dan pendefenisian fungsi berparameter tanpa


nilai balik.

221
Pada sintaks di atas dapat kita lihat bahwa tidak ada perintah return di dalamnya.
Hal tersebut dikarenakan fungsi tersebut tidak mengembalikan nilai apapun ke perintah
pemanggilnya. Agar dapat lebih memahami sintaks di atas, berikut kami berikan contoh
penggunaanya dalam gambar ilustrasi. Perhatikan Gambar 12.9.

Pada Gambar 12.9 dapat kita ketahui bahwa fungsi penjumlahan dideklarasikan
dengan 2 parameter yakni variabel nilai1 dan nilai2. Namun, fungsi tersebut tidak
memberikan nilai balik kepada perintah pemanggilnya. Hal tersebut ditandai dengan
penggunaan keyword void dan tidak adanya keyword return pada badan fungsi.

• Sintaks pemanggilan fungsi berparameter tanpa nilai balik

Adapun sintaks pemanggilan fungsi berparameter dengan nilai balik adalah sebagai
berikut:

nama_fungsi ( argumen );
Keterangan:
• Nama_fungsi: diisi dengan nama fungsi yang akan dipanggil. Pastikan bahwa fungsi
yang dipanggil telah dideklarasikan dan didefenisikan sebelumnya.
• argumen: diisi dengan nilai argumen yang akan dikirimkan ke fungsi, yang
selanjutnya diterima oleh parameter fungsi yang bersangkutan. Banyaknya argumen
menyesuaikan dengan parameter pada fungsi yang dipanggil. Jika lebih dari satu,
maka pisahkan dengan koma.

Gambar 12.10. Contoh pemanggilan fungsi berparameter tanpa nilai balik.

222
Karena fungsi yang dipanggil tidak mengembalikan nilai, maka kita tidak perlu
menyiapkan variabel penampung nilai balik pada pemanggilan fungsi tersebut. Agar dapat
memahami penggunaan sintaks di atas, berikut kami berikan gambar ilustrasi
penggunaannya. Perhatikan Gambar 12.10.

Pada Gambar 12.10 dapat diketahui bahwa telah dideklarasikan sebuah fungsi
bernama penjumlahan bertipe void dengan 2 parameter. Tipe void dan tanpa adanya
keyword return menjadi tanda bahwa fungsi ini tidak akan mengembalikan nilai ke perintah
pemanggilnya. Oleh karena itu, pada perintah pemanggilan fungsi tidak disertakan variabel
penampung nilai. Perintah pemanggilan fungsi disini hanya bertugas mengaktifkan fungsi
yang dipanggil dan mengirimkan nilai argumen yang akan diproses. Hasil pemrosesan nilai-
nilai argumen tersebut berakhir di fungsi dan tidak dikembalikan pada perintah
pemanggilnya.

2.c). Fungsi dengan nilai balik tanpa parameter


Fungsi dengan nilai balik tanpa parameter berarti bahwa fungsi tersebut dapat
dieksekusi cukup dengan memanggil fungsinya saja tanpa perlu menerima argumen tertentu.
Namun, walaupun tidak memiliki parameter, fungsi ini dapat mengembalikan nilai ke
perintah pemanggilnya.
• Sintaks pendeklarasian fungsi dengan nilai balik tanpa parameter
Adapun sintaks pendeklarasian dan pendefenisian
fungsi dengan nilai balik tanpa parameter adalah sebagai
berikut:
Tipe_data_nilai_balik nama_fungsi ( ){
//Perintah yang akan diproses
return nilai_balik;
}
Simak penjelasan
Keterangan: Pak Dosen di sini!
• TIpe_data_nilai_balik: diisi dengan tipe data yang
sesuai dengan tipe data dari nilai yang akan dikembalikan. Misalnya, jika nilai yang
akan dikembalikan adalah float, maka bagian ini diisi dengan float.
• Nama_fungsi: diisi dengan nama fungsi yang diinginkan. Nama fungsi harus
mengikuti syarat pemberian nama identifier dan sebaiknya merepresentasikan
maksud atau tujuan dari fungsi itu sendiri.

223
• { }: blok ini diisi dengan isi perintah yang akan dieksekusi pada fungsi tersebut dan
diakhiri dengan perintah return nilai_balik;
• return: merupakan keyword yang digunakan untuk mengembalikan nilai_balik yang
ada didepannya.
• nilai_balik: diisi dengan nilai atau variabel yang menampung hasil/output fungsi
tersebut. Nilai inilah yang akan dikembalikan ke perintah pemanggilnya.

Pada sintaks di atas dapat kita lihat bahwa bagian parameter dikosongkan. Artinya
fungsi tersebut tidak memerlukan parameter untuk dapat menghasilkan suatu nilai balik.
Selain itu hal tersebut juga berarti bahwa perintah pemanggil fungsinya tidak perlu
mengirimkan argumen tertentu. Agar dapat lebih mudah memahami penggunaan sintaks di
atas, perhatikan contoh penggunaannya pada Gambar 12.11.

Gambar 12.11. Contoh pendeklarasian fungsi dengan nilai balik tanpa parameter.

Pada Gambar 12.11 dapat kita ketahui bahwa fungsi bernama nilai telah
dideklarasikan. Fungsi nilai tersebut bertipe char karena nilai yang akan dikembalikan
bertipe char yaitu nilai yang ada pada variabel kode. Pengembalian nilai pada variabel kode
ditandai dengan penerapan return pada variabel tersebut. Jadi sebenarnya, tipe data fungsi
mengikuti tipe data dari nilai yang akan dikembalikan oleh fungsi tersebut. Selanjutnya,
diketahui pula bahwa tidak ada parameter pada fungsi tersebut. Hal itu berarti bahwa pada
perintah pemanggilnya nanti tidak ada pengiriman nilai argumen. Jadi pada dasarnya
perintah pemanggilnya seolah-olah hanya menjadi pemicu agar fungsi ini dieksekusi karena
proses yang terjadi di dalamnya tidak membutuhkan nilai inputan parameter apapun.

224
• Sintaks pemanggilan fungsi dengan nilai balik tanpa parameter
Adapun sintaks pemanggilan fungsi dengan nilai balik tanpa parameter adalah
sebagai berikut:

Tipe_data nama_variabel = nama_fungsi ( );


Keterangan:
• TIpe_data nama_variabel: diisi dengan pendeklarasian variabel yang akan
menampung nilai balik dari pemanggilan fungsi.
• = : merupakan operator penugasan yang akan menugaskan nilai balik fungsi ke dalam
variabel penampung yang dideklarasikan.
• Nama_fungsi: diisi dengan nama fungsi yang akan dipanggil. Pastikan bahwa fungsi
yang dipanggil telah dideklarasikan dan didefenisikan sebelumnya.
Agar dapat memahami sintaks di atas berikut kami berikan gambar ilustrasi
penggunaannya. Perhatikan Gambar 12.12.

Gambar 12.12. Contoh pemanggilan fungsi bernilai balik dan tanpa parameter.

Pada Gambar 12.12 diketahui bahwa dilakukan pemanggilan fungsi yang bernama
nilai. Pemanggilan fungsi tidak disertai pengiriman argumen, sebab fungsi yang dipanggil
tidak memiliki parameter. Pada saat fungsi dipanggil, maka fungsi tersbut akan “aktif” dan
mengeksekusi setiap perintah yang ada di dalam bloknya. Lalu kemudian nilai baliknya
dikirimkan kembali ke perintah pemanggil fungsi tersebut. Nilai yang diterima oleh perintah

225
pemanggil kemudian ditugaskan masuk ke dalam variabel x yang bertipe char, tipe yang
sama dengan nilai balik yang diterima.

2.d). Fungsi tanpa nilai balik dan tanpa parameter


Fungsi tanpa nilai balik dan tanpa parameter berarti
bahwa fungsi tersebut dapat dieksekusi cukup dengan
memanggil fungsinya saja tanpa perlu menerima argumen
tertentu. Selain itu fungsi tersebut tidak akan mengembalikan
nilai apapun kepada perintah pemanggilnya.
• Sintaks pendeklarasian fungsi tanpa nilai balik dan tanpa Simak penjelasan
Pak Dosen di sini!
parameter
Adapun sintaks pendeklarasian dan pendefenisian fungsi tanpa nilai balik dan tanpa
parameter adalah sebagai berikut:

void nama_fungsi ( ){
//Perintah yang akan diproses
}
Keterangan:
• void: merupakan keyword penanda bahwa fungsi tidak mengembalikan nilai
kepada perintah pemanggilnya.
• Nama_fungsi: diisi dengan nama fungsi yang diinginkan. Nama fungsi harus
mengikuti syarat pemberian nama identifier dan sebaiknya merepresentasikan
maksud atau tujuan dari fungsi itu sendiri.
• ( ): bagian daftar parameter yang dikosongkan.
• { }: blok ini diisi dengan perintah yang akan dieksekusi pada fungsi tersebut dan
diakhiri dengan perintah return nilai_balik;

Pada sintaks di atas dapat kita lihat bahwa karena fungsi tidak mengembalikan suatu
nilai maka fungsi tersebut diberi tipe void dan tanpa keyword return. Selain itu, karena fungsi
tidak memiliki parameter, maka bagian parameter fungsi dikosongkan. Agar dapat
memahami sintaks di atas dengan lebih baik, berikut kami berikan ilustrasi penggunaannya.
Perhatikan Gambar 12.13.

226
Gambar 12.13. Contoh pendeklarasian dan pendefenisian fungsi tanpa nilai balik dan
tanpa parameter.
Pada Gambar 12.13, dapat kita ketahui bahwa fungsi yang dideklarasikan bernama
cetak5kali() tanpa paramer dan tanpa nilai balik. Dengan kata lain, fungsi ini tidak menerima
input nilai dari argument perintah pemanggilnya. Selain itu, fungsi ini juga tidak
mengembalikan nilai tertentu ke perintah pemanggilnya. Hal tersebut ditandai dengan
penggunaan tipe void pada fungsi serta tidak adanya keyword return. Jika fungsi
cetak5kali() dipanggil maka fungsi akan aktif dan mengeksekusi perintah yang ada di bloknya.
Dalam hal ini, perintah yang ada di dalam blok fungsi cetak5kali() adalah penggunaan
struktur for untuk mencetak “Halo semua!” sebanyak 5 kali.

• Sintaks pemanggilan fungsi tanpa nilai balik dan tanpa parameter


Adapun sintaks pemanggilan fungsi tanpa nilai balik dan tanpa parameter adalah
sebagai berikut:

nama_fungsi ( );

Keterangan:
• Nama_fungsi: diisi dengan nama fungsi yang akan dipanggil. Pastikan bahwa fungsi
yang dipanggil telah dideklarasikan dan didefenisikan sebelumnya.
Agar dapat lebih memahami penggunaan fungsi di atas, berikut kami berikan contoh
penggunaannya dalam gambar ilustrasi. Perhatikan Gambar 12.14.

227
Pada Gambar 12.14 dapat diketahui bahwa dilakukan pemanggilan fungsi tanpa nilai
balik dan tanpa parameter yakni fungsi cetak5kali(). Saat perintah pemanggilan fungsi
cetak5kali() dipanggil maka fungsi yang berkaitan akan aktif dan mengeksekusi seluruh
perintah. Dalam hal ini, fungsi cetak5kali() akan mencetak string “Halo semua!” sebanyak 5
kali menggunakan struktur perulangan for. Setelah itu compiler akan kembali ke fungsi
utama tanpa adanya nilai balik yang dibawa ke perintah pemanggilnya.

Gambar 12.14. Contoh pemanggilan fungsi tanpa nilai balik dan tanpa parameter.

1. Contoh 1 – Program penerapan penggunaan fungsi built-in C++.


#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main(){
cout<<"==Menghitung Panjang Sisi Miring Segitiga Siku-
Simak penjelasan
siku=="<<endl; Pak Dosen di sini!
double tinggi, alas;
tinggi=11.0;
alas=60.0;

228
double pTinggi=pow(tinggi,2);
double pAlas=pow(alas,2);
double sMiring=sqrt(pTinggi+pAlas);

cout<<"Tinggi segitiga "<<tinggi<<" cm"<<endl;


cout<<"Alas segitiga "<<alas<<" cm"<<endl;

cout<<"Sisi miring adalah "<<setprecision(4)<<sMiring<<" cm"<<endl;


return 0;
}
Output:
==Menghitung Panjang Sisi Miring Segitiga Siku-siku==
Tinggi segitiga 11 cm
Alas segitiga 60 cm
Sisi miring adalah 61 cm

Berdasarkan contoh program di atas dapat diketahui bahwa pada saat program
dijalankan maka string "==Menghitung Panjang Sisi Miring Segitiga Siku-siku==" akan
ditampilkan. Lalu kemudian setelah itu dideklarasikan variabel tinggi dan alas yang bertipe
double, dimana variabel tinggi akan menampung nilai tinggi segitiga dan alas digunakan
untuk menampung nilai alas segitiga.
Selanjutnya berdasarkan rumus mencari sisi miring, terlebih dahulu nilai
pemangkatan tinggi dicari melalui perintah pow(tinggi,2). Begitupun dengan nilai
pemangkatan alas dicari menggunakan perintah pow(alas,2). Lalu kemudian setelah nilai
nilai tersebut diperoleh, kedua nilai tersebut dijumlahkan dan hasilnya diakarkan melalui
perintah sqrt(pTinggi+pAlas). Nilai hasil pengakarn tersebut merupakan nilai panjang sisi
miring yang dicari dan ditampilkan melalui perintah cout.
Adapun fungsi pow() dan sqrt() yang telah digunakan di atas merupakan fungsi built-
in yang tersimpan pada file header cmath. Oleh karena itu agar dapat menggunakan kedua
fungsi tersebut, file header cmath diincludekan melalui perintah #include <cmath>. Selain
itu untuk menampilkan output dengan jumlah digit tertentu digunakan perintah
setprecision() dengan file header yang diincludekan adalah iomanip.

229
2. Contoh 2 – Program mencari luas persegi dan volume baluk dengan fungsi buatan.
#include <iostream>
using namespace std;

float luasppersegip(float panjang, float lebar){


float luas=panjang * lebar;
return luas;
}
Simak penjelasan
Pak Dosen di sini!
float volumebalok(float panjang, float lebar, float tinggi){
float volume = luasppersegip(panjang, lebar) * tinggi;
return volume;
}

int main(){
cout<<"==Program menghitung luas persegi Panjang dan volume balok=="<<endl;
float lBalok, pBalok, tBalok, pPersegip, lPersegip;
lBalok=2.0f;
pBalok=4.0f;
tBalok=2.0f;
pPersegip=2.0f;
lPersegip=6.0f;
float vBalok = volumebalok(pBalok, lBalok, tBalok);
float lsPersegip = luasppersegip(pPersegip, lPersegip);
cout<<"Volume balok adalah "<<vBalok<<" cm"<<endl;
cout<<"Luas persegi panjang adalah "<<lsPersegip<<" cm"<<endl;
return 0;
}
Output:
==Program menghitung luas persegi Panjang dan volume balok==
Volume balok adalah 16 cm
Luas persegi panjang adalah 12 cm

230
Berdasarkan program di atas dapat diketahui bahwa terdapat 2 fungsi buatan (user-
defined function) yang telah dideklarasikan dan didefenisikan di atas fungsi main(). Kedua
fungsi tersebut adalah fungsi luaspersegip() dan fungsi volumebalok(). Kedua fungsi tersebut
merupakan fungsi bernilai balik ditandai dengan penggunaan tipe data dasar pada
pendeklarasian fungsi, penggunaan return pada badan fungsi. Keduanya juga merupakan
fungsi berparameter, terlihat dari adanya parameter pada pendeklarasian fungsinya.
Pada fungsi luaspersegip(), diketahui bahwa fungsi tersebut bertipe float karena
variabel yang nilainya akan dikembalikan, yakni luas, juga bertipe float. Pada fungsi ini
terdapat dua parameter yaitu variabel lebar dan tinggi. Variabel lebar, tinggi, dan luas
bertipe lokal karena di deklarasikan di dalam fungsi. Parameter ini nantinya akan
mendapatkan nilai dari argument yang dikirimkan oleh perintah yang memanggilnya. Proses
yang terjadi di dalam fungsi ini berupa perkalian kedua nilai parameter yang kemudian
disimpan di variabel luas.
Pada fungsi volumebalok(), diketahui bahwa fungsi tersebut bertipe float karena
variabel yang nilainya akan dikembalikan, yakni volume, juga bertipe float. Pada fungsi ini
terdapat tiga parameter yaitu variabel panjang, lebar dan tinggi. Variabel panjang, lebar,
tinggi, dan volume bertipe lokal karena di deklarasikan di dalam fungsi. Parameter pada
fungsi ini ini nantinya akan mendapatkan nilai dari argumen yang dikirimkan oleh perintah
yang memanggilnya. Proses yang terjadi di dalam fungsi ini berupa perkalian antara tinggi
dan nilai balik dari pemanggilan fungsi luaspersegip(). Pada fungsi ini terjadi pemanggilan
fungsi di dalam fungsi.
Adapun proses yang terjadi pada program ini yaitu pertama-tama dideklarasikan
variabel lBalok, pBalok, tBalok, pPersegip, lPersegip yang bertipe float. Selanjutnya variabel
variabel tersebut diisi dengan nilai tertentu. Selanjtunya fungsi mencari volume balok yaitu
volumebalok() dipanggil dengan mengirimkan argument isi variabel pBalok, lBalok, dan
tBalok. Fungsi volumebalok() selanjutnya akan menerima argument ini melalui
parameternya dan mengksekusi perintah didalm bloknya. Nilai balik dari fungsi ini kemudian
dikembalikan ke perintah pemanggilnya dan disimpan pada variabel vBalok.
Kemudian fungsi luaspersegip() dipanggil untuk mencari nilai luas suatu persegi
panjang berdasarkan nilai argument yang diberikan. Nilai balik dari pemanggilan fungsi ini
kemudian disimpan pada variabel lsPersegip. Terakhir, nilai kedua variabel tersebut
ditampilkan melalui perintah cout.

231
3. Contoh 3 – Program mencari luas limas dengan built-in dan user defined function.
#include <iostream>
#include <cmath>
using namespace std;

float luasalas(float sisi);


float luassisi(float sisi, float tinggi);
void luaslimas(float sisi, float tinggi);
Simak penjelasan
Pak Dosen di sini!
int main(){
cout<<"==Menghitung Luas Permuakaan Limas Persegi=="<<endl;
float tinggi, sisi;
tinggi=25;
sisi=20;

luaslimas(sisi, tinggi);

cout<<"Selesai!"<<endl;
return 0;
}

float luasalas(float sisi){


float lAlas=pow(sisi,2);
return lAlas;
};

float luassisi(float sisi, float tinggi){


float lSisi = 4 * ((sisi*tinggi)/2);
return lSisi;
};

void luaslimas(float sisi, float tinggi){


float luasPermukaan=luasalas(sisi) +luassisi(sisi, tinggi);

232
cout<<"Luas limas persegi adalah "<<luasPermukaan<<endl;
};
Output:
==Menghitung Luas Permuakaan Limas Persegi==
Luas limas persegi adalah 1400
Selesai!

Dari program di atas, dapat diketahui bahwa telah dideklarasikan fungsi luasalas(),
luassisi(), dan luaslimas(). Ketiga fungsi buatan ini didefenisikan di bawah fungsi main(),
sehingga ketiga fungsi tersebut dibuatkan prototypenya (pendeklarasiannya) di atas fungsi
main(). Hal tersebut dilakukan agar ketika fungsi tersebut dipanggil di dalam fungsi main()
atau fungsi lainnya, compiler dapat mengenalinya.
Pada fungsi luasalas() terdapat sebuah parameter bernama sisi. Fungsi ini bertujuan
untuk mencari luas alas limas persegi dengan memangkatduakan nilai parameter/variabel
sisi menggunakan pemanggilan fungsi built-in pemangkatan pow(). Karena fungsi pow()
merupakan fungsi built in maka kita perlu meng”include”kan file headernya yaitu cmath agar
fungsi pow() dapat bekerja. Fungsi luasalas() akan mengembalikan nilai balik bertipe float
dimana nilai yang dikembalikan adalah nilai yang berada pada variabel lAlas ditandai dengan
keyword return didepan variabel tersebut.
Pada fungsi luassisi(), terdapat dua buah parameter yakni variabel sisi dan tinggi
yang bertipe float. Fungsi ini memiliki nilai balik ditandai dengan tipe data fungsi yang bukan
void serta danya penggunaan keyword return pada akhir badan fungsi. Adapun nilai yang
dikembalikan adalah nilai yang berada di dalam variabel lsisi.
Pada fungsi luaslimas(), terdapat dua buah parameter yaitu sisi dan tinggi yang
bertipe float. Fungsi ini merupakan fungsi tanpa nilai balik. Hal itu ditandai dengan
penggunaan void pada bagian tipe fungsi dan tidak adanya keyword return pada badan
fungsi. Output fungsi ini langsung ditampilkan melalui perintah cout. Adapun proses yang
terjadi di dalam fungsi ini adalah penjumlahan hasil pemanggilan fungsi luasalas() dan
luassisi(). Hasil penjumlahn tersebut disimpan di variabel luasPermukaan dan ditampilkan
sebagai output.
Adapun proses yang terjadi pada keseluruhan program yaitu pertama-tama pada
fungsi main(), jika program dijalankan akan menampilkan string "==Menghitung Luas
Permuakaan Limas Persegi==" lalu kemudian dideklarasikan dua fariabel bertipe double

233
yaitu tinggi dan sisi. Variabel tinggi kemudian diisi dengan nilai 25.0 dan sisi 20.0. Selanjutnya
fungsi luaslimas() dipanggil. Pada pemanggilan fungsi luaslimas() dikirimkan 2 nilai argumen
yaitu nilai yang tersimpan pada variabel sisi dan tinggi. Nilai argumen sisi kemudian diterima
oleh parameter sisi pada fungsi luaslimas() dan nilai argumen tinggi diterima oleh parameter
tinggi.
Pada fungsi luaslimas(), nilai luas permukaan diperoleh dari penjumlahan antara
nilai balik pemanggilan fungsi luasalas() dan fungsi luassisi(). Pemanggilan fungsi luasalas()
dilakukan dengan mengirimkan argumen sisi. Argumen sisi diterima oleh parameter sisi
pada fungsi luasalas(). Di dalam fungsi luasalas() nilai lAlas diperoleh dari pemangkatduaan
nilai sisi menggunakan fungsi built-in pow(). Selanjutnya, pemanggilan fungsi luassisi()
dengan mengirimkan argumen alas dan tinggi. Nilai balik dari pemanggilan kedua fungsi
inilah yang dijumlahkan lalu kemudian diperolehlah nilai luas permukaan limas.

1. Apa yang dimaksud dengan built-in function?

2. Apa yang dimaksud dengan user-defined function?

3. Apa yang dimaksud dengan file header?

4. Mengapa file header harus diincludekan saat fungsi yang dideklarasikan didalmnya
digunakan? Jelaskan!

5. Berdasarkan contoh program 1 pada bagian B. Apa terjadi error jika perintah #include
<cmath> dihapus? Jika ya, jelaskan mengapa hal tersebut bisa terjadi

234
6. Modifikasilah program pada contoh 1 di atas. Jadikan setiap fungsi built-in yang
digunakan menjadi fungsi buatan (user-defined function) bernilai balik dan
berparameter.

235
Output:

a. Berdasarkan program yang telah kalian kerjakan di atas, pada setiap fungsi yang telah
anda buat, ada berapa parameter pada setiap fungsi tersebut?

b. Berdasarkan program yang telah kalian kerjakan di atas, pada setiap fungsi yang telah
anda buat, apakah tipedata nilai balik dari fungsi tersebut? Mengapa anda menggunakan
tipe data tersebut?

c. Berdasarkan program yang telah kalian kerjakan di atas, mengapa variabel I diincrement
melalui perintah i++? Jelaskan hasil analisis anda!

7. Berdasarkan contoh program 2 di atas, pindahkan seluruh fungsi di atas fungsi main() ke
bawah fungsi main(). Kemudian jalankan programnya, mengapa eror terjadi saat
program dijalankan? Jelaskan hasil analisismu!

236
8. Berdasarkan contoh program 2 di atas, ubahlah seluruh fungsi tambahan yang ada
menjadi fungsi tanpa nilai balik namun output yang diberikan sama dengan oytput
sebelum anda memodifikasinya. Tuliskan perubahan fungsi yang anda buat di sini!

1. Buatlah program untuk menghitung masing-masing volume bangun ruang berikut:


• Tabung
• Balok
• Kubus
• Limas Persegi
• Kerucut
2. Gabungkan program yang telah anda buat padasoal nomor 1. Adapun program yang
anda gabungkan tersebut harus memenuhi persyaratan berikut:
• Pengguna dapat memiliki jenis bangun ruang apa yang akan dicari luasnya
• Pengguna menginputkan sendiri data yang dibutuhkan untuk mengetahui
volume bangun ruang yang dipilihnya
• Setiap proses perhitngan volume bangun ruang dilakukan dalam suatu fungsi
khusus
• Data yang diinput serta nilai volume ditampilkan ke layar.

237
238
DAFTAR PUSTAKA

Cplusplus. C++ Language. Diakses pada 18 Agustus 2020, dari


http://www.cplusplus.com/doc/tutorial/.
Cppreference. C++ Reference. Diakses pada 18 Agustus 2020, dari
https://en.cppreference.com/w/.
GeeksforGeeks. C++ Programming Language. Diakses pada 18 Agustus 2020, dari
https://www.geeksforgeeks.org/c-plus-plus/.
LearnCpp. Tutorials to Help You Master C++ and Object-Oriented Programming. Diakses pada
18 Agustus 2020, dari https://www.learncpp.com/.
Levitin, A. 2007. Introduction to The Design and Analysis of Algorithm: Second Edition. United
States of America: Pearson Education.
Munir, R. 2011. Algoritma & Pemrograman Dalam Bahasa Pascal dan C: Edisi Revisi. Bandung:
Informatika.
Munir, R. 2005. Algoritma dan Pemrograman dalam bahasa Pascal dan C: Edisi ke-3. Bandung:
Informatika.
Ngoen, T. S. 2009. Algoritma dan Struktur Data Bahasa C. Jakarta: Mitra Wacana Media.
PetaniKode. C++. Diakses pada 18 Agustus 2020, dari
https://www.petanikode.com/topik/c++/.
Programiz. Learn C++ Programming. Diakses pada 18 Agustus 2020, dari
https://www.programiz.com/cpp-programming.
Raharjo, B. 2014. Pemrograman C++ Edisi Revisi: Mudah dan Cepat Menjadi Master
C++.Bandung: Informatika.
Shalahuddin, M., & Rosa, A. S. 2007. Belajar Pemrograman dengan Bahasa C++ dan Java: Dari
Nol Menjadi Andal. Bandung: Informatika.
Sianipar, R. H. 2012. Pemrograman C++: Dasar Pemrograman Berorientasi Objek. Yogyakarta:
Andi.
Sianipar, R.H., Wiryajayati, K., & Mangiri, H.S. 2013. C++ untuk Programmer. Bandung:
Informatika.
Tutorialspoint. Learn C++ Programming Language. Diakses pada 18 Agustus 2020, dari
https://www.tutorialspoint.com/cplusplus/index.htm.

239
W3schools. C++ Tutorial. Diakses pada 18 Agustus 2020, dari
https://www.w3schools.com/cpp/.

240
241

Anda mungkin juga menyukai