Anda di halaman 1dari 17

 

 
 
KU‐1072 
PENGENALAN TEKNOLOGI 
INFORMASI B 
(PTI – B) 
 

2008 
MATERI II 

EKSPRESI DAN PERCABANGAN 

Materi Praktikum  Ekspresi dan Percabangan 
Durasi  180  menit [60 menit penjelasan + 120 menit praktikum] 
TIU/TIK  1. Pendahuluan 
2. Operator 
3. Manipulasi Data dengan Operator 
4. Struktur Percabangan (IF CONDITIONAL) 
Referensi  1. Diktat dan Literatur 
2. Schildt, C++: The Complete Reference Third Edition, 
McGraw‐Hill, 1998 
1. PENDAHULUAN 
Operator dan Ekspresi 
Operator  dapat  didefinisikan  sebagai  suatu  simbol  yang  menyebabkan  kompiler  melakukan  suatu 
kegiatan/aksi  dimana  operator  tersebut  melakukan  aksi  tersebut  atas  operand.  Perlu  diketahui  bahwa 
operand dalam bahasa C++ merupakan ekspresi. Lingkup dari operator sebenarnya cukup luas, namun 
dalam kesempatan ini pembahasan akan lebih difokuskan pada operator‐operator utama dan operator 
assignment. 

Selain  pembahasan  mengenai  operator,  dalam  sesi  ini  juga  akan  dibahas  mengenai  struktur 
percabangan,  atau  biasa  dikenal  dengan  istilah  if  conditional.  Bentuk  dari  percabangan  ini  bisa 
bermacam‐macam tergantung kebutuhan misalnya hanya if, if‐else, if‐elseif, dan lain sebagainya. Jenis‐
jenis tersebut dapat digunakan berdasarkan bentuk dari permasalahan kita yang akan dipecahkan. 

NOTE : Prioritas pertama yang dipelajari adalah bagaimana cara untuk memecahkan masalah, kemudian 
baru bagaimana menuliskannya dalam bentuk program. 

2. OPERATOR 
Operator Aritmatika 
Sebelumnya  perlu  untuk  diketahui  bahwa  dalam  menggunakan  suatu  operator  biasanya  kita  juga 
melibatkan suatu operator assignment. Untuk lebih jelasnya, perhatikan statement di bawah ini: 

           A = x + y 
 
Dalam  contoh  ini,  operator  assignment  (=)  menyebabkan  operand  yang  terletak  di  sisi  kiri  operator 
assignment  (A)  berubah  menjadi  nilai  yang  dihasilkan  dari  operator  aritmatika  di  sisi  kanan  operator 
assignment (x+y). Singkat kata, yang terjadi pada statement di atas adalah nilai penjumlahan dari x dan 
y di‐assign ke operand A. 

Sesuai  dengan  penamaannya,  operator  aritmatika  terdiri  dari  operator‐operator  yang  membantu  kita 
dalam  menyelesaikan  proses  aritmatika,  seperti  penjumlahan,  pengurangan,  perkalian,  dan  lainnya. 
Namun tidak semua proses aritmatika menggunakan operator ini. Untuk itu diperlukan tambahan suatu 
library yang akan membantu kita untuk memudahkan permasalahan. 

 
Berikut adalah jenis‐jenis operator aritmatika yang terdapat dalam bahasa C++ : 

Operator  Fungsi  Contoh Penggunaan 

+  Penjumlahan  A = 17 + 8; A bernilai 25 

‐  Pengurangan  A = 17 ‐8; A bernilai 9 

*  Perkalian  A = 17 * 8; A bernilai 136 

/  Pembagian  A = 17 / 8; A bernilai 2.125 

%  Sisa bagi (modulus)  A = 17 % 8; A bernilai 1 

 
 
Untuk lebih jelasnya, mari kita mulai melakukan suatu pemrograman: 
 
INPUT:
// Operator Aritmatika

#include <iostream>
#include <conio.h>
using namespace std;

