Anda di halaman 1dari 49

Pengulangan/Looping

(dalam Matlab+
Notasi Algoritmik)

Tim Penyusun Materi PTI-B

KU1072/Pengenalan Teknologi Informasi B


Tahap Tahun Pertama Bersama
Institut Teknologi Bandung
Tujuan
• Mahasiswa memahami jenis-jenis pengulangan dan
penggunaannya serta memahami elemen-elemen
dalam pengulangan.
• Mahasiswa dapat menggunakan notasi pengulangan
yang sesuai dengan benar
• Mahasiswa dapat memanfaatkan jenis-jenis
pengulangan dengan tepat dalam menyelesaikan
persoalan sederhana yang diberikan.

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 cukup?

Jumlah kentang = 4?
Jumlah kentang = 400?
Jumlah kentang = jumlah orang yang hadir?

Jumlah kentang
terkupas cukup

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 4


Menulis 1 dan 2
• Tuliskan program yang menuliskan angka 1 dan 2 dan
selanjutnya 1+2 ke layar
• Contoh keluaran:
%ALGORITMA
1
clc
2
clear all
3
disp (1);
disp (2);
disp (1+2);

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 5


Menulis 1 s.d. 3
• Tuliskan program yang menuliskan angka 1 s.d. 3 dan
selanjutnya 1+2+3 ke layar
• Contoh keluaran:
%ALGORITMA
1 clc
2 clear all
3 disp (1);
6 disp (2);
disp (3);
disp (1+2+3);

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 6


Menulis 1 s.d. 10
• Tuliskan program yang menuliskan angka 1 s.d. 10
dan selanjutnya 1+2+3+…+10 ke layar
• Contoh keluaran: %ALGORITMA
clc
1 clear all
2 disp (1);
3 disp (2);
4 disp (3);
5 disp (1+2+3);
6 % { lanjutkan sendiri!! }
7 disp (10);
8 disp (1+2+3+4+5+6+7+8+9+10);
9
10
55
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 7
Menulis 1 s.d. 100
• Tuliskan program yang menuliskan angka 1 s.d. 100
dan selanjutnya 1+2+3+…+100 ke layar
• Contoh keluaran: %ALGORITMA
clc
1 clear all
2 disp (1);
3 disp (2);
4 disp (3);
5 disp (1+2+3);
6 % { lanjutkan sendiri!! }
7 disp (100);
8 disp
9 (1+2+3+4+5+6+7+8+9+10+11...+100);
10
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 8
Bagaimana kalau…
Anda diminta menulis dan menjumlahkan…

1 s.d. 1000 ???


1 s.d. 10000 ???
1 s.d. 1000000 ???
….

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 9


Pengulangan: Latar Belakang
• Melakukan suatu instruksi,
bahkan aksi, secara
berulang-ulang
– Komputer: memiliki
performansi yang sama
– Manusia: punya
kecenderungan untuk
melakukan kesalahan (karena
letih atau bosan)

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

* Dalam MATLAB tidak ada sintaks repeat-until, namun bisa


menggunakan kombinasi While – If

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)

Matlab Notasi Algoritmik


flag = true; Inisialisasi-Aksi
while flag
   % do stuff First-Element

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

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 14


Inisialisasi
Studi Kasus: Repeat-
Program JumlahAngka
{ Menghitung 1+2+3+...+N;
Until (Algoritmik)
Asumsi: N > 0 }
First-Elmt
ALGORITMA
input(N); sum  0
Aksi
i  1
repeat

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

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


Program JumlahAngka
Studi Kasus: { Menghitung 1+2+3+...+N; Inisialisasi
Asumsi: N > 0 }
While-do
(Algoritmik) ALGORITMA
input(N); sum  0
First-Elmt

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;

while (i <= N);


disp(i) ; %{ Aksi }
sum = sum + i; %{ Aksi }
i = i + 1; %{ Next-Element }
end
sum %{ Terminasi }
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 20
3. Pengulangan Berdasarkan Pencacah (traversal)

