Anda di halaman 1dari 31

3.

Struktur Dasar Algoritma


3.2. Pemilihan/Percabangan (Branching)
Adakalanya suatu aksi atau perintah dikerjakan jika kondisi tertentu terpenuhi. Misalkan anda
sedang mengendarai sebuah kendaraan untuk mengunjungi teman anda yang berada
dirumahnya, lalu dalam perjalanan tersebut anda tiba disebuah persimpangan jalan. Tentunya
anda harus memilih salah satu dari beberapa kemungkinan yang ada, kondisi diatas dapat
diilustrasikan seperti pada gambar berikut.

Dalam gambar diatas anda menghadapi persimpangan dengan pilihan belok kekiri atau
kekanan, dari informasi yang anda dapatkan dari teman anda, bahwa untuk menuju ke
rumahnya, anda harus belok kearah yang memiliki banyak pepohonan. Cerita diatas dapat
ditulis dalam pernyataan berikut :

Jika jalan memiliki banyak pohon, maka


Belok
Pernyataan diatas dapat ditulis dalam pernyataan-pemilihan (selection statement) atau juga
disebut dengan pernyataan-kondisional sebagai berikut :

If kondisi then
Aksi
Sehingga menjadi :
If jalan memiliki banyak pohon then
Belok
Dalam bahasa indonesia If berarti jika dan then berarti maka, kondisi adalah pernyataan
yang dapat bernilai benar atau salah, aksi hanya dilaksanakan apabila kondisi berinilai benar.
Sebaliknya apabila kondisi bernilai salah maka aksi tidaka akan dilaksanakan. Perhatikan
bahwa kata If dan Then merupakan kata kunci untuk struktur pemilihan.
Dalam kehidupan sehari-hari, kita sering menuliskan pelaksanaan aksi bila suatu persyaratan
terpenuhi.

Misalnya :

If air mendidih then


Matikan api kompor
If ban bocor then
tambal
If x habis dibagi 2 then
Tulis x adalah bilangan genap
Struktur pemilihan if-then hanya memberikan satu pilihan aksi bila kondisi terpenuhi (benar),
dan tidak memberi pilihan aksi lain bila kondisi bernilai salah. Bentuk pemilihan yang lebih
umum ialah memilih satu dari dua buah aksi bergantung pada nilai kondisinya :

If kondisi then
Aksi 1
Else
Aksi 2
Else dapat diartikan kalau tidak. Bila kondisi bernilai benar, aksi 2 akan dikerjakan, tetapi
kalau tidak, aksi 2 yang akan dikerjakan. Misalnya pada pernyataan berikut :

If x habis dibagi 2 then


Tulis x adalah bilangan genap
Else
Tulis x adalah bilangan ganjil

Catatan :
Dalam penyelesaian kasus menggunakan struktur pemilihan, sangat penting untuk menentukan
kondisi yang tepat, salah dalam menentukan kondisi maka akan menyebabkan keseluruhan struktur
pemilihan salah dan tidak dapat digunakan sebagaimana mestinya

3.2.1. Satu Kasus


Notasi algoritmik untuk analisis dengan satu kasus adalah dengan menggunakan
IF-THEN (jika-maka) dalam bentuk pernyataan :

If kondisi then
Aksi
End If
Aksi sesudah kata then (dapat berupa satu atau lebih aksi) hanya akan
dilakasanakan bila kondisi bernilai benar (true). Bila kondisi bernilai salah (false),
tidak ada pernyataan apapun yang dikerjakan. Kata End If sengaja ditambahkan
untuk mempertegas awal dan akhir struktur if.

Contoh contoh :
a) Contoh 1 :
If x > 100 then
xx+1
end if
Penjelasan :
Jika nilai x lebih besar dari 100 maka nilai x (terbaru) adalah nilai x (lama) ditambah 1

Jika dituliskan dalam pseudocode secara lengkap maka akan seperti


berikut :
Deklarasi
x : integer
Algoritma
read (x)
if x > 100 then
x:=x + 1
end if
write (x)

Jika dijadikan aplikasi dalam bahasa C++ maka akan seperti berikut :
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int x;
cout << "Masukkan nilai x :";
cin >> x;
if (x > 100) {
x = x + 1;
}
cout <<"Nilai x sekarang :" << x ;
cout << endl;
system("PAUSE");
return 0;
}

Hasil uji coba aplikasi :

Keterangan tambahan :
Terkadang

dalam

penerapan

aplikasi

sebenarnya

kita

perlu

menambahkan beberapa keterangan tertentu agar user lebih mudah