int main ()
{
int a,b;
float tambah,kurang,kali,bagi;

cout << "Masukkan bilangan bulat a : "; cin >> a;


cout << "Masukkan bilangan bulat b : "; cin >> b;

tambah = a + b;
kurang = a - b;
kali = a * b;

bagi = (float)a / b;
// maksud dari (float)a => variabel a diubah tipenya menjadi float

cout << "\nHasil penjumlahan, a + b = " << tambah;


cout << "\nHasil pengurangan, a - b = " << kurang;
cout << "\nHasil perkalian, a * b = " << kali;
cout << "\nHasil pembagian, a / b = " << bagi;
cout << "\nHasil modulus, a mod b = " << a%b;

getch(); // menunggu tombol apapun di keyboard ditekan


return 0;
}
OUTPUT:

Masukkan bilangan bulat a : 17


Masukkan bilangan bulat b : 8

Hasil penjumlahan, a + b = 25
Hasil pengurangan, a - b = 9
Hasil perkalian, a * b = 136
Hasil pembagian, a / b = 2.125
Hasil modulus, a mod b = 1

  

Dalam contoh di atas dapat dilihat bagaimana operator aritmatika bekerja. Satu hal yang perlu 
diperhatikan adalah statement berikut :  
 
bagi = (float)a / b;  
atau 
bagi = float(a) / b; 
 
  Proses  yang terjadi pada baris ini membuat hasil bagi menjadi suatu nilai float kemudian di‐
assign pada variabel(operand) bagi. Mengapa demikian? Tipe variabel a dan b adalah integer (sesuai 
dengan deklarasi awal). Apabila kita tidak mengikutsertakan (float) pada baris ini, maka hasil yang keluar 
bukanlah 2.125 melainkan 2. cara yang digunakan diatas disebut dengan konversi tipe atau dalam istilah 
pemrograman disebut dengan casting. Konversi ini dapat mengubah tipe dari tipe satu ke tipe lainnya. 
Misal dari integer ke float, dari double ke float, dan yang lainnya. 
 
INPUT:
// Operator Aritmatika

#include <iostream>
#include <conio.h>
using namespace std;

int main ()
{
int a,b;
float X, Y, Z;

cout << "Masukkan bilangan bulat a : "; cin >> a;


cout << "Masukkan bilangan bulat b : "; cin >> b;

X = a / b;
Y = float(a / b);
Z = (float)a / b;

cout << "\nHasil pembagian, a / b = " << X;


cout << "\nHasil pembagian, float(a / b) = " << Y;
cout << "\nHasil pembagian, (float)a / b = " << Z;
getch();
return 0;
}

OUTPUT:

Masukkan bilangan bulat a : 17


Masukkan bilangan bulat b : 8

Hasil pembagian, a / b = 2
Hasil pembagian, float(a / b) = 2
Hasil pembagian, (float)a / b = 2.125

  
X = a / b;
Dikarenakan tipe a dan b berupa integer. Maka hasil pembagian tersebut
tetap menjadi integer (meskipun tipe Y adalah float).

Y = float(a / b);
Proses yang berada di dalam kurung didahulukan, sehingga proses a/b
dieksekusi duluan. Seperti halnya pada statement sebelumnya, hasilnya adalah
2. Kemudian nilai 2 dikonversi dalam bentuk float menjadi 2.000000 = 2.

Z = (float)a / b;
Atau
Z = float(a) / b;

  Pada statement ini kata ’float’ diletakkan dalam kurung sehingga nilai a/b langsung dihitung 
dalam bentuk float kemudian di‐assign ke variabel Z. 
 
Berikut contoh konversi tipe variabel secara ‘default’: 
 

 
 
 
 
Jadi, untuk mengkonversi sebuah variabel, kita dapat gunakan sintaks seperti yang sudah dijelaskan 
diatas. Misal ada variabel a bertipe double, jika kita ingin mengubahnya menjadi tipe integer kita tinggal 
gunakan cara seperti berikut ini. 
 
Y = int (a); // dengan variabel sudah didefinisikan sebelumnya bertipe integer. 
 
Hal lain yang perlu diperhatikan adalah jika kita ingin membuat suatu ekspresi aritmatika, semua 
operand‐nya haruslah bertipe sama. Hal ini menandakan sebuah program yang baik dan bersih. 
 
Misal, 
A = B + C; 
 
Tipe dari A, B, dan C adalah sama. Baik itu adalah integer, float, double, atau char. Jika ada satu 
operand yang tidak sama maka operand tersebut harus dikonversi terlebih dahulu dengan cara yang 
sudah dijelaskan diatas. 
 
 
 
 
 
 

