Pengulangan ALGORITMA DAN PEMROGRAMAN [IS6110102] Dosen: Yudha Saintika, S.T., M.T.I
Pengulangan
ALGORITMA DAN PEMROGRAMAN [IS6110102]
Dosen: Yudha Saintika, S.T., M.T.I
Sub-Capaian Pembelajaran MK
“Mahasiswa mampu menerapkan algoritmapengulangan ke dalam pseudocode dan
program.”
Sub-Capaian Pembelajaran MK
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 satuatau beberapa pernyataan sebanyak beberapa kali.
•Dengan pengulangan, kita hanya perlu menuliskanpernyataan tersebut satu kali saja, tapi akandilakukan oleh program sebanyak yangdiperintahkan
Struktur Pengulangan
Struktur instruksi perulangan pada dasarnya terdiri atas:
• Kondisi perulangan; suatu kondisi yang harusdipenuhi agar perulangan dapat terjadi.
• Badan (body) perulangan; deretan instruksi yangakan diulang-ulang pelaksanaannya.
• Pencacah (counter) perulangan; suatu variabel yangnilainya harus berubah agar perulangan dapatterjadi dan pada akhirnya membatasi jumlahperulangan yang dapat dilaksanakan
Tiga Konstruksi Dasar – Jenis Pengulangan
1. For – to
2. While – Do
3. Repeat - Until
Konstruksi For
•Konstruksi FOR digunakan untuk melakukanpengulangan sejumlah kali yang telahdispesifikasikan sebelumnya. Jumlah pengulangandiketahui atau dapat ditentukan sebelum ekseskusiprogram.
•Untuk mencacah beberapa kali pengulangandilakukan, kita memerlukan sebuah peubahpencacah (counter). Peubah ini nilainya selalubertambah satu secara otomatis
Pengulangan: FOR
Bentuk umum For:
For <nilai awal> to <nilai akhir>
do
…………….
instruksi-instruksi
……………..
End for
Instruksi
For I = 1 to 4
Next I
Contoh Kasus
“Misalkan kita ingin mencetak barisan 1,2, …, N di layar, dengan N adalah nilai yang sudah
dispesifikasikan sebelumnya (dibaca terlebihdahulu)”
Contoh Kasus
PROGRAM CetakBarisan
{Mencetak 1,2,…,N; Nilai N ditentukan terlebihdahulu}
DEKLARASI
i: integer
N: integer
ALGORITMA
read(N)
for i1 to N do
write(i)
end for
Output=12345678
Contoh Kasus (2)
Kita ingin menghitung nilai rata-rata dari N buah data bilangan bulatyang dibaca dari papan ketik (asumsikan N>0). Nilai rata-rata adalah
jumlah seluruh data dibagi dengan banyaknya data. Misalkan jikaN=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)
sum0
for i1 to N do
read(x)
sumsum+x
end for
reratasum/N
write(rerata)
Struktur For Menurun
Adakalanya kita melakukan pengulangan dengan cacah yang menurun, yaitudari nilai cacah yang besar ke nilai cacah yang kecil. Untuk memfasilitasi haltersebut, 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 i100 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 barisdi 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 iN 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 terlebihdahulu 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 terlebihdahulu}
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, WHILEmemiliki keunggulan yang tidak dimiliki oleh FOR.
• Pada kasus-kasus dimana jumlah pengulangan diketahui di awalprogram, WHILE dapat digunakan sebaik penggunaan FOR.
• Namun, untuk proses yang jumlah pengulangannya tidak dapatditentukan di awal, hanya struktur WHILE yang dapat kita gunakan,sebab kondisi pengulangan diperiksa di awal pengulangan. Jadimeskipun kita tidak mengetahui kapan persisnya WHILE ini berhenti,tetapi kita menjamin bahwa jika kondisi bernilai salah, pastipengulangan akan berhenti.
Contoh
• Misalkan jika nilai-nilai ujian yang diinputkan adalah80, 50, 75, -1Maka rata-rata nilai ujian adalah (80 + 50 +75) / 3 = 68,33
• Jika nilai ujian yang diinputkan adalah80,-1Maka hanya ada satu nilai ujian yaitu 80, sehingga rata-rata nilai ujianadalah 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 jumlahpengulangan tidak diketahui. WHILE dapat digunakan untuk pengulangansemacam ini karena proses pembacaan data dilakukan selagi data yangdibaca tidak sama dengan -1.
ContohPROGRAM 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 yangbernilai Boolean. Pemeriksaan kondisi dilakukan pada akhir setiappengulangan. Aksi dikerjakan berulang-ulang sampai kondisi terpenuhi(bernilai true).
Contoh Kasus Cetak Deret
PROGRAM CetakBarisan
{Mencetak 1,2,…,N; Nilai N ditentukan terlebihdahulu}
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 danREPEAT ekivalen. Kita dapat menggunakan WHILE maupun REPEAT. Keduanyabenar untuk persoalan tertentu.
• Tetapi, pada beberapa persoalan, pemilihan WHILE atau REPEAT bergantungpada natural dari persoalan itu sendiri.
• Untuk mengetahui struktur mana yang lebih tepat, kita harus mengetahuiperbedaan mendasar di antara keduanya. Perbedaannya adalah padakonstruksi REPEAT, kondisi pengulangan diperiksa pada akhir dulu, barulahpengetesan kondisi dilakukan. Konsekuensinya, badan pengulangandilaksanakan paling sedikit satu kali.
• Sebaliknya pada konstruksi WHILE, kondisi pengulangan diperiksa di awalpengulangan. Konsekuensinya badan pengulangan mungkin tidak akan pernahdilaksanakan bila kondisi pengulangan pertama kali bernilai false.
WHILE atau REPEAT
• Gunakan konstruksi WHILE pada kasus yang mengharuskan terlebih dahulupemeriksaan kondisi objek sebelum objek tersebut dimanipulasi
• Gunakan konstruksi REPEAT pada kasus yang terlebih dahulu memanipulasiobjek, baru memeriksa kondisi objek tersebut.
Contoh penggunaan WHILE benar, tetapi REPEAT salah:
Diinputkan sejumlah nilai bilangan bulat (x) dari papan ketik, namun banyaknyadata tidak diketahui. Tanda akhir pembacaan data adalah bila nilai x yang dibacaadalah -1. Anda diminta membuat algoritma yang menghitung jumlah seluruh nilaipecahannya (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
S0
read(x)
while x≠-1 do
SS+1/x
read(x)
end while
Pembahasan REPEAT salah
PROGRAM PenjumlahanDeretPecahan
{program untuk menghitung penjumlahan deret pecahan}
DEKLARASI
x,S: integer
ALGORITMA
S0
read(x)
repeat
SS+1/x
read(x)
until x=-1
write(S)
QUIZ 1 ALPRO
1. Dibaca tiga buah bilangan bulat x, y, z. Buatlah algoritma dalambentuk pseudo-code untuk mempertukarkan tripel (x,y,z) menjadi(y,z,x).
2. Definisikan sebuah tipe terstruktur untuk menyatakan data-data nilaimata kuliah yang diambil setiap mahasiswa. Data-data yang disimpandi dalam struktur rekaman (record) adalah sebagai berikut:
a) NIM (Nomor Induk Mahasiswa)
b) NamaMhs (nama mahasiwa)
c) Mata kuliah yang diambil mahasiswa tersebut, yang terdiriatas:
- Kode mata kuliah
- Nama mata kuliah
- Nilai mata kuliah