Matlab
%Inisialisasi-aksi

for pencacah =hmin : hmaks Notasi Algoritmik


%Aksi
%{ pencacah:=pencacah+1, Inisialisasi-aksi
% otomatis oleh
compiler } pencacah traversal [hmin..hmaks]

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

i traversal [1..N] Aksi


pencacah: i output(i)
Inisialisasi -pencacah: i = 1 sum  sum + i
kondisi pengulangan: i <= N
Next-pencacah : i := i + 1 output(sum)
Terminasi

01/26/2021 KU1072/Pengenalan Teknologi Informasi B


Studi Kasus: for Matlab

%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 }

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 25


Latihan Soal

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 26


Soal 1a: Berapa Hello di layar?

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

while (false) 0 – tidak ada


disp('hello'); Hello yang
end; tertulis

while (true) Tidak


disp ('Hello'); terhingga
end

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 28


Soal-2
• Buatlah program yang menerima masukan 10 buah
bilangan integer (dari keyboard) dan menuliskan ke
layar jumlah total ke-10 integer tersebut.
• Contoh: Masukan Tampilan di Layar
2 18
1
0
-9
7
13
2
2
1
-1

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 29


Program Jumlah10Angka
Alt. Solusi Soal-2: { Menerima masukan 10 buah
integer dan menjumlahkan totalnya
Menggunakan for }
(N. Algoritmik) ALGORITMA
sum  0 { inisialisasi }

i traversal [1..10]
input(X) { aksi }
sum  sum + X { aksi }

output(sum) { terminasi }

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 30


Alt. Solusi Soal-2:
Menggunakan For (Matlab)
%Program Jumlah10Angka;
%{ Menerima masukan 10 buah integer dan menjumlahkan
totalnya }
%{ ALGORITMA }
clc
clear all
sum = 0; %{ Inisialisasi-aksi }

for i= 1:10
X=input('X='); %{ Aksi }
sum = sum + X; %{ Aksi }
end;

sum %{ Terminasi }

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 31


Alt. Solusi Soal-2: Program Jumlah10Angka
Menggunakan { Menerima masukan 10 buah integer dan
menjumlahkan totalnya }
repeat-until ALGORITMA
sum  0 { inisalisasi }
(N. Algoritmik)
i  1 { first-elmt }
repeat
input(X) { aksi }
sum  sum + X { aksi }

i  i + 1 { next-elmt }
until (i > 10) { kondisi-berhenti }

output(sum) { terminasi }

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 32


Alt. Solusi Soal 2:
Menggunakan repeat-until (Matlab)
%Program Jumlah10Angka;
%{ Menerima masukan 10 buah integer dan menjumlahkan
totalnya }
%{ ALGORITMA }
sum = 0; %{ Inisialisasi-aksi }
i = 1; %{ First-Element }
flag = true;
while flag
X=input('X='); %{ Aksi }
sum = sum + X; %{ Aksi }
i = i + 1; %{ Next-Element }
if (i > 10)%{ Kondisi-Berhenti }
flag = false;
end
end
sum%{ Terminasi }
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 33
Soal-3 (1)
• Buatlah program yang membaca ada berapa banyak
mahasiswa di kelas, misalnya N (Asumsi: N > 0, tidak
perlu diperiksa)
• Selanjutnya, bacalah N buah bilangan integer yang
merepresentasikan nilai tugas KU1072 (Asumsi: nilai
tugas adalah 0-100, tidak perlu diperiksa)
• Tuliskan ke layar berapa nilai rata-rata kelas.

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 34


Soal-3 (2) No Input Output
1 Jumlah mhs = 5 Rata-rata = 48.00
• Contoh Nilai tugas =
100
input/output 20
10
35
75
2 Jumlah mhs = 4 Rata-rata = 42.25
Nilai tugas =
90
45
34
0

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 35


