Anda di halaman 1dari 18

II.

PERNYATAAN KONDISI DAN TIPE INTEGER

Macam pernyataan kondisi adalah pernyataan IF, pernyataan IF … ELSE dan


pernyataan SWITCH.

2.1 Pernyataan Masukan

Dalam C++ masukan analog dengan keluaran. Hanya berbeda dalam aliran datanya,
dimana dalam pernyataan keluaran cout, aliran data keluar; sedangkan dalam
pernyataan masukan cin, aliran data masuk. Cin merupakan perintah untuk memasukkan
data secara interaktif (melalui console/monitor).

Contoh masukan integer.

Ketikan yang berada dalam arsir kelabu merupakan masukan yang diketikkan oleh user
secara interaktif.
Simbol >> merupakan operator ekstraksi (extraction operator), yang disebut juga
sebagai operator masukan. Bentuk ini biasa digunakan dengan aliran masukan cin, yaitu
masukan dari user melalui keyboard.

Contoh lain :

#include <iostream.h>
main()
{
char pertama, kedua;

II - 1
cout << “Masukkan inisial anda : \n”;
cout << “\tInisial nama pertama : “;
cin >> pertama;
cout << “\tInisial nama kedua : “;
cin >> kedua;
cout << “Apa kabar “ << pertama << “. “ << kedua << “?\n”;
return 0;
}

Keluarannya adalah

Masukkan inisial anda :


Inisial nama pertama : A
Inisial nama kedua : D
Apa kabar A. D ?

Catatan : \t merupakan prompt tabulasi. Dengan menghilangkan karakter baris baru


(newline) \n, maka kedudukan cursor akan berada pada baris yang sama (dengan
keluaran sebelumnya).

Contoh lain :

#include <iostream.h>
main()
{
char pertama, kedua;
cout << “Masukkan inisial pertama dan kedua anda : ”;
cin >> pertama >> kedua;
cout << “Apa kabar “ << pertama << “. “ << kedua << “?\n”;
return 0;
}

Keluarannya adalah

Masukkan inisial pertama dan kedua anda : AD


Apa kabar A. D ?

Contoh lain :

#include <iostream.h>
main()
{
char pertama, kedua;

II - 2
cout << “Masukkan inisial pertama dan kedua anda : ”;
cin >> pertama >> kedua;
cout << “Apa kabar “ << pertama << “. “ << kedua << “?\n”;
return 0;
}

Keluarannya adalah

Masukkan inisial pertama dan kedua anda : A D


Apa kabar A. D ?

Catatan : Bila tipe char adalah integer, cin akan mengabaikan semua bentuk spasi
(contohnya blank, tab dan baris baru), bila membaca masukan.

2.2 Pernyataan Kondisional IF

Bentuk umumnya :

if (kondisi) pernyataan;

dengan kondisi adalah sebuah ekspresi integer dan pernyataan adalah sebuah
pernyataan yang dapat dilaksanakan (executable). Pernyataan akan dilaksanakan hanya
jika kondisi mempunyai nilai yang tidak nol (nonzero = dapat berarti benar).

Contoh :

#include <iostream.h>
main()
{
int n, d;
cout << “Masukkan dua buah bilangan integer : ”;
cin >> n >> d;
if (n%d == 0) cout << n << “ habis dibagi oleh “ << d << endl;
return 0;
}

Keluarannya adalah

Masukkan dua buah bilangan integer : 25 5


25 habis dibagi oleh 5

II - 3
Program di atas akan mendapat masalah bila terdapat sisa pembagian. Oleh karena itu,
haruslah digunakan bentuk pernyataan lainnya, yaitu if … else.

2.3 Pernyataan Kondisional IF … ELSE

Bentuk umumnya :

if (kondisi) pernyataan1;
else pernyataan2;

dengan kondisi adalah sebuah ekspresi integer, pernyataan1 dan pernyataan2 adalah
pernyataan yang dapat dilaksanakan. Pernyataan1 akan dilaksanakan jika kondisi
mempunyai nilai nonzero (benar), dan pernyataan2 dilaksanakan jika kondisi
mempunyai nilai zero (salah).