Operator Relasi 
Hasil dari operator relasi adalah nilai true atau false, dimana hasil tersebut ditentukan dari hasil logika 
statement yang dieksekusi. 
 
Operator  Fungsi  Contoh Penggunaan 

==  Persamaan  17 == 8 

!=  Pertidaksamaan  17 != 8 

>  Perbandingan lebih besar dari  17 > 8 

<  Perbandingan lebih kecil dari  17 < 8 

>=  Perbandingan lebih besar dari atau sama dengan  17 >= 8 

<=  Perbandingan lebih kecil dari atau sama dengan  17 <= 8 


 
Selanjutnya, perhatikan tabel berikut: 
 
Case  a  b  a = b  a = = b 

1  5  3  a = 3 (true)  false 

2  7  0  a = 0 (false)  false 

3  0  0  a = 0 (false)  true 

 
Sebelum membahas satu per satu kasus diatas, kita lihat dua kolom terakhir dari kanan. Terdapat 
bentuk “a = b” dan bentuk “a = = b”. 
 
a = b  : pada statement terjadi proses assigning dimana nilai dari b disimpan dalam variabel a.  
    Kemudian dilihat apabila nilai a bukan 0 (nol), maka hasil yang dikeluarkan adalah true.  
    Sebaliknya apabila nilai a adalah 0 (nol), maka hasilnya adalah false. 
 
a  = = b  : Ini adalah pernyataan relasi. Nilai a dan nilai b dicek apakah sama atau tidak. Apabila sama,  
    maka nilai kembalian adalah true. Jika tidak, maka nilai kembalian adalah false. 
 
Sekarang perhatikan setiap kasus diatas. Lebih mudah dipahami sekarang? 
 
 
 
 

Operator Logika 
Operator logika digunakan untuk menggabungkan satu atau lebih pernyataan relasi. Hasilnya berupa 
logika true atau false. Operator logika umumnya digunakan bersamaan operator relasi untuk melakukan 
suatu kondisi/persyaratan agar permasalahan dapat dipecahkan dengan lebih efektif. Perhatikan kedua 
tabel di bawah ini: 
 
Operator  Fungsi  Contoh Penggunaan 

&&  AND  (20 == 3) && (5<7) Î false AND true = FALSE 

||  OR  (20 == 3) ||  (5<7) Î false AND true = TRUE 

!  NOT  !(20 < 3) Î NOT (false) = TRUE 

 
 
R1  R2  R1 && R2  R1 || R2  ! R1 

T  T  T  T  F 

T  F  F  T  F 
F  T  F  T  T 

F  F  F  F  T 

 
Perlu diingat bahwa Operator Aritmatika, Operator Relasi dan Operator Logika dapat dikatakan operator 
utama yang banyak dipakai dalam berbagai bahasa pemrograman, dalam hal ini Bahasa C++. Maka dari 
itu, cobalah untuk dipahami sebaik‐baiknya karena pada sesi‐sesi selanjutnya, operator‐operator akan 
banyak digunakan. 
 

3. MANIPULASI DATA dengan OPERATOR 
 
Manipulasi data adalah proses untuk mengubah isi suatu variabel dengan nilai yang baru. Nilai baru yang 
dimaksud dapat berupa suatu nilai mutlak yang telah didefinisikan ataupun nilai yang merupakan hasil 
dari proses aritmatika. 
 
Dasar dari proses manipulasi ini sebenarnya sangat mudah. Akan tetapi ada beberapa teknik yang harus 
diketahui agar proses manipulasi ini dapat berjalan sesuai yang kita inginkan. Salah satu hal utama yang 
perlu diingat adalah dalam proses membaca statement, kita membaca dari ”kanan ke kiri”. Mari kita 
lihat contoh berikut ini: 
 
 
 
 
METODE #1
int A = 5; // A = 5
int X;
X = A + 2; // X = 7
A = X; // A = 7 ; X = 7

METODE #2
int A = 5; // A = 5
A = A + 2; // A = 7

METODE #3
int A = 5; // A = 5
A += 2; // A = 7

 
Ketiga metode diatas sebenarnya menghasilkan hasil yang sama, namun terjadi perbedaan pada proses 
manipulasinya. 
 
