(dalam Matlab+
Notasi Algoritmik)
01/26/2021 WD/PTI-B 2
Mengupas Kentang Revisited
• Asumsi: jumlah kentang tersedia tidak terbatas
• Pada suatu hari Ibu hanya mengupas kentang hanya 4
buah karena hanya anggota keluarga saja yang makan
malam
• Pada hari yang lain, Ibu mengundang mahasiswa PTI-B
sejumlah 400 orang untuk makan malam di rumahnya
sehingga ibu mengupas 400 kentang untuk semua orang
• Hari yang lain, ibu tidak tahu berapa jumlah orang yang
akan makan malam
– Setiap selesai mengupas 1 kentang, dicek apakah jumlah cukup
atau tidak
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 3
Kupas 1 kentang
Jumlah kentang = 4?
Jumlah kentang = 400?
Jumlah kentang = jumlah orang yang hadir?
Jumlah kentang
terkupas cukup
01/26/2021 WD/PTI-B 10
Pengulangan / Looping
• Elemen:
– Kondisi pengulangan: ekspresi lojik
– Badan pengulangan: aksi yang diulang
• Jenis-jenis notasi pengulangan:
1. Berdasarkan kondisi mengulang di awal: while
2. Berdasarkan kondisi berhenti di akhir : repeat-until*
3. Berdasarkan pencacah : for
01/26/2021 WD/PTI-B 11
Studi Kasus
• Tuliskan program yang menerima masukan sebuah
integer misalnya N dan menuliskan angka 1, 2, 3, … N
dan menuliskan 1+2+3+…+N ke layar.
N = 10
• Asumsikan N > 0. Tampilan di layar:
1
• Contoh: N = 1 N=5 2
Tampilan di layar: Tampilan di layar: 3
1 1 4
2 5
1
3 6
4 7
5 8
15 9
10
55
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 12
1. Pengulangan Berdasarkan
Kondisi Berhenti (repeat-until)
repeat
if ~condition
flag = false; Aksi
end Next-Element
end
% secara spesifik tidak ada until (kondisi-berhenti)
command repeat-until pada
Terminasi
matlab
01/26/2021 WD/PTI-B 13
repeat-until
• Aksi minimal akan dilakukan satu kali karena pada
waktu eksekusi pengulangan yang pertama tidak
dilakukan test terhadap kondisi-berhenti
• Aksi akan dihentikan jika kondisi-berhenti tercapai
(berharga true), akan diulang jika kondisi-berhenti
tidak dipenuhi
• Pengulangan berpotensi mengalami “kebocoran”, jika
ada kemungkinan bahwa seharusnya Aksi tidak
pernah boleh dilakukan untuk kasus tertentu
output(i)
sum sum + i Next-elmt
i i + 1 Kondisi-
until (i > N) Berhenti
output(sum)
Terminasi
01/26/2021 KU1072/Pengenalan Teknologi Informasi B
Studi Kasus: repeat-until (Matlab)
%Program JumlahAngka;
%{ Menghitung 1+2+3+...+N; Asumsi N > 0 }
%{ ALGORITMA }
clc
clear all
N=input ('N='); %{ Inisialisasi-aksi }
sum = 0; %{ Inisialisasi-aksi }
i = 1; %{ First-element }
flag = true;
while flag
disp (i); %{ Aksi }
sum = sum + i; %{ Aksi }
i = i + 1; %{ Next-Element }
if (i > N)
flag = false;
end
end
sum
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 16
2. Pengulangan Berdasarkan Kondisi
Pengulangan (while-do)
Matlab Notasi Algoritmik
%Inisialisasi-aksi Inisialisasi-aksi
%First-Element
First-Element
while (kondisi- while (kondisi-mengulang) do
mengulang)
%Aksi
%Next-Element Aksi
end Next-Element
% Kondisi-
pengulangan=false
{ Kondisi-pengulangan=false }
%Terminasi
Terminasi
01/26/2021 WD/PTI-B 17
while-do
• Aksi akan dilakukan selama kondisi-mengulang
masih dipenuhi (berharga true)
• Pengulangan ini berpotensi untuk menimbulkan
Aksi “kosong” (tidak pernah melakukan apa-apa)
karena pada test yang pertama, kondisi-
mengulang tidak dipenuhi (berharga false) sehingga
langsung ke luar loop
i 1 Kondisi-
mengulang
while (i <= N)
output(i)
sum sum + i Aksi
i i + 1
{ i > N }
Next-elmt
output(sum)
Terminasi
01/26/2021 KU1072/Pengenalan Teknologi Informasi B
Studi Kasus: While-Do Matlab
%Program JumlahAngka;
%{ Menghitung 1+2+3+...+N; N > 0 }
clc
clear all
%{ ALGORITMA }
N=input('N=');
sum=0;
i=1;
Matlab
%Inisialisasi-aksi
end;
Aksi
%Terminasi { pencacah:=pencacah+1,
otomatis oleh compiler }
Terminasi
01/26/2021 WD/PTI-B 21
traversal/for
• pencacah harus suatu variable dengan type yang
terdefinisi suksesor dan predesesornya, misalnya
integer
• Aksi akan dilakukan dengan memperhitungkan
harga-harga dari pencacah yang di-”jelajahi” dari
hmin ke hmaks
• Harga pencacah di-increment
(pencacah=pencacah+1) secara otomatis, setiap kali
Aksi selesai dilaksanakan. Pemrogram tidak perlu
mendefinisikannya secara eksplisit.
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 22
Pengulangan dengan pencacah mengecil
Nilai pencacah
mengecil dari
Matlab hmaks ke hmin
%Inisialisasi-aksi
for pencacah= hmin:hmaks
%Aksi Notasi Algoritmik
%{ pencacah:=pencacah-1,
%otomatis oleh compiler Inisialisasi-aksi
}
end;
%Terminasi pencacah traversal [hmaks..hmin]
Aksi
{ pencacah:=pencacah-1,
otomatis oleh compiler }
Terminasi
01/26/2021 WD/PTI-B 23
Studi Kasus: Traversal
(Algoritmik) Program JumlahAngka
{ Menghitung 1+2+3+...+N;
Asumsi: N > 0 }
Inisalisasi
ALGORITMA
input(N); sum 0
%Program JumlahAngka;
%{ Menghitung 1+2+3+...+N; N > 0 }
pencacah: i
clc
Inisialisasi -pencacah: i = 1
clear all kondisi pengulangan: i <= N
%{ ALGORITMA } Next-pencacah : i := i + 1
N=input('N='); %{ Inisialisasi-aksi }
sum=0; %{ Inisialisasi-aksi }
for i= 1:N %{ First-element, Next-Element }
disp(i); %{ Aksi }
sum = sum + i; %{ Aksi }
end;
disp(sum); %{ Terminasi }
flag = true;
while flag
disp('Hello') Tak
if (false)
flag = false;
terhingga
end
end
flag = true;
while flag
disp('Hello')
if (true) 1 kali
flag = false;
end
end
01/26/2021 MLK/KU1071 27
Soal 1b: Berapa Hello di layar?
i= 1;
while (i < 5)
4 kali
disp('hello');
i = i + 1;
end
i traversal [1..10]
input(X) { aksi }
sum sum + X { aksi }
output(sum) { terminasi }
for i= 1:10
X=input('X='); %{ Aksi }
sum = sum + X; %{ Aksi }
end;
sum %{ Terminasi }
i i + 1 { next-elmt }
until (i > 10) { kondisi-berhenti }
output(sum) { terminasi }
i traversal [1..N]
input(X); { Aksi }
sum sum + X; { Aksi }
ALGORITMA
sum 0; count 0 { Inisialisasi }
input(X) { First-Elmt }
{ Terminasi }
ALGORITMA
countgenap 0; countganjil 0
countpos 0; countneg 0
input(X) { First-Elmt }
while (X -999) do
{ Count genap/ganjil }
{ Count positif/negatif }
input(X) { Next-Elmt }
{ X = -999 }
{ Terminasi }
ALGORITMA
countgenap 0; countganjil 0
countpos 0; countneg 0
input(X) { First-Elmt }
while (X -999) do
{ Count genap/ganjil }
if (X mod 2 == 0) then
countgenap countgenap + 1
else { X mod 2 0 }
countganjil countganjil + 1
...
input(X) { Next-elmt }
{ X = -999 }
{ Terminasi }
output(countgenap)
output(countganjil)
output(countpos)
output(countneg)