Anda di halaman 1dari 38

Pengulangan

Sub-Capaian Pembelajaran MK

“Mahasiswa mampu menerapkan algoritma


pengulangan ke dalam pseudocode dan
program.”
Sub-Capaian Pembelajaran MK

Mid Test

We Are Here !!! 


Agenda
• Pendahuluan
• Struktur Pengulangan
• Contoh kasus konstruksi FOR
• Contoh kasus konstruksi WHILE
• Contoh kasus konstruksi REPEAT
• FOR VS WHILE
• WHILE VS REPEAT
• QUIZ
Pendahuluan
• Pengulangan digunakan untuk menjalankan satu
atau beberapa pernyataan/aksi/instruksi secara
berulang kali.
• Dengan pengulangan, kita hanya perlu menuliskan
pernyataan tersebut satu kali saja, tapi akan
dilakukan oleh program sebanyak yang
diperintahkan
Struktur Pengulangan
Struktur instruksi perulangan pada dasarnya terdiri atas:

• Kondisi perulangan; suatu kondisi yang harus


dipenuhi agar perulangan dapat terjadi.

• Badan (body) perulangan; deretan instruksi yang


akan diulang-ulang pelaksanaannya.

• Pencacah (counter) perulangan; suatu variabel yang


nilainya harus berubah agar perulangan dapat
terjadi dan pada akhirnya membatasi jumlah
perulangan yang dapat dilaksanakan
Tiga Konstruksi Dasar – Jenis Pengulangan

1. For – to

2. While – do

3. Repeat - until
Konstruksi For
• Konstruksi FOR digunakan untuk melakukan
pengulangan sejumlah kali yang telah
dispesifikasikan sebelumnya. Jumlah pengulangan
diketahui atau dapat ditentukan sebelum ekseskusi
program.
• Untuk mencacah beberapa kali pengulangan
dilakukan, kita memerlukan sebuah peubah
pencacah (counter). Peubah ini nilainya selalu
bertambah satu secara otomatis
Pengulangan: FOR

Bentuk umum For:


For I = 1 to 4

For <nilai awal> to <nilai akhir>


do Instruksi

…………….
instruksi-instruksi Next I

……………..
End for
Contoh Kasus

“Tinjau kembali barisan yang diberikan pada


pertemuan sebelumnya. Misalkan kita ingin
mencetak barisan 1,2, …, N di layar, dengan N
adalah nilai yang sudah dispesifikasikan
sebelumnya (dibaca terlebih dahulu)”
Contoh Kasus
PROGRAM CetakBarisan
{Mencetak 1,2,…,N; Nilai N ditentukan terlebih
dahulu}

DEKLARASI
i: integer
N: integer

ALGORITMA
read(N)
for i1 to N do
write(i)
end for
Contoh Kasus (2)

Kita ingin menghitung nilai rata-rata dari N buah


data bilangan bulat yang dibaca dari papan ketik
(asumsikan N>0). Nilai rata-rata adalah jumlah
seluruh data dibagi dengan banyaknya data.
Misalkan jika N=5 dan data bilangan yang dibaca
berturut-turut adalah 12, 10, 6, 2 , 4, maka nilai
rata-ratanya adalah (12 + 10 + 6 + 2 + 4)/5 = 34/5 =
6.8
Contoh Kasus (2)
PROGRAM HitungRataRata
{Menghitung rata-rata N buah data bilangan bulat yang
dibaca dari papan ketik. Asumsikan N>0}
DEKLARASI
N,x,i,sum:integer
rerata: real
ALGORITMA
read(N)
sum0
for i1 to N do
read(x)
sumsum+x
end for
reratasum/N
write(rerata)
Struktur For Menurun
Adakalanya kita melakukan pengulangan dengan cacah yang menurun, yaitu
dari nilai cacah yang besar ke nilai cacah yang kecil. Untuk memfasilitasi hal
tersebut, maka kita mendefinisikan struktur FOR menurun.

For pencacah  <nilai_akhir> downto <nilai_awal> do


aksi
End for
Contoh Kasus

Sebuah roket diluncurkan dengan hitungan mundur


(countdown), mulai dari 100, 99, 98, … , 1, 0.
Buatlah algoritma dalam bentuk pseudo-code nya.
Pembahasan
PROGRAM PeluncuranRoket
{Hitung mundur peluncuran roket}

DEKLARASI
i: integer
ALGORITMA
for i100 downto 0 do
write(i)
end for
write(‘Go!’)
Contoh Soal 3

Tulislah algoritma untuk menuliskan teks lagu anak ayam turun N


dengan N adalah jumlah anak ayam semula (nilai N positif dan dibaca
terlebih dahulu)

Contoh: N=5, maka lirik lagu anak ayam turun 5 tercetak seperti baris
di bawah ini:

Anak ayam turun 5, mati satu tinggal 4


Anak ayam turun 4, mati satu tinggal 3
Anak ayam turun 3, mati satu tinggal 2
Anak ayam turun 2, mati satu tinggal 1
Anak ayam turun 1, mati satu tinggal induknya
Pembahasan
PROGRAM LaguAnakAyam
{Mencetak lagu “anak ayam”}

