Anda di halaman 1dari 48

Analisis Kasus/Percabangan

(dalam Bahasa MATLAB)


Tim Penyusun Materi PTI-B

KU1072/Pengenalan Teknologi Informasi B


Tahap Tahun Pertama Bersama
Institut Teknologi Bandung
Tujuan
• Mahasiswa memahami pengertian dan jenis-jenis
analisis kasus
• Mahasiswa dapat menggunakan notasi analisis kasus
dengan benar
• Mahasiswa dapat memanfaatkan jenis-jenis analisis
kasus dalam menyelesaikan persoalan sederhana
yang diberikan

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 2


Contoh Analisis Kasus: Memilih Mangga
• Analisis kasus dapat digunakan
dalam kehidupan sehari-hari,
contoh: memilih mangga
• Mangga yang sudah matang dan
siap dimakan adalah mangga
yang berwarna kuning
• Jika tidak berwarna kuning maka
tidak matang

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 3


Flowchart
memilih mangga Mulai

Pilih Mangga

Apakah
ya kuning?
tidak

Matang Tidak Matang

Selesai
18/01/2017 KU1072/Pengenalan Teknologi Informasi B 4
Contoh lain: Mengupas Kentang Revisited
• Berdasarkan pengamatan, ada hari-hari di mana ibu
memakai celemek ketika mengupas kentang, tapi
ada hari-hari lain yang tidak
– Setelah diamati, ternyata jika ibu sedang memakai baju
berwarna cerah, maka ibu memakai celemek ➔ takut
bajunya terlihat kotor ☺
– Jika tidak (memakai baju berwarna gelap), maka ibu tidak
memakai celemek

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 5


Kasus-1: Ya

Kondisi:
Apakah Pakai celemek
memakai baju
warna cerah
Kupas kentang

Kasus-2:
Tidak

Kentang tersedia
18/01/2017 KU1072/Pengenalan Teknologi Informasi B
Kentang terkupas 6
Flowchart: Mengupas Kentang
Keadaan awal:
(Revisited)
Mulai Kentang Tersedia

Cek warna baju Keadaan akhir:


Kentang Terkupas

Apakah
memakai Ya Kupas
Pakai celemek Selesai
baju warna Kentang
cerah?
Tidak

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 7


Contoh lain:
• Diketahui 2 (dua) buah bilangan, misalnya A dan B,
tentukan manakah yang lebih besar di antaranya
keduanya
• Kondisi yang digunakan untuk pemeriksaan?
Apakah A lebih besar dari B?
• Kasus:
– Jika A lebih besar dari B, maka hasilnya adalah A
– Jika tidak, maka hasilnya B
• Alternatif lain untuk kondisi dan kasus?

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 8


Contoh lagi:
• Diberikan sebuah bilangan bulat, misalnya A,
nyatakan apakah bilangan tersebut adalah bilangan
positif, negatif, atau nol
• Kondisi: Apakah A > 0?
• Kasus:
– Jika ya, maka: A adalah positif
– Jika tidak, maka: kondisi: Apakah A = 0?
• Jika ya, maka A adalah nol
• Jika tidak, maka A adalah negatif

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 9


Analisis Kasus (1)
• Memungkinkan kita membuat teks yang sama,
namun menghasilkan eksekusi berbeda
• Sering disebut percabangan
– Dari satu langkah ada pilihan (bercabang) ke beberapa
langkah
• Terdiri atas:
– Kondisi: ekspresi yang menghasilkan true dan false
– Aksi: statement yang dilaksanakan jika kondisi yang
berpasangan dengan aksi dipenuhi

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 10


Analisis Kasus (2)
• Analisis kasus harus memenuhi 2 kriteria:
– COMPLETE: semua kasus terdefinisi secara lengkap
– DISJOINT: tidak ada kasus yang tumpang tindih/overlapped
• Contoh: Diberikan sebuah bilangan bulat, misalnya A,
nyatakan apakah bilangan tersebut adalah bilangan
positif, negatif, atau nol
• Ada 3 kasus yang complete dan disjoint:
– A>0
– A<0
– A=0
Tidak ada kasus lain yang bisa di definisikan dan ketiga kasus
tersebut tidak tumpang tindih

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 11