memahami maksud dan tujuan dari aplikasi yang kita buat. Contohnya
terdapat pada aplikasi dalam bahasa C++ diatas, saya menambahkan
cout << "Masukkan nilai x :";

agar user tau apa yang harus mereka lakukan, lalu saya menambahkan
cout <<"Nilai x sekarang :" ;

agar user tau apa hasil dari program aplikasi yang telah dijalankan

b) Contoh 2
If kar=* then
Stop true
End if
Penjelasan :
Jika nilai kar sama dengan * maka aplikasi akan dihentikan.

Jika dituliskan dalam pseudocode secara lengkap maka akan seperti


berikut :
Deklarasi
kar: char
Algoritma
read (kar)
if kar=* then
stop := true
end if

Jika dijadikan aplikasi dalam bahasa C++ maka akan seperti berikut :
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char kar;
cout << "Masukkan nilai kar :";
cin >> kar;
if (kar=='*') {
exit(1);
}
system("PAUSE");
return 0;
}

Hasil uji coba :


Aplikasi akan langsung berhenti jika nilai kar adalah *

Tidak ada screen shoot, karena aplikasi akan langsung tertutup jika nilai
yang diinputkan *.

c) Contoh 3
If ( a0) or (p=1) then
q a * p
write(q)
end if
Jika dituliskan dalam pseudocode secara lengkap maka akan seperti
berikut :
Deklarasi
q,a,p : integer
Algoritma
read (a)
read (p)
if ( a != 0 ) or (p=1) then
q:=a + p
write (q)
end if

Jika dijadikan aplikasi dalam bahasa C++ maka akan seperti berikut :
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int q, p, a;
cout << "Masukkan nilai a :";
cin >> a;
cout << "Masukkan nilai p :";
cin >> p;
if ((a != 0) || (p == 1)){
q = a + p;
cout << "Nilai q adalah :" << q;
}
cout << endl;
system("PAUSE");
return 0;

Hasil
uji coba :
}

Keterangan :
Untuk lambang operator pada C++, dapat dilihat secara lengkap besrta
contoh dan keterangannya pada
https://msdn.microsoft.com/en-us/library/126fe14k.aspx
Contoh soal :
Tulislah algoritma dan buatlah aplikasi yang membaca sebuah karakter,
lalu menuliskan pesan huruf hidup jika karakter tersebut merupakan
salah satu huruf vokal.
Penyelesaian :
Huruf vokal ada lima, yaitu a, i, u, e dan o. Bandingkan karakter yang
dibaca dengan kelima huruf tersebut. Jika karakter masukan sama
dengan salah saru huruf vokal tersebut maka tuliskan pesan bahwa
karakter tersebut adalah huruf hidup.

Pseudocode :
Deklarasi
c : char
Algoritma
read (c)
if ( c =a) or (c=i) or (c=u) or (c=e) or (c=o) then
write(Huruf hidup)
end if
Code Program C++ :
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char c;
cout << "Masukkan sebuah karakter :";
cin >> c;
if ((c=='a') || (c=='i') || (c=='u') || (c=='e') || (c=='o')){
cout << "Huruf Hidup";
}
cout << endl;
system("PAUSE");
return 0;
}

Contoh Soal :
Buatlah algoritma dan aplikasi (C++) yang membaca sebuah bilangan
bulat , lalu mencetak pesan genap jika bilangan tersebut adalah
bilangan genap.
Penyelesaian :
Bilangan genap adalah bilangan yang habis dibagi dengan 2 ( sisa
pembagian =0) karena itu kita perlu membagi data yang di inputkan
dengan 2. Jika data masukkan habis dibagi 2, maka kita tulis bahwa
bilangan tersebut adalah bilangan genap.

Pseudocode :
Deklarasi
bil : integer
Algoritma
Read (bil)
If bil mod 2 = 0 then
Write(Genap)
End if
Code Program C++ :
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int bil;
cout << "Masukkan sebuah bilangan bulat :";
cin >> bil;
if (bil % 2 == 0){
cout << "Genap";
}
cout << endl;
system("PAUSE");
return 0;
}

Soal :
1. Buatlah algoritma dan aplikasi yang membaca sebuah bilangan bulat
positif lalu menentukan apakah bilangan tersebut merupakan
kelipatan 4.
2. Buatlah algoritma dan aplikasi yang membaca umur seseorang, jika
umur orang tersebut lebih dari 40 tahun, lalu aplikasi akan
menampilkan pesan tua .

3.2.2. Dua Kasus


