Pertemuan-VI Pengulangan
Pertemuan-VI Pengulangan
Sub-Capaian Pembelajaran MK
Mid Test
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
…………….
instruksi-instruksi Next I
……………..
End for
Contoh Kasus
DEKLARASI
i: integer
N: integer
ALGORITMA
read(N)
for i1 to N do
write(i)
end for
Contoh Kasus (2)
DEKLARASI
i: integer
ALGORITMA
for i100 downto 0 do
write(i)
end for
write(‘Go!’)
Contoh Soal 3
Contoh: N=5, maka lirik lagu anak ayam turun 5 tercetak seperti baris
di bawah ini:
DEKLARASI
N,i: integer
ALGORITMA
read(N)
write(‘Anak Ayam Turun’, N)
for iN downto 2 do
write(‘Anak ayam turun’, i, ‘mati satu tinggal’, i-1)
end for
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)
i1
while i≤N do
write(i)
ii+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)
sum0
i1
while i≤N do
read(x)
sumsum+x
i=i+1
end while
reratasum/N
write(rerata)
Contoh Kasus Peluncuran Roket
PROGRAM PeluncuranRoket
{Hitung mundur peluncuran roket}
DEKLARASI
i: integer
ALGORITMA
i100
while i≥0 do
write(i)
ii-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
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
sum0
i0
read(x)
while x≠-1 do
ii+1
sumsum+x
read(x)
end while
if i≠0 then
reratasum/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)
i1
repeat
write(i)
ii+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)
sum0
i1
repeat
read(x)
sumsum+x
i=i+1
until i>N
reratasum/N
write(rerata)
Contoh Kasus Peluncuran Roket
PROGRAM PeluncuranRoket
{Hitung mundur peluncuran roket}
DEKLARASI
i: integer
ALGORITMA
i100
repeat
write(i)
ii-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.
DEKLARASI
x,S: integer
ALGORITMA
S0
read(x)
while x≠-1 do
SS+1/x
read(x)
end while
Pembahasan REPEAT salah
PROGRAM PenjumlahanDeretPecahan
{Hitung mundur peluncuran roket}
DEKLARASI
x,S: integer
ALGORITMA
S0
read(x)
repeat
SS+1/x
read(x)
until x=-1
write(S)
Contoh Latihan Pengulangan
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 i1 to N do
for j1 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!