DEKLARASI
N,i: integer
ALGORITMA
read(N)
write(‘Anak Ayam Turun’, N)
for iN downto 2 do
write(‘Anak ayam turun’, i, ‘mati satu tinggal’, i-1)
end for

write(‘’Anak ayam turun 1, mati satu tinggal induknya.’)


Konstruksi WHILE
Bentuk umum konstruksi WHILE adalah:
while kondisi do
aksi
end while

Penjelasan:
Sebelum memasuki badan pengulangan, kondisi diperiksa terlebih
dahulu apakah masih memenuhi (benar) atau sudah tidak memenhui
(salah). Aksi dikerjakan berulangkali selama kondisi masih benar (true).
Jika kondisi salah (false) maka badan pengulangan tidak akan dimasuki,
yang berarti pengulangan selesai.
Contoh Kasus Cetak Deret
PROGRAM CetakBarisan
{Mencetak 1,2,…,N; Nilai N ditentukan terlebih
dahulu}

DEKLARASI
i: integer
N: integer

ALGORITMA
read(N)
i1
while i≤N do
write(i)
ii+1
end while
Contoh Kasus Mencari Rata-Rata
PROGRAM HitungRataRata
{Menghitung rata-rata N buah data bilangan bulat yang dibaca dari papan
ketik. Asumsikan N>0}
DEKLARASI
N,x,i,sum:integer
rerata: real
ALGORITMA
read(N)
sum0
i1
while i≤N do
read(x)
sumsum+x
i=i+1
end while

reratasum/N
write(rerata)
Contoh Kasus Peluncuran Roket
PROGRAM PeluncuranRoket
{Hitung mundur peluncuran roket}

DEKLARASI
i: integer
ALGORITMA
i100
while i≥0 do
write(i)
ii-1
end while

write(‘Go!’)
Kapan Sebaiknya Menggunakan WHILE?
• Sekilas antara FOR dan WHILE sama saja kegunaannya.Namun, WHILE
memiliki keunggulan yang tidak dimiliki oleh FOR.
• Pada kasus-kasus dimana jumlah pengulangan diketahui di awal
program, WHILE dapat digunakan sebaik penggunaan FOR.
• Namun, untuk proses yang jumlah pengulangannya tidak dapat
ditentukan di awal, hanya struktur WHILE yang dapat kita gunakan,
sebab kondisi pengulangan diperiksa di awal pengulangan. Jadi
meskipun kita tidak mengetahui kapan persisnya WHILE ini berhenti,
tetapi kita menjamin bahwa jika kondisi bernilai salah, pasti
pengulangan akan berhenti.
Contoh
• Misalkan jika nilai-nilai ujian yang diinputkan adalah
80, 50, 75, -1
Maka rata-rata nilai ujian adalah (80 + 50 +75) / 3 = 68,33

• Jika nilai ujian yang diinputkan adalah


80,-1
Maka hanya ada satu nilai ujian yaitu 80, sehingga rata-rata nilai ujian
adalah 80/1

• Jika data yang diinputkan ternyata -1,


Maka, tidak ada nilai-nilai ujian yang dimasukkan sehingga rata-
ratanya tidak dapat dihitung.

Untuk masalah ini, jelas kita tidak dapat menggunakan FOR karena jumlah
pengulangan tidak diketahui. WHILE dapat digunakan untuk pengulangan
semacam ini karena proses pembacaan data dilakukan selagi data yang
dibaca tidak sama dengan -1.
Contoh
PROGRAM HitungRerata
{Menghitung rata-rata ujian siswa yang dibaca dari inputan user selama data yang
dibaca tidak sama dengan -1}
DEKLARASI
i,x : integer
sum,rerata : real
ALGORITMA
sum0
i0
read(x)
while x≠-1 do
ii+1
sumsum+x
read(x)
end while
if i≠0 then
reratasum/i
write(rerata)
else
write(‘tidak ada nilai ujian yang dimasukkan’)
end if
Konstruksi REPEAT
Bentuk umum konstruksi REPEAT adalah:
repeat
aksi
until kondisi

Penjelasan:
Konstruksi REPEAT mendasarkan pengulangan pada kondisi yang
bernilai Boolean. Pemeriksaan kondisi dilakukan pada akhir setiap
pengulangan. Aksi dikerjakan berulang-ulang sampai kondisi terpenuhi
(bernilai true).
Contoh Kasus Cetak Deret
PROGRAM CetakBarisan
{Mencetak 1,2,…,N; Nilai N ditentukan terlebih
dahulu}

DEKLARASI
i: integer
N: integer

ALGORITMA
read(N)
i1
repeat
write(i)
ii+1
until i>N
Contoh Kasus Mencari Rata-Rata
PROGRAM HitungRataRata
{Menghitung rata-rata N buah data bilangan bulat yang dibaca dari papan
ketik. Asumsikan N>0}
DEKLARASI
N,x,i,sum:integer
rerata: real
ALGORITMA
read(N)
sum0
i1
repeat
read(x)
sumsum+x
i=i+1
until i>N