Konstruksi IF-THEN hanya menyediakan satu alternatif aksi jika suatu
persyaratan (kondisi) terpenuhi. Terkadang ita perlu memilih melakukan aksi
alternatif jika suatu kondisi TIDAK terpenuhi. Jadi, ada dua kasus, tetapi hanya
salah satu dari keduanya yang harus dipilih untuk dikerjakan. Notasi algoritmik
untuk analsisi dengan dua buah kasus adalah dengan menggunakan konstruksi
IF-THEN-ELSE (jika-maka-kalau tidak) :
If kondisi then
Aksi 1
Else
Aksi 2
End if

Aksi 1 akan dilaksanakan jika kondisi bernilai benar, sebaliknya jika kondisi
bernilai salah (tidak terpenuhi) maka yang dilaksanakan adalah aksi 2.
Perhatikanlah bahwa else menyatakan ingkaran (negation) dari kondisi
Contoh Contoh :
a) Contoh 1
If a > 0 then
Write(Bilangan Positif)
Else
Write( Bukan Bilangan Positif)
End If
Jika ditulis dalam pseudocode secara lengkap maka akan seperti berikut:
Deklarasi
bil : integer
Algoritma
Read (bil)
If bil > 0 then
Write(Bilangan Positif)
Else
Write(Bukan Bilangan Positif)
End if
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int bil;
cout << "Masukkan sebuah bilangan bulat :";
cin >> bil;
if (bil > 0){
cout << "Bilangan Positif";
}
else {
cout << "Bukan Bilangan Positif";
}
cout << endl;
system("PAUSE");
return 0;
}

b) Contoh 2
If (k>4) and (k div 2 = 4) then
Read(n)
z n * k
Else
Read(m)
zm * k
End if
Pseudocode :
Deklarasi
k,z,n,m : integer
Algoritma
Read (k)
If (k > 4) AND (k div 2 =4) then
Read(n)
z:=n * k
Else
Read(m)
z:=m / k
end if

C++
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int k, z, n, m;
cout << "Masukkan nilai k :";
cin >> k;
if ((k > 4) && (k / 2 == 4) ){
cout << "Masukkan nilai n :";
cin >> n;
z = n*k;
}
else {
cout << "Masukkan nilai m :";
cin >> m;
z = m*k;
}
cout << "Nilai z adalah " << z;
cout << endl;
system("PAUSE");
return 0;
}

Contoh Soal :
1. Menentukan genap atau ganjil
Tulislah algoritma dan code aplikasi yang membaca sebuah bilangan bulat, lalu
menuliskan pesan genap jika bilangan tersebut adalah bilangan genap atau ganjil
jika bilangan tersebut adalah bilangan ganjil.
Penyelesaian:
Seperti yang sudah dibahas pada contoh soal sebelumnya, bilangan genap adalah
bilangan yang habis dibagi dengan 2 (sisa pembagian =0) sedangkan bilangan ganjil
adalah bilangan yang tidak habis dibagi dengan 2 (sisa pembagian =1). Untuk contoh
kasus seperti ini ada beberapa kemungkinan kondisi yang dapat kita buat.
Versi 1:
Pseudocode:
Deklarasi
bil : integer
Algoritma
Read (bil)
If bil mod 2 = 0 then
Write (genap)
Else
Write (ganjil)
end if

C++:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int bil;
cout << "Masukkan sebuah bilangan bulat:";
cin >> bil;
if (bil % 2 == 0){
cout << "genap";
}
else{
cout << "ganjil";
}
cout << endl;
system("PAUSE");
return 0;
}

Versi 2:
Pseudocode:
Deklarasi
bil : integer
Algoritma
Read (bil)
If bil mod 2 = 1 then
Write (ganjil)
Else
Write (genap)
end if

#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int bil;
cout << "Masukkan sebuah bilangan bulat:";
cin >> bil;
if (bil % 2 == 1){
cout << "ganjil";
}
else{
cout << "genap";
}
cout << endl;
system("PAUSE");
return 0;
}