Alt. Solusi Soal-3:
Program RataRataNilaiTugas
Menggunakan { Menerima N nilai tugas KU1072 dan
traversal menghitung rata-ratanya }
(N. Algoritmik) ALGORITMA
input(N); { Inisialisasi }
sum := 0; { Inisialisasi }

i traversal [1..N]
input(X); { Aksi }
sum  sum + X; { Aksi }

rata  sum/N; { Terminasi }


output (rata); { Terminasi }

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 36


Alt. Solusi Soal-3:
Menggunakan For (Matlab)
%Program RataRataNilaiTugas;
%{ Menerima N nilai tugas KU1072 dan menghitung rata-
ratanya }
%{ ALGORITMA }
clear all
clc
disp('Jumlah mhs = '); N=input('N='); %{ Inisialisasi
}
sum = 0; %{ Inisialisasi }
disp ('Nilai tugas');
for i = 1 : N;
X=input('X='); %{ Aksi }
sum = sum + X; %{ Aksi }
end
rata = sum/N; %{ Terminasi }
disp (['Rata-rata = ','',num2str(rata)]); %{ Termina}
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 37
Soal-4 (1)
• Buatlah program yang membaca sejumlah bilangan
integer dari keyboard sampai pengguna memasukkan
angka -999 (angka -999 tidak termasuk bilangan yang
diolah).
• Tuliskan berapa banyak bilangan yang dimasukkan,
nilai total, dan rata-rata semua bilangan
• Jika dari masukan pertama sudah menuliskan -999,
maka tuliskan pesan “Tidak ada data yang diolah”

• Petunjuk: Gunakan pengulangan while-do


01/26/2021 KU1072/Pengenalan Teknologi Informasi B 38
Soal-4 (2)
• Contoh input/output
No Input Output
1 -1 Banyak bilangan = 5
12 Jumlah total = 17
-6 Rata-rata = 3.40
10
2
-999
2 -999 Tidak ada data yang diolah

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 39


Alt. Solusi Soal-4
Sketsa
Program RataBilangan
{ Menerima masukan sejumlah bilangan integer
sampai pengguna memasukkan -999 dan
menampilkan nilai rata-ratanya }

ALGORITMA
sum  0; count  0 { Inisialisasi }

input(X) { First-Elmt }

{ Proses pengulangan dengan while-do }

{ Terminasi }

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 40


Alt. Solusi Soal-4 Program RataBilangan
{ Menerima masukan sejumlah bilangan integer
(N. Algoritmik sampai pengguna memasukkan -999 dan
menampilkan nilai rata-rata }
Detil) ALGORITMA
sum  0; count  0 { Inisialisasi }
input(X) { First-Elmt }
{ Proses pengulangan dengan while-do }
while (X != -999) do
sum  sum + X
count  count + 1
input(X)
{ X == -999 }
{ Terminasi }
if (count > 0) then
rata  sum/count
output(count,sum,rata)
else { count = 0 }
output(‘Tidak ada data yang diolah’)

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 41