Contoh :

#include <iostream.h>
main()
{
int n, d;
cout << “Masukkan dua buah bilangan integer : ”;
cin >> n >> d;
if (n%d == 0) cout << n << “ habis dibagi oleh “ << d << endl;
else cout << n << “ tidak habis dibagi oleh “ << d << endl;
return 0;
}

Keluarannya adalah

Masukkan dua buah bilangan integer : 26 5


26 tidak habis dibagi oleh 5

Contoh lain :

#include <iostream.h>
main()
{
int n, d;

II - 4
cout << “Masukkan dua buah bilangan integer : ”;
cin >> n >> d;
if (n%d) cout << n << “ tidak habis dibagi oleh “ << d << endl;
else cout << n << “ tidak habis dibagi oleh “ << d << endl;
return 0;
}

Keluarannya adalah

Masukkan dua buah bilangan integer : 26 5


26 tidak habis dibagi oleh 5

2.4 Operator-Operator Relasi

Terdapat 6 (enam) macam operator relasi, yaitu

< artinya lebih kecil dari


<= artinya lebih kecil atau sama dengan
== artinya sama dengan
> artinya lebih besar dari
>= artinya lebih besar atau sama dengan
!= artinya tidak sama dengan

Contoh :

#include <iostream.h>
// Menentukan bilangan yang lebih besar
main()
{
int m, n;
cout << “Masukkan dua buah bilangan integer : ”;
cin >> m >> n;
if (m > n) cout << m << endl;
else cout << n << endl;
return 0;
}
Keluarannya adalah

Masukkan dua buah bilangan integer : 10 35


35

II - 5
Contoh lain :

#include <iostream.h>
// Menentukan bilangan terbesar dari tiga buah bilangan integer
main()
{
int n1, n2, n3;
cout << “Masukkan tiga buah bilangan integer : ”;
cin >> n1 >> n2 >> n3;
int max = n1;
if (n2 > max) max = n2;
if (n3 > max) max = n3;
cout << “Bilangan terbesar adalah “ << max << endl;
return 0;
}

Keluarannya adalah

Masukkan tiga buah bilangan integer : 25 8 180


Bilangan terbesar adalah 180

2.5 Pernyataan Campuran

Pernyataan campuran adalah sebuah urutan pernyataan yang diperlakukan sebagai suatu
pernyataan tunggal. C++ mengidentifikasikan suatu pernyataan campuran dengan
melingkupi urutan pernyataan tersebut dalam tanda kurung kurawal (sebagai suatu
blok).

Contoh : penggalan pernyataan yang merupakan pernyataan campuran.

{
int temp = x;
x = y;
y = temp;
}

#include <iostream.h>
// Mengurutkan bilangan secara ascending (dari dua buah bilangan integer)
main()
{
int x, y;
cout << “Masukkan dua buah bilangan integer : ”;

II - 6
cin >> x >> y;
if (x > y) {
int temp = x;
x = y;
y = temp;
}
cout << “Bilangan terurut adalah “ << x << y << endl;
return 0;
}

Keluarannya adalah

Masukkan dua buah bilngan integer : 25 8


Bilangan terurut adalah 8 25

Contoh di atas bukanlah suatu program yang efisien, mengingat datanya hanya dua buah
bilangan (untuk yang jumlah bilangannya banyak, bentuk di atas adalah baik). Untuk
kasus yang sama, bentuk program yang lebih baik adalah sebagai berikut.

#include <iostream.h>
// Mengurutkan bilangan secara ascending (dari dua buah bilangan integer)
main()
{
int x, y;
cout << “Masukkan dua buah bilangan integer : ”;
cin >> x >> y;
if (x < y) cout << “Bilangan terurut adalah “ << x << “ “ << y << endl;
else cout << “Bilangan terurut adalah “ << y << “ “ << x << endl;
return 0;
}

Keluarannya adalah

Masukkan dua buah bilangan integer : 25 8


Bilangan terurut adalah 8 25
2.6 Kata-Kata Kunci (Keywords)