reratasum/N
write(rerata)
Contoh Kasus Peluncuran Roket
PROGRAM PeluncuranRoket
{Hitung mundur peluncuran roket}

DEKLARASI
i: integer
ALGORITMA
i100
repeat
write(i)
ii-1
until i<0

write(‘Go!’)
WHILE atau REPEAT
• Pada contoh-contoh sebelumnya memperlihatkan bahwa konstruksi WHILE dan
REPEAT ekivalen. Kita dapat menggunakan WHILE maupun REPEAT. Keduanya
benar untuk persoalan tertentu.
• Tetapi, pada beberapa persoalan, pemilihan WHILE atau REPEAT bergantung
pada natural dari persoalan itu sendiri.

• Untuk mengetahui struktur mana yang lebih tepat, kita harus mengetahui
perbedaan mendasar di antara keduanya. Perbedaannya adalah pada
konstruksi REPEAT, kondisi pengulangan diperiksa pada akhir dulu, barulah
pengetesan kondisi dilakukan. Konsekuensinya, badan pengulangan
dilaksanakan paling sedikit satu kali.
• Sebaliknya pada konstruksi WHILE, kondisi pengulangan diperiksa di awal
pengulangan. Konsekuensinya badan pengulangan mungkin tidak akan pernah
dilaksanakan bila kondisi pengulangan pertama kali bernilai false.
WHILE atau REPEAT
• Gunakan konstruksi WHILE pada kasus yang mengharuskan terlebih dahulu
pemeriksaan kondisi objek sebelum objek tersebut dimanipulasi
• Gunakan konstruksi REPEAT pada kasus yang terlebih dahulu memanipulasi
objek, baru memeriksa kondisi objek tersebut.

Contoh penggunaan WHILE benar, tetapi REPEAT salah:


Diinputkan sejumlah nilai bilangan bulat (x) dari papan ketik, namun banyaknya
data tidak diketahui. Tanda akhir pembacaan data adalah bila nilai x yang dibaca
adalah -1. Anda diminta membuat algoritma yang menghitung jumlah seluruh nilai
pecahannya (1/x). Contoh jika nilai x yang dibaca berturut-turut adalah 3,5,8, dan -
1, maka jumlah seluruh nilai pecahannya adalah: 1/3 + 1/5 + 1/8 = 0.65833
Pembahasan WHILE benar
PROGRAM PenjumlahanDeretPecahan
{program untuk menghitung penjumlahan deret pecahan}

DEKLARASI
x,S: integer
ALGORITMA
S0
read(x)
while x≠-1 do
SS+1/x
read(x)
end while
Pembahasan REPEAT salah
PROGRAM PenjumlahanDeretPecahan
{Hitung mundur peluncuran roket}

DEKLARASI
x,S: integer
ALGORITMA
S0
read(x)
repeat
SS+1/x
read(x)
until x=-1

write(S)
Contoh Latihan Pengulangan

Tuliskan algoritma dalam bentuk pseudo-code untuk


mencetak gambar segitiga bintang sebanyak N baris, setiap
baris ke-i berisi i buah bintang. Nilai N dibaca dari papan
ketik!

Contoh masukan: N = 5
Keluaran:
*
**
***
****
*****
Penyelesaian

*
**
***
****
*****

Baris ke-1 terdiri dari 1 bintang, baris ke-2 dua bintang, baris ke-3 tiga
bintang, dan seterusnya. Secara umum, baris ke-i terdiri dari i bintang.
Pseudo-Code Bintang
PROGRAM CetakSegitigaBintang
{Program untuk mencetak segitiga bintang dengan
tinggi segitiga = N}
DEKLARASI
N,i,j : integer

ALGORITMA
read(N)
for i1 to N do
for j1 to i do
write(‘*’)
end for
end for
Tugas
SOAL:

1. Definisikan sebuah tipe terstruktur untuk menyatakan data-data nilai mata kuliah yang
diambil setiap mahasiswa. Data-data yang disimpan di dalam struktur rekaman (record)
adalah sebagai berikut:
a) NIM (Nomor Induk Mahasiswa)
b) NamaMhs (nama mahasiwa)
c) Mata kuliah yang diambil mahasiswa tersebut, yang terdiri atas:
- Kode mata kuliah
- Nama mata kuliah
- Nilai mata kuliah
2. Indeks nilai mahasiswa ditentukan berdasarkan nilai ujian yang diraihnya. Ketentuan
pemberian nilai indeks adalah sebagai berikut:
Jika nilai ujian ≥ 80, maka nilai = A
Jika 70 ≤ nilai ujian < 80, maka indeks nilai = B
Jika 55 ≤ nilai ujian < 70, maka indeks nilai = C
Jika 40 ≤ nilai ujian < 55, maka indeks nilai = D
Jika nilai ujian < 40, maka indeks nilai = E
Buatlah algoritma (pseudo-code) yang membaca nama mahasiswa dan nilai
ujiannya, lalu menentukan indeks nilainya, kemudian mencetak nama mahasiswa,
nilai ujian, dan indeksnya!

Anda mungkin juga menyukai