bagian i elemen dasar c++

advertisement
BAGIAN I
ELEMEN DASAR C++
xxn
BAB 1
PENGENALAN C++
1.1
Pendahuluan
Pada mulanya bahasa komputer digunakan untuk membantu dalam
melakukan perhitungan-perhitungan telemetri. Ketika itu, bahasa
yang digunakan masih primitif sekali karena masih berupa bahasa
mesin yang hanya mengenal angka 1 dan 0. Selanjutnya bahasa
mesin tersebut disederhzanakan menjadi bahasa yang agak
dipahami dengan menghadirkan statemen-statemen khusus yang
disebut dengan istilah mnemonic seperti ADD, MOV, JMP dan yang
lainnya. Bahasa ini disebut dengan bahasa assembly yang masih
termasuk ke dalam bahasa tingkat rendah (low level language).
Tahun 1969, laboratorium Bell AT&T di Muray Hill, New Jersey
menggunakan bahasa assembly ini untuk mengembangkan sistem
operasi UNIX. Maksudnya adalah untuk membuat sistem operasi
yang dapat bersifat 'programmer-friendly'. Setelah UNIX berjalan,
Ken Thompson, seorang pengembang sistem di laboratorium
tersebut mengembangkan bahasa baru dengan nama bahasa B.
Huruf B ini diambil dari BCPL. Bahasa B ini kemudian digunakan
untuk menulis ulang atau merevisi sistem operasi UNIX. Oleh
karena bahasa B ini masih bersifat interpret dan lambat, maka pada
tahun 1971, sistem operasi UNIX kemudian ditulis ulang dengan
menggunakan bahasa C, yaitu bahasa pemrograman yang
Bab 1: PengenaJan C-*
dikembangkan oleh Dennis Ritchie, seorang pengembang sistem di
laboratorium yang sama.
Sampai sekarang bahasa C masih digunakan untuk melakukan
pengembangan-pengembangan program
dan
sistem-sistem
operasi, diantaranya sistem operasi Windows. Alas an itulah yang
menjadikan bahasa C sangat populer di dunia pemrograman,
khususnya untuk industri perangkat lunak. Namun sayangnya
bahasa C merupakan bahasa yang masih tergolong susah untuk
dipelajari karena masih bersifat prosedural murni. Untuk
membentuk satu objek, kita harus melakukan banyak sekali
penulisan kode. Hal ini tentu dapat dikatakan sebagai sebuah
kelemahan. Untuk mengatasi masalah ini, pada tahun 1983, seorang
doktor bemama Bjarne Stroustrup yang juga bekerja di laboratorium
yang sama menciptakan bahasa baru yaitu bahasa C + + yang
merupakan bahasa hibryd dari bahasa C.
Bahasa C + + didasarkan atas bahasa C sehingga kita dapat
melakukan kompilasi program-program yang ditulis dalam bahasa
C dengan menggunakan kompiler C + + . Keistimewaan dari bahasa
C + + adalah karena bahasa ini mendukung pemrograman berarah
objek atau yang lebih sering dikenal dengan istilah Object Oriented
Programming (OOP).
1.2
C dan C++
Seperti telah dikemukakan sebelumnya bahwa kedua bahasa ini (C
dan C + + ) merupakan bahasa yang sangat populer dalam dunia
pengembangan perangkat lunak. Kedua bahasa ini digolongkan ke
dalam bahasa tingkat menengah (middle level language). Sisi lain,
yaitu di sisi akademis, seorang profesor yang bernama Niklaus
Wirth di Politeknik Zurich, Swiss, mengembangkan bahasa tingkat
tinggi (high level language) yang disebut dengan bahasa Pascal
untuk mengajarkan algoritma kepada para mahasiswanya. Maka
dari itu, di lingkungan akademis bahasa Pascal lebih populer
dibandingkan bahasa C atau C+ + . Sebagai bahan pengetahuan
bagi Anda, berikut ini pengelompokan tingkatan dari bahasa
pemrograman.
Pemrograman C++
Bahasa Tingkat Tinggi
Ada
Modula-2
Pascal
COBOL
FORTRAN
BASIC
Bahasa Tingkat Menengah
Java
C++
C
FORTH
Bahasa Tingkat Rendah
Macro-Assembler
Assembler
Dari tabel tersebut dapat kita lihat bahwa bahasa pemrograman
yang terdapat pada bagian paling atas merupakan bahasa
pemrograman yang paling mudah untuk dipahami. Sebagai contoh,
C adalah bahasa yang lebih sulit di bandingkan C + + dan C + +
adalah bahasa yang lebih sulit dibandingkan dengan bahasa Java,
dan seterusnya.
Semenjak dikembangkan, bahasa C dan C++ banyak digunakan
untuk mengembangkan program-program aplikasi di bidang
telekomunikasi, finansial atau bisnis dan sistem operasi. Bahkan
sampai saat ini, pembuatan program-program untuk permainan
komputer (game) sebagian besar masih menggunakan bahasa
C/C++.
Menurut Bjarne Stroustrup (pencipta C + + ) , alasan mengapa C
diambil sebagai bahasa dasar dari pembentukan bahasa C + +
adalah sebagai berikut:
•
Dapat dihubungkan dengan bahasa tingkat rendah
•
Berjalan di manapun dan untuk masalah apapun
•
Berjalan mulus dalam sistem operasi UNIX
Bab 1: Pengenalan O
1.3
Konsep Kompilasi dan Eksekusi Program
kode program (source code)
1.3.3
••
preprosesor
Assembler
Assembler menerima keluaran dari kompiler C + + dan akan
membuat sebuah kode objek. Jika dalam kode program kita tidak
menggunakan fungsi-fungsi yang terdapat pada library lain, maka
kode objek ini akan langsung dieksekusi menjadi file EXE.
i•
kompiler
kode assembly
Preprocessor
Mula-mula kode program
akan dimasukkan ke
bagian preprosesor, yaitu
yang diawali dengan
tanda # (pound) dan
menghasilkan file yang
akan
dilewatkan
ke
dalam kompiler. Beberapa preprosesor tersebut diantaranya adalah
sebagai berikut.
•
#include
•
# define
•
#ifdef
•
dan Iain-lain
Kompiler C++
Kompiler akan menerjemahkan kode program yang telah dilewatkan
oleh preprosesor ke dalam bahasa assembly.
Sebelum
melangkah
lebih
jauh
dengan
pembentukan program
C + + , maka sebaiknya
kita mengetahui terlebih
dahulu
konsep
dari
sebuah kompilasi dan
eksekusi program di
dalam C/C+ + . Berikut
ini gambar yang mengilustrasikan proses kompilasi dan eksekusi program di dalam C/C + + .
1.3.1
1.3.2
••
1.3.4
Link Editor
Bagian ini dikerjakan jika kode program yang kita buat
menggunakan fungsi-fungsi luar yang disimpan dalam suatu library
lain. Link Editor akan mengkombinasikan kode objek dan library
yang ada untuk menjadikan sebuah file EXE.
assembler
kode objek
library
;•
link editor
1
F
File EXE
Pembahasan lebih lanjut mengenai preprosesor ini dapat Anda lihat
pada bab preprocessor dj'recnVe.
Pemrograman C++
1.4
Kerangka Program C++
Setiap program yang ditulis dalam bahasa C/C + + pasti akan
memiliki sebuah fungsi utama dengan nama main ( ) . Selanjutnya
jika kita ingin mendefinisikan fungsi-fungsi lain maka kita akan
melakukannya di luar fungsi utama tersebut. Dalam C+ + , kode
yang dibaca adalah kode-kode yang terdapat pada fungsi utama.
Jika ternyata terdapat pemanggilan fungsi lain, maka program akan
mencari nama fungsi tersebut untuk dieksekusi. Setelah
mengeksekusi fungsi tersebut, maka program akan kembali ke
dalam fungsi utama, begitu seterusnya.
Sebagai bahan perbandingan, di bawah ini akan diberikan
kerangka umum yang ditulis dalam bahasa C dan C+ + . Maksudnya
agar Anda dapat membedakan mana yang harus dilakukan dan
mana yang sebaiknya ditinggalkan dalam membuat program di
dalam C+ + . Berikut ini kerangka umum dari program yang ditulis
dalam bahasa C,
Bab 1: Pengenalan
^include <stdio.h>
Adapun kerangka lengkap dari program yang ditulis dalam C+ +
adalah seperti terlihat di bawah ini.
^include <iostream.h>
// Prototype fungsi
tipe_data nama_fungsil{parameterl, parameter2/
tipe_data nama_fungsi2(parameter!, parameter2,
// Prototype fungsi
tipe_data nama_fungsil{parameter!, parameter2,
tipe_data nama_fungsi2(parameterl, parameter2,
// Fungsi utama
int main(void) {
Statemen_yang_akan_di lakukan;
// Fungsi utama
int main() t
Statemen_yang_akan_dilakukan;
return 0;
return 0;
// Implementasi fungsi
tipe_data nama_fungsil (parameterl, parameter2,
Statemen_yang,_akan__dilakukan ;
// Implementasi fungsi
tipe_data nama_fungsil{parameterl, parameter2, ...) {
Statemen_yang_akan_dilakukan;
tipe_data nama_£ungsi2 (parameterl, parameter2,
S t a t emen_y ang_akan_di 1 akukan ;
tipe__data nama_fungsi2{parameterl, parameter2,
Statemen_yang_akan_dilakukan;
Perhatikan kata kunci void di atas, di dalam bahasa C itu masih
banyak digunakan, namun di dalam program C+ + sebaiknya
hindari penggunaannya, karena hal itu merupakan redundan.
Sedangkan nilai 0 pada statemen return 0 di atas berfungsi
untuk mengembalikan nilai ke sistem operasi. Prototype di atas
bersifat opsional, artinya kita juga diizinkan untuk mendefinisikan
fungsi-fungsi sebelum menulis fungsi utama tanpa menuliskan
prototype. Selain bentuk di atas kita juga diizinkan untuk
menuliskan fungsi utama seperti sintaks di bawah ini.
Perlu sekali untuk diperhatikan bahwa file header yang digunakan
di dalam bahasa C + + untuk proses input/output (I/O) standar
adalah iostream.h, sedangkan di dalam bahasa C file header yang
digunakan untuk keperluan yang sama adalah stdio.h.
Untuk lebih memahaminya, berikut ini dituliskan dua buah program
sederhana yang masing-masing ditulis di dalam bahasa C dan
C+ + .
void main ( } {
, Statemen_yang_akan_di lakukan;
1.4.1
Sintaks di atas berlaku juga untuk bahasa C+ + . Namun di dalam
buku ini, sintaks yang akan digunakan untuk menuliskan fungsi
utama adalah sebagai berikut.
int m a i n ( ) {
Staternen_yang_akan_dilakukan;
Program yang Ditulis dalam Bahasa C
Kode Program 1-1
^include <stdio.h>
int main(void) (
int. X;
return 0;=
/* Menampilkan teks untuk informasi */
printf{"Masukkan sebuah bilangan bulat : ");
/* Membaca nilai dari keyboard dan menyimpannya
Pemrograrnan O+
Bab 1: Pengenalan C++
ke dalam variabel X */
scanf ("%d", &X) ;
1.5
/* Menampilkan nilai yang telah dimasukkan */
printf ( "Bilangan yang telah Anda masukkan adalah
File header (file dengan ekstensi .h) adalah file yang berisi fungsifungsi dan telah dikompilasi sebelumnya. Apabila kita akan
menggunakan suatu file header tertentu, maka kita akan
mendaftarkannya melalui directive #include. Sebagai contoh, di
dalam kode program, kita akan menggunakan cout dan cin.
Sedangkan kita tahu bahwa keduanya terdapat dalam file header
iostream. h, maka kita akan melakukan pendaftaran dalam
program kita melalui sintaks berikut. ^^^^^^^^^^^^^^^^^^^
return 0;
Contoh hasil yang akan diberikan dari program di atas adalah
sebagai berikut :
Masukkan sebuah bilangan bulat: 10
Bilangan yang telah Anda masukkan adalah 10
1.4.2
File .H (Header File)
^include <iostream.h>
Program yang ditulis dalam bahasa C++
Kode Program 1-2
1.6
C++ Klasik dan C++ Modern
Pada bagian ini kita akan membahas sekilas tentang perbedaan
yang terdapat dalam kompiler C++ lama (klasik) dengan C+ +
modern (C + + yang telah memenuhi standar ANSI/ISO). Perbedaan
yang paling tampak adalah pada kompiler C + + lama masih
menggunakan namespace global, sedangkan pada C + + modern
yang digunakan adalah namespace std. Hal inilah yang
menyebabkan terdapatnya sedikit perbedaan penulisan antara
C++ lama dan standar. Untuk lebih memahaminya, berikut ini
kerangka umum penulisan program yang digunakan dalam C + +
lama dan C + + standar.
^include <iostream.h>
int main() {
int X;
// Menampilkan teks untuk informasi
cout«"Masukkan sebuah bilangan bulat : " ,// Mewbaca nilai dari keyboard dan menyimpannya
// ke dalam variabel X
cin»X; =
// Menampilkan nilai yang telah dimasukkan
cout«"Bilangan yang telah Anda masukkan adalah *«X;
1.6.1
return 0;
Pada Kompiler C++ Lama
tinclude <iostream.h>
Contoh hasil yang akan diberikan dari program di atas adalah
sebagai berikut:
int
main( } {
return 0;
Masukkan sebuah bilangan bulat: 10
Bilangan yang telah Anda masukkan adalah 10
Pemrograman
Bab 1: Pengenalan
1.6.2
Pada Kompiler C++ Standar
^^
BAB 2
KOMENTAR, IDENTIFIER
DAN TIPE DATA
^include <iostream >
using namespace atd;
int rnain() t
return 0;
I
Seperti yang kita lihat bahwa pada C++ standar penulisan file
header iostream sudah tidak diikuti lagi dengan ekstensi .h.
Dalam buku ini kita akan selalu menggunakan bentuk kedua, yaitu
bentuk yang telah memenuhi standar penulisan kode untuk C + +
standar. Namun perlu diperhatikan bahwa untuk menuliskan kode
menggunakan bentuk kedua, diperlukan pula kompiler C + + yang
telah mendukung semua fitur yang terdapat dalam C + + Standar.
Maka dari itu, buku ini menyertakan CD yang berisi kompiler
C/C++ yang dilengkapi dengan IDE (Integrated Development
Environment) yang mudah untuk digunakan. Adapun cara installasi
dari kompiler tersebut dapat Anda lihat pada Lampiran F - Instalasi
dan Penggunaan MinGW Developer Studio.
2.1
Pendahuluan
Pada setiap pemrograman, kita tidak dapat terlepas dari
penggunaan tipe data dan pengenal atau pengidentifikasi
(identifier). Kehadiran dari dua elemen ini sangatlah penting,
walaupun sebenarnya untuk program yang sangat sederhana
terkadang kita tidak perlu menggunakan identifier. Sebagai contoh
untuk program yang menampilkan sebuah teks dan bilangan,
misalnya seperti program di bawah ini.
Kode Program 2-1
ftinclude <iostrearn>
using namespace std;
int m a i n ( )
. cout«"Teks ini digunakan sebagai contoh"«endl;
cout«2+5;
return 0;
}
Statemen cout di atas berfungsi untuk menampilkan keluaran
(output) ke layar monitor. Statemen ini hanya akan dikenali jika kita
mendaftarkan library iostream yang tersimpan dalam namespace
Pemrograman
Bab 2: Komentar, Identifier, dan Tipe Data
std. Hal ini akan kita pelajari lebih jauh pada bab Input/Output
(I/O). Sedangkan endl berfungsi untuk memindahkan cursor ke
baris baru. Dalam bab ini kita hanya akan membahas mengenai
beberapa elemen-elemen dasar yang diperlukan dalam
pemrograman C + + , seperti: komentar, pengenal (identifier) dan
tipe data.
2.2
Komentar
Dalam proses pengembangan sebuah program, tentunya kita
disibukkan dengan penulisan sintaks-sintaks yang begitu banyak
dan 'tampak' rumit sehingga akan sulit untuk dipahami oleh orang
lain. Untuk menangani masalah ini, sebagai programmer kita
sebaiknya menambahkan komentar untuk menjelaskan algoritma
dan keterangan-keterangan yang diperlukan dalam program. Hal ini
akan membantu dalam proses pemeliharaan (maintenance) dari
program yang telah kita buat.
Komentar program didefmisikan sebagai bagian dari sintaks
program yang tidak ikut dibaca pada saat proses kompilasi. Dengan
kata lain, komentar tidak akan mempengaruhi jalannya program.
Dalam bahasa C+ + , komentar dibagi menjadi dua jenis yaitu
komentar yang hanya terdiri dari satu baris dan komentar yang
terdiri dari beberapa baris. Berikut ini penjelasan dari keduanya.
2.2.1
// ini adalah komentar
untuk satu baris
penulisan di atas akan menyebabkan kesalahan, karena teks
"untuk satu baris" tidak akan dianggap sebagai komentar
melainkan akan dianggap sebagai tiga buah identifier yang tidak
dikenali.
Namun sebaliknya, kita juga hams hati-hati dalam menggunakan
tanda ini. Ingat, tanda ini tidak dapat digunakan untuk komentar
yang bersifat sisipan. Misalnya pada potongan sintaks program di
bawah ini.
int // Mendeklarasikan variabel berupa bilangan X;
Penulisan seperti ini akan menyebabkan kesalahan karena X; akan
dianggap sebagai komentar dan tidak berperan sebagai identifier.
Seharusnya kita menuliskan komentar tersebut seperti pada sintaks
berikut:
int X;
2.2.2
// Mendeklarasikan variabel berupa bilangan
Menggunakan Tanda /*...*/
Berbeda dengan tanda //, tanda ini dapat digunakan untuk
menuliskan komentar yang banyaknya satu baris atau lebih.
Komentar dimulai dari tanda /* sampai ditemukan tanda */. Contoh
penggunaannya dapat dilihat di bawah ini. ^^^^^
Ini adalah komentar,yang banyaknya satu baris */
Ini adalah komentar panJang
yang banyaknya
lebih dari satu baris */
Menggunakan Tanda //
Tanda ini digunakan untuk menuliskan komentar yang banyaknya
hanya satu baris. Gaya penulisan komentar seperti ini hanya
terdapat pada C + + , sedangkan pada bahasa C tidak akan dikenali.
Jika kita menggunakan tanda ini untuk menuliskan komentar yang
lebih dari satu baris, maka teks di belakang tanda // tetap menjadi
komentar. Namun, teks yang terdapat pada baris selanjutnya akan
tetap dibaca oleh kompiler sehingga akan menyebabkan terjadinya
kesalahan (error) pada saat proses kompilasi program. Berikut ini
adalah contoh penggunaannya.
// Ini adalah komentar untuk satu baris
Namun perhatikan, bagaimana jika komentar di atas dituliskan
seperti berikut:
Pemrograman
Dengan menggunakan tanda ini, kita juga dapat menuliskan
komentar yang bersifat sisipan. Misalnya pada penulisan sintaks di
bawah ini.
int /* file ini digunakan untuk proses I/O pada .C++ */ X;
Namun perlu diperhatikan bahwa kita tidak dapat melakukan
komentar yang beruntun (nested comment), misalnya jika kita
menuliskan berikut:
/* ini adalah /* contoh komentar */ beruntun */
Jika kita amati penulisan komentar di atas, secara logika mungkin
bisa dikatakan 'benar', namun jika ditinjau dari sisi program, hal ini
jelas 'salah'. Alasannya adalah karena tanda */ yang ditemukan
pertama kali akan dianggap sebagai penutup tanda /* pertama.
Bab 2: Komentar, Identifier, dan Tipe Data
Dengan alasan ini, maka untuk kasus di atas yang dianggap
sebagai komentar adalah teks "Ini adalah /* contoh
komentar", sedangkan teks yang terdapat setelah tanda */
pertama, yaitu teks "beruntun */" akan tetap dianggap sebagai
bagian program dan akan dibaca pada saat proses kompilasi. Hal
ini tentu akan menyebabkan kesalahan, sehingga Anda harus
berhati-hati dalam menggunakan komentar sisipan.
2.3
Identifier
Identifier adalah suatu pengenal atau pengidentifikasi yang kita
deklarasikan agar kompiler dapat mengenalinya. Identifier sendiri
dapat berupa nama variabel, konstanta, fungsi, kelas, template
maupun namespace. Namun dalam hal ini kita hanya akan
membahas identifier yang berperan sebagai variabel dan konstanta
saja, sedangkan bentuk identifier lainnya akan kita bahas secara
khusus dalam bab tersendiri.
Identifier yang berperan sebagai variabel dan konstanta berfungsi
untuk menampung sebuah nilai yang digunakan dalam program.
Indentifikasi ini dilakukan untuk mempermudah proses penanganan
data atau nilai, misalnya untuk memasukkan dan menampilkan
nilai. Sebagai gambaran, di bawah ini adalah sebuah contoh
program yang menggunakan dua buah identifier di dalamnya.
kunci (keyboard). Dalam C + + , proses penyimpanan nilai seperti ini
dinyatakan dengan statemen cin. Berbeda dengan statemen cout
yang menggunakan operator «, pada statemen cin operator
yang digunakan adalah operator ». Dalam menentukan atau
membuat identifer dalam program, kita harus memperhatikan halhal berikut:
»
Karena bahasa C + + bersifat case sensitive, maka C + + juga
akan membedakan variabel yang ditulis dengan huruf kapital
dan huruf kecil. Misalnya variabel A tentunya akan berbeda
dengan variabel a.
•
Identifier tidak boleh berupa angka atau diawali dengan
karakter yang berupa angka. Contoh :
long 1000;
long 2X;
long X2;
•
•
return 0 ?
Pada program di atas kita mempunyai dua buah identifier, yaitu
Teks dan X. Pada saat program dijalankan, identifier tersebut akan
digunakan untuk menyimpan nilai yang dimasukkan dari papan
Pemrograman
identifier berupa angka
identifier diawali
berupa angka
identifier tidak diawali
Identifier tidak boleh mengandung spasi. Contoh :
int Bilangan__Bulat;
int BilanganBulat;
int _BilanganBulat;
//
//
//
//
//
SALAH, identifier mengandung
spasi
BENAR
BENAR
BENAR
Identifier tidak boleh mengunakan karakter-karakter simbol
(#, @, ?, !,$, dll). Contoh:
long I s a t u ;
long dua@;
'long tittga;
•
int main ( )
t
char Teks [20] ,int X;
cout«"Masukkan sebuah kata
: "; cin»Teks;
cout«"Masukkan sebuah angka
: "; cin»X;
cout«Teks«endl;
// bisa ditulis dengan cout«X«'\n'
cout«X;
SALAH karena
SALAH karena
oleh karakter
BENAR karena
oleh angka
int Bilangan Bulat;
Kode Program 2-2
^include <iostream>
using namespace std;
//
//
//
//
//
// SALAH
/ / SALAH
// SALAH
Identifier tidak boleh menggunakan kata kunci (.keyword)
yang terdapat pada C+ + . Contoh :
long break;
// SALAH karena menggunakan kata kunci
long return;
// break
// SALAH karena menggunakan kata kunci
// return
Nama
identifier
sebaiknya
disesuaikan
dengan
kebutuhannya, artinya jangan sampai orang lain bingung
hanya karena salah dalam penamaan identifier.
Sebisa mungkin, hindarilah penggunaan nama identifier yang
sama dengan identifier yang digunakan oleh C+ + .
Berdasarkan jenisnya, identifier sendiri dibagi ke dalam dua bagian
yaitu konstanta dan variabel. Adapun penjelasan lebih detilnya
dapat Anda lihat pada sub bab di bawah ini.
Bab 2; Komentar, Identifier, dan Tipe Data
2.3.1
misalnya 10. Jika kita menggunakan sintaks di atas maka kita
hams melakukan perubahan terhadap semua bilangan 5 yang
ada dengan bilangan 10. Untuk itu, dalam kasus ini sebaiknya
kita menjadikan bilangan 5 tersebut ke dalam suatu
konstanta sehingga jika terjadi perubahan kita hanya
melakukan perubahan nilai terhadap konstantanya saja.
Berikut ini program yang merupakan program perbaikan dari
program sebelumnya.
Konstanta
Konstanta adalah jenis identifier yang bersifat konstan atau tetap,
artinya nilai dari konstanta di dalam program tidak dapat diubah.
Konstanta berguna untuk menentukan nilai yang merupakan
tetapan, misalnya nilai pi (77), kecepatan cahaya dan lainnya.
Dengan mendefinisikan konstanta yang bersifat global, maka kita
dapat menggunakannya di setiap bagian program.
Dalam C + + , terdapat dua buah cara untuk membuat sebuah
konstanta, yaitu dengan menggunakan preprocessor directive
#def ine dan menggunakan kata kunci const.
Kode Program 2-4
#include <iostream>
tdefine MAX 5;
using namespace std;
a.
Menggunakan Preprocessor Directive
tidefine
int main() {
int A[MAX];
for (int C=0; C<MAX; C++)
A[C] = C * 10;
Kita dapat menggunakan makro untuk mendefinisikan sebuah
konstanta, yaitu dengan menggunakan preprocessor directive
#define. Untuk mengetahui lebih jauh tentang manfaat
penggunaan konstanta, perhatikan program di bawah ini.
for (int C=0; c<MAX; C + + ) {
cout«A[c]«endl;
Kode Program 2-3
^include <iostream>
return 0;
using namespace std;
int main() {
int A[5]
for (int C=0; C<5; C++) {
A[C] = C * 10;
)
for (int c=0; c<5; C++) (
cout«A [ c ] «endl ;
b.
Menggunakan Kata Kunci const
Selain dari cara di atas, dalam C++ kita dapat
mendefinisikan sebuah konstanta dengan menggunakan kata
kunci const. Berikut ini adalah bentuk umumnya.
const tipe_data nama^konstanta = nilai_tetapan;
Contoh pendeklarasian konstanta-konstanta adalah sebagai
berikut:
return 0 ; ,
••BHI^HiH
Anda bingung? Jika Anda belum memahami maksud dari
sintaks program di atas, itu 'wajar' dan Anda tidak perlu
cemas karena semuanya akan kita pelajari pada bab-bab
selanjutnya dalam buku ini. Namun, yang perlu Anda
perhatikan di sini adalah bilangan 5 di atas. Bilangan
tersebut muncul beberapa kali dalam program, hal ini akan
merepotkan jika temyata kita ingin melakukan perubahan
terhadap bilangan tersebut dengan bilangan yang lain,
Pemrograman C++
const double PI = 3 . 1 4 ;
Untuk dapat lebih memahaminya, berikut ini dituliskan
sebuah sintaks program yang merupakan implementasi dari
penggunaan kata kunci const.
Bab 2: Komentar, Identifier, dan Tipe Data
Kode Program 2-5
a.
tfinclu.de <iostream>
Jika kita sedang membuat program dan kita membutuhkan
sebuah variabel yang dapat dikenali oleh semua lingkungan
dalam program kita, maka kita harus mendefinisikan variabel
tersebut sebagai variabel yang bersifat gobal. Kita telah
mengetahui bahwa program dalam bahasa C + + selalu
terdapat fungsi utama dengan nama m a i n ( ) . Jika kita
mendeklarasikan sebuah variabel di luar fungsi, maka dengan
sendirinya kompiler akan menganggap variabel tersebut
sebagai variabel global. Berikut ini adalah contoh program
yang rnenunjukkan penggunaan variabel yang bersifat global.
using namespace std;
const int
Variabel Global
MAX = 5;
int mainO {
int A[MAX];
for {int C=0; C<MAX; C + + ) {
A [ C ] = C * 10;
}
for (int c=0; c<MAX; C + + ) {
cout«A [c] «endl ;
}
Kode Program 2-6
return Q ;
^include <iostream>
using namespace std;
2.3.2
Variabel
int A;
Berbeda dengan konstanta yang mempunyai nilai tetap, variabel
adalah sebuah identifier yang mempunyai nilai dinamis. Arti kata
'dinamis' di sini bermaksud bahwa nilai variabel tersebut dapat kita
ubah sesuai kebutuhan dalam program. Berikut ini adalah bentuk
umum pendeklarasian sebuah variabel dalam C + +.
tipe__data nama_variabel;
Sebenarnya bentuk umum ini sudah dijelaskan pada bagian awal
yaitu pada bagian yang menerangkan pendeklarasian identifier,
hanya di sini lebih dikhususkan lagi, yaitu hanya untuk variabel.
Jika kita akan mendeklarasikan beberapa variabel yang bertipe
sama, maka kita dapat menyingkat penulisannya dengan
menggunakan bentuk umum di bawah ini.
tipe_data nama_variabell, nama_variabe!2, naraa_variabe!3;
Contoh :
int A, B, C;
Sedangkan jika kita ingin rnelakukan inisialisasi, maka sintaksnya
dapat di ganti dengan menggunakan sintaks berikut:
int
// Variabel A adalah variabel global
// karena dideklarasikan di luar fungsi
// Membuat fungsi utama
int main() (
A = 10;
// Memasukkan (assign) nilai ke dalam
It variabel
cout«"Nilai A = "«A«endl;
return 0;
Variabel Lokal
Berbeda sekali dengan variabel global, variabel lokal adalah
variabel yang hanya dikenali oleh suatu fungsi saja, artinya
tidak dikenal oleh lingkungan luar di dalam program yang
kita buat. Adapun bentuk pendeklarasian variabel yang
bersifat lokal ini harus berada dalam lingkup fungsi yang
dimaksud. Berikut ini contoh pendeklarasian variabel yang
bersifat lokal.
Kode Program 2-7
A=10, B=15, C=25;
^include <iostream>
using namespace std;
Pemrograman
Bab 2: Komentar, Identifier, dan Tipe Data
Hasil dari program di atas adalah sebagai berikut
// Membuat fungsi utama
int mainO t
int A; // Variabel A bersifat: lokal dan hanya dikenali
// oleh fungsi main()
Nilai X sebelum assignment :0
Nilai X setelah assignment :10
A = 10;
// Memasukkan (assign) nilai ke dalam
// variabel
cout«"Nilai A = *«A«endl;
Pada hasil di atas dapat kita lihat bahwa jika kita tidak
melakukan inisialisasi dan kita sudah memanggil variabel
tersebut, maka nilai yang akan ditampilkan oleh kompiler
adalah nilai 0. Berikut ini jika program di atas ditambahkan
proses inisialisasi.
return 0;
)
Jika kita menambahkan fungsi lain di dalam program, dan
kita mengakses variabel A yang telah dideklarasikan di dalam
fungsi main ( } , maka program tidak akan dapat dijalankan
karena fungsi baru yang kita tambahkan tentu tidak dapat
mengenali variabel A di atas. Hal ini merupakan bukti nyata
bahwa variabel A di atas bersifat lokal.
c.
Kode Program 2-9
^include <iostream>
using namespace std;
int main(} {
int X = 5;
cout«"Nilai X sebelum dilakukan assignment : u«endl;
X = 10;
cout«"Nilai X sesudah dilakukan assignment : *«endl;
Inisialisasi Variabel
Dalam penulisan program ada saatnya kita hams melakukan
inisialisasi
nilai terhadap
sebuah
variabel
yang
dideklarasikan. Artinya jika kita tidak melakukan pengisian
nilai terhadap variabel tersebut, maka variabel masih berisi
nilai default. Hal ini sebenarnya sudah disinggung di atas,
namun di sini akan kita bahas kembali melalui contoh-contoh
program. Berikut ini contoh program yang tidak melakukan
inisialisasi nilai awal.
return 0;
Hasil dari program di atas adalah sebagai berikut:
Nilai X sebelum assignment
Nilai X setelah assignment
Kode Program 2-8
:5
; 10
#include <iostream>
d.
using namespace std;
int main(} {
int X;
// Menampilkan nilai X sebelum
// dilakukan pemasukkan nilai (assignment)
cout«"Nilai X sebelum dilakukan assigment : ''«endl;
X = 10;
n
«endl;
cout«"Nilai X sesudah dilakukan assignment
Variabel Statis
Variabel statis adalah variabel yang menempati ruang
memori komputer secara permanen, artinya nilai terakhir dari
variabel ini akan terus disimpan. Dalam C + +, untuk
menyatakan variabel statis adalah dengan menggunakan
kata
kunci
static.
Adapun
bentuk
umum
pendeklarasiannya adalah seperti yang tampak di bawah ini.
static tipe_data nama_variabel;
return 0,-
Pemrograman O+
Bab 2: Komentar, Identifier, dan Tipe Data
Seperti halnya variabel biasa, variabel statis ini juga dibagi ke
dalam dua jenis, yaitu variabel statis lokal dan variabel statis
global.
I.
Nilai fungsi pada pemanggilan pertama
Nilai fungsi pada pemanggilan kedua
Nilai fungsi pada pemanggilan ketiga
Variabel Statis Lokal
Variabel statis lokal ini diterapkan di dalam suatu fungsi,
sehingga nama variabelnya hanya akan dikenali di dalam
fungsi saja. Namun perlu diperhatikan bahwa nilai terakhir
yang dihasilkan akan terus disimpan. Dengan demikian
setiap pemanggilan fungsi yang sama pasti akan memberikan
hasil yang berbeda. Untuk mengetahui lebih jauh mengenai
variabel statis, perhatikanlah dua program di bawah ini.
a.
Hasil yang akan diperoleh dapat dilihat di bawah ini.
Menggunakan variabel biasa
b.
: 10
: 10
: 10
Menggunakan variabel statis
Kode Program 2-11
^include <iostream>
using namespace std;
using namespace std;
// ATembuat fungsi dengan nama contoh
int contohO {
static int A =
// Mendeklarasikan
// variabel statis lokal
A = A + 10;
return A;
// Membuat fungsi dengan nama contoh
int contohO {
int A = 0;
// Mendeklarasikan variabel biasa
// Fungsi utama
int main() {
Kode Program 2-10
^include <iostream>
A = A + 10;
return A;
int x, y, z;
x = contoh(J;
int main(} (
int x, y, 2;
x = content)
y = contohO
z = contoh()
// Mendeklarasikan variabel x, y
// dan z
// Memanggil fungsi contohO
// untuJc yang pertama kali
// Memanggil fungsi contohO
// untuk yang kedua kali
// Memanggil fungsi contohO
// untuk yang ketiga kali
// Menampilkan nilai
// fungsi
cout«"Nilai fungsi
"«x«endl;
cout«"Nilai fungsi
"«y«endl;
cout«"Nilai fungsi
"«z«endl;
y = contohO ;
2 - contoh(};
yang telah diproses di dalam
pada pemanggilan
pertama :
pada pemanggilan
kedua
pada pemanggilan
ketiga
// Mendeklarasikan
// variabel x, y dan z
// Memanggil fungsi contohO
// untuk yang pertama kali
//Memanggil fungsi contohO
// untuk yang kedua kali
// Memanggil fungsi contohO
//untuk yang ketiga kali
// Menampilkan nilai
// fungsi
cout«"Nilai fungsi
"«x«endl,cout«"Nilai fungsi
"«y«endl;
cout«"Nilai fungsi
"«z«endl;
yang telah diproses di dalam
pada
pemanggilan pertama :
pada pemanggilan
kedua
pada pemanggilan ketiga
:
:
:
return 0;
:
Hasil yang akan diperoleh dapat dilihat di bawah ini.
return 0;
Pemrograman C++
Bab 2: Komentar, Identifier, dan Tipe Data
I
e.
Nilai fungsi pada pemanggilan pertama
Nilai fungsi pada pemanggilan kedua
Nilai fungsi pada pemanggilan ketiga
10
20
30
Jika kita amati hasil program di atas, nilai dari setiap
pemanggilan fungsi akan memberikan hasil yang
berbeda.
Konsepnya
sederhana,
yaitu
pada
pemanggilan fungsi yang pertama kali nilai variabel A
masih bernilai 0 (sesuai dengan inisialisasi). Fungsi
akan menambahkan nilai tersebut dengan 10, maka
nilai yang dikembalikan fungsi contohf) adalah 10.
Sampai di sini, karena variabel A adalah variabel statis
maka pada saat pemanggilan fungsi yang kedua,
variabel A masih menyimpan nilai 10, bukan 0. Dengan
demikian pemanggilan fungsi kedua tentu akan
menambahkan nilai A dengan nilai 10, sehingga nilai
yang dikembalikan adalah 20, begitu seterusnya.
2.
Tidak seperti variabel biasa yang berada di memori, variabel
register ini akan disimpan di register CPU. Dengan demikian,
untuk mengisikan atau mengubah nilai dari variabel register
tentunya tidak memerlukan akses memori sehingga
prosesnya juga akan lebih cepat. Dalam C + + , variabel
register hanya dapat diisi oleh tipe data char, int dan
pointer saja serta hanya boleh dideklarasikan sebagai
variabel lokal ataupun parameter dari sebuah fungsi. Untuk
mendeklarasikan variabel register, kita harus mengunakan
kata kunci register. Bentuk umum dari pendeklarasian
variabel register adalah sebagai berikut :
register tipe_data nama_variabel;
Berikut ini adalah contoh program yang menggunakan
variabel register.
Kode Program 2-12
^include <iostream>
using namespace std;
Variabel Statis Global
Dalam memogram dengan bahasa C + + , kita diizinkan untuk
melakukan pembuatan fungsi-fungsi dalam file yang terpisah
dari program utama. Untuk kasus-kasus tertentu dimana
variabel statis lokal tidak dapat digunakan, kita dapat
membuat file terpisah yang mempunyai variabel statis global.
Sebagai gambaran dari pemahaman materi ini, perhatikanlah
contoh penggunaannya dalam potongan sintaks program di
bawah ini.
static int A;
Variabel Register
// Mendeklarasikan variabel statis global
void set_NilaiA(int aa} ;
int get_NilaiA( ) ;
// Membuat fungsi untuk menghitung M*
int Hitung (register int M, register int e) {
register int temp;
temp = 1;
for ( ; e; e--) {
temp = temp * M;
// Fungsi utama
int main() {
int X;
X = Hitung(5, 3);
cout«X«endl;
// Melakukan perhitungan 53
return 0;
void set_NilaiA(int aa)
A = aa;
Jika Anda masih bingung dengan kehadiran struktur
pengulangan for di atas, Anda dapat lihat lebih detail pada
bab pengulangan.
int get_NilaiA()
A = A + 10;
return A;
1
Pemrograman C+
2: Komentar, Identifier, dan Tipe Data
2.4
Tipe Data
signed short
int
long int
Tipe data berfungsi untuk merepresentasikan jenis dari sebuah nilai
yang terdapat dalam program. Sebagai contoh kita mempunyai
suatu data dengan nilai 2, maka 2 termasuk ke dalam tipe bilangan
bulat. Begitupun dengan data yang bernilai "Rahasia C+ + ", maka
data tersebut dikategorikan ke dalam tipe teks (string], Kesalahan
dalam menyebutkan tipe data akan menyebabkan program yang
kita buat tidak dapat dijalankan. Oleh karena itu, kita harus pandai
dalam menentukan tipe data yang akan digunakan sesuai
kebutuhan program yang kita buat. Dalam bahasa C + + , tipe data
dibagi menjadi tiga bagian besar yaitu tipe dasar, tipe bentukan
dan tipe enumerasi.
2.4.1
signed long
int
unsigned long
int
16
Sama seperti short
32
32
-2.147.483.648 sampai 2.147.483.647
Sama seperti long
32
0 sampai 4.294.967.295
int
int
Berikut ini contoh program yang menggunakan tipe bilangan
bulat di dalamnya.
Kode Program 2-13
#include <iostream>
using namespace std;
int main() {
int x; // Mendeklarasikan variabel x dengan tipe data
// int
x = 3; // Melakukan assigment terhadap variabel x
cout«"Nilai x = "«x;
Tipe Data Dasar
Dalam C + + terdapat beberapa tipe data dasar yang telah
didefinisikan, yaitu yang digolongkan ke dalam tipe bilangan bulat
(integer], bilangan riil (floating-point], tipe logika (boolean], tipe
karakter / teks (character / string]. Tipe-tipe tersebut adalah tipe
yang siap digunakan tanpa adanya proses manipulasi terlebih
dahulu.
Hasil yang diperoleh dari program di atas adalah sebagai
berikut:
a.
Nilai x - 3
return 0;
Tipe Bilangan Bulat
Tipe data ini digunakan untuk data-data angka yang tidak
mengandung angka di belakang koma. Misalnya 21, 3, 78 dan
sebagainya. Tipe data yang termasuk ke dalam kategori ini
adalah seperti yang terlihat pada tabel di bawah ini.
int
Ukuran
{dalam bit)
16atau32
unsigned int
16atau32
signed int
16atau32
short int
16
16
Tipe Data
unsigned
short int
Rentang
-32.768 sampai 32.767 atau
-2,147,483,648 sampai 2,147,483,647
0 sampai 65.535 atau
0 sampai 4,294,967,295
Sama seperti int
-32.768 sampai 32.767
0 sampai 65.535
Pemrograman
b.
Tipe Bilangan Riil
Tipe ini adalah tipe yang merepesentasikan data-data
bilangan yang mengandung angka di belakang koma,
misalnya 3.78, 21.03, dan banyak lagi yang lainnya. Adapun
tipe data yang termasuk ke dalam kategori ini adalah seperti
yang ditunjukkan pada tabel di bawah ini.
Tipe Data
Ukuran
(dalam bit)
Rentang
Presisi
float
32
double
64
long
double
80
1.2E-38 sampai 3.4E+38
2.3E-308 sampai 1.7E+308
3.4E-4932to1.1E+4932
6 digit presisi
15 digit presisi
19 digit presisi
Bab 2; Komentar, Identifier, dan Tipe Data
Berikut ini contoh program yang menggunakan tipe bilangan
desimal di dalamnya.
Kode Program 2-14
^include <iostream>
using namespace std;
int main() {
double y; // Mendeklarasikan variabel y dengan tipe
// data double
y = 222.134; // Melakukan assigment terhadap variabel
// x
cout«"Nilai y = "«x;
Sebagai contoh adalah karakter 'A', 'a', ' ', '!', '#' dan
sebagainya
merupakan
tipe
char,
sedangkan
"Mengungkap", "Rahasia", "C + + ", "Budi", "Raharjo" adalah
contoh dari tipe char*. Untuk lebih memudahkan Anda
dalam membedakan tipe karakter dan string adalah tanda
yang mengapitnya. Dalam C+ + , tipe karakter diapit oleh
tanda petik tunggal ('), sedangkan tipe string diapit oleh
tanda petik ganda ("). Adapun tipe data dalam kategori ini
yang didefinisikan oleh ANSI/ISO C++ Standard adalah
seperti yang terlihat pada tabel di bawah ini.
Ukuran
(dalam b/i)
Tipe Data
return 0;
J
Hasil yang diperoleh dari program di atas adalah sebagai
berikut :
Nilaiy = 222.134
Rentang
char
8
-1 28 sampai 1 27 atau 0 sampai 255
unsigned
char
signed
char
8
0 sampai 255
8
-128 sampai 127
Berikut ini adalah program yang menunjukkan penggunaan
tipe data char dan char*.
c.
Tipe Logika
Kode Program 2-15
Tipe ini merepresentasikan data-data yang hanya
mengandung dua buah nilai, yaitu nilai logika (boolean). Nilai
logika itu sendiri hanya terdiri dari nilai benar
(direpresentasikan dengan nilai selain nol, biasanya nilai 1)
dan salah (direpresentasikan dengan nilai 0). Untuk sebagian
kompiler C++ tertentu yang telah memenuhi standar
ANSI/ISO, tipe ini telah dinyatakan dalam tipe bool. Dalam
pemrograman, nilai ini umumnya lebih dikenal dengan nilai
true (benar) dan false (salah).
d.
Tipe Karakter / String
Tipe ini merepresentasikan data-data yang berupa karakter.
Tipe data ini dinyatakan dengan tipe char, sedangkan untuk
string (=kumpulan karakter) dinyatakan sebagai pointer dari
tipe char, yaitu yang dituliskan dengan char*.
Pemrograman C++
^include <iostream>
using namespace std;
int main() {
// Mendeklarasikan variabel Karakter dengan nilai ;'A'
char Karakter = 'A';
// Mendeklarasikan variabel Teks dengan nilai "Kata1
char* Teks = "Kata";
char TEKS[10] = "Coba";
cout«Karakter«endl ;
cout«Teks«endl ;
cout«TEKS«endl ;
return 0;
l^HHHHHHlBHHi
Hasil yang diperoleh dari program di atas adalah sebagai
berikut :
Bab 2: Komentar, Identifier, dan Tipe Data
A
Kata
Coba
2.4.2
Tipe Data Bentukan
Tipe data bentukan adalah tipe data yang dibuat sendiri sesuai
kebutuhan dalam program yang akan kita buat. Tipe ini lebih
dikenal dengan sebutan dalam bahasa asing, yaitu user defined
types. Adapun yang termasuk ke dalam tipe bentukan adalah array
(larik), struktur dan enumerasi. Jika Anda pernah memogram
dengan bahasa Pascal, maka struktur ini dikenal dengan istilah
rekaman (record).
a.
Struktur
Sesuai dengan namanya, struktur adalah tipe data bentukan
yang menyimpan lebih dari satu variabel bertipe sama
maupun berbeda. Untuk membuat tipe data struktur dalam
C+ + , kita harus mendeklarasikannya dengan menggunakan
kata kunci struct. Jika Anda pernah mempelajari bahasa
pemrograman PASCAL, maka istilah struktur ini lebih dikenal
dengan
istilah
record
(rekaman),
serta
bentuk
pendeklarasiannya adalah dengan menggunakan kata kunci
record.
Berikut ini bentuk umum pendeklarasian tipe data struktur di
dalam C++.
struct nama_struktur {
tipe_data variabel 1 ;
tipe_data variabel2j
Ingat,
dalam
pendeklarasian
struktur
kita
harus
mengakhirinya dengan tanda titik koma atau semicolon (;).
Jika kita telah membuat tipe data bentukan baru yang
berjenis struktur tentu kita akan menggunakannya di dalam
pendeklarasian sebuah variabel. Pada saat itu, kita harus
melakukan pengaksesan terhadap isi dari struktur tersebut
dengan menggunakan operator titik (.).
Sebagai contoh sederhana untuk menerangkan tipe data
struktur adalah dengan melihat suatu objek, misalnya siswa.
Kita tahu bahwa siswa pasti mempunyai NIS (Nomor Induk
Siswa), nama, alamat serta data pribadi lainnya. Kasus ini
dapat kita implementasikan ke dalam tipe struktur. Adapun
contoh bentuk implementasinya adalah sebagai berikut :
// Membuat tipe struktur dengan nama SISWA
struct SISWA {
char NIS [8] ;
char Nama [25] ;
char Alamat [20] ;
char Kata [15] ;
// Menggunakan tipe SISWA dalam mendeklarasikan variabel
// A
SISWA A;
// Melakukan pengisian nilai terhadap variabel A
A. NIS
= "DOG96549";
A. Nama
= "Budi Rahar jo" ;
A. Alamat = "Gelatik 391";
A.Kota
= "Bandung";
Untuk mengetahui lebih jauh mengenai struktur, perhatikan
contoh program di bawah ini.
Kode Program 2-16
^include <iostream>
using namespace std;
int main() {
struct
char
char
char
char
SISWA {
NIS [8] ;
Nama [25] ;
Alamat [20] ;
Kota[15] ;
SISWA A;
// Mendeklarasikan variabel A yang
// bertipe SISWA
A. NIS = "DOD98021";
A. Nama = "Arista";
2: Kornentar, Identifier, dan Tipe Data
A.Alamat = "Kopo";
A.Kota = "Bandung";
// Menampilkan nilai yang diisikan ke layar
cout«A. NIS«endl ;
cout«A.Nama«endl;
cout«A.Alamat«endl;
cout«A.Kota«endl;
return 0;
Hasil yang diperoleh dari program di atas adalah sebagai
berikut:
jenis kelamin dapat kita bentuk ke dalam tipe enumerasi.
Dalam bahasa C+ + , untuk mendefinisikan tipe enumerasi
adalah dengan menggunakan kata kunci enum. Berikut ini
adalah bentuk umum untuk mendefinisikannya.
enum nama_tipe { nllai_l, nilai_2, ...};
Sebagai contoh, di bawah ini dituliskan contoh-contoh
pendefinisian tipe enumerasi.
.
enum JENIS_KELAMIN {Pria, Wanita};
enum HARI {Minggu, Senin, Selasa, Rabu,
Sabtu);
enum WARNA_PRIMER {Merah, Biru, Hijau);
Kamis,
Jumat,
Berikut ini adalah contoh implementasinya di dalam program.
DOD98021
Arista
Kopo
Bandung
Kode Program 2-17
#include <iostream> *
using namespace std; .
Dalam bahasa C + + , pedeklarasian variabel yang bertipe
struktur dapat dituliskan langsung pada saat pendefinisan
tipe struktur yang bersangkutan. Misalnya kita akan
mendeklarasikan variabel A, B dan C yang bertipe SI SWA,
maka penulisannya dapat dilakukan seperti di bawah ini.
// Membuat tipe struktur dengan narna SISWA dan
// menggunakannya
// langsung untuk mendeklarasikan variabel A, B dan C
b.
enum JENIS_KELAMIN { Pria, Wanita }
int m a i n f } { ,
struct SISWA {
char N I S [ 8 ] ;
char Nama[20];
JENIS_KELAMIN gender;
} A;
A.NIS = "DQD98021";
A.Nama = "Arista";
A.gender = Wanita;
struct SISWA {
char NIS[8];
char Nama[25];
char Alamat[20] ;
char Kota[15] ;
cout«"NIS
cout«"Nama
cout«"Gender
} A, B, C;
return 0;
Enumerasi
"«A.NIS«endl;
" «A. Nama« endl ;
"«A. gender«endl ;
Hasil yang diperoleh dari program di atas adalah sebagai
berikut;
Tipe enumerasi adalah tipe data yang nilainya terbatas pada
nilai-nilai yang telah didefinisikan saja. Tipe enumerasi
digunakan untuk membentuk tipe data yang nilainya bersifat
pasti. Misalnya untuk mendefinisikan tipe jenis kelamin,
nama hari, warna primer dan sebagainya. Kita tahu bahwa
jenis kelamin hanya terdiri dari pria dan wanita saja, maka
Pemrograman C++
NIS
Nama
Gender
: DOD98021
: Arista
:1
Bab 2: Komentar, Identifier, dan Tipe Data
Nilai 1 di atas menunjukkan indeks dari nilai yang terdapat
dalam tipe JENIS_KELAMIN. Sebagai catatan bahwa indeks
diawali dari 0 (nol), maka nilai Wanita pada tipe
JENIS__KELAMIN di atas adalah 1, sedangkan Pria akan
bernilai 0.
2.5
Kode Program 2-18
tinclude <iostrearn>
using namespace std;
int m a i n ( } {
// Mendeklarasikan variabel NAMA dengan tipe char dan
// lebar 5 karakter
char NAMA[5];
Null Terminated String
Dalam C + + , string yang digunakan bertipe null terminated string,
yaitu jenis string yang diakhiri oleh karakter null ('\0'), bukan nol.
Kita tahu bahwa string adalah kumpulan (array) dari karakter, oleh
karena itu jika kita akan mendeklarasikan variabel bertipe string,
maka kita harus melebihkan lebar sebanyak satu karakter untuk
posisi karakter null. Sebagai contoh kita akan melakukan
deklarasi variabel yang bertipe string dan mengisikannya dengan
teks 'Budi1, maka bentuk deklarasinya adalah sebagai berikut:
// Mendeklarasikan variabel yang bertipe string dengan lebar 5
char NAMA[5];
// Mengisikan nilai ke dalam variabel NAMA
NAMA = "Budi";
Jika kita amati potongan
sintaks di atas, sebenarnya kita hanya mengisikan 4 karakter ke dalam
variabel NAMA, sedangkan sisa ruang-nya akan
digunakan untuk menempatkan
karakter
null. Untuk lebih jelasnya perhatikan ilustrasi
di samping ini.
// Mengisikan nilai ke dalam variaJbeJ NAMA
NAMA = "Budi";
cout« "Karakter ke-0
cout«"Karakter ke-1
cout«"Karakter ke-2
cout«"Karakter ke-3
cout« "Karakter ke-4
"«NAMA { 0 ] «endl;
"«NAMA[l]«endl;
"«NAMA [ 2 ] «endl;
"«NAMA[3]«endl;
"«NAMA[4]«endl;
return 0;
Hasil yang diperoleh dari program di atas adalah sebagai berikut :
Karakter ke-0
Karakter ke-1
Karakter ke-2 :
Karakter ke-3
Karakter ke-4
Dalam C + + , terdapat beberapa fungsi siap pakai yang berguna
untuk menyelesaikan masalah-masalah yang berkaitan dengan
string. Untuk menggunakan fungsi-fungsi tersebut kita harus
mendaftarkan file header string.h (untuk C + + lama) atau
<cstring> (untuk C + + standar). Berikut ini fungsi-fungsi yang
dimaksudkan :
Fungsi strcpy()
Dalam mengisikan nilai ke variabel yang bertipe string, kita tidak
perlu memasukkan karakter null secara manual, karena C + +
secara otomatis akan menambahkannya. Untuk membuktikan hal
ini, perhatikanlah program di bawah ini.
Pernrograraan C++
Bentuk umum dari fungsi strcpy ( ) dapat dilihat di bawah
ini.
Fungsi ini berguna untuk melakukan penyalinan (copy) string
dari S2 ke SI. Contoh penggunaannya dalam program adalah
sebagai berikut:
Bab 2: Komentar, Identifier, dan Tipe Data
I
Kode Program 2-19
// Melakukan pengisian nilai terhadap variabel SI dan
// 52
^include <iastream>
^include <cstring>
51 = "CONTOH";
52 = "salin string";
using namespace std;
// Melakukan penyalinan string dari variabel S2 ke
// variabel SI
StrcpytSl, 32, 4 ) ;
int main() {
char SI [50] ;
char* S2;
// Menampilkan nilai dari variabel SI
cout«Sl«endl ,-
// Melakukan pengisian nilai terhadap variabel S2
S2 = "Ini adalah contoh penyalinan string";
return 0;
// Melakukan penyalinan string dari variabel 32 ke
// variabel SI
strcpytSl, S2);
Hasil yang diperoleh dari program di atas adalah sebagai
berikut :
// Menampilkan nilai darl variabel SI
cout«Sl«endl ;
saliOH
return 0;
'
Hasil yang diperoleh dari program di atas adalah sebagai
berikut:
3,
Fungsi strdup ( )
Bentuk umum dari fungsi strdup ( } dapat dilihat di bawah
ini.
char* strdup(const char* S);
Ini adalah contoh penyalinan string
2.
Fungsi ini sebenarnya mirip dengan fungsi strcpy ( } , yaitu
untuk melakukan duplikasi string. Contoh penggunaannya
dalam program adalah sebagai berikut:
Fungsi strncpy ( )
Bentuk umum dari fungsi strncpy ( ) dapat dilihat di bawah
ini.
char* strncpy{char* SI, const char* S2, size_t n ) ;
Fungsi ini berguna untuk menyalin string sebanyak n
karakter dari variabel S2 ke variabel S1. Contoh
penggunaannya dalam program adalah sebagai berikut;
Kode Program 2-20
Kode Program 2-21
^include <iostream>
tinclude <cstring>
using namespace std; :
int main() {
char* S.I;
char* S2;
^include <iostream>
^include <cstring>
// Melakukan pengisian nilai terhadap variabel SI
51 = "Contoh Duplikasi String";
using namespace std;
// Melakukan duplikasi string dari variabel SI ke
// variabel 52
52 = strdup(Sl);
int main() {
char SI [50] ,char* S2;
// Menampilkan nilai dari variabel 52
Pemrograman C++
2: Komentar, Identifier, dan Tipe Data
B
Hasil yang diperoleh dari program di atas adalah sebagai
berikut:
Hasil yang diperoleh dari program di atas adalah sebagai
berikut:
Contoh Duplikasi String
4.
return 0;
Teks Gabungan
5.
Fungsi strncat ( )
Bentuk umum dari fungsi strncat ( ) dapat dilihat di bawah
Fungsi strcat ( )
ini.
Bentuk umum dari fungsi strcat ( ) dapat dilihat di bawah
.
mi.
char* atrcat(char* Si, const char* S2);
Fungsi ini berguna untuk menggabungkan (concat) string
dari S2 ke posisi akhir dari SI. Contoh penggunaannya
dalam program adalah sebagai berikut:
char* strncatfchar* SI, const char* S2, size_t n);
Fungsi ini berguna untuk menggabungkan n karakter dari
variabel S2 ke posisi akhir dari variabel Si.
Contoh penggunaannya dalam program adalah sebagai
berikut:
Kode Program 2-23
Kode Program 2-22
# include <iostream>
tfinclude <cstring>
^include <iostream>
^include <string>
using namespace std;
using namespace std
int mainO {
char* SI;
char* S2;
int mainf) {
char* Si;
char* S2;
char* spasi = " ";
// Melakukan pengisian nilai terhadap variabel SI dan
// 52
// Melakukan pengisian nilai terhadap variabel SI dan
// S3
51 = "Teks";
52 = "Gabungan";
// Menambahkan karakter spasi (' V ke dalam variabel
// SI
strcat(SI, spasi};
// Melakukan penggabungan string yang terdapat
// pada variabel SI dan S2
strcat(SI, S2);
// Menampilkan nilai dari variabel Si
// setelah proses penggabungan
cout«Sl«endl ,-
51 = "Nama saya adalah ";
52 = "Budi Raharjo";
// Menggabungkan 4 karakter dari variabel S3 ke
// variabel SI
strncat (SI, S2, 4);
// Menampilkan nilai dari variabel Si
// setelah dilakukan penggabungan
cout«Sl«endl;
return 0;
Hasil yang diperoleh dari program di atas adalah sebagai
berikut :
Pemrograman C++
Bab 2: Komentar, Identifier, dan Tipe Data
I
7.
Nama saya adalah Budi
6.
Fungsi strlen ( )
Bentuk umum dari fungsi strlen ( ) dapat dilihat di bawah
mi.
size_t strlen{const char* S);
Fungsi ini berguna untuk mengembalikan panjang string dari
S. Contoh penggunaannya dalam program adalah sebagai
berikut:
Kode Program 2-24
^include <iostream>
^include <cstring>
Bentuk umum dari fungsi strcmp ( ) dapat dilihat di bawah
Ini.
int •trcmp(const char* SI, const char* S2);
Fungsi ini berguna untuk membandingkan string yang
terdapat pada variabel S1 dan S 2. Nilai yang akan
dikembalikan yaitu :
•
0 (nol): hal ini terjadi jika SI sama dengan S2
•
kurang dari 0 (negatif) : hal ini terjadi jika SI lebih kecil
dari S2
•
lebih dari 0 (positif) : hal ini terjadi jika Si lebih besar
dariS2
Contoh penggunaannya dalam program adalah
berikut:
using namespace std;
int main( ) (
char* SI;
char* S2;
int panjang_Sl, panjang_S2;
//
//
51
52
Fungsi strcmp ( )
sebagai
Kode Program 2-25
^include <iostream>
^include <cstring>
Melakukan pengisian nilai terhadap variabel SI dan
S2
= "Budi";
= "Raharjo";
panjang_Sl = strlen(Sl);
panjang_S2 = strlen{S2) ;
// Menampilkan nilai dari variabel panjang_Sl'dan
// panjang_S2
cout«"Panjang SI : "«panjang_Sl«endl;
cout«"Panjang S2 : "«panjang_S2«endl;
return 0 ;
Hasil yang diperoleh dari program di atas adalah sebagai
berikut :
using namespace std;
int main(J {
char* SI;
char* S2?
//
//
51
52
Melakukan pengisian nilai yang sama
terhadap variabel SI dan 52
= "COBA";
= "COBA";"
// Menampilkan hasil perbandingan string
// dari variabel Si dan S2
cout«"Hasil perbandingan : "«strcmp(Sl, S2}«endl;
// Melakukan perubahan nilai terhadap variabel SI
51 = "Coba";
// Menampilkan kembali hasil perbandingan string
// dari variabel SI dan S2
cout«"Hasil;perbandingan : "«strcmp(Sl, S2}«endl;
Panjang SI : 4
Panjang S2 : 7
// Melakukan perubahan nilai terhadap variabel S2
52 = "coba";
// Menampilkan kembali hasil perbandingan;string :
Pemrograman
Bab 2: Komentar, Identifier, dan Tipe Data
// dari variabel SI dan S2
cout«"Hasil perbandingan : "«strcmp (SI , S2)«endl;
g
Fungsi strchr ( )
Bentuk umum dari fungsi strchr
ini.
return 0 ;
Contoh hasil yang diperoleh dari program di atas adalah
sebagai berikut :
dapat dilihat di bawah
Fungsi ini akan mencari lokasi karakter dari suatu string. Jika
karakter ditemukan, maka fungsi ini akan mengembalikan
pointer dari string yang dimulai dari karakter tersebut, tetapi
jika tidak maka fungsi akan mengembalikan nilai 0. Contoh
penggunaannya dalam program adalah sebagai berikut:
Hasil perbandingan : 0
Hasil perbandingan : 32
Hasil perbandingan : -32
Kode Program 2-27
8.
Fungsi strrev ( )
#include <iostream>
^include <cstring>
Bentuk umum dari fungsi strrev ( ) dapat dilihat di bawah
using namespace std;
ini.
char* strrev(char* S ) ;
int mainf) {
char* S = "C++ adalah segalanya bagiku";
char* PStr;
Fungsi ini berguna untuk membalikkan string dari variabel S.
Contoh penggunaannya dalam program adalah sebagai
berikut :
// Melakukan pencarian karakter '+' di dalam variabel S
PStr = strchr(S, '+');
Kode Program 2-26
tinclude <iostreara>
#include <cstring>
// Menampilkan nilai dari variabel PStr
cout« PStr«endl;
using namespace std;
return 0;
int main() {
char* S = "Budi Raharjo";
Hasil yang diperoleh dari program di atas adalah sebagai
berikut :
// Melakukan penulisan string mulai dari
// posisi akhir variabel S
strrev(S);
+ 4- adalah segalanya bagiku
// Menampilkan nilai dari variabel S setelah dibalik
cout« S«endl;
return 0;
1
Hasil yang diperoleh dari program di atas adalah sebagai
berikut:
ojrahaR iduB
Pemrograman
10.
Fungsi strstr ( )
Bentuk umum dari fungsi strstr ( ) dapat dilihat di bawah
ini.
char* strstr(const? char* S, const char* substr);
Fungsi ini akan mencari lokasi substring dari suatu string.
Jika substring ditemukan, maka fungsi ini akan
mengembalikan pointer dari string yang dimulai dari
substring tersebut, tetapi jika tidak maka fungsi akan
Bab 2: Komentai, Identifier, dan Tipe Data
mengembalikan nilai 0. Konsep yang terdapat pada fungsi
adalah sama seperti fungsi
strchr ( ) . Contoh
penggunaannya dalam program adalah sebagai berikut :
Fungsi ini akan mengubah string yang tersimpan dalam
variabel S menjadi huruf kecil. Berikut ini adalah contoh
penggunaannya dalam program.
Kode Program 2-28
Kode Program 2-29
#include <iostream>
#include <cstring>
^include <iostream>
#include <cstring>
using namespace std;
using namespace std;
int main ( ) {
char* S = "Pencipta C++ adalah Bjarne Stroustrup";
char* PStr;
int main() {
char* S = "CONTOH MENGECILKAN HURUF";
char* hasil;
// Melakukan pencarian substring "Bjarne" di dalam
// variabel S
PStr = strstr{S, 'Bjarne');
// Mengubah string dari variabel S menjadi huruf kecil
hasil = strlwr(S);
// Menampilkan nilai dari variabel PStr
cout« PStr«endl;
// Menampilkan nilai dari variabel hasil
,cout« hasil«endl;
return 0;
return 0;
2.5.1
)
Basil yang diperoleh dari program di atas adalah sebagai
berikut :
Hasil yang diperoleh dari program di atas adalah sebagai
berikut:
Bjarne Stroustrup
contoh mengecilkan huruf
b.
Konversi String
Bentuk umum dari fungsi strupr ( ) dapat dilihat di bawah
Dalam pembuatan sebuah program kerap kali kita dituntut untuk
melakukan perubahan terhadap format string, misalnya mengubah
string menjadi huruf kapital ataupun sebaliknya. Untuk melakukan
hal ini, C + + telah menyediakan dua buah fungsi, yaitu strlwr ( )
dan s t r u p r ( ) .
a.
Fungsi strupr o
ITU.
char* strupr(char* S);
Fungsi ini akan mengubah string yang tersimpan dalam
variabel S menjadi huruf kapital. Berikut ini adalah contoh
penggunaannya dalam program.
Kode Program 2-30
Fungsi
Bentuk umum dari fungsi strlwr { } dapat dilihat di bawah
ini.
_
char* strlwr{char* S);
Pemrograman C++
^include ; <iostream>
ftinclu.de <cstring>
using namespace std;
int mainO {
—
Bab 2: Komentar, Identifier, dan Tipe Data
I
char* S = "coritoh membesarkan huruf";
char* hasil;
// ke dalam variabel S
cin»S;
// Mengubah string dari variabel 5 menjadi huruf keci
hasil = strupr(S);
// Menampilkan kembali nama yang telah dimasukkan
cout«"Hai "«s«", apa kabarmu?"«endl;
// Menampilkan nilai dari variabel hasil
cout« hasil«endl;
return 0;
return 0;
1
Hasil yang diperoleh dari program di atas adalah sebagai
berikut :
Hai Arista, apa kabarmu?
CONTOH MEMBESARKAN HURUF
2.5.2
Input String
Jika kita hanya menggunakan statemen cin dalam memasukkan
string ke sebuah variabel, maka kita akan mengalami kesulitan jika
ternyata string yang kita masukkan tersebut mengandung spasi
(karakter ' '). Hal ini disebabkan spasi pertama yang ditemukan
dalam sebuah string yang dimasukkan melalui keyboard akan
dianggap sebagai karakter null. Untuk lebih memahami konsep
input string, perhatikan contoh-contoh program di bawah ini.
Pada saat kita melakukan input berupa string ke sebuah variabel
dan string tersebut tidak mengandung spasi, maka hal itu itu tidak
akan menjadi masalah. Berikut ini contoh program yang
menunjukkan hal tersebut.
Kode Program 2-31
tfinclude
pada saat program di atas dijalankan dan misalnya kita mengisikan
nama tesebut dengan string "Arista", maka hal ini tidak
menimbulkan masalah. Adapun hasil yang akan diberikan adalah
sebagai berikut :
< lost re emb-
Namun, apa yang terjadi bila kita memasukkan string "Arista
Destriana"? Temyata hasil yang diberikan masih tetap sama
seperti di atas, padahal hasil yang kita inginkan adalah seperti
yang tampak di bawah ini.
Hai Arista Destriana, apa kabarmu?
Kita tentu tidak menginginkan hal ini terjadi. Oleh karena itu, untuk
menjawab kasus ini kita harus menggunakan fungsi getline ( ) .
Adapun bentuk umum dari fungsi getline { ) ini dapat dilihat di
bawah ini.
kistream getline(char* b u f f e r , int ukuran,
char delimiter = ' \ n ' ) ;
fcistream getline(signed char* b u f f e r , int ukuran,
char delimiter = ( \ n ' } ;
Sdstream getline(unsigned char* b u f f e r , int ukuran,
char delimiter = ( \ n ' ) ;
Setelah mengetahui fungsi getline ( } , sekarang kita kembali ke
pokok permasalahan kita yaitu dengan memperbaiki program di
atas dengan sintaks berikut:
using namespace std;
ir.t main ( ) {
Kode Program 2-32
char S [ 2 0 1 ;
^include <iostream>
cout« "Masukkan nama Anda : ";
using namespace std;
// Meminta input dari user dan menyimpan nilainya
Pemrograman
Bab 2: Komentar, Identifier, dan Tipe Data
int main ( ) {
BAB 3
OPERATOR
char S[20] ;
cout«"Masukkan nama Anda : ",// Meminta input dari user menggunakan fungsi getline
cin.getline(S, sizeof(S) - 1);
// Menampi 1 kan kembali nama yang telah dimasukkan
cout«"Hai "«S«", apa kabarmu?"«endl;
return 0;
Atau kita juga dapat menggunakan objek string, yaitu dengan
menuliskannya seperti di bawah ini.
Kode Program 2-33
#include <iostream>
#include <cstring>
using namespace std;
int
3.1
main ( ) (
string S;
cout«"Masukkan nama Anda : ";
// Meminta input dari user menggunakan fungsi getline
getline (cin, S) ;
// Menampilkan kembali nama yang telah dimasukkan
cout«"Hai "«S«", apa kabarmu?"«endl;
return 0;
Hasil yang diberikan oleh kedua program di atas adalah sama. Jika
kita memasukkan string "Arista Destriana", maka hasil yang
akan ditampilkan adalah sesuai dengan apa yang kita inginkan
seperti tampak di bawah ini.
Pendahuluan
Dalam pengembangan sebuah program kerap kali dituntut untuk
mendefinisikan operasi-operasi di dalamnya, baik itu berupa
operasi perhitungan, perbandingan maupun yang lainnya. Untuk
melakukan hal ini tentunya kita harus menggunakan operator, Pada
bagian ini Anda akan dikenalkan dengan operator-operator yang
terdapat pada bahasa C++ beserta penggunaannya di dalam
program.
Bahasa C++ sendiri menawarkan banyak operator untuk melakukan pemecahan masalah-masalah tertentu di dalam program.
Dalam buku ini operator-operator tersebut akan dikelompokkan ke
dalam 4 bagian, yaitu operator assignment, unary, binary dan
ternary.
Sebagai pengenalan bagi Anda, sebelum melangkah ke pembahasan yang lebih jauh, berikut ini istilah-istilah yang harus
diketahui dalam bekerja dengan operator. Misalnya jika terdapat
suatu statemen yang berupa persamaan matematika dan dituliskan
sebagai berikut:
Hai Arista Destriana, apa kabarmu?
Pemrograman C++
Bab 2: Koraentar, Identifier, dan Tipe Data
cout« "Mylnteger
cout« "MyDouble
C = 5-r ?
Maka:
C
C = 5 + 7
3.2
disebut
dise
disebut
disebut
disebut
disebut
disebut
dengan
dengan
dengan
dengan
dengan
dengan
varlabel
operator assignment
operand
ekspresi
operator aritmetika (penambahan)
statemen aritmetika
Operator Assignment
Operator assignment adalah operator yang berfungsi untuk
memasukkan (assign) nilai ke dalam suatu variabel ataupun
konstanta. Operator ini dilambangkan dengan tanda sama dengan
(=). Berikut ini contoh program yang menggunakan operator
tersebut.
Kode Program 3-1
^include <iostream>
using namespace std;
int main () {
// Mendeklarasikan konstanta
// dengan melakukan assignment dengan nilai 3.14
const PI = 3.14;
// Mendeklarasikan variabel-variabel
// Mendeklarasikan
char MyChar;
// Mendeklarasikan
char* MyString;
// Mendeklarasikan
int Mylnteger;
// Mendeklarasikan
double MyDouble;
// double
variabel
variabel
variabel
variabel
bertipe char
bertipe char*
bertipe int
bertipe
// Melakukan assignment terhadap variabel-variabel di atas
MyChar « v C';
MyString = "Mengungkap Rahasia C + + " ;
Mylnteger « 21;
MyDouble = 21.0378;
// Menampilkan nilai dari variabel-variabel di atas
cout«"MyChar
: "«MyChar«endl ;
cout«"MyString
: "«MyString«endl;
Pemrograman C-»
: "«Mylnteger«endl;
: u«MyDouble;
Hasil yang akan diberikan dari program di atas adalah sebagai
berikut:
MyChar
MyString
Mylnteger
MyDouble
3.3
:C
: Mengungkap Rahasia C+ +
: 21
: 21.0378
Operator Unary
Dalam ilmu matematika yang disebut dengan operator unary adalah
operator yang hanya melibatkan sebuah operand. Adapun yang
termasuk ke dalam operator unary adalah seperti tampak pada
tabel di bawah ini.
Operator
+
++
—
Jenis Operasi
Membuat nilai positif
Membuat nilai negatif
Increment
Decrement
Contoh
+7
~7
C+ +
C--
Berikut ini contoh program yang di dalamnya menggunakan
operator plus ( + ) dan minus (-).
Kode Program 3-2
^include <iostream>
using namespace std;
int main() {
int X;
float Y;
X = +5;
//
Dapat ditulis dengan X = 5,
// yang berarti memasukkan nilai positif 5
Bab 2: Komentar, Identifier, dan Tipe Data
I
Y ~ -2.12;
// M&nasukkan nilai negatif
2.12
//
// Menampilkan nilai yang disimpan dalasri variabel X dan Y
cout« "Nilai X : "«x«endl;
cout«"Nilai Y : "«Y«endl;
// Mengubah nilai X menjadi
negatif
pre -increment
_ variabel/
// Melakukan pro -Increment
Untuk lebih memahami konsep yang terdapat di dalamnya, berikut
ini disajikan contoh program yang merupakan implementasi dari
pre-increment dan post-increment.
// Menampilkan kembali nilai yang disimpan
// dalam variabel X dan Y
cout«"Nilai X : "«X«endl;
cout«"Nilai Y : "«Y«endl;
Kode Program 3-3
^include <iostreain>
*
using namespace std;
return 0;
1
Hasil yang akan diberikan oleh program di atas adalah sebagai
berikut:
Nilai X : 5
Nilai Y: -2.12
int main( ) {
int C;
// Mendeklarsikan variabel C
// Mengisikan nilai ke dalam variabel C dengan nilai 5
C = 5,-
Nilai X : -5
Nilai Y : 2.12
Setelah statemen Y = -Y, maka nilai yang terdapat dalam variabel
Y menjadi 2.12 (positif). Hal ini disebabkan karena kita
menegatifkan nilai negatif, yaitu -(-2.12).
3.3.1
Mtelakukan
Increment
Increment adalah suatu penambahan nilai yang terjadi pada sebuah
variabel. Adapun operator yang digunakan untuk melakukan
increment adalah operator ++. Operator ini akan menambahkan
nilai dari suatu variabel dengan nilai 1.
Terdapat dua buah jenis increment yang terdapat dalam bahasa
C+ +, yaitu pre-increment dan post-increment. Arti dari preincrement adalah melakukan penambahan nilai sebelum suatu
variabel itu diproses, sedangkan post-increment merupakan
kebalikannya, yaitu melakukan proses terlebih dahulu sebelum
dilakukan penambahan nilai. Adapun bentuk umum dari preincrement dan post-increment dapat dilihat di bawah ini.
Pemrograman C++
// Melakukan pre-increment
cout« "Nilai C awal
: "«C«endl;
cout«"Nilai ++C
: "«++c«endl;
cout«"Nilai C akhir
;: "«C«endl;
: cout«' \n' ;
/ Mengubah nilai yang terdapat dalam variabel C
// dengan nilai 10
C = 10;
// Melakukan
cout«"Nilai
cout«"Nilai
cout«"Nilai
post -increment
C awal
: "«C«endl;
C++
: "«c++«endl;
C akhir
; "<<C«endl;
return 0;
Hasil yang akan diberikan dari program di atas adalah sebagai
berikut :
Nilai C awal
Nilai++C
Nilai C akhir
;5
;6
;6
Nilai C awal
: 10
Bab 2: Komentar, Identifier, dan Tipe Data
Nilai C + +
Nilai C akhir
cout«"Nilai C-3>ut«"Nilai C akhir
10
11
"«C--«endl;
tt
«C«endl;
return 0;
Coba Anda perhatikan hasil di atas. Pada saat kita melakukan preincrement, nilai C dinaikkan dulu sebelum diproses {dalam hal ini
ditampilkan ke layar) sehingga yang tampil adalah nilai 6.
Sedangkan pada saat melakukan post-increment nilai dari variabel
C diproses (ditampilkan) lebih dahulu sebelum dinaikkan nilainya.
Hal ini menyebabkan nilai yang ditampilkan masih tetap 10. Namun
pada saat pemanggilan nilai C setelah proses post-increment, nilai
C tentu telah bertambah satu, sehingga yang ditampilkan adalah
11.
3.3.2
Hasil yang akan diberikan dari program di atas adalah sebagai
berikut:
Nilai C awal
Nilai --C
Nilai C akhir
5
4
4
Nilai C awal
Nilai C-Nilai C akhir
10
10
9
Decrement
Decrement merupakan kebalikan dari proses increment, yaitu
menurunkan (mengurangi) nilai dari suatu variabel. Sama juga
seperti pada increment, decrement juga dibagi ke dalam dua jenis
yaitu pre-decrement dan post-decrement. Berikut ini program yang
menunjukkan penggunaan decrement.
Kode Program 3-4
3.4
Operator Binary
Operator binary adalah operator yang digunakan dalam operasi
yang melibatkan dua buah operand. Dalam bahasa C + + , operator
binary ini dikelompokkan lagi ke dalam empat jenis, yaitu operator
aritmetika, logika, relasional dan bitwise.
ftinclude <iostream>
using namespace std;
int main() {
int C;
3.4.1
// Mendeklarasikan variabel C
// Mengisikan nilai ke dalam variabel C dengan nilai 5
C = 5;
// Melakukan
cout«"Nilai
cout«"Nilai
cout«"Nilai
cout«' \n' ;
pre-increment
C awal
: "«C«endl;
--C
: "«--C«endl;
C akhir
: "«C«endl;
// Mengubah nilai yang terdapat dalam variabel C
// dengan nilai 10
C = 10;
// Melakukan post-decrement
cout«"Nilai C awal
"«C«endl;
Pemrograman
Operator Aritmetika
Operator aritmetika adalah operator yang digunakan untuk
melakukan operasi-operasi aritmetika seperti penjumlahan,
pengurangan dan sebagainya. Adapun yang termasuk dalam
operator aritmetika di dalam C + + adalah seperti yang tampak pada
tabel di bawah ini.
Operator
Jenis Operasi
Contoh
+
Penjumlahan
2 + 3 = 5
-
Pengurangan
5 - 3 = 2
*
/
%
Perkalian
2 * 3 = 6
Pembagian
Sisa bagi (modulus,)
10.0
Bab 2: Komentar, Identifier, dan Tipe Data
10
/ 3.0 = 3.3333
% 3 = 1
int Z; // Mendeklarasikan variabel Z sebagai
// penampung nilai hasil operasi
Untuk lebih memahaminya, berikut ini disajikan contoh-contoh
program yang menggunakan operator aritmetika.
a.
// Melakukan operasi pengurangan
Z - X - Y;
Menggunakan Operator Plus (+)
// Menampilkan hasil penjumahan
COUt«X«" - "
Kode Program 3-5
^include <iostream>
}
using namespace std;
Hasil yang akan diberikan dari program di atas adalah
sebagai berikut:
int main() {
// Mendeklarasikan variabel X (diisi nilai 10)
// dan Y (diisi nilai 3)
int
return 0;
X = 10, Y * 3;
10 - 3 = 7
// Mendeklarasikan variabel Z sebagai penampung
// nilai hasil operas!
int Z;
c.
// Melakukan operasi penjumlahan
Z = X + Y;
)
Menggunakan Operator *
Kode Program 3-7
// Menampilkan hasil penjumahan
cout«X«" +
#include <iostream>
return 0;
using namespace std;
Hasil yang akan diberikan dari program di atas adalah
sebagai berikut:
int main( ) {
// Mendeklarasikan variabel X (diisi nilai 10)
// dan Y (diisi nilai 3)
int X = 10, Y = 3;
int 2; // Mendeklarasikan variabel Z sebagai
// penampung nilai hasil operasi
10 + 3 = 13
// Melakukan operasi perkalian
Z * X * Y;
b.
Menggunakan Operator Minus (-)
// Menampilkan hasil penjumahan
cout«X«" *
Kode Program 3-6
return 0 ;
^include <iostream>
}
using namespace std;
Hasil yang akan diberikan dari program di atas adalah
sebagai berikut :
int main() {
// Mendeklarasikan variabel X (diisi nilai 10)
// dan Y (diisi nilai 3)
int X = 10, Y = 3;
Pemrograman O+
10 * 3 = 30
Bab 2: Komentar, Identifier, dan Tipe Data
d.
int X = 10, Y = 3;
Menggunakan Operator I
int Z; // Mendeklarasikan variabel Z sebagai
// penampung nilai hasil operasi
Kode Program 3-8
^include <iostream>
using namespace std;
// Melakukan operasi pembagian dan menyimpan
// sisa baginya ke dalam Z
Z = X H Y;
int main() {
// Mendeklarasikan variabel X, Y dan Z bertipe int
int X = 10, Y = 3;
int Z;
// Menampilkan sisa bagi dari operasi pembagian X / Y
cout«X«" % "«Y«" = "«Z;
return 0;
// Mendeklarasikan variabel A, B dan C bertipe float
float A = 10.0, Y = 3.0;
float C;
Hasil yang akan diberikan dari program di atas adalah
sebagai berikut:
// Melakukan operasi pembagian pada bilangan bulat
Z = X / Y;
10 % 3 = 1
// Melakukan operasi pembagian pada bilangan desimal
// (floating-point)
C = A / B;
// Menampilkan hasil pembagian
cout«X«" / "«Y«" = u«Z«endl;
cout«A«"
3.4.2
return 0;
1
Hasil yang akan diberikan dari program di atas adalah
sebagai berikut:
Operator logika adalah operator yang digunakan untuk melakukan
operasi dimana nilai yang dihasilkan dari operasi tersebut hanya
berupa nilai benar (true) dan salah (false], Nilai ini disebut dengan
nilai boolean. Boolean sendiri ditemukan oleh seorang
matematikawan Inggris yang bernama George Bool.
Dalam bahasa C+ + , nilai benar tersebut direpresentasikan dengan
bilangan selain 0 (biasanya nilai I), sedangkan nilai salah
direpresentasikan dengan nilai 0. Namun, dalam bahasa C + +
modern yang telah mendukung tipe bool, nilai benar
direpresentasikan dengan nilai true dan nilai salah dengan nilai
false. Dalam buku ini, kita hanya akan memakai nilai 0 dan 1
untuk merepresentasikan nilai salah dan benar. Adapun yang
termasuk ke dalam operator logika dalam C + + adalah seperti yang
tampak pada tabel di bawah ini.
10/3
=3
10.0/3.0= 3.33
e.
Operator Logika
Menggunakan Operator %
Kode Program 3-9
^include <iostream>
using namespace std;
int main() {
// Mendeklarasikan variabel X (diisi nilai 10)
// dan Y (diisi nilai 3)
Pemrograman C++
Operator
Jenis Operasi
&&
AND (dan)
i
OR (atau)
NOT" (negasi)
Contoh
i && i = i
1 || 0 - 1
10 * 1
Bab 2: Komentar, Identifier, dan Tipe Data
a.
Operator && (AND)
X
Y
X&&Y
1
1
1
0
1
0
0
0
0
0
1
0
Sebagai bukti pemyataan tersebut,
berikut.
perhatikan
1
1
0
0
=
=
=
=
"<
"<
"<
"<
using namespace std;
program
int rnain{)
cout«"l
cout«"l
cout«"0
cout«"0
1 = "«(0
l)«endl;
0)«endl;
0} «endl ;
l)«endl;
return 0;
Hasil yang akan diberikan dari proram di atas adalah sebagai
berikut:
l)«endl;
0)«endl;
0}«endl;
l)«endl;
return 0;
0=1
0=0
1=1
Hasil yang akan diberikan dari program di atas adalah
sebagai berikut:
1 && 1 = 1
1 && 0 - 0
0 && 0 = 0
0 && 1 = 0
b.
1
^include <iostream>
using namespace std;
1
0
0
1
1
Kode Program 3-11
^include <iostream>
{
&&
&&
&&
&&
0
X||Y
1
1
0
Berikut ini program yang membuktikannya.
Kode Program 3-10
int main{}
cout«"l
cout«"l
cout«"0
cout«"0 ;
Y
1
0
X
Operasi AND hanya akan menghasilkan nilai 1 (benar) jika
semua operand-nya bernilai benar, namun jika tidak, maka
operasi tersebut akan mengahasilkan nilai 0 (salah). Berikut
ini tabel yang menunjukkan hasil dari operasi AND.
c.
Operator! (NOT)
Nilai yang dihasilkan dari operasi NOT adalah kebalikan dari
nilai yang dikandung di dalamnya. Jika nilai awal adalah 1
(benar), maka setelah operasi NOT maka nilainya menjadi 0
(salah), begitu juga sebaliknya. Berikut ini tabel yang
menunjukkan hasil dari operasi NOT.
Operator II (OR)
Operasi OR hanya akan menghasilkan nilai 0 (salah) jika
semua operand-nya bernilai salah, namun jika tidak, maka
operasi tersebut akan menghasilkan nilai 1 (benar). Berikut ini
tabel yang menunjukkan hasil dari operasi OR.
Pemrograman C++
X
!X
1
0
0
1
2: Komentar, Identifier, dan Tipe Data
Berikut ini program yang membuktikannya.
Kode Program 3-12
^include <iostream>
using namespace std?
int mainf) {
cout«"!l = "
cout«"!0 = "«!0«endl;
return 0;
)
Hasil yang akan diberikan dari proram di atas adalah sebagai
berikut:
Namun bagaimana jika terdapat ekspresi seperti di bawah
ini?
9HMBHBHBBBHI
Untuk menentukan nilai dari ekspresi tersebut mula-mula kita
tentukan (1 && 1), hasilnya adalah 1 (kita sebut dengan
nilai ke-1). Kemudian (0
1), hasilnya adalah 1 (kita sebut
dengan nilai ke-2). Langkah selanjutnya adalah melakukan
operasi AND terhadap nilai ke-1 dan nilai ke-2, yaitu (1 &&
1), menghasilkan nilai 1. Terakhir, nilai 1 ini kita negasikan,
yaitu dengan menggunakan ! 1, maka akan mengsilkan nilai
akhirO.
3.4.3
Jenis Operas!
Contoh
>
<
>=
<=i~
Lebih besar
Lebih Kecil
Lebih besar atau sama dengan
Lebih kecil atau sama dengan
Sama dengan
Tidak sama dengan
(5 > 2)
= 1
(5 < 2)
= 0
Operator Relasional
Operator relasional adalah operator yang digunakan untuk
menentukan relasi atau hubungan dari dua buah operand. Operator
ini ditempatkan di dalam sebuah ekspresi, yang kemudian akan
menentukan benar atau tidaknya sebuah ekspresi. Adapun yang
termasuk dalam operator relasional di dalam C + + adalah seperti
yang tampak pada tabel di bawah ini.
Pemrograman C++
(5 >= 5
= 1
(5 <= 2
= 0
(5 == 2
- 0
(5
= 1
!= 2
Operator ini banyak digunakan untuk melakukan pengecekan
sebuah ekspresi (kondisi) dalam struktur percabangan yang baru
akan dibahas pada bab selanjutnya dalam buku ini.
3.4.4
II = 0
!0 = 1
! ( d && i) && (o || i ) j
Operator
Operator Bitwise
Tidak seperti kebanyakan bahasa pemrograman lainnya, C/C + +
mendukung penuh operator-operator bitwise. Operator bitwise
sendiri berguna untuk melakukan operasi-operasi yang
berhubungan dengan pemanipulasian bit. Sejak bahasa C
diciptakan, bahasa C banyak digunakan untuk lebih memudahkan
pemrograman yang berhubungan dengan alat. Hal ini disebabkan
karena bahasa tersebut mendukung operasi-operasi bitwise yang
biasanya dilakukan dengan menggunakan bahasa assembly.
Walaupun demikian, pada kenyataannya, untuk menyelesaikan
kasus-kasus tertentu bahasa C/C + + masih hams menggunakan
bahasa assembly yang disisipkan di dalamnya. Hal ini disebut
dengan istilah inline assembly, yang akan dibahas pada lampiran di
dalam buku ini.
Sebagai catatan bahwa operator bitwise ini hanya dapat dilakukan
pada operand yang bertipe char dan int saja karena ini
berkoresponden dengan tipe byte atau word di dalam bit. Adapun
yang termasuk dalam operator bitwise dalam C + + adalah seperti
yang tampak pada tabel di bawah ini.
)perator
C
\
Jenis Operasi
AND
Contoh
OR
1
1 & 0 = 0
0 = 1
A
Exclusive OR (XOR)
1
NOT
-1 = 0
2: Komentar, Identifier, dan Tipe Data
1 = 0
»
Shift Right
5 « 1 = 10
«
Shift Left
10 » 1 = 5
Fungsi dari operator &,
dan - di atas adalah sarna dengan
operator &&, | dan ! pada operator logika, perbedaannya hanya
operator-operator bitwise ini bekerja bit demi bit, sedangkan pada
operator logika bekerja untuk setiap nilai. Namun sekarang yang
perlu Anda ketahui di sini adalah penggunaan operator ^ , » dan
Untuk lebih memudahkan Anda dalam memahami
penggunaannya, ingatlah bahwa setiap pergeseran satu bit,
operator ini akan membagi suatu nilai dengan 2. Sebagai
contoh, jika kita melakukan operasi 16 » 1, maka hasilnya
adalah 8. Sedangkan jika 16 » 2, maka hasilnya adalah 4.
Berikut ini program yang menunjukkan kasus tersebut.
Kode Program 3-13
tinclude <iostream>
using namespace std;
a.
Operator
Operator ini digunakan untuk melakukan operasi exclusive OR
(XOR). Adapun hasil dari operasi ini akan bernilai 1 (benar)
jika satu operand-nya (bukan salah satu) bemilai benar,
selain itu akan menghasilkan nilai 0 (salah). Dengan
demikian, jika kedua operand-nya bernilai 1 (benar), maka
hasil dari operasi ini adalah 0 (salah). Untuk lebih
memahaminya, berikut ini tabel yang menyatakan hasil dari
operasi XOR.
X
A
// Menggeser 1 bic ke kanan dari bentuk biner bilangan
// 16
X = 16 » 1;
// Menggeser 2 bit ke kanan dari bentuk biner bilangan
// 16
Y = 16 » 2;
// Menampilkan hasil
cout«"16 » l = "«x«endl;
, cout«"16 » 2 = "«Y;
Y
1
X Y
0
1
. return 0;
}
0
0
0
0
1
1
Hasil yang akan diperoleh dari program di atas adalah
sebagai berikut:
1
1
0
Sebagai contoh, kita akan melakukan operasi 120 127, maka
hasilnya adalah sebagai berikut:
120 dalam bentuk bilangan biner
01111000
01111111
127 dalam bentuk bilangan biner
/•v
00000111
b.
int main() {
int X, Y;
hasil = 7
16 » 1 = 8
16 » 2 = 4
Untuk mengilustrasikan proses tersebut, perhatikan ta£>el di
bawah ini.
Nilai X
X dalam Bentuk Biner
Hasil
16
X = 16
00010000
Operator»
X = 16 » 1
00001000
8
Operator » (shift right) digunakan untuk melakukan
perpindahan bit ke arah kanan. Adapun bentuk umum dari
X = 16 » 2
00000100
4
X = 16 » 3
00000010
2
penggunaan operator ini dapat dituliskan seperti berikut.
nilai » banyaknya_pergeseran_bit_ke_arah_kanan
X = 16 » 4
00000001
1
Pemrograman
Bab 2: Komentar, Identifier, dan Tipe Data
c.
Operator«
X = 1 «2
X = 1 «3
X = 1 «4
Operator « (shift left) merupakan kebalikan dari operator
», yaitu digunakan untuk melakukan perpindahan bit ke
arah kiri. Adapun bentuk umum dari penggunaan operator ini
dapat dituliskan seperti berikut.
^^^^^^^
00000100
00001000
00010000
16
nilai « banyaknya_pergeseran_bit_ke_arah__kiri
Kebalikan dari operator » yang membagi nilai dengan 2,
pada operator « justru akan mengalikan nilai dengan 2.
Misalnya, 1 « 1 akan menghasilkan nilai 2. Sedangkan jika
1 « 2 maka nilai yang dihasilkan adalah 4. Berikut ini
contoh program yang akan membuktikan hal tersebut.
Kode Program 3-14
^include <iostream>
using namespace std;
int main( ) {
int X, Y;
// Menggeser 1 bit ke kiri dari bentuk biner bilangan 1
X = 1 « 1;
// Menggeser 2 bit ke kiri dari bentuk biner bilangan 1
Y = 1 « 2;
// Menampilkan hasil
cout«"l « 1 = "«X«endl;
cout«"l « 2 = "«Y;
3.5
Operator Ternary
Operator ternary adalah operator yang digunakan dalam operasi
yang melibatkan tiga buah operand. Adapun operator yang
digunakan untuk menyatakannya adalah operator ? ;. Konsep yang
mendasari operasi ini adalah suatu percabangan (pemilihan) yang
didasarkan atas kondisi tertentu. Berikut ini bentuk umum dari
penggunaan operator ternary.
Ekspresil ? Ekspresi2 i Ekpresi3;
Jika ekspresil bernilai benar, maka program akan mengeksekusi
ekpresi2. Sedangkan jika ekspresil bernilai salah maka yang
dieksekusi adalah ekspresi3. Berikut ini contoh program yang
menggunakan operator tersebut.
Kode Program 3-15
^include <iostream>
using namespace std;
int main(} {
return 0;
int X;
Hasil yang akan diperoleh dari program di atas adalah
sebagai berikut :
// Meminta user untuk memasukkan nilai X dari keyboard
cout«"Masukkan nilai X : "; cin»X;
cout«' \n' ;
X • (x < 0) ? -X i X; // Melakukan pengecekan terhadap nilai
1«1 = 2
1 « 2= 4
// x
Untuk mengilustrasikan proses tersebut, perhatikan tabel di
bawah ini.
Nilai X
X dalam Bentuk Biner
Hasil
x
00000001
1
X = 1 « 1
00000010
2
// Menampilkan nilai X setelah proses pengecekan
cout«" | X | = "«X;
return 0;
Contoh hasil yang akan diberikan dari program di atas adalah
sebagai berikut:
Pemrograman C+
2: Komentar, Identifier, dan Tipe Data
BAB 4
PERCABANGAN
Masukkan nilai X : -15
X I = 15
Sebagai tambahan bagi Anda, jika program di atas dalam bentuk
struktur if maka sintaksnya adalah sebagai berikut:
Kode Program 3-16
^include <iostream>
using namespace std;
int main() [
int X;
cout«"Masukkan nilai X : "; cin»X;
if (X < 0} X - -X; // Melakukan pengecekan
4.1
// Menampilkan nilai X setelah proses pengecekan
cout«"| X | = "«X;
return 0;
Jika Anda masih bingung dengan kehadiran struktur if di atas,
lihat bab selanjutnya yang membahas mengenai percabangan.
Pendahuluan
Salah satu permasalahan yang pasti ditemui dalam pembuatan
program adalah suatu percabangan. Percabangan yang dimaksud
di sini tidak lain adalah suatu pemilihan statemen yang akan
dieksesusi dimana pemilihan tersebut didasarkan atas kondisi
tertentu. Di dalam C + + , terdapat dua buah jenis struktur yang
digunakan untuk mengimplementasikan suatu percabangan, yaitu
dengan menggunakan struktur if dan struktur switch.
Statemen-statemen yang terdapat dalam sebuah blok percabangan
akan dieksekusi hanya jika kondisi yang didefinisikan terpenuhi
(bernilai benar). Artinya jika kondisi tidak terpenuhi {bernilai salah),
maka statemen-statemen tersebut juga tidak ikut dieksekusi atau
dengan kata lain akan diabaikan oleh kompiler. Untuk lebih
memahami konsep percabangan, perhatikan kalimat di bawah ini.
"Jika Audi lulus uj ian maka Andi akan dibelikan sepeda irotor
oleh ayannya."
Coba Anda amati, pada kalimat di atas yang merupakan kondisi
adalah lulus ujian. Pada kasus ini sepeda motor hanya akan dibeli
jika Andi lulus ujian. Sebaliknya, jika tidak lulus, maka sepeda
motor pun tidak akan dibeli. Suatu percabangan dapat terdiri dari
satu kondisi maupun lebih. Pada bab ini kita akan membahas
secara detil implementasi dari percabangan yang terdapat pada
bahasa C + + .
Pemrograman C-*
Bab 4: Percabangan
4.2
Struktur Satu Kondisi
Struktur ini merupakan struktur yang paling sederhana karena
hanya melibatkan satu buah ekspresi yang akan diperiksa.
Bentuk umum dari struktur percabangan yang memiliki satu kondisi
adalah sebagai berikut :
.I
Namun yang jelas, program di atas akan menampilkan teks "Nilai
yang Anda masukkan adalah bilangan p o s i t i f " jika
user memasukkan nilai yang lebih besar dari nol.
Kita juga dapat menggunakan operator |
dan && dalam
menentukan sebuah ekspresi. Berikut ini contoh yang
mengimplementasikan hal tersebut.
// Jika terdapat lebih dari satu statemen
Kode Program 4-2
if (kondisi) {
Statement;
Statemen2;
^include <iostream>
using namespace std;
// Jika hanya terdapat satu statemen, dapat ditulis
// seperti di bawah
int main{) {
int bilangan;
char huruf;
// Meminta user untuk memasukkan sebuah bilangan
cout«"Masukkan sebuah. bilangan bulat : "; cin»bilangan;
if (kondisi} Statemen;
Sebagai contoh untuk menerapkan konsep yang terdapat pada
bagian ini, berikut ini disajikan beberapa contoh program.
Kode Program 4-1
if ((bilangan > 0) && (bilangan < 10)}
cout«bilangan«" lebih besar dari nol dan V1 \
"lebih kecil dari sepuluh";
// Meminta user untuk memasukkan sebuah huruf
cout« "Masukkan sebuah huruf : ";
^include <iostream>
using namespace std;
if
int main() {
int nilai;
// Memberikan informasi agar user memasukkan
// sebuah bilangan bulat
cout«"Masukkan sebuah bilangan bulat : ";
// Membaca nilai yang dimasukkan dari keyboard dan disimpan
// ke variabel nilai
cin»nilai;
"// Menampilkan sebuah teks jika nilai yang tersimpan
// lebih besar dari nol
if (nilai > 0)
cout«"Nilai yang Anda masukkan adalah bilangan positif";
return 0;
}
Hasil dari program di atas bersifat dinamis, artinya tidak setiap
proses eksekusi program akan memberikan hasil yang sama, karena
hasilnya tentu tergantung kepada nilai yang dimasukkan oleh user.
Pemrograman
(huruf == 'A')
(huruf == ' a ' ) j
(huruf == VI')
(huruf == l i ' ) j
(huruf == 'U'
| (huruf == ' u ' )
(huruf == 'E')
(huruf == ' e ' )
{huruf == '0'
I (huruf == v c
cout«huruf«" adalah salah satu huruf vokal'
return 0 ;
Contoh hasil yang diberikan dari program di atas adalah sebagai
berikut :
Masukkan sebuah bilangan bulat: 6
6 lebih besar dari nol dan lebih kecil dari sepuluh
Masukkan sebuah huruf : A
A adalah salah satu huruf vokal
Bab 4: Percabangan
4.3
Struktur Dua Kondisi
Masukkan bilangan bulat yang akan diperiksa : 11
11 adalah bilangan ganjil
Struktur percabangan jenis ini sedikit lebih kompleks bila
dibandingkan dengan Struktur yang hanya memiliki satu buah
kondisi. Sebenarnya konsepnya sangat sederhana, yaitu pada
Struktur jenis ini terdapat sebuah statemen khusus yang berguna
untuk mengatasi kejadian apabila kondisi yang didefinisikan
tersebut tidak terpenuhi (bernilai salah). Adapun bentuk umum dari
struktur percabangan jenis ini adalah sebagai berikut:
if {kondisi} {
Statemen_j ika_kondi si_terpenuhi;
} else {
Statementika_kondisi_tidak_terpenuhi;
>
Untuk lebih memahami konsep dari struktur percabangan jenis ini,
di bawah ini disajikan beberapa contoh program yang
mengimplementasikan hal tersebut.
Berikut ini adalah contoh program yang akan menentukan suatu
bilangan apakah temiasuk ke dalam bilangan genap atau ganjil.
Adapun sintaks programnya dapat dilihat di bawah ini.
Kode Program 4-3
Coba Anda amati hasil di atas, pada saat program dijalankan user
memasukkan bilangan 11 dan nilai tersebut akan disimpan ke
dalam variabel bil. Selanjutnya program melakukan pengecekan
terhadap nilai yang terdapat dalam variabel tersebut melalui
ekspresi (bil % 2 == 0}. Maksud dari ekspresi tersebut adalah
melakukan pengecekan apakah nilai dari variabel tersebut habis di
bagi dua (sisa = 0) atau tidak. Jika ya, maka bilangan tersebut tentu
akan termasuk ke dalam bilangan genap. Namun pada kasus ini
karena 11 tidak dapat habis dibagi dua maka program akan memilih
statemen yang terdapat pada bagian else.
Contoh lain yang dapat diambil untuk menerangkan hal ini adalah
pada saat kita membuat program untuk melakukan validasi nilai
pada proses pembagian bilangan. Untuk lebih jelasnya perhatikan
sintaks program di bawah ini.
Kode Program 4-4
t
include <iostream>
include <iomanip>
ttinclude <iostream>
using namespace std;
using namespace std;
inC main() {
double X, Y, Z;
int itiaint) {
int bilangan;:
// Meminta user untuk inemasukkan bilangan
cout«"Masukkan bilangan yang akan dibagi : ";
cout«"Masukkan bilangan bulat yang akan diperiksa : ";
cin»bilangan;
cin»X;
cout«"Masukkan bilangan pembagi
: ";
cin»Y;
// Melakukan pengecekan bilangan apakah habis
// dibagi dua atau tidak
if (bil % 2 == 0) {
cout«bil«" adalah bilangan genap";
} else {
cout«bil«" adalah bilangan ganjil";
}
// Menghindari terjadinya pembagian dengan 0
if (Y == 0) {
cout«"Kesalahan ; Bilangan pembagi tidak boleh NOL";
} else {
// Melakukan proses pembagian bilangan X dengan Y
Z = X/Y;
return 0;
Contoh hasil yang akan diberikan oleh program di atas adalah
seperti tampak di bawah.
Pemrograman C-*
// Mengeset presisi dari hasil bagi dengan nilai dua angka
// di belakang koma
cout.precision = 2;
// Menampilkan hasil bagi
Bab 4: Percabangan
cout«"Hasil bagi = "«Z;
1
int main( ) {
int bil;
return 0;
I
cout«"Masukkan sebuah bilangan bulat yang akan diperiksa :
}
Contoh hasil yang diberikan dari program di atas adalah sebagai
berikut :
cin»bil;
if {bil > 0) {
cout«bil«" adalah bilangan POSITIF";
) else if (bil < 0} {
cout«bil«" adalah bilangan NEGATIF";
} else {
cout«"Anda memasukkan bilangan NOL";
Masukkan bilangan yang akan dibagi : 10
Masukkan bilangan pembagi
:3
Hasil bagi = 3.33
return 0;
4.4
Struktur Tiga Kondisi
Struktur jenis ini merupakan struktur percabangan yang biasanya
membingungkan para programmer pemula. Percabangan jenis ini
merupakan perluasan dari struktur yang memiliki dua kondisi di
atas, yaitu dengan menyisipkan (menambahkan) satu atau lebih
kondisi ke dalamnya. Bentuk umum dari struktur percabangan yang
memiliki lebih dari dua kondisi adalah seperti yang tampak di
bawah ini.
if (kondisil) {
Statemen_jika_kondisil_terpenuhi ;
} else i£ (kondisi2) {
Statemen_jika_kondisi2_terpenuhi;
} else if (kondisi3) {
Statemen_jika_kondisi3_terpenuhi ;
else [
Statemen_jika_semua_kondisi_diatas_tidak_terpenuhi;
}
Sebagai contoh untuk menerapkan konsep ini adalah pada saat kita
menentukan sebuah bilangan bulat, apakah bilangan tersebut
termasuk bilangan positif, negatif atau nol. Adapun sintaks
programnya dapat dilihat di bawah ini.
Contoh hasil yang diberikan dari program di atas adalah sebagai
berikut :
Masukkan sebuah bilangan yang akan diperiksa : -6
-6 adalah bilangan NEGATIF
Untuk dapat lebih memahami konsep dari percabangan yang
memiliki tiga kondisi atau lebih ini, coba Anda ingat kembali
pelajaran matematika dalam menentukan akar-akar persamaan
kuadrat dengan menggunakan rumus ABC. Kita tahu bahwa bentuk
umum dari persamaan kuadrat adalah y = ax2 + bx + c, dan untuk
menentukan akar-akar dari persamaan tersebut sebelumnya kita
harus melakukan perhitungan koefisien untuk mendapatkan nilai
determinan (D) yaitu dengan menggunakan rumus berikut:
o « b 2 - 4.a.c
flHHHHMHMMHHHHB
Setelah nilai determinan diketahui, terdapat tiga kemungkinan yang
dapat menentukan akar-akar pesamaan tersebut, yaitu :
a.
Jika D > 0, maka x} dan x2 bersifat riil dan berbeda. Rumus
untuk penentuan nilainya adalah sebagai berikut:
x, = (-b + VD) / 2a
Kode Program 4-5
x2 = (-b - VD) / 2a
^include <iostream>
b.
Jika D = 0, maka x, dan x2 bersifat riil dan sama.
using namespace std;
c.
Jika D < 0, maka x: dan x2 bersifat imaginer
Pemrograman
Bab 4: Percabangan
Sekarang kita kembali ke pokok permasalahan kita dengan
mengimplementasikan kasus di atas ke dalam program. Adapun
sintaksnya dapat dilihat di bawah ini.
Kode Program 4-6
ftinclude <iostream>
// M&nasukkan header <cmath> untuk memanggil fungsi sqrt()
^include <cmath>
int main ( ) {
int a, b, c;
float D, xl, x2;
int flag;
untuk
nilai
nilai
nilai
x2 = 2
Sebagai contoh terakhir dari penggunaan statemen if bersarang
ini, di sini kita akan membuat program yang dapat menentukan
nilai indeks (A, B, C, D dan E) dari nilai akhir yang didapatkan oleh
seorang mahasiswa. Untuk menjawab kasus ini, misalnya kita telah
mempunyai ketentuan untuk penilaian, yaitu sebagai berikut:
using namespace std;
// Meminta user
cout«"Masukkan
cout«"Masukkan
cout«"Masukkan
cout«endl;
Masukkan nilai a : 1
Masukkan nilai b : -5
Masukkan nilai c : 6
menentukan koefisien persamaan kuadrat
a : "; cin»a;
b : " ; cin»b;
c : "; cin»c;
// Menghitung nilai determinan
D = (b*b) - (4*a*c) ;
// Menentukan akar-akar persamaan kuadrat
if (D > 0) {
xl = ( (-b} + sqrt(D)) / (2*a) ;
x2 = ((-b) - sqrt(D) ) / (2*a) ;
:
flag = 1;
-} else if (D;== 0)" {
xl = ( (-b) + sqrt(Dj) / (2*a) ;
x2 = xl;
flag - 1;
} else {
flag = 0;
// Menampilkan akar-akar persamaan kuadrat
if (flag == l) {
// dapat .ditulis dengan if (flag) <
cout«:''xl = "«xl«endl;
cout«:''x2 = "«x2«endl;
} else {
J
cout«"xl dan x2 imaginer";
return 0;
Contoh hasil yang diberikan dari program di atas adalah sebagai
berikut :
nilai > 85
70 <, nilai < 85
55 ^ nilai < 70
40 <, nilai < 55
nilai < 40
Dengan ketentuan di atas, maka kita dapat menuliskan sintaks dari
program tersebut seperti di bawah ini.
Kode Program 4-7
finclude <iostream>
sing namespace
std;
it m a i n ( ) {
double nilai;
char indeks;
// Meminta user untuk menentukan nilai
// .yang diperoleh dalam bentuk bilangan
cdut«"Masukkan nilai yang diperoleh : "; cin»nilai;
// Melakukan konversi nilai menjadi nilai indeks
if (nilai >= 85) {
indeks = ' A ' ;
else if (nilai >= 70) (
indeks = ' B ' ;
."} else if (nilai >= 55) {
indeks = 1 C ' ;
} else if {nilai >= 40) {
indeks = 1 D' ,} else {
indeks = ' E ' ;
}
// Menampilkan nilai indeks yang didapatkan
cout«"Nilai indeks dari nilai "«nilai«" adalah "«indeks;
return 0 ;
Berikut ini adalah contoh-contoh program yang mengimplementasikan konsep percabangan dengan menggunakan kata
Icunci switch. Sebagai contoh pertama, kita akan membuat
program yang dapat menentukan nama hari dari nilai bilangan yang
dimasukkan. Sintaksnya dapat dilihat di bawah ini.
Contoh hasil dari program di atas adalah sebagai berikut
Masukkan nilai yang diperoleh : 76
Nilai indeks dari nilai 76 adalah B
Kode Program 4-8
#include <iostream>
using namespace std;
int main() {
int bil;
4.5
Pemilihan Menggunakan Kata Kunci
switch
cout<-<"Masukkan sebuah bilangan (1..7) :
cin»bil;
switch (bil ) {
case 1 : cout«"Hari ke-"«bil«"
adalah MINGGU";
break;
case 2 : cout«"Hari ke-"«bil«"
adalah SENIN";
break ;
case 3 : cout«"Hari ke-"«bil«"
adalah SELASA";
break;
tt
case 4 : cout«"Hari ke- «bil«"
adalah RABU";
break ;
case 5 : cout«"Hari ke-u«bil«"
adalah KAMIS";
break ;
case 6 : cout«"Hari ke-"«bil«"
adalah JUMAT";
break;
case 7 : cout«"Hari ke-"«bil«" : adalah SABTU";
break;
default : cout«"Tidak terdapat nama hari ke-"«bil;
Selain menggunakan struktur if, C + + juga menawarkan kepada
kita untuk dapat melakukan pemilihan dengan menggunakan kata
kunci switch. Bentuk urnum dari struktur percabangan yang
menggunakan kata kunci switch ini adalah sebagai berikut:
switch (ekspresi) {
;
case nilai_konstanl
case nilai_konstan2
: Statemen_statemen; break;
: Statemen_statemen; break;
case nilai_konstanN : Statemen_statemen; break;
default
Statemen_statemen_altematif;
Tipe data dari ekspresi di atas haruslah bilangan bulat atau
karakter. Selain tipe tersebut, C + + tidak mengizinkan. Sedangkan
statenien default berguna untuk mengeksekusi statemen
alternatif, yaitu jika nilai yang kita masukkan ternyata tidak sesuai
dengan nilai-nilai konstan yang telah didefinisikan. Kita dapat
mendefinisikan nilai konstan tersebut dengan menggunakan
statatemen case. Dalam bahasa C standar kita diizinkan untuk
menuliskan 257 buah statemen case dalam sebuah struktur
percabangan yang menggunakan kata kunci switch, sedangkan
C++ mengizinkan 16.384 buah. Namun, pada prakteknya sebaiknya
kita membatasi pemilihan tersebut untuk efisiensi program yang
kita buat. Statemen break di atas berfungsi sebagai statemen
peloncatan, hal ini akan kita bahas lebih detil dalam bab
pengulangan.
Pemrograman C++
return 0;
)
Contoh hasil yang diberikan dari program di atas adalah sebagai
berikut :
Masukkan sebuah bilangan (1..7) : 3
Hari ke-3 adalah SELASA
Namun apa yang terjadi jika kita memasukkan nilai yang lebih kecil
dari 1 atau lebih besar dari 7? Tanpa menjalankan program
tersebut, sebenarnya kita sudah mengetahui bahwa yang akan
dieksekusi adalah statemen yang terdapat pada pilihan default.
Bab 4: Percabangan
Untuk membuktikan hal ini, misalnya kita memasukkan nilai 10,
maka program di atas akan memberikan hasil seperti di bawah ini.
BAB 5
PENGULANGAN
Masukkan sebuah bilangan (1..7): 10
Tidak terdapat nama hari ke-10
Sama halnya seperti struktur percabangan yang menggunakan
statemen i f , struktur yang menggunakan statemen switch juga
dapat dituliskan secara bersarang, Sebagai gambaran dari
pernyataan ini, statemen switch bersarang dapat dirurnuskan
seperti di bawah ini.
switch (ekspresil) {
case nilai_konstanl i {
switch (ekspresi2) {
case nilai_konstanA t Statemen_statemen; break;
case nilai_konstanB i Statemen_statemen; break/
}
break;
}
case nilai_konstan2 * {
Statemen_statemen;
break;
5.1
Walaupun C + + mengizinkan hal ini, namun pada prakteknya cara
seperti ini jarang sekali dijumpai dalam program-program yang
ditulis dengan C + + karena alasan efisiensi.
Pendahuluan
Pengulangan adalah suatu proses yang melakukan statemenstatemen dalam sebuah program secara terus-menerus sampai
terdapat kondisi untuk menghentikannya. Struktur pengulangan
akan sangat membantu dalam efisiensi program. Untuk mengetahui
konsep ini secara mendasar, perhatikan program di bawah ini
Kode Program 5-1
^include <iostream>
using namespace std;
int main{) {
menyukai
menyukai
menyukai
menyukai
menyukai
menyukai
menyukai
menyukai
menyukai
menyukai
Pemrograrnan
Bab 5: Pengulangan
C++"«endl;
C++*«endl;
C+ + "«endl;
C++"«endl;
C++"«endl;
C++"«endl;
C++"«endl;
C++"«endl;
C++"«endl;
C++"«endl;
// Untuk pengulangan yang sifatnya menaik (increment)
for (variabel = nilai_awal; kondisi; variabe !+•*•) {
Statemen_yang_akan_diulang;
Maksud dari program di atas adalah untuk menampilkan teks
"Saya sangat menyukai C++" sebanyak sepuluh kali. Jika
ditinjau dari hasilnya, program di atas memang benar tetapi secara
algoritma hal tersebut jelas salah karena tidak efisien, baik dilihat
dari segi waktu maupun besarnya ukuran program yang dihasilkan.
Mungkin untuk sepuluh kali pengulangan kita belum melihat
bahwa program tersebut tidak efisien, namun bagaimana jika kita
ingin menampilkan teks di atas sebanyak 500 atau bahkan 1000
kali? Jika kita menggunakan cara seperti di atas, tentu waktu dan
tenaga kita akan terbuang sia-sia. Maka dari itu, dalam menghadapi
kasus-kasus seperti ini, kita hams menggunakan struktur
pengulangan.
Namun untuk melakukan pengulangan statemen, tentunya kita
harus mengenal dengan baik aturan-aturan yang terdapat di
dalamnya sehingga kita dapat terhindar dari kesalahan-kesalahan
yang tidak diinginkan.
Dalam bahasa C+ + terdapat tiga buah jenis struktur pengulangan,
yaitu struktur for, struktur while dan struktur do-while.
Penjelasan mengenai setiap jenis tersebut dapat dilihat dalam
masing-masing sub bab di bawah ini.
5.2
// Untuk pengulangan yang sifatnya menurun (decrement)
for ( var i abel = ni lai_awal ; kondi si ; variabel - - ) {
Statemen_yang_akan_diulang;
}
Sebagai catatan bahwa jika kita melakukan pengulangan yang
sifatnya menaik (increment) maka nilai awal dari variabel yang kita
definisikan haruslah lebih kecil dari nilai akhir yang dituliskan
dalam kondisi (ekspresi). Sebaliknya, jika kita akan melakukan
pengulangan yang sifatnya menurun (decrement) maka nilai awal
harus lebih besar dari nilai akhir.
Berikut ini contoh program yang menunjukkan pengulangan dengan
menggunakan struktur for. Program akan ditulis dalam dua tipe,
yaitu tipe menaik dan menurun.
a.
Pengulangan yang sifatnya menaik
Kode Program 5-2
ttinclude <iostream>
using namespace std;
int m a i n ( ) {
int C;
for ( C = 0 ; C<10; C + + ) {
cout«"Saya sangat menyukai C+ + "«endl;
}
Struktur for
return 0;
}
Struktur pengulangan jenis ini digunakan untuk melakukan
pengulangan yang telah diketahui banyaknya. Jenis ini merupakan
jenis struktur pengulangan yang paling mudah dipahami. Untuk
melakukan pengulangan dengan menggunakan struktur ini, kita
harus memiliki sebuah variabel sebagai indeksnya. Namun perlu
sekali untuk diperhatikan bahwa tipe data dari variabel yang akan
digunakan sebagai indeks haruslah tipe data yang mempunyai
urutan yang teratur, misalnya tipe data int (0,1,2,...) atau char
('a 1 , 'b1, 'c',...}.
Adapun bentuk umum dari struktur for
tampak di bawah ini.
adalah seperti yang
Pemrograman C++
b.
Pengulangan yang sifatnya menurun
Kode Program 5-3
ttinclude <iostream>
using namespace std;
int m a i n ( ) {
int C;
for (C=10; 00; C--) {
cout«"Saya sangat menyukai C++"«endl,
J
return 0;
Bab 5: Pengulangan
Kedua program di atas jika dijalankan akan menghasilkan hasil
yang sama, yaitu sebagai berikut:
Say a sang at menyukai C+ +
Say a sang at menyukai C + +
Saya sang at menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C + +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
PENGULANGAN MENAIK
1
2
3
4
5
6
7
8
9
10
PENGULANGAN MENURUN
10
9
Jika Anda masih merasa bingung tentang perbedaan antara
pengulangan yang sifatnya menaik dan menurun, coba perhatikan
kembali program di bawah ini.
Kode Program 5-4
^include <iostream>
using namespace std;
Secara default, struktur for akan menaikkan atau menurunkan nilai
dari sebuah variabel indeks dengan nilai 1, namun bagaimana jika
kita ingin menaikkan nilai tersebut dengan nilai yang lain?
Jawabnya adalah dengan menggantikan operator increment atau
decrement dengan statemen yang kita definisikan sendiri. Berikut
ini contoh program yang menaikkan nilai variabel indeks dengan
nilai 5.
int m a i n ( ) {
CQUt«" PENGULANGAN MENAIK"«endl ;
for (C=0; C<10; C + + ) {
cout«C+l«endl ;
// Membuat spasi vertikal
c o u t « ' \ n ' ; // dapat ditulis cout«endl/
C0ut«" PENGULANGAN MENURUN"«endl ;
for (J=10; J>0; J--) {
cout«J«endl ,*
Kode Program 5-5
ttinclude <iostream>
using namespace std;
return 0;
^Hi^HH^HMHHHMMHH^IHM^HHBHI
Hasil yang akan diberikan dari program di atas adalah sebagai
berikut ;
Pemrograman C-»
int main() {
for (in 00;. C<25; C+5) {
cout«C+l«endl ;
)
return 0;
Bab 5: Pengulangan
Hasil yang akan diberikan oleh program di atas adalah sebagai
berikut:
1
5
10
15
20
25
Nilai A = a
Nilai B = 0
Nilai C = 1
Nilai A = b
Nilai B = 5
Nilai C = 10
Nilai A = c
Nilai B = 10
Nilai C - 100
5.2.1
Struktur for dengan Banyak Variabel
Struktur for di dalam C + + dapat juga melibatkan lebih dari satu
variabel, namun yang jelas satu diantaranya akan digunakan
sebagai indeks pengulangan.Untuk memahami konsepnya, berikut
ini disajikan sebuah contoh program dimana di dalamnya terdapat
Struktur for yang melibatkan tiga buah variabel, yaitu A, B dan C.
Nilai A = d
Nilai B = 15
Nilai C = 1000
) ^ '''
Nilai A = e
Nilai B = 20
Nilai C = 10000
Kode Program 5-6
^include <iostream>
5.2.2
using namespace std;
int main() {
char A;
int B;
int C;
for (A='a'(
// variabel A (bertipe char) akan digunakan
// sebagai indeks pengulangan
// variabel B akan digunakan untuk
// menampung nilai penjumlahan
// variabel C akan digunakan untuk
// menampung nilai perkalian
C=l; A<='e'; A++, B=B+5, C=C*10) (
cout«"Nilai A = "«A«endl;
cout«"Nilai B = "«B«endl;
cout«"Nilai C = "«C«endl;
cout«endl;
return 0 ;
Hasil yang akan diperoleh dari program di atas sebagai berikut :
Pemrograman C-*
Struktur for Bersarang
Sama halnya seperti pada percabangan, pada Struktur pengulangan
juga dapat juga diterapkan pengulangan bersarang (nested
looping). Pada bagian ini hanya akan diterangkan pengulangan
bersarang dengan menggunakan Struktur for. Konsepnya sangat
sederhana, yaitu dalam sebuah pengulangan terdapat pengulangan
yang lainnya. Bentuk umum dari struktur for bersarang dapat
dirumuskan seperti di bawah ini.
for (variabell»nilai_awal; kondisil; variabell++) {
for (variabe!2=nilai_awal; kondisi2; variabel2++) {
for (variabe!3-nilai_awal; kondisiS; variabe!3++) {
Statemen_statemen_yang_akan_diulang;
Jika kita lihat dari rumusan di atas, pada setiap pengulangan
pertama program akan menyelesaikan pengulangan kedua.Begitu
juga pada setiap pengulangan kedua, program akan menyelesaikan
Bab 5: Pengulangan
pengulangan ketiga, begitu seterusnya. Untuk lebih jelasnya,
perhatian contoh program berikut dimana di dalamnya terdapat dua
struktur for yang saling berkaitan.
Kode Program 5-7
tidak akan pernah dieksekusi oleh program. Adapun bentuk umum
dari struktur pengulangan while ini adalah seperti yang tampak di
kawah ini. j_tt__^^^^^^___^^__^^^^
while (kondisi) {
Statemen_statemen_yang_akan_diulang;
>
^include <iostream>
*
Berikut ini contoh program di atas yang ditulis kembali dengan
menggunakan struktur while.
using namespace std;
int main ( ) (
for (int >=1; j<=10;
for (int k=l; k<=j; k+
cout«k*j«' ' ;
}
cout«' \n' -,
Kode Program 5-8
^include <iostream>
using namespace std;
int m a i n ( ) (
int C;
return 0;
}
// Melakukan inisialisasi nilai terhadap
// varlabel C
Jika dijalankan, program di atas akan memberikan hasil sebagai
berikut :
while (C<10) {
cout«"Saya sangat menyukai C++"«endl;
C++;
/* Statemen ini berguna untuk menaikkan nilai,
dan setelah bernilai 10,
maka pengulangan akan dihentikan */
1
24
369
4812 16
5 10 15 20 25
6 12 18 24 30 36
7142128354249
8 16 24 32 40 48 56 64
91827364554637281
10 20 30 40 50 60 70 80 90 100
5.3
// Mendeklarasikan varaiebl C sebagai
// indeks pengulangan
return 0;
Sama seperti sebelumnya, program ini juga akan memberikan hasil
sebagai berikut :
Struktur while
Struktur pengulangan jenis ini adalah pengulangan yang
melakukan pengecekan kondisi di awal blok struktur. Kita tahu
bahwa pengulangan hanya akan dilakukan jika kondisi yang
didefinisikan di dalamnya terpenuhi (bemilai benar). Hal ini berarti
jika kondisi yang didefinisikan tidak terpenuhi (bernilai salah) maka
statemen-statemen yang terdapat dalam blok pengulangan pun
Peinrograman
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C + +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C + +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Bab 5: Pengulangan
Namun perlu sekali diperhatikan bahwa untuk melakukan
pengulangan dengan menggunakan struktur while, kita hams
berhati-hati dalam menentukan inisialisasi nilai awal dan
memanipulasi nilai tersebut supaya pengulangan akan berhenti
sesuai dengan yang diinginkan. Bagi programmer pemula, hal ini
biasanya sering terlupakan sehingga pengulangan akan dilakukan
secara terus-menerus karena kondisi yang didefinisikan selalu
bernilai benar. Berikut ini contoh program yang akan melakukan
pengulangan secara terus menerus karena tidak terdapatnya
staternen untuk menghentikan pengulangan.
Kode Program 5-9
// Contoh Program yang SALAH
cout«"Masukkan bilangan yang akan dihitung : "; cin»B!LC = BIL;
COUt«C«"! - »;
while (C >= 1) {
faktorial *= C;
// bentuk singkat
// dari faktorial
faktorial * C/
if (C != 1) {
COUt«C«" X ";
} else {
cout«C«" = " ;
}
C--;
// Menurunkan nilai yang terdapat pada variabel C
}
cout«f aktorial ;
return 0;
#include <iostream>
Program di atas adalah program yang akan menghitung nilai
faktorial dari sebuah bilangan bulat. Adapun contoh hasil yang
akan diberikan oleh program di atas adalah seperti yang tampak di
bawah ini.
using namespace std;
int main() {
int C;
// Mendeklarasikan varaiebl C
// sebagai indeks pengulangan
C - 0;
// Melakukan inisialisasi nilai terhadap variabel C
while (C<10) {
cout«"Saya sangat menyukai C++"«endl;
/* Pada baris ini tidak terdapat staternen sehingga C akan
terus bernilai 0 dan kondisi C<10 akan selalu
bernilai benar sehingga pengulangan akan terus
dilakukan */
}
return 0;
Masukkan bilangan yang akan dihitung : 5
5! = 5 x 4 x 3 x 2 x 1 = 120
Selain contoh-contoh di atas, masih banyak contoh pengulangan
lain yang dapat diterapkan dengan menggunakan struktur while,
termasuk penggunaan struktur whi 1 e bersarang. Berikut ini
contoh program yang mengimplementasikannya.
Kode Program 5-11
#include <iostream>
Struktur pengulangan while juga dapat melakukan pengulangan
yang sifatnya menurun (decrement). Berikut ini contoh program
yang mengimplementasikan hal tersebut.
using namespace std;
int main() {
int J = 10;
int K;
Kode Program 5-10
- while (J >= 1) (
K = 1;
while (K <= J) {
cout«K*J«' ',
K++;
}
cout«' \n' ;
J--;
^include <iostream>
using namespace std;
int main{) (
int BIL;
long faktorial = 1;
Pemrograrnan
Bab 5: Pengulangan
Kode Program 5-12
^include <iostream>
return 0;
using namespace std;
Hasil yang akan diperoleh dari program di atas adalah sebagai
berikut :
int main{) {
int C = 0;
10 20 30 40 50 60 70 80 90 100
do {
91827364554637281
8 16 24 32 40 48 56 64
7 14 21 28 35 42 49
6 12 18 24 30 36
5 10 15 20 25
48 1216
369
24
1
5.4.
cout«"Saya sangat menyukai C++"«endl;
C++;
} while (C < 10);
return 0;
Sama seperti sebelumnya, program di atas juga akan memberikan
hasil sebagai berikut:
Struktur do-while
Berbeda dengan struktur while yang melakukan pengecekan
kondisi di awal blok perulangan, pada struktur do-while kondisi
justru ditempatkan di bagian akhir. Hal ini tentu menyebabkan
struktur pengulangan ini minimal akan melakukan satu kali proses
walaupun kondisi yang didefinisikan tidak terpenuhi (bernilai
salah). Berikut ini bentuk umum dari struktur do-while.
do {
Statemen_yang_akan_diulang; .
} while {kondisi);--"
Sama seperti lainnya, struktur pengulangan jenis ini juga dapat
digunakan untuk kasus-kasus di atas, hanya saja kita harus teliti
dan berhati-hati dalam mendefinisikan kondisi yang terdapat di
dalamnya.
Berikut ini contoh program yang diambil dari kasus sebelumnya,
namun di sini kita akan menggunakan struktur do-while.
Pemrograman C++
Saya sangat menyukai C + +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C+ +
Saya sangat menyukai C + +
Saya sangat menyukai C+ +
Contoh lain yang dapat digunakan untuk mengimplementasikan
jenis struktur do-while adalah pembuatan program untuk
menentukan nilai faktor persekutuan terbesar dari dua buah
bilangan bulat. Misalnya kita memasukkan dua buah bilangan bulat
yaitu 8 dan 12, maka faktor persekutuan terbesar dari kedua
bilangan tersebut adalah 4. Untuk lebih jelasnya perhatikan label di
bawah ini.
Bilangan
8
12
Faktor
1,2,4,8
1,2,3,4,6,12
Bab 5: Pengulangan
Seperti yang kita lihat di atas bahwa faktor yang sama dan paling
jbesar dari bilangan 8 dan 12 adalah 4. Di sini, kita akan membuat
program yang dapat menentukan faktor persekutuan terbesar
tersebut dengan menggunakan struktur do - wh i 1 e. Adapun
sintaks programnya adalah sebagai berikut :
Kode Program 5-13
^include <iostream>
using namespace std;
int mainO {
int J - 10;
inC K;
COUt«K*J«' * ;
int main() {
int Bill, Bil2;
int sisa;
K++;
: "; cin»Bill;
: "; cin»Bi!2;
) while (K <= J);
cout«' \n' ;
J—;
} while (J >=*!);
return 0;
// Melakukan pertukaran nilai
if (Bill < Bil2) {
int temp = Bill;
Bill = Bil2;
Bil2 = temp;
1
Program tersebut akan memberikan hasil sebagai berikut
10 20 30 40 50 60 70 80 90 100
918273645 546372 81
8 16 24 32 40 48 56 64
7 14 21 28 35 42 49
do {
sisa = Bill % Bil2;
Bill = Bil2;
Bil2 = sisa;
} while (sisa != 0) ;
612 18243036
510 152025
4 8 12 16
369
24
1
cout«"\nFaktor persekutuan terbesar = "«Bill;
>
include <iostream>
do {
K = 1;
do {
using namespace std;
cout«"Masukkan bilangan pertama
cout« "Masukkan bilangan kedua
Kode Program 5-14
return 0;
Contoh hasil yang diperoleh dari program di atas adalah sebagai
berikut:
Masukkan bilangan pertama : 8
Masukkan bilangan kedua : 12
Faktor persekutuan terbesar = 4
Apa yang dapat Anda simpulkan tentang jenis-jenis pengulangan?
Jika kita amati, sebenarnya setiap jenis tersebut dapat diterapkan
pada kasus apapun, asalkan kita mendefinisikannya dengan benar.
Namun pada prakteknya, kita harus pandai dalam memilih jenis
pengulangan yang sesuai dengan kasus yang kita hadapi.
Sekarang kita akan mencoba melakukan pembuatan program
dengan menggunakan struktur do-while bersarang. Adapun
sintaks programnya dapat dilihat di bawah ini.
Pemrograman
Bab 5: Pengulangan
5.5
cout«"Nilai C = "«C;
Statemen Peloncatan
HBHI^^^^IHHHHIHl^lHl^^^^ffi
return 0;
Jika kita menggunakan struktur pengulangan, seringkali kita juga
dituntut untuk melakukan peloncatan statemen. Kata 'peloncatan1
di sini artinya kita memaksa agar pengeksekusian statemen
berjalan sesuai urutan yang kita inginkan, yaitu dengan cara
meloncat dari statemen yang satu ke statemen yang lain. Dalam
bahasa C + + , terdapat 4 fitur yang berguna untuk melakukan hal
ini, yaitu kata kunci break, continue, goto dan fungsi exit ( ) .
5.5.1
Menggunakan Kata Kunci break
Kata kunci ini berfungsi untuk menghentikan proses pengulangan
dan program akan langsung meloncat ke statemen yang berada di
bawah blok pengulangan yang bersangkutan.
Untuk dapat memahami penggunaannya, di sini kita akan membuat
contoh program yang dapat menuliskan teks " C on t oh
pengulangan dalam C++" sebanyak 10 kali. Namun perlu
untuk diperhatikan bahwa di sini kita akan memaksa proses
pengulangan dengan mendefinisikan kondisi yang selalu bernilai
benar. Adapun struktur pengulangan yang kita pilih untuk
menjawab kasus ini adalah struktur while. Sintaks programnya
dapat dilihat di bawah ini.
Kode Program 5-15
^include <iostream>,
using namespace std;
// Mendeklarasikan tipe baru yang hanya memiliki
// nilai FALSE dan TRUE
enum BOOLEAN { FALSE, TRUE };
int main() {
// Mendeklarasikan variabel seb&gai indeks pengulangan
// dan diisi dengan nilai 0
int C = 0;
while (TRUE) {
cout«"Contoh pengulangan dalam C++"«endl;
if (c == 9) break;
C++;
Pemrograman C-*
}
Jika dijalankan, program di atas akan memberikan hasil sebagai
berikut:
Contoh pengulangan
Contoh pengulangan
Contoh pengulangan
Contoh pengulangan
Contoh pengulangan
Contoh pengulangan
Contoh pengulangan
Contoh pengulangan
Contoh pengulangan
Contoh pengulangan
Nilai C = 9
dalam C + +
dalam C + +
dalam C + +
dalam C + +
dalam C + +
dalam C + +
dalam C+ +
dalam C + +
dalam C + +
dalam C+ +
Statemen while (TRUE) merupakan statemen yang memaksa
program untuk selalu melakukan pengulangan, sehingga program
tersebut harus memiliki statemen yang dapat menghentikan
pengulangan tersebut. Dan untuk melakukan hal ini, kita harus
menggunakan kata kunci break. Karena kita ingin melakukan
pengulangan sebanyak sepuluh kali maka kita harus menempatkan
kata kunci break pada saat variabel C bernilai 9. Kenapa 9?
Jawabnya adalah karena nilai indeks yang kita definisikan dimulai
dari 0. Setelah itu program akan meloncat langsung ke statemen
yang terdapat di bawah blok pengulangan tanpa mengeksekusi lagi
statemen C++; (baris program yang berada di bawah kata kunci
break) yang terdapat di dalam blok pengulangan.
5.5.2
Menggunakan Kata Kunci continue
Berbeda sekali dengan kata kunci break yang berguna untuk
menghentikan pengulangan, kata kunci continue ini justru
berfungsi untuk melanjutkan proses pengulangan. Dengan kata
lain, kata kunci ini akan menyebabkan program meloncat ke
statemen awal yang terdapat dalam blok pengulangan.
Bab 5: Pengulangan
Berikut ini adalah contoh program dimana di dalamnya terdapat
penggunaan struktur pengulangan yang menggunakan kata kunci
continue.
juga tidak perlu dilakukan pendeklarasian seperti halnya sebuah
variabel karena label hanya digunakan untuk tanda saja sehingga
tidak memiliki tipe data.
Kode Program 5-16
Untuk lebih jelasnya, perhatikan program di bawah ini dimana di
dalamnya terdapat struktur pengulangan yang menggunakan kata
kunci goto.
# include <iostreaia>
using namespace std;
Kode Program 5-17
enuiti BOOLEAN ( FALSE, TRUE };
int
tfinclu.de <iostream>
main ( ) {
int X;
BOOLEAN STOP = FALSE;
while (1STOP) {
cout«"Masukkan nilai X :
if (X <= 0) {
STOP = TRUE;
continue;
J
using namespace std;
enum BOOLEAN { FALSE, TRUE };
int main{) {
int C = 0;
cin»X;
while (TRUE) {
cout«C+l«end;
if {C == 9) {
goto MyLabel;
\
return 0;
C++;
1
Untuk mengetahui penggunaan kata kunci continue, di atas
menggunakan variabel STOP. Sebenarnya pengulangan akan
dihentikan ketika terdapat statemen STOP = TRUE, tetapi karena
di bawah statemen tersebut terdapat kata kunci continue maka
pengulangan akan dilanjutkan kembali. Hal ini merupakan bukti
nyata bahwa kata kunci continue itu berfungsi untuk
meneruskan proses pengulangan. Pada program di atas,
pengulangan baru akan dihentikan ketika user memasukkan nilai X
yang lebih besar dari 0.
5.5.3
// Meloncat ke label MyLabel
Menggunakan Kata Kunci goto
Jika ditinjau dari bahasan mengenai struktur pengulangan,
penggunaan kata kunci goto ini dapat mewakili penggunaan kata
kunci break maupun continue, tergantung dimana kita
menempatkan label. Label di sini berfungsi untuk menyatakan
lokasi yang akan dituju. Perlu juga diperhatikan bahwa untuk
menuliskan suatu label haruslah menggunakan tanda titik dua (:) di
belakang nama label tersebut. Dalam mendefinisikan nama label
Pemrograman C++
MyLabel:
// Lokasi yang akan dituju
return 0;
}
Hasil dari program di atas adalah sebagai berikut
1
2
3
4
5
6
7
8
9
10
Jika kita amati secara teliti, penggunaan kata kunci goto pada
kasus ini sama halnya seperti penggunaan kata kunci break.
Bab 5: Pengulangan
Kata kunci goto tidak hanya dapat digunakan dalam struktur
pengulangan saja, melainkan dapat digunakan dimana saja. Berikut
ini contoh lain dari penggunaan kata kunci goto.
BOOLEAN { FALSE, TRUE };
,t maint) (
Kode Program 5-18
int X = 1, Y;
while (TRUE) {
cout«"Masukkan nilai Y : "; cin»Y;
^include <iostream>
using namespace std;
// Menghindari pembagian dengan NOL
if (Y == 0) {
exit(O);
// KeJuar dari aplikasi
int maint) (
cout«"Mengungkap Rahasia C++"«endl;
)
goto BR;
// Meloncat ke label BR
return 0;
cout«"01eh : Budi Raharjo"«endl;
cout«"Tahun 20Q3"«endl;
}
BRi
// Mendefinisikan label dengan nama BR
cout«"Penerbit INFORMATIKA Bandung";
return 0;
}
Jika dijalankan, program di atas akan memberikan hasil sebagai
berikut:
Parameter 0 yang terdapat pada fungsi exit ( ) di atas berfungsi
untuk melakukan terminasi program secara normal. Parameter yang
lain yang dapat dilewatkan pada fungsi ini adalah EXIT_SUCCESS
dan EXIT_FAILURE. Namun perlu untuk diperhatikan bahwa
dalam menggunakan fungsi exit { ) kita hams memasukkan file
header stdlib.h. (untuk C++ lama) atau <cstdlib> (untuk
C++ standar).
Mengungkap Rahasia C+ +
Penerbit INFORMATIKA Bandung
Hal ini disebabkan karena penggunaan kata kunci goto yang
memaksa program untuk meloncat ke label yang dituju.
5.5.4
Menggunakan Fungsi exit ()
Berbeda dengan statemen-statemen peloncatan yang lain, fungsi
e x i t ( ) ini berfungsi untuk proses terminasi atau keluar dari
program.
Berikut
ini adalah
contoh
program yang
mengimplementasikan hal tersebut.
Kode Program 5-19
^include <iostream>
tfinclude <cstdlib>
using namespace std;
Pemrograman
Bab 5: Pengulangan
Download