Mulai
Contoh Flowchart
• Menerima input(A)
masukan sebuah
nilai A
• Memeriksa
A>0
apakah A positif true false
atau bukan output output (“Bukan
• Mencetak ke (“Positif”) Positif”)

layar

Selesai

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 12


Jenis Analisis Kasus
• Satu kasus
• Dua kasus komplementer
• Banyak kasus
• Banyak kasus dengan switch

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 13


Satu Kasus
false
• Sintaks MATLAB: kondisi

true
if ( kondisi )
aksi aksi

...
end
...

• Kondisi benar → aksi dilakukan


• Kondisi tidak benar → tidak terjadi
apa-apa

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 14


Contoh Persoalan mulai
Satu Kasus (1)
• Input: i Input (i)

• Jika i >= 0, cetak “Positif”.


false
i >= 0
Program CetakPositif
% Input i; jika i >= 0, cetak “positif”
true
ALGORITMA
% Lihat flowchart di samping Output
(“positif”)

selesai

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 15


Contoh Persoalan mulai

Satu Kasus (2) – MATLAB


Input (i)
% Program CetakPositif
% Input i; jika i >= 0, cetak “positif”
false
clc i >= 0

clear all true

Output
% ALGORITMA (“positif”)
i=input('');
if (i >= 0)
disp('positif') selesai

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 16


Dua Kasus Komplementer
• Sintaks Matlab :
true false
kondisi
if (kondisi)
aksi-1; aksi-1 aksi-2

else % not kondisi


aksi-2;
end
• Perhatikan kondisi eksplisitnya!

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 17


Contoh Persoalan:
2 Kasus Komplementer (1) mulai

• Input i
Input (i)
• Jika i >= 0; cetak “positif”
• Jika tidak, cetak “negatif”
true false
Program CetakPosNeg i >= 0
% Input i;
% Jika i >= 0, cetak “positif”
% Jika tidak, cetak “negatif”
Output Output
ALGORITMA (“negatif”)
% Lihat flowchart di samping (“positif”)

selesai

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 18


Contoh Persoalan:
2 Kasus Komplementer (2) – MATLAB
clc
clear all mulai

% Program CetakPosNeg
% Input i; Jika i >= 0, cetak “positif”
Input (i)
% Jika tidak, cetak “negatif”
% ALGORITMA
i=input('i=')
true false
if (i >= 0) i >= 0
disp('positif');

else %i < 0 Output Output


disp('negatif'); (“positif”) (“positif”)

end
selesai
18/01/2017 KU1072/Pengenalan Teknologi Informasi B 19
Banyak Kasus (1)
Dibaca: tergantung nilai
var-1, var-2, ..., var-n

kondisi-1 var1, kondisi-n


var2, ...
var-n
kondisi-2
aksi-1
aksi-n
aksi-2
...

kondisi-1, kondisi-2, ...., kondisi-n ditentukan oleh nilai var-1, var-2, ..., var-n
kondisi-x adalah ekspresi boolean: menghasilkan [true, false]
Property yang perlu diperhatikan untuk kondisi-x: disjoint dan complete

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 20


Banyak Kasus (2) – MATLAB
Sintaks MATLAB
(diadaptasi dari 2 kasus komplementer)
if (kondisi-1)
aksi-1
else if (kondisi-2)
aksi-2
else if ... % kondisi-3 ... dst
...
else % kondisi-n
aksi-n
end % untuk else if kondisi-3
end % untuk else if kondisi-2
end % untuk if kondisi-1

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 21


Contoh Persoalan: Banyak kasus (1)
• Baca nilai i (integer)
• Jika i > 0; cetak “positif”
• Jika i = 0; cetak “nol” Program CetakPosNeg
% Input i;
• Jika i < 0, cetak “negatif” % Jika i > 0, cetak “positif”
% Jika i = 0, cetak “nol”
% Jika i < 0, cetak “negatif”
ALGORITMA
% Lihat flowchart di samping

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 22