METODE #1 
Baris 1  : variabel A dideklarasi dengan tipe int. Nilai 5 disimpan ke dalam variabel A. 
Baris 2  : variabel X dideklarasi dengan tipe int. 
Baris 3  : variabel A (bernilai 5) ditambahkan dengan nilai 2, kemudian disimpan ke dalam variabel X.  
    Pada akhir statement ini nilai X menjadi 7. 
Baris 4  : Nilai X disimpan pada variabel A. Pada akhir statement ini, nilai A telah dimanipulasi dari 5    
    menjadi 7. 
 
METODE #2 
Baris 1  : variabel A dideklarasi dengan tipe int. Nilai 5 disimpan ke dalam variabel A. 
Baris 2  : variabel A (bernilai 5) ditambahkan dengan 2 sehingga menghasilkan nilai 7, kemudian di‐ 
    assign ke variabel A. Variabel A sekarang bernilai 7 (INGAT! : membaca dari kanan ke kiri). 
 
METODE #3 
Baris 1  : variabel A dideklarasi dengan tipe int. Nilai 5 disimpan ke dalam variabel A. 
Baris 2  : Operator (+=) menambahkan nilai di sisi kanan ke sisi kiri dan meng‐assign kembali ke sisi kiri 
    operator. Dalam hal ini prosesnya sama persis dengan baris 2 pada Metode #2. 
 
Selain operator penjumlahan (+=), ada operator sejenis yang membantu kita dalam proses manipulasi 
data, yakni pengurangan (‐=), perkalian (*=), dan pembagian (/=). 
  

Increment dan Decrement 
Sesuai dengan namanya, operator increment (++) adalah operator yang berfungsi menambahkan nilai 1 
pada nilai suatu variabel. Sebaliknya, operator decrement (‐‐) adalah operator yang berfungsi 
mengurangi nilai 1 pada nilai suatu variabel. 

  

METODE #1
i++;

METODE #2
i = i + 1;

METODE #3
i += 1;
 

 
Ketiga metode tersebut memiliki proses yang sama, yaitu menambahkan nilai 1 ke variabel i lalu meng‐
assign hasilnya kembali ke variabel i. 

Prefix dan Postfix 
Operator increment dan decrement pada pembahasan sebelumnya memiliki atribut prefiks dan postfix. 
Operator prefiks (++x) dievaluasi/diproses sebelum assignment dilakukan sedangkan operator postfix 
(x++) diproses setelah assignment dilakukan. 

INPUT:
// Contoh Prefiks-Postfiks
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int Aku = 15;
int Kamu;

cout << "Masukkan Umur Anda : ";


cin >> Kamu;
cout << "\n Umur saya : " << Aku << " tahun.\n";
cout << "Umur kamu : " << Kamu << " tahun.\n";
Aku ++; //postfix increment
++ Kamu; //prefix increment
cout << "Setelah satu tahun...\n";
cout << "Umur saya : " << Aku << " tahun.\n";
cout << "Umur kamu : " << Kamu << " tahun.\n\n";
cout << "Tahun Berikutnya...\n";
cout << "Umur saya : " << Aku ++ << " tahun. \n";
cout << "Umur kamu : " << ++ Kamu << " tahun. \n\n";
cout << "Mari kita lihat lagi...\n";
cout << "Umur saya : " << Aku << " tahun. \n";
cout << "Umur kamu : " << Kamu << " tahun. \n";

getch();
return 0;
}

OUTPUT:

Masukkan Umur Anda : 22

Umur saya : 15 tahun.


Umur kamu : 22 tahun.

Setelah satu tahun...


Umur saya : 16 tahun.
Umur kamu : 23 tahun.

Tahun Berikutnya...
Umur saya : 16 tahun.
Umur kamu : 24 tahun.

Mari kita lihat lagi...


Umur saya : 17 tahun.
Umur kamu : 24 tahun.

  
Coba kita perhatikan baik‐baik penggunaan postfix dan prefiks. Bandingkan hasil setelah satu tahun, 
tahun berikutnya, dan hasil akhir. 
 