Masih ada kondisi-kondisi lain yang dapat kita gunakan untuk kasus diatas, setiap
orang bisa berbeda-beda dalama menentukan kondisi yang tepat dalam sebuah
kasus. Tergantung sudut pandang atau cara berfikir orang tersebut. Jadi tidak ada
rumus baku dalam menentukan sebuah kondisi, yang penting untuk diperhatikan
adalah syarat-syarat dalam algoritma itu sendiri.
2. Menentukan bilangan terbesar dari dua buah bilangan
Tulislah algoritma dan buatlah aplikasi untuk membaca dua buah bilangan bulat yang
diinputkan lalu menentukan bilangan mana yang terbesar.
Penyelesaian:
Misalkan kedua bilangan tersebut adalah A dan B. Hanya ada dua kemungkinan
bilangan terbesar, A atau B. Kita harus membandingkan kedua bilangan tersebut lalu
menentukan yang terbesar.
Analisa Kasus:
Kasus 1 : jika A > B, maka tulis pesan Bilangan terbesar =A
Kasus 2 : jika B > A, maka tulis pesan Bilangan terbesar =B
Pseudocode :
Deklarasi
A,B : integer
Algoritma
Read (A)
Read (B)
If A>B then
Write (Bilangan terbesar = A)
Else
Write (Bilangan terbesar = B)
end if

#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int A,B;
cout << "Masukkan bilangan bulat A:";
cin >> A;
cout << "Masukkan bilangan bulat B:";
cin >> B;
if (A > B){
cout << "Bilangan terbesar = A";
}
else{
cout << "Bilangan terbesar = B";
}
cout << endl;
system("PAUSE");
return 0;
}

3. Menentukan bilangan terbesar dari tiga buah bilangan


Tulislah algoritma dan buatlah aplikasi untuk membaca tiga buah bilangan bulat, lalu
tentukan bilangan yang terbesar.
Penyelesaian:
Misalkan ketiga bilangan tersebut adalah A,B dan C
Jika A > B, maka set maks=A
Jika B > A, maka set maks =B
Bandingkan maks dengan C: jika C>maks, maka set maks=C
Pseudocode:
Deklarasi
A, B, C, maks : integer
Algoritma
Read (A)
Read (B)
Read (C)
If A>B then
Maks A
Else
Maks B
End If
If C> maks then
Maks C
End If
Write(maks)

C++:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int A,B,C,maks;
cout << "Masukkan bilangan bulat A:";
cin >> A;
cout << "Masukkan bilangan bulat B:";
cin >> B;
cout << "Masukkan bilangan bulat C:";
cin >> C;
if (A > B){
maks = A;
}
else{
maks = B;
}

if (C > maks){
maks = C;
}
cout << "Bilangan terbesar adalah " << maks;
cout << endl;
system("PAUSE");
return 0;
}

4. Menentukan honor karyawan dengan kemungkinan lembur


Karyawan honorer di PT. ABC digaji berdasarkan jumlah jam kerjanya selama satu
minggu. Upah per jam adalah Rp.2000. Bila jumlah jam kerja lebih besar dari 48 jam,
maka sisanya dianggap lembur. Upah lembur adalah Rp.3000 per jam. Tulislah
algoritma yang membaca jumlah jam kerja seorang karyawan selama satu minggu
dalu menentukan upah mingguannya, lalu dari algoritma tersebut buatlah aplikasi
menggunakan bahasa C++.
Penyelesaian :
Misalkan jumlah jam kerja karyawan adalah JJK
Analisa kasus :
Kasus 1: jika JJK48, maka
Upah = JJK * 2000
Kasus 2: jika JJK>48, maka
Lembur=JJK-48
Upah=(48 * 2000) + (lembur * 3000)
Pseudocode :
Deklarasi:
JJK,lembur : integer
upah : real
Algoritma:
Read(JJK)
If (JJK<= 48) then
upahJJK * 2000
Else
LemburJJK-48
upah <-(48*2000)+(lembur*3000)
End if
Write (upah)

C++:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int JJK,lembur;
double upah;
cout << "Masukkan Jumlah Jam Kerja:";
cin >> JJK;
if (JJK <= 48){
upah = JJK * 2000;
}
else{
lembur = JJK - 48;
upah = (48 * 2000) + (lembur * 3000);
}
cout << "Upah : " << upah;
cout << endl;
system("PAUSE");
return 0;
}

Soal :
1. Pasar swalayan X memberikan diskon 10% bagi pembeli yang nilai total belanjanya
lebih dari 100.000. tuliskan algoritma dan buatlah code program dalam bahasa C++.
Data masukkan adalah nilai total belanja pembeli, sedangkan keluarannya adalah
diskon harga dengan nilai belanja setelah dikurangi diskon.
2. Tuliskan algoritma dan code program aplikasi untuk membaca sebuah bilangan bulat,
lalu menampilkan pesan positif jika bilangan tersebut adalah bilangan positif, dan
negatif jika bilangan tersebut adalah bilangan negatif.

3.2.3. Tiga Kasus atau lebih