Kata kunci (keyword) dalam suatu pemrograman adalah suatu kata yang telah
didefinisikan dan tersedia untuk suatu penggunaaan khusus. Cara penulisannya tidak
dapat diubah, ditambah atau dikurangi.

II - 7
C++ mempunyai 48 buah kata kunci, yaitu

asm continue float new signed try


auto default for operator sizeof typedef
break delete friend private static union
case do goto protected struct unsigned
catch double if public switch virtual
char else inline register template void
class enum int return this volatile
const extern long short throw while

Dalam bahasa pemrograman lainnya sering disebut sebagai reserved words, dan nama-
nama yang mendahuluinya disebut standard identifiers.

2.7 Kondisi-Kondisi Campuran

Kondisi-kondisi seperti n % d dan x > y dapat dikombinasikan dalam bentuk kondisi


campuran. Operator logika yang digunakan untuk bentuk yang demikian adalah &&
(dan), || (atau) dan ! (negasi atau menyangkal).

&& p && q dievaluasi sama dengan 1  kedua nilai p dan q sama dengan 1.
|| p || q dievaluasi sama dengan 1, jika salah satu nilai p atau q sama dengan 1.
! !p dievaluasi sama dengan 1, jika nilai p sama dengan 0.

Contoh :

#include <iostream.h>
// Menentukan bilangan terbesar dari tiga buah bilangan integer
main()
{
int a, b, c;
cout << “Masukkan tiga buah bilangan integer : ”;
cin >> a >> b >> c;
if (a >= b && a >= c) cout << “Bilangan terbesar adalah “ << a << endl;
if (b >= a && b >= c) cout << “Bilangan terbesar adalah “ << b << endl;
if (c >= a && c >= b) cout << “Bilangan terbesar adalah “ << c << endl;
return 0;
}

Keluarannya adalah

Masukkan tiga buah bilangan integer : 25 8 180


Bilangan terbesar adalah 180

II - 8
Contoh lain :

#include <iostream.h>
// Menentukan apakah seseorang itu terdaftar atau tidak.
// Diijinkan untuk menjawab ya atau tidak dengan Y/y atau T/t.
main()
{
char jawaban;
cout << “Apakah anda terdaftar (y/t) : ”;
cin >> jawaban;
if (jawaban == ‘Y’ || jawaban == ‘y’) cout << “Anda terdaftar.\n”;
else cout << “ Anda tidak terdaftar.\n”;
return 0;
}

Keluarannya adalah

Apakah anda terdaftar (y/t) : T


Anda tidak terdaftar.

Contoh lain :

#include <iostream.h>
// Program menentukan apakah sebuah bilangan habis membagi bilangan lainnya.
main()
{
int n, d;
cout << “Masukkan dua buah bilangan integer positif : ”;
cin >> n >> d;
if (d > 0 && n%d == 0) cout << d << “ habis membagi “ << n << endl;
else cout << d << “ tidak habis membagi “ << n << endl;
return 0;
}

Keluarannya adalah

Masukkan dua buah bilangan integer positif : 250 5


5 habis membagi 250

Kalau dimasukkan data lainnya, seperti

Masukkan dua buah bilangan integer positif : 250 6


6 tidak habis membagi 250

II - 9
Kalau dimasukkan data lainnya, seperti

Masukkan dua buah bilangan integer positif : 250 0


0 tidak habis membagi 250

2.8 Pernyataan Kondisional Bersarang (Nested Conditionals)

Seperti halnya pernyataan-pernyataan campuran, pernyataan kondisional dapat


digunakan bersama dengan pernyataan lain. Sebuah pernyataan kondisional dapat
digunakan dalam pernyataan kondisional lainnya. Hal yang demikian biasa disebut
sebagai pernyataan kondisional bersarang.

Contoh-contoh penggalan program yang menggunakan pernyataan kondisional


bersarang :

if (d > 0)
if (n%d == 0)
cout << d << “ habis membagi “ << n << endl;
else
cout << d << “ tidak habis membagi “ << n << endl;
else
cout << d << “ tidak habis membagi “ << n << endl;

Penggalan program :

if (a > 0) if (b > 0) ++a; else if (c > 0)