Pada hasil setelah satu tahun, proses postfix dan prefiks telah selesai. Sehingga saat variabel dikeluarkan 
nilainya, maka variabel Aku dan Kamu telah bertambah nilai masing‐masing 1. 
 
Pada hasil tahun berikutnya, variabel Aku mendapat postfix, sehingga nilai Aku ditampilkan sebelum 
increment terjadi. Sedangkan pada variabel Kamu, nilai telah mengalami increment kemudian 
ditampilkan. 
 
Pada hasil akhir, nilai Aku dan Kamu telah dilakukan increment dan telah di‐assign, sehingga kedua nilai 
telah bertambah 1. 
 
 
NOTE: Operator prefix (++/‐‐ var) digunakan untuk menambahkan atau mengurangkan variabel sebelum 
digunakan. Dan operator postfix (var++/‐‐) digunakan untuk menambahkan atau mengurangkan variabel 
setelah digunakan. 

4. STRUKTUR PERCABANGAN (IF – CONDITIONAL) 
 
 
Dalam  memecahkan  suatu  masalah,  seringkali  kita  menemui  berbagai  pilihan.  Kondisi‐kondisi  yang 
berbeda akan memberikan kita alternatif untuk menyelesaikan masalah. Dalam pemrograman, instruksi 
if digunakan untuk memilih kondisi‐kondisi tersebut hingga pada akhirnya sampai pada alternatif terbaik 
untuk menyelesaikan masalah. 

Namun  disini  kita  berkomunikasi  dengan  komputer  dimana  perangkat  ini  hanya  mengerti  apabila  kita 
menjawab dengan ya (TRUE) atau tidak (FALSE).  

Untuk  membantu  kita  mendeskripsikan  masalah,  bahasa  C++  memiliki  beberapa  bentuk  untuk 
memudahkan kita menjalankannya. Akan tetapi, bentuk standar daripada IF Conditional adalah sebagai 
berikut : 

if (expression) {

statement1;

} else {

  statement2;

statement2 di atas digunakan untuk memberikan pilihan aksi lain jika ekspresi pada statement if 
bernilai salah (FALSE). 
 

 
Bentuk IF TUNGGAL 
Bentuk dari instruksi if  tunggal adalah sebagai berikut: 

if ([!]pernyataan_relasi [&&/|| [!]pernyataan_relasi…])

…..instruksi jika hasil logika bernilai true…

Keterangan: 

Nilai  kembalian  if  yang  berupa  TRUE  ataupun  FALSE  diperoleh  dari  hasil  keluaran  ekspresi  yang  kita 
definisikan.  Ekspresi/pernyataan  relasi  ini  diawalan  dengan  kurung  buka  dan  diakhiri  dengan  kurung 
tutup.  Apabila  kita  memiliki  lebih  dari  satu  pernyataan  relasi,  maka  dibutuhkan  operator  logika  untuk 
menggabungkan beberapa pernyataan relasi tersebut hingga akhirnya kita mendapat hasil berupa TRUE 
atau FALSE. 

Andaikata  nilai  yang  dihasilkan  adalah  TRUE,  maka  program  selanjutnya  akan  mengeksekusi  intruksi‐
intruksi yang berada di antara tanda ”{” dan tanda ”}”. Jika hasil yang dikeluarkan bernilai FALSE, maka 
intruksi tersebut akan dilewati (tidak dieksekusi). 

Jika masih bingung, mungkin algoritma ini akan dapat membantu pemahaman Anda:   

  Fungsi dari perintah IF 
 
Cek hasil  tidak
  pernyataan_relasi

  ya
 
Instruksi yang dilakukan 
 

  Instruksi selanjutnya 

INPUT:
// IF TUNGGAL

#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int a;

cout << "Tebak umur saya : "; cin >> a;

if (a == 17)
{
cout << "\nWOW! Tebakan Anda benar! Umur saya = " << a << " tahun\n\n";
}

cout << "Terimakasih telah menebak umur saya :) ";

getch();
return 0;
}

OUTPUT:

Tebak umur saya : 17

WOW! Tebakan Anda benar! Umur saya = 17 tahun

Terimakasih telah menebak umur saya :)

  
Coba kembali program di atas, namun masukkan angka kecuali angka 17. Apa yang terjadi ? 

OUTPUT:

Tebak umur saya : 99


Terimakasih telah menebak umur saya :)

  
Bisa Anda lihat perbedaannya ? 

Apabila Anda benar ekspresi bernilai TRUE (dimana a = = 17 ), maka intruksi didalam tanda “{“ dan “}” 
akan dieksekusi. Lalu mengapa saat kita salah memasukkan angka, kalimat “Terimakasih...” masih tetap 
dieksekusi  ?  Hal  ini  dikarenakan  statement  tersebut  tidak  berada  didalam  tanda    bracket,  sehingga 
apapun nilai yang keluar, statement tersebut tetap akan dieksekusi.  

Bentuk IF MAJEMUK 
Bentuk dari instruksi if majemuk adalah sebagai berikut: 

if ([!] pernyataan_relasi [&&/|| [!] pernyataan_relasi….]])

….instruksi jika hasil logika bernilai benar


}

else

….instruksi jika hasil logika bernilai false

}   

Hal  yang  membedakan  dengan  IF  TUNGGAL  adalah  pada  IF  MAJEMUK  terdapat  intruksi  yang  harus 
dieksekusi apabila hasil keluaran bernilai FALSE. Intruksi tersebut harus diletakkan setelah perintah else 
dieksekusi. Perlu diingat, perintah else tidak dapat berdiri sendiri. Artinya, untuk menggunakan perintah 
ini harus didahului dengan perintah if pada awal statement. 

 
Start
 

  int a

 
Masukkan sebuah 
  bilangan

 
a%2 == 0?
tidak
 
ya 
 
a bilangan bulat a bilangan ganjil 
 

 
end
 

Contoh penggunaan IF MAJEMUK : 

INPUT:
// IF MAJEMUK
#include <iostream>
#include <conio.h>
using namespace std;

int main ()
{
int a;
cout << "Masukkan suatu bilangan bulat : "; cin >> a;
if (a%2 == 0) {
cout << "Anda memasukkan bilangan GENAP ";
}else {
cout << "Anda memasukkan bilangan GANJIL ";
}
getch();
return 0;
}

OUTPUT:

Masukkan suatu bilangan bulat : 35


Anda memasukkan bilangan GANJIL

  
INPUT:
// IF MAJEMUK #2
#include <iostream>
#include <conio.h>
using namespace std;

int main ()
{
int a;
cout << "Masukkan suatu bilangan bulat : "; cin >> a;

if ((a>=0) && (a<=50)) {


cout << "Nilai diantara 0 - 50 ";
}else if ((a>50) && (a<=100)) {
cout << "Nilai diantara 51-100 ";
}else {
cout << "Nilai adalah negatif atau diatas 100";
}
getch();
return 0;
}

OUTPUT:

Masukkan suatu bilangan bulat : 70


Nilai diantara 51-100

  

Bentuk IF BERTINGKAT (BERSARANG) 
Bentuk  yang  lebih  kompleks  namun  sering  digunakan  adalah  Bentuk  IF  BERTINGKAT  (BERSARANG). 
Singkatnya,  terdapat  instruksi  if  didalam  blok  if.  Lalu  berapa  instruksi  if  yang  dapat  disimpan  didalam 
instruksi if ? Jawabannya adalah tak terhingga. Contoh bentuk IF BERTINGKAT : 

if (Ekspresi A)
{
if (Ekspresi B)
{
if (Ekspresi C)
{
...instruksi jika hasil logika A, B dan C bernilai benar
}
}
}
 

Berikut adalah listing program yang menerjemahkan algoritma di atas: 

INPUT:
// IF BERTINGKAT
#include <iostream>
#include <conio.h>
using namespace std;

int main ()
{
int x;
cout << "Masukkan suatu bilangan bulat : "; cin >> x;

if (x%2 == 0) {
if (x >= 100) {
cout << "Anda memasukkan bilangan GENAP dan lebih dari 100";
} else {
cout << "Bilangan GENAP Anda dibawah nilai 100";
}
} else {
cout << "Anda memasukkan bilangan GANJIL";
}

getch();
return 0;
}

OUTPUT:

Masukkan suatu bilangan bulat : 78


Bilangan GENAP Anda dibawah nilai 100

  
 

Anda mungkin juga menyukai