%Program RataBilangan;
%{ Menerima masukan sejumlah bilangan integer sampai pengguna
memasukkan -999 dan dan menampilkan banyak bilangan, total, dan rata-
ratanya }
%{ ALGORITMA }
sum= 0; count = 0; %{ Inisialisasi }
X=input ('X='); %{ First-Element }
while (X ~= -999) %{ Kondisi-mengulang }
sum= sum + X;
count= count + 1;
X=input ('X='); %{ Next-Element }
end %{ X = -999 }
%{ Terminasi } Alt. Solusi Soal-4
if (count > 0) (Matlab
disp (['Banyak bilangan = ', num2str(count)]);
disp (['Jumlah total = ', num2str(sum)]);
rata= sum/count;
disp (['Rata-rata = ', num2str(rata)]);
else
%{ count = 0, artinya tidak ada bilangan yang dientri }
disp ('Tidak ada data yang diolah');
end
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 42
Soal-5 (1)
• Buatlah program untuk membaca sekumpulan
bilangan bulat (integer) yang diakhiri -999 (-999 tidak
termasuk), dan mencetak banyaknya bilangan genap,
ganjil, positif, dan negatif.
• Bilangan 0 adalah bilangan genap, tetapi tidak positif
atau pun negatif.
• Petunjuk: Gunakan while-do

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 43


Soal-5 (2)
No Input Output
• Contoh
1 -1 Bilangan genap ada 5
input/output 7 Bilangan ganjil ada 2
12 Bilangan positif ada 4
-6 Bilangan negatif ada 2
10
2
0
-999
2 -999 Bilangan genap ada 0
Bilangan ganjil ada 0
Bilangan positif ada 0
Bilangan negatif ada 0

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 44


Alt. Solusi Soal-5 Program CountBilangan
Sketsa { Menerima masukan sejumlah bilangan integer
sampai pengguna memasukkan -999 dan dan
menampilkan banyak bilangan genap, ganjil,
positif, negatif }

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 }

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 45


Alt. Solusi Soal-5 Program CountBilangan
Notasi Algoritmik { Menerima masukan sejumlah bilangan integer
sampai pengguna memasukkan -999 dan dan
Detil menampilkan banyak bilangan genap, ganjil,
(part-1) positif, negatif }

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
...

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 46


ALGORITMA
Alt. Solusi Soal-5 ...
Notasi Algoritmik { Count positif/negatif }
if (X > 0) then
Detil countpos  countpos + 1
(part-1) else if (X < 0) then
countneg  countneg + 1
{ X = 0, tidak melakukan apa-apa }

input(X) { Next-elmt }
{ X = -999 }
{ Terminasi }
output(countgenap)
output(countganjil)
output(countpos)
output(countneg)

01/26/2021 KU1072/Pengenalan Teknologi Informasi B 47


%Program CountBilangan;
%{ Menerima masukan sejumlah bilangan integer sampai pengguna memasukkan -999
dan dan
%menampilkan banyak bilangan genap, ganjil, positif, negatif }
%{ ALGORITMA }
countgenap=0; countganjil=0; countpos=0; countneg=0;
X=input ('X='); %{ First-Element }
while (X ~= -999)
if (mod(X,2)==0)
countgenap = countgenap + 1;
else %{ mod(X,2) ~= 0 }
countganjil = countganjil + 1;
Alt. Solusi Soal-5
end
if (X > 0)
(Matlab)
countpos = countpos + 1;
else if (X < 0)
countneg = countneg + 1;
end %{ X = 0, tidak melakukan apa-apa }
end
X=input ('X='); %{ Next-Element }
end %{ X = -999 }
disp (['Bilangan genap ada ', num2str(countgenap)]);
disp (['Bilangan ganjil ada ', num2str(countganjil)]);
disp (['Bilangan positif ada ', num2str(countpos)]);
disp (['Bilangan negatif ada ', num2str(countneg)]);
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 48
Soal-6: Lagu Anak Ayam
• Masih ingatkah dengan lagu Anak Ayam??
Anak ayam turunlah 5 Anak ayam turunlah N
Mati satu tinggallah 4 Mati satu tinggallah N-1
Mati satu tinggallah 3 generalisasi Mati satu tinggallah N-2
Mati satu tinggallah 2 ….
Mati satu tinggallah 1 Mati satu tinggallah 1
Mati satu tinggal induknya Mati satu tinggal induknya

• Buatlah 3 versi program yang menerima masukan sebuah


integer positif > 0, misalnya N, dan menuliskan lirik lagu
Anak Ayam dengan memanfaatkan pengulangan:
– Repeat-until
– While-do
– For
01/26/2021 KU1072/Pengenalan Teknologi Informasi B 49

Anda mungkin juga menyukai