if (a < 4) ++b; else if (b < 4) ++ c; else --a;
else if (c < 4) --b; else --c; else a = 0;

akan lebih baik jika ditulis seperti berikut :

if (a > 0)
if ( b > 0) ++a;
else
if (c > 0)

II - 10
if (a < 4) ++b;
else
if (b < 4) ++c;
else --a;
else
if (c < 4) --b;
else --c;
else
a = 0;

atau seperti berikut

if (a > 0)
if (b > 0) ++a;
else if (c > 0)
if (a < 4) ++ b;
else if (b < 4) ++c;
else --a;
else if (c < 4) --b;
else--c;
else
a = 0;

#include <iostream.h>
// Menentukan bilangan terbesar dari tiga buah bilangan integer
main()
{
int a, b, c, max;
cout << “Masukkan tiga buah bilangan integer : ”;
cin >> a >> b >> c;
if (a > b)
if (a > c) max = a; // a > b dan a > c
else max = c; // c>= a > b
else
if (b > c) max = b; // b >= a dan b > c
else max = c; // c >= b >= a
cout << “Bilangan terbesar adalah “ << max << endl;
return 0;
}

Keluarannya adalah

Masukkan tiga buah bilangan integer : 25 8 180


Bilangan terbesar adalah 180

II - 11
Contoh lain :

#include <iostream.h>
// Mengkonversikan nilai test dalam bentuk indeks A, B, C, D atau E
main()
{
int nilai;
cout << “Masukkan nilai test : ”;
cin >> nilai;
if (nilai > 100) cout << “Salah !! Nilai diluar jangkauan. “;
else if (nilai >= 90) cout << “Nilai indeks = “ << ‘A’ ;
else if (nilai >= 80) cout << “Nilai indeks = “ << ‘B’ ;
else if (nilai >= 70) cout << “Nilai indeks = “ << ‘C’ ;
else if (nilai >= 60) cout << “Nilai indeks = “ << ‘D’ ;
else if (nilai >= 0) cout << “Nilai indeks = “ << ‘E’ ;
else cout << Salah !! Nilai diluar jangkauan. “;
return 0;
}

Keluarannya adalah

Masukkan nilai test : 87


Nilai indeks = B

Bila dimasukkan data lainnya seperti :

Masukkan nilai test : 34


Nilai indeks = E

2.9 Pernyataan SWITCH

Pernyataan else if jamak dapat dibangun dengan menggunakan pernyataan switch.

Bentuk umumnya adalah

switch (ekspresi) {
case konstanta1 : listpernyataan1;
case konstanta2 : listpernyataan2;
:

II - 12
:
case konstantaN : listpernyataanN;
default : listpernyataan;
}

Pernyataan switch mengevaluasi ekspresi dan mencari nilainya diantara konstanta case.
Jika nilai diketemukan diantara list konstanta, maka pernyataan yang terdapat pada
listpernyataan yang bersangkutan akan dieksekusi. Sebaliknya jika hal tersebut adalah
default (bersifat opsional), maka program akan melanjutkan ke listpernyataan.
Perhatikan bahwa ekspresi harus dievaluasi sebagai tipe integer dan konstanta haruslah
konstanta integer (termasuk char).

Contoh :

#include <iostream.h>
// Program berikut memberikan akibat yang sama dengan program sebelumnya.
main()
{
int nilai;
cout << “Masukkan nilai test : ”; cin >> nilai;
if (nilai > 100) cout << “Salah !! Nilai diluar jangkauan. \n “;
switch (nilai/10) {
case 10 :
case 9 : cout << ‘A’ << endl; break;
case 8 : cout << ‘B’ << endl; break;
case 7 : cout << ‘C’ << endl; break;
case 6 : cout << ‘D’ << endl; break;
case 5 :
case 4 :
case 3 :
case 2 :
case 1 :
case 0 : cout << ‘E’ << endl; break;
default : cout << Salah !! Nilai diluar jangkauan. \n“;
}
return 0;
}