Masalah yang mempunyai tiga buah kasus atau lebih dapat dianalisis dengan
konstruksi IF-THEN-ELSE secara beringkat
Struktur If Tiga Kasus :
If kondisi 1 then

If kondisi 1 then

Aksi 1

Aksi 1
Else If kondisi 2 then

ATAU

Else If kondisi 2 then


Aksi 2

Aksi 2

Else If kondisi 3

Else

Aksi 3

Aksi 3

End If

End If

Struktur If Lima Kasus :


If kondisi 1 then

If kondisi 1 then

Aksi 1

Aksi 1

Else If kondisi 2 then

Else If kondisi 2 then

Aksi 2

Aksi 2
Else If kondisi 3 then

ATAU

Aksi 3
Else If kondisi 4 then
Aksi 4
Else
Aksi 5
End If

Else If kondisi 3 then


Aksi 3
Else If kondisi 4 then
Aksi 4
Else If Kondisi 5 Then
Aksi 5
End If

Contoh Soal 3 Kasus:


Tulislah algoritma dan buatlah aplikasi dengan bahasa C++ untuk membaca
sebuah bilangan bulat, lalu menentukan apakah bilangan tersebut positif, negatif,
atau nol
Penyelesaian
Analisis kasus :
Kasus 1 : jika x>0 maka x adalah bilangan positif
Kasus 2 : jika x<0 maka x adalah bilangan negatif
Kasus 3 : jika x=0 maka x adalah bilangan nol

Pseudocode :
Deklarasi :
x : integer
Algoritma :
Read (x)
If (x>0) then
Write (positif)
Else if (x<0) then
Write (negatif)
Else
Write(bilangan nol)
End If
Atau
Deklarasi :
x : integer
Algoritma :
Read (x)
If (x>0) then
Write (positif)
Else if (x<0) then
Write (negatif)
Else if (x=0) then
Write(bilangan nol)
End If

C++ :
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int x;
cout << "Masukkan sebuah bilangan bulat :";
cin >> x;
if (x > 0){
cout << "positif";
}
else if (x < 0){
cout << "negatif";
}
else if (x == 0){
cout << "Bilangan nol";
}
cout << endl;
system("PAUSE");
return 0;
}

Contoh Soal 5 Kasus :


Indeks nilai mahasiswa ditentukan berdasarkan nilai ujian yang diraihnya.
Ketentuan pemberian nilai indeks adalah sebagai berikut :
INDEKS

NILAI

80 - 100

70 - 79

55-69

40-54

0-39

Buatlah algoritma dan program aplikasi dengan menggunakan bahasa C++ untuk
membaca nilai ujian seorang mahasiswa, lalu menentukan indeks nilainya,
kemudian mencetak indeksnya.
Penyelesaian :
Kasus 1 : Jika nilai 80 dan nilai 100 maka Indeks=A
Kasus 2 : Jika nilai 70 dan nilai 79 maka Indeks=B
Kasus 3 : Jika nilai 55 dan nilai 69 maka Indeks=C
Kasus 4 : Jika nilai 40 dan nilai 54 maka Indeks=D
Kasus 5 : Jika nilai 0 dan nilai 39 maka Indeks=E
Pseudocode :
Deklarasi :
Nilai : real
Indeks : char
Algoritma :
Read (nilai)
If (nilai>= 80) AND (nilai <=100) then
Indeks=A
Else if (nilai>= 70) AND (nilai <=79) then
Indeks=B
Else if (nilai>= 55) AND (nilai <=69) then
Indeks=C
Else if (nilai>= 40) AND (nilai <=54) then
Indeks=D
Else if (nilai>= 0) AND (nilai <=39) then
Indeks=E
End If
Write (Indeks)

C++ :
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
float nilai;
char indeks;
cout << "Masukkan nilai ujian mahasiswa :";
cin >> nilai;
if ((nilai >= 80) && (nilai <= 100)){
indeks = 'A';
}
else if ((nilai >= 70) && (nilai <= 79)){
indeks = 'B';
}
else if ((nilai >= 55) && (nilai <= 69)){
indeks = 'C';
}
else if ((nilai >= 40) && (nilai <= 54)){
indeks = 'D';
}
else if ((nilai >= 0) && (nilai <= 39)){
indeks = 'E';
}
cout << "Indeks =" << indeks;
cout << endl;
system("PAUSE");
return 0;
}