mulai
Contoh Persoalan:
Banyak kasus (2) -
Input (i)
Flowchart
i>0 i<0
i

i=0

Output Output Output


(“positif”) (“nol”) (“negatif”)

selesai
18/01/2017 KU1072/Pengenalan Teknologi Informasi B 23
Contoh Persoalan: Banyak kasus (3) – MATLAB
% Program CetakPosNeg
% Input i; Jika i > 0, cetak “positif”
% Jika i = 0, cetak “nol”; Jika i < 0, cetak “negatif”

clc

clear all

% ALGORITMA
i=input('i=');
if (i > 0)
disp('positif');
else if (i == 0)
disp('nol');
else % i < 0
disp('negatif')
end %untuk else if
end %untuk if

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 24


Switch (1) - Flowchart
• Sintaks khusus di MATLAB untuk banyak kasus
• Jika kondisi ditentukan oleh nilai 1 variabel bertipe
ordinal
var != val-1 && var != val-2 && ... ≠
var=val-1 var != val-n
Nilai
var
var=val-2 var=val-n

aksi-
aksi-1 aksi-2 ... aksi-1
default

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 25


Switch (2) – MATLAB
switch (var)
case (val-1)
aksi-1
break
case (val-2)
aksi-2
break

case val-n
aksi-n
break
otherwise
aksi-default
break
end

• var bertipe ordinal, val-1 , val-2, ..., val-n adalah constant


• Default-case (otherwise): jika bukan val-1 , val-2, ..., val-n

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 26


Contoh Persoalan Switch (1)
• Dibaca/diinput sebuah nilai A
• Tuliskan nama bulan dalam penanggalan Masehi yang
direpresentasikan dengan A, jika 1 ≤ A ≤ 12, yaitu:
– 1 = Januari
– 2 = Februari
– 3 = Maret
– ...
– 12 = Desember
• Jika A < 1 atau A > 12 maka tuliskan “Nomor bulan tidak
tepat”

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 27


Program NamaBulan
% Menuliskan nama
% bulan berdasarkan mulai Contoh Persoalan
% masukan integer Switch (2) -
ALGORITMA
%Perhatikan bagan Flowchart
Input (A)

A=1 A<1 || A > 12


A=?

A=2 A=12

Output Output Output Output


(“januari”) (“februari”) ... (“desember”) (“Nomor
bulan tidak
tepat”)

selesai

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 28


Contoh Persoalan Switch (2) – MATLAB++
clc
clear all
% Program NamaBulan % Menuliskan nama bulan berdasarkan
masukan integer
% ALGORITMA
A=input('A');
switch (A)
case {1}
disp('januari') ;
case {2}
disp ('februari');
case {3}
disp ('maret');
... %dst lanjutkan sendiri
case {12}
disp ('desember');
otherwise
disp ('Nomor bulan tidak tepat');
end
18/01/2017 KU1072/Pengenalan Teknologi Informasi B 29
Analisis Kasus sebagai sarana validasi
if ( kondisi-benar )
true false
aksi; kondisi
-benar
else %not kondisi-benar
aksi/pesan-kesalahan; aksi
Output
(pesan-
kesalahan)

• Digunakan untuk memvalidasi masukan program sehingga


masukan yang salah tidak diproses
• aksi hanya dilakukan jika kondisi-benar terpenuhi, jika
tidak maka diberikan pesan-kesalahan.

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 30


Contoh Kasus Validasi (1)
• Buatlah program yang digunakan untuk menuliskan
ke layar nama-nama bulan dari nomor bulan, yaitu 1
s.d. 12 yang dibaca dari keyboard.
• Program memvalidasi terlebih dahulu apakah
masukan dari keyboard sudah benar atau belum,
yaitu apakah nomor bulan sudah tepat 1 s.d. 12. Jika
tidak tepat, maka dikeluarkan pesan kesalahan yaitu
“Nomor bulan tidak tepat”.

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 31


Program NamaBulan mulai
% Menuliskan nama
% bulan berdasarkan
Contoh Kasus
% masukan integer Validasi (2)-
ALGORITMA Input (A)
Flowchart

false
1<=A<=12