Pertama-tama program akan membagi nilai dengan 10. Bila dimasukkan nilai = 48,
ekspresi nilai/10 mengevaluasi menjadi 4. Selanjutnya nilai ini ditempatkan dalam list
case, dan setiap pernyataan sampai break akan dieksekusi. Rentang semua case
menurun sampai case 0 dan pernyataan break akan dieksekusi. Fenomena seperti ini
dikenal sebagai jatuh terus (fall through).

II - 13
2.10 Operator Ekspresi Kondisional

C++ mengijinkan bentuk penyingkatan suatu kasus khusus dari pernyataan if … else,
yang disebut operator ekspresi kondisional dan menggunakan simbol ? dan : dalam
bentuk

kondisi ? ekspresi1 : ekspresi2

Seperti operator lainnya, kombinasi ini memberikan ekspresi untuk menghasilkan suatu
nilai. Nilai yang dihasilkan adalah nilai dari ekspresi1 atau ekspresi2, tergantung kepada
kondisinya, apakah benar atau salah.
Sebagai contoh, pernyataan penugasan

min = x < y ? x : y;

akan menunjuk nilai x ke min jika x < y, sebaliknya akan menunjuk nilai y ke min.

Operator ekspresi kondisional pada umumnya hanya digunakan bila kondisi dan kedua
ekspresinya sangat sederhana.

2.11 Jangkauan (Scope)

Jangkauan dari sebuah identifier adalah bagian dari program yang dapat digunakan.
Contohnya, variabel tidak dapat digunakan sebelum dideklarasikan dulu, sehingga
jangkauannya dimulai dari saat dideklarasikan.

Perhatikan contoh berikut.

#include <iostream.h>
// Jangkauan variabel
main()
{
x = 11; // Salah !! Ini tidak dalam jangkauan x
int x;

II - 14
{
x = 22; // Benar !! Ini dalam jangkauan x
y = 33; // Salah !! Ini tidak dalam jangkauan y.
int y;
x = 44; // Benar !! Ini dalam jangkauan x.
y = 55; // Benar !! Ini dalam jangkauan y.
}
x = 66; // Benar !! Ini dalam jangkauan x.
y = 77; // Salah !! Ini tidak dalam jangkauan y.
return 0;
}

Contoh jangkauan bersarang dan jangkauan paralel.

#include <iostream.h>
int x = 11; // x ini bersifat global
main()
{ // mulai jangkauan dari main()
int x = 22;
{ // mulai jangkauan dari blok internal
int x = 33;
cout <<”Dalam blok bagian dalam main() : x = “ << x << endl;
} //akhir jangkauan dari blok internal
cout << “Dalam main() : x = “ << x << endl;
cout << “Dalam main() : ::x = “ << ::x << endl;
return 0;
} // akhir jangkauan dari main()

Keluarannya adalah

Dalam blok bagian dalam main() : x = 33


Dalam main() : x = 22
Dalam main() : ::x = 11

Terdapat 3 obyek x yang berbeda dalam program di atas. x yang diinisialisasikan


dengan nilai 11 adalah suatu variabel global, sehingga jangkauannya meliputi seluruh
file. x yang diinisialisasikan dengan nilai 22 mempunyai jangkauan yang terbatas
terhadap main(). Karena ini bersarang dalam jangkauan dari x yang pertama, ini akan
menyembunyikan x pertama dalam main(). x yang diinisialisasi dengan nilai 33
mempunyai jangkauan yang terbatas hanya dalam blok internal main(), sehingga
menyembunyikan x pertama dan x kedua dalam blok tersebut.
Baris terakhir dalam program menggunakan operator resolusi jangkauan :: untuk
mengakses x global yang tersembunyi dalam main().

II - 15
2.12 Tipe-Tipe Enumeration

Selain dari tipe-tipe data yang telah didefinisikan sebelumnya, seperti int dan char, C++
juga mengijinkan pemrogram untuk mendefinisikan tipe datanya sendiri. Hal ini dapat
dikerjakan melalui beberapa cara, dan yang paling canggih adalah menggunakan kelas-
kelas (classes) (yang akan dibahas dibagian belakang). Dalam bagian ini akan dibahas
tipe data yang didefinisikan oleh user, dalam bentuk yang lebih sederhana.

Suatu tipe enumeration adalah suatu tipe integral yang didefinisikan oleh user, dengan
bentuk umum seperti berikut

enum namatipe { enumeratorlist };

Dengan enum adalah kata kunci dalam C++, namatipe berarti sebuah identifier yang
nama tipenya didefinisikan, dan enumeratorlist berarti sebuah list identifier yang
mendefinisikan konstanta integer.

Contoh berikut mendefinisikan tipe enumeration Semester, yang terdiri dari tiga
kemungkinan nilai, yaitu sebuah variabel yang tipenya dapat

enum Semester {ganjil, genap, pendek};

Selanjutnya dapat dideklarasikan variabel-variabel untuk tipe ini, yaitu

Semester s1, s2;

Dan dapat menggunakan variabel-variabel tersebut dan nilai tipe tersebut sebagai tipe-
tipe yang didefinisikan sebelumnya

s1 = genap;
s2 = ganjil;
if (s1 == s2) cout << “Semester yang sama. \n”;

Nilai aktual yang didefinisikan dalam enumeratorlist disebut enumerators. Pada


kenyataannya biasanya bernilai integer. Nilai ganjil, genap dan pendek yang
didefinisikan untuk tipe Semester di atas dapat didefinisikan seperti berikut :

const int ganjil = 0;


const int genap = 1;
const int pendek = 2;

Nilai-nilai 0,1, 2, … menunjuk secara otomatis ketika tipe didefinisikan. Nilai-nilai


yang di default dapat dikesampingkan dalam enumeratorlist :

II - 16
enum koin {duapuluhlimaan = 25, limapuluhan = 50, seratusan = 100, limaratusan =500};

Jika nilai integer ditunjuk hanya untuk beberapa enumerator, maka nilai-nilai yang lain
akan merupakan nilai yang berurutan, seperti

enum bulan {jan =1, feb, maret, april, mei, juni, juli, agust, sept, okt, nov, des};

akan menunjuk angka 1 sampai dengan 12 untuk ke-12 bulan di atas.

Enumerator adalah konstanta integer yang sederhana, maka sah saja untuk mempunyai
beberapa enumerator yang berbeda dengan nilai yang sama, seperti

enum Jawab {tidak = 0, salah = 0, ya = 1, benar = 1, oke = 1};

Tipe enumeration biasa digunakan untuk membuat kode, agar mudah untuk dipahami.
Contohnya :

enum Boolean {salah, benar};


enum JenisKelamin {wanita, pria};
enum Hari {senin, selasa, rabu, kamis, jum’at, sabtu, minggu};
enum BilanganDasar {biner = 2, octal = 8, desimal = 10, heksadesimal =16};
enum Warna {merah, jingga, kuning, hijau, biru, ungu};
enum AngkaRomawi {I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000};

2.13 Konversi Tipe Integer

Dalam beberapa kasus, C++ mengijinkan obyek dari satu tipe digunakan dalam tipe lain
yang diharapkan. Hal ini dikenal sebagai konversi tipe. Contoh konversi tipe yang
paling umum adalah dari sebuah tipe integer ke tipe integer yang lain, dan konversi dari
tipe integer ke tipe floating point.
Secara umum sebuah tipe integer dapat digunakan oleh tipe integer lain yang
diharapkan jika tipe yang diharapkan mempunyai peringkat yang lebih tinggi.
Sebagai contoh, suatu char dapat digunakan oleh tipe int yang diinginkan karena tipe int
mempunyai peringkat yang lebih tinggi dibandingkan dengan tipe char.

Contoh :

#include <iostream.h>
main()
{
char c = ‘A’;
short m = 22;

II - 17
int n = c + m;
cout << “n = “ << n << endl;
return 0;
}

Keluarannya adalah

n = 87

Contoh lain :

#include <iostream.h>
enum Warna {merah, jingga, kuning, hijau, biru, ungu};
main()
{
Warna x = biru;
Cout << “x = “ << x << endl;
return 0;
}

Keluarannya adalah

x=4

II - 18

Anda mungkin juga menyukai