Soal :
1. Buatlah algoritma yang membaca nomor bulan (integer), lalu menuliskan
nama bulan sesuai angka bulannya. Misal jika input angka 8, maka tercetak
Agustus
2. Silmulasikan sebuah kalkulator sederhana untuk melakukan operasi
aritmatika(kali, bagi, tambah, kurang) pada 2 buah bilangan lalu menampilkan
hasilnya. Misal jika input angka 2 dan angka 3, kemudian dipilih operasi
aritmatika (kurang), lalu hasilnya akan tercetak angka 1.

3.2.4. Struktur Case


Untuk masalah dua kasus atau lebih, konstruksi CASE dapat menyederhanakan
penulisan IF-THEN-ELSE yang bertingkat-tingkat.

Konstruksi CASE secara

algoritma adalah sebagai berikut


Case ekspresi
Nilai 1 : aksi 1
Nilai 2 : aksi 2
Nilai 3 : aksi 3
...
,..
,..

Otherwise ; Aksi x
EndCase
Ekspresi

adalah

sembarang

ekspresi

(aritmatika

atau

boolean)

yang

menghasilkan suatu nilai. Konstruksi case memeriksa apakah nilai dari ekspresi
tersebut sama dengan salah satu dari nilai1, nilai2, dst. Jika tidak ada satupun
nilai ekspresi yang cocok , maka Aksi yang terdapat pada Otherwise yang akan
dikerjakan.

Penulisan Struktur Case pada bahasa C++ :


switch ( expression ){
case constant-expression1 : statement_1
case constant-expression2 : statement_2
case constant-expression3 : statement_3
default
: statement_x
}

Contoh :
Menggunakan IF-THEN-ELSE

Menggunakan Case

Deklarasi
bil : integer

Deklarasi
bil : integer

Algoritma
Read (bil)
If bil mod 2 = 1 then
Write (ganjil)
Else
Write (genap)
end if

Algoritma
Read (bil)
Case (bil mod 2)
0 : Write(genap)
1 : Write(ganjil)
EndCase

C++ :
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int nilai;
cout << "Masukkan sebuah bilangan bulat :";
cin >> nilai;
switch (nilai%2)
{
case 0: cout << "Genap";
break;
case 1: cout << "Ganjil";
break;
default: cout << "Input Salah";
break;
}
cout << endl;
system("PAUSE");
return 0;
}

Soal :
1. Kerjakan Soal-Soal If 3 kasus atau lebih diatas(nomor bulan dan kalkulator
sederhana) dalam bentuk case.
2. Konstruksi case sering digunakan dalam memilih menu program. Buatlah Construksi
case untuk memilih menu program, yang masing-masing menunya digunakan untuk
menghitung luas bangun datar. Contoh :
Menu :
1. Menghitung Luas Segitiga
2. Menghitung Luas Persegi Panjang
3. Menghitung Luas Bujur Sangkar
4. Menghitung Luas Lingkaran
Pilhan Menu (1/2/3/4) : 2
Masukkan nilai Lebar : 4
Masukkan nilai Panjang : 2
Nilai Luas Persegi Panjang Adalah : 8

3.2.5. Pemilihan bersarang (nested selection)


Tidak ada bentuk baku dari pemilihan bersarang, pemilihan bersarang adalah
dimana dalam sebuah struktur pemilihan terdapat struktur pemilihan lagi
didalamnya. Contoh ;
If kondisi 1 then
If kondisi A then
Aksi A
Else
Aksi B
End If
Else if kondisi 2 then
Aksi 2
Else
Aksi 3
End If

Atau :
If kondisi 1 then
Case (expresi)
Nilai A : Aksi A
Nilai B : Aksi B
End Case
Else if kondisi 2 then
Aksi 2
Else
Aksi 3
End If

Atau
Case (expresi)
Nilai 1 : kondisi 1
Nilai 2 : kondisi 2
Nilai 3 :
If (kondisi A) then
Aksi A
Else
Aksi B
End If
End Case

Berikut adalah contoh flowchart Pemanfaatan Pemilihan Bersarang


Gejala 1 :
Komputer tidak
Menyala

Apakah kabel
power terhubung ke
arus listrik ?

TIDAK

Pasang kabel
power ke arus
listrik

YA

Apakah power
supply bekerja ?

TIDAK

YA

Perbaiki konektor
power yang
terhubung ke
socket power MB

TIDAK

Apakah konektor
power telah
terpasang dengan
benar pada soket
power MB ?

Apakah kabel
power telah dialiri
arus listrik ?

TIDAK

Apakah arus listrik


dirumah anda telah
mengalir ?

YA

Apakah daya listrik


yang mengalir dirumah
anda telah sesuai
dengan spesifikasi daya
input PSU ?

TIDAK

YA

Cek aliran listrik


yang terhubung ke
komputer anda

TIDAK

YA

YA
PSU tidak
mengeluarkan
output/PSU rusak

TIDAK

Ganti PSU yang


sesuai dengan
daya listrik rumah
anda

Apakah arus PSU


telah mengalir di MB
(cek LED indikator
pada MB)?

YA

Apakah tombol
power pada casing
dalam keadaan
baik ?

Perbaiki tombol
power pada casing

Kabel yang
menghubungkan
antara tombol
power dan MB
rusak/putus

Flowchart diatas adalah sebagian dari keseluruhan flowchart yang saya desain untuk
membuat sebuah aplikasi. Contoh penerapan Flowchart diatas pada Code aplikasi
menggunakan Borland Delphi 7 (Pascal) :

Gunakan Back Up
Power

Contoh Soal :
Buatlah menu pemilihan bersarang seperti contoh berikut
Menu :
1. Menghitung Luas Bangun Datar
2. Menghitung Volume Bangun Ruang
Pilihan (1/2) =
Jika 1 :
Menghitung Luas Bangun Datar
A. Luas Persegi Panjang
B. Luas Lingkaran
Pilihan (A/B) =

Jika 2 :
Menghitung Volume Bangun Datar
A. Volume Balok
B. Volume Kubus
Pilihan (A/B) =
Jika di pilih A
Volume Balok
Masukkan Nilai Panjang =
Masukkan Nilai Lebar =
Masukkan Nilai Tinggi =
Volume balok =

Jika dipilih B
Volume Kubus
Masukkan panjang rusuk =
Volume Kubus =

Pseudocode :
Deklarasi :
Pilihan1 : Integer
Pilihan2:Char
Panjang,lebar,tinggi,rusuk,volume,luas : real
Algoritma :
Write(MENU)
Write(1. Menghitung Luas Bangun Datar)
Write(2.Menghitung Volume Bangun Ruang)
Write(Pilihan (1/2) =)
Read(Pilihan1)
Case (Pilihan1)
1:
Write(Menghitung Luas Bangun Datar)
Write(A. Menghitung Luas Persegi Panjang)
Write(B. Menghitung Luas Bujur Sangkar)
Write(Pilihan (A/B)=)
Read(Pilihan2)
IF Pilihan2=A Then
Write(Menghitung Luas Persegi Panjang)
Write(Masukkan Nilai Panjang =)
Read(panjang)
Write(Masukkan Nilai Lebar =)
Read(lebar)
Luas=panjang*lebar
Write(Luas Persegi Panjang=,Luas)
Else If Pilihan2=B
Write(Menghitung Luas Bujur Sangkar)
Write(Masukkan Nilai Sisi =)
Read(sisi)
Luas=sisi*sisi
Write(Luas Bujur Sangkar=,Luas)
Else
Write(Pilihan Anda Salah)
End If
2:
IF Pilihan2=B Then
Write(Menghitung Volume Balok)
Write(Masukkan Nilai Panjang =)
Read(panjang)
Write(Masukkan Nilai Lebar =)
Read(lebar)
Write(Masukkan Nilai Tinggi =)
Read(tinggi)
volume=panjang*lebar*tinggi
Write(Volume =,volume)

Else If Pilihan2=B
Write(Menghitung Volume Kubus)
Write(Masukkan Nilai Rusuk =)
Read(rusuk)
volume=rusuk*rusuk*rusuk
Write(Volume Kubus=,volume)
Else
Write(Pilihan Anda Salah)
End If
Otherwise : Write(Pilihan anda salah)
End Case

C++ :
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int pilihan1;
char pilihan2;
float panjang, lebar, tinggi,sisi, rusuk, volume, luas;
cout << "================MENU==================" << endl;
cout << "1. Menghitung Luas Bangun Datar" << endl;
cout << "2. Menghitung Volume Balok" << endl;
cout << "Pilihan (1/2)=";
cin >> pilihan1;
switch (pilihan1)
{
case 1:
cout << "1. Menghitung Luas Bangun Datar" << endl;
cout << "A. Menghitung Luas Persegi Panjang" << endl;
cout << "B. Menghitung Luas Bujur Sangkar" << endl;
cout << "Pilihan (A/B)=";
cin >> pilihan2;
if (pilihan2=='A')
{
cout << "A. Menghitung Luas Persegi Panjang" << endl;
cout << "Masukkan Nilai Panjang =";
cin >> panjang;
cout << "Masukkan Nilai Lebar =";
cin >> lebar;
luas = panjang*lebar;
cout << "Luas Persegi Panjang adalah =" << luas;
} else if (pilihan2 == 'B'){
cout << "B. Menghitung Luas Bujur Sangkar" << endl;
cout << "Masukkan nilai sisi =";
cin >> sisi;
luas = sisi*sisi;
cout << "Luas Bujur Sangkar adalah =" << luas;
}
else{
cout << "Pilihan Anda Salah";
}
break;

case 2:
cout << "1. Menghitung Volume Bangun Ruang" << endl;
cout << "A. Menghitung Volume Balok" << endl;
cout << "B. Menghitung Volume Kubus" << endl;
cout << "Pilihan (A/B)=";
cin >> pilihan2;
if (pilihan2 == 'A')
{
cout << "A. Menghitung Volume Balok" << endl;
cout << "Masukkan Nilai Panjang =";
cin >> panjang;
cout << "Masukkan Nilai Lebar =";
cin >> lebar;
cout << "Masukkan nilai tinggi=";
cin >> tinggi;
volume = panjang*lebar*tinggi;
cout << "Volume Balok adalah =" << volume;
}
else if (pilihan2 == 'B'){
cout << "B. Menghitung Volume Kubus" << endl;
cout << "Masukkan nilai rusuk =";
cin >> rusuk;
volume = rusuk*rusuk*rusuk;
cout << "Volume Kubus =" << volume;
}
else{
cout << "Pilihan Anda Salah";
}
break;
default:cout << "Pilihan anda salah";
break;
}
cout << endl;
system("PAUSE");
return 0;
}

Keterangan :
Pada contoh diatas saya memadukan antara pemilihan dengan struktur Case dan dengan
Struktur If.
Soal :
Layar Input
==========================
------------LOSMEN SYARI----------==========================
Pilihan Kamar :
1. Mekkah
2. Madinah
3. Yerussalem
Pilihan (1/2/3) :

Jika dipilih 2 :
Pilihan Kelas :
A.
B.
C.
D.

VVIP
VIP
Kelas1
Reguler

Pilihan (A/B/C/D) :
Jika dipilih B
Harga per Malam = 20000
Lama Menginap =
Total bayar =

Tabel harga
Kelas
Kamar
Mekkah
Madinah
Yerussalem

VVIP

VIP

300000
250000
200000

280000
230000
180000

Kelas 1
260000
220000
160000

Reguler
250000
200000
140000

Keterangan Tugas :
1. Kerjakan semua contoh soal diatas (buat aplikasinya) lalu di Capture (print screen)
code beserta hasil uji coba.
2. Kerjakan semua soal diatas (buat algoritma dan aplikasinya) untuk aplikasi di
Capture (Print Screen) code dan hasil uji coba, jika code terlalu panjang, code
lengkapnya dapat di-paste-kan didalam textbox seperti contoh diatas.
3. Hasil capture diatas di susun dalam bentuk laporan yang tersusun rapih dan mudah
dibaca.
4. Laporan dicetak, kemudian di tanda tangani oleh orang tua pada halaman ke-2
5. Design halaman judul seperti berikut
6. Laporan dikumpulkan pada hari Jumat, tanggal 17 April 2015
7. Jika tidak dikumpulkan pada tanggal tersebut, maka tugas dan soal akan
ditambah.

PRAKTIKUM STRUKTUR PEMILIHAN (C++)

Tanggal : 13 16 April 2015


Di susun Oleh :
Nama

NISN

Bidang Keahlian

: Teknologi Informasi dan Komuniasi

Program Keahlian

: Teknik Komputer dan Informatika

Kompetensi Keahlian : Rekayasa Perangkat Lunak


Mata Diklat

: Menerapkan Algoritma Pemrograman Tk Lanjut

SMK NEGERI 1 KARANG BARU


Jl. Ir. H Juanda Desa Bundar Kec. Karang Baru, Kab. Aceh Tamiang
No. Telp 0641-7447003, E-mail : smkn1karangbaru@gmail.com

DAFTAR PUSTAKA
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam Bahasa Pascal dan C. Bandung :
Informatika.
Microsoft. 2013. C++ Operators, Precedence and Associativity. Diambil dari :
https://msdn.microsoft.com/en-us/library/126fe14k.aspx . (10 April 2015)
Microsoft. 2013. switch Statement (C++). Diambil dari : https://msdn.microsoft.com/enus/library/k0t5wee3.aspx . (10 April 2015)