Bandingkan true
dengan solusi
slide 28 A=1 A=12
A
A=2

Output Output Output Output


(“januari”) (“februari”) ... (“desember”) (“Nomor
bulan tidak
tepat”)

selesai
18/01/2017 KU1072/Pengenalan Teknologi Informasi B 32
Contoh Kasus Validasi (3)- MATLAB
clc;clear all;
% Program NamaBulan
% Menuliskan nama bulan berdasarkan masukan nomor bulan
% ALGORITMA
A=input('');
if (A >= 1) && (A <= 12)
switch (A)
case 1
disp('Januari')
break
case 2
disp('februari')
break
... % lanjutkan sendiri
end
else % A < 1 || A > 12
disp('Nomor bulan tidak tepat')
end
18/01/2017 KU1072/Pengenalan Teknologi Informasi B 33
Soal-1a
• Dalam sebuah program dikenal 2 buah variabel
bertipe integer yaitu A dan B
• Ingin dituliskan, nilai yang paling besar di antara A
dan B
• Apa saja kasus yang harus didefinisikan sehingga
memenuhi kriteria:
– Complete / lengkap
– Disjoint / saling lepas

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 34


Solusi Soal-1a
• Kasus-kasus yang mungkin:
– A > B ➔ hasilnya A
– A < B ➔ hasilnya B
– A = B ➔ hasilnya bisa A, bisa B (pilih salah satu)
• Kasus-kasus ini sudah lengkap (tidak mungkin ada
alternatif lain berdasarkan hukum bilangan bulat) dan
saling lepas (tidak tumpang tindih)
• Bisa diringkas menjadi:
– A >= B ➔ hasilnya A
– A < B ➔ hasilnya B
Atau:
– A > B ➔ hasilnya A
– A <= B ➔ hasilnya B

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 35


Soal-1b
• Buatlah program yang menerima masukan 2 buah
nilai A dan B dan menuliskan nilai terbesar di antara
keduanya.
• Gunakan analisis kasus berikut:
– A >= B maka A
– A < B maka B

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 36


Solusi Soal-1b (1) mulai

Program Max2Integer
% Menentukan 2 nilai Input (i)
% mana yang paling besar
ALGORITMA
% Lihat flowchart di samping
true false
A>=B

Output (A) Output (B)


Untuk latihan,
coba alternatif
analisis kasus lain
seperti di soal 1a selesai

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 37


Alternatif Solusi Soal-1
clc
clear all
% Program Max2Integer
% Menuliskan nilai terbesar dari masukan 2 integer
Untuk latihan,
% ALGORITMA coba alternatif
A=input('A='); analisis kasus lain
seperti di soal 1a
B=input('B=');
if (A >= B)
disp(A)
else %A < B
disp(B)
end

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 38


Soal-2
• Buatlah sebuah program yang menerima suhu air
(dalam derajat celcius) dan menuliskan wujud air ke
layar yaitu beku, cair, atau uap.
• Bagaimanakah analisis kasusnya?
• Solusi analisis kasus: Ada 3 kasus
– Jika suhu air <= 0 derajat, maka tuliskan “beku”
– Jika suhu air > 0 dan kurang dari 100 derajat, maka tuliskan
“cair”
– Jika suhu air >= 100, maka tuliskan “uap”

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 39


Alt. Solusi Soal-2 (1) Program SuhuAir
% Menuliskan wujud air
% tergantung masukan suhu
mulai ALGORITMA
% Lihat flowchart di samping

Input
(suhu)

suhu <= 0 suhu >= 100


suhu

0 < suhu < 100

Output Output Output


(“beku”) (“cair”) (“uap”)

selesai

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 40


Alt. Solusi Soal-2 (3) – MATLAB
% Program SuhuAir
% Menuliskan wujud air tergantung masukan suhu

% ALGORITMA

suhu=input('');

if (suhu<=0)
disp('Beku')
else if (suhu > 0) && (suhu < 100)
disp('Cair')
else
disp('Uap')
end
end

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 41


Soal-3
• Buatlah program yang menerima 3 buah hambatan (R1,
R2, R3) dan menghasilkan total hambatan (RT) jika
dirangkai seri.
RT = R1 + R2 + R3
• R1, R2, dan R3 tidak boleh bernilai negatif. Jika setidaknya
satu saja hambatan bernilai negatif, maka diberikan
pesan kesalahan “Hambatan tidak boleh negatif”.
• Definisikan dulu kasus-kasus apa saja yang mungkin pada
pemeriksaan nilai R1, R2, R3
• Selanjutnya buatlah solusinya dalam bentuk flowchart
dan kode program MATLAB.

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 42


Alt. Solusi Soal-3 (1)
Kasus-kasus yang mungkin dalam pemeriksaan nilai R1, R2,
R3:
• Kasus-1:
– Minimum salah satu nilai dari R1, R2, R3 adalah negatif (<0)
– Ekspresi: R1 < 0 || R2 < 0 || R3 < 0
– Aksi: Berikan pesan kesalahan “Hambatan tidak boleh negatif”
• Kasus-2: komplemen dari Kasus-1
– Semua nilai R1, R2, R2 >= 0
– Ekspresi: R1 >= 0 && R2 >= 0 && R3 >= 0
– Aksi: Hitung dan tampilkan nilai RT = R1 + R2 + R3

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 43


Alt. Solusi Soal-3 (2) -
mulai
Flowchart
Program HambatanSeri
% Menghitung hambatan total Input (R1, R2, R3)
% berdasarkan masukan 3
% hambatan R1, R2, R3
ALGORITMA
% Lihat flowchart di samping true R1>=0 && false
R2>=0 &&
R3>=0

Output
RT = R1 + R2 + R3
(“Hambatan tidak
boleh negatif”)

Output(RT)

selesai
18/01/2017 KU1072/Pengenalan Teknologi Informasi B 44
Alt. Solusi Soal-3 (3) – MATLAB
% Program HambatanSeri
% Menghitung hambatan total berdasarkan hambatan R1, R2, R3
clc
clear all

% ALGORITMA
R1=input('R1');R2=input('R2');R3=input('R3');

if ((R1 >= 0) && (R2 >= 0) && (R3 >= 0))


RT = R1 + R2 + R3
else % R1 < 0 || R2 < 0 || R3 < 0
disp('Hambatan tidak boleh negatif');

end

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 45


Soal-4
• Sebuah kalkulator super sederhana Calc-SS, digunakan
untuk menerima masukan 2 buah bilangan bulat,
misalnya A dan B, dan menuliskan beberapa hasil operasi
aritmatika terhadap kedua bilangan tersebut, tergantung
pilihan operasi melalui character sebagai berikut:
– Pilihan = a : menuliskan hasil A + B
– Pilihan = b : menuliskan hasil A – B
– Pilihan = c : menuliskan hasil A * B
– Pilihan = d : menuliskan hasil A/B ➔ hasilnya real/float
– Pilihan = e : menuliskan hasil A div B ➔ hasilnya integer(bulat)
– Pilihan = f : menuliskan hasil A mod B
• Jika dimasukkan pilihan menu character lain, maka
dituliskan “Bukan operasi yang benar”

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 46


Soal-4: Contoh masukan dan keluaran
Masukan Keluaran
A B pilihan
operasi
3 2 a A+B=5
3 2 b A–B=1
3 2 c A*B=6
3 2 d A / B = 1.5
3 2 e floor(A/B) = 1
3 2 f mod(A,B) = 1
3 2 h Bukan pilihan menu yang benar

Buatlah alur solusinya dalam flowchart dan program


MATLAB yang sesuai
18/01/2017 KU1072/Pengenalan Teknologi Informasi B 47
Soal 5
• Diberikan 3 buah integer yang dibaca dari keyboard,
misalnya A, B, C. Asumsikan bahwa ketiga bilangan
tersebut berbeda.
• Tuliskan ke layar ketiga bilangan tersebut dalam
urutan dari yang terbesar sampai yang terkecil.
• Contoh: A = 1, B = -1, C = 2
Maka tertulis di layar: 2 1 -1

18/01/2017 KU1072/Pengenalan Teknologi Informasi B 48

Anda mungkin juga menyukai