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)