Pengulangan ALGORITMA DAN PEMROGRAMAN [IS6110102] Dosen: Yudha Saintika, S.T., M.T.I
Sub-Capaian Pembelajaran MK Mahasiswa mampu menerapkan algoritma pengulangan 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 satu atau beberapa pernyataan sebanyak beberapa 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 <nilai awal> to <nilai akhir> do. instruksi-instruksi.. End for For I = 1 to 4 Instruksi Next I
Contoh Kasus 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 Output=12345678 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 ALGORITMA N,x,i,sum:integer rerata: real 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 rataratanya 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.
PROGRAM HitungRerata Contoh {Menghitung rata-rata ujian siswa yang dibaca dari inputan user selama data yang dibaca tidak sama dengan -1} DEKLARASI ALGORITMA i,x : integer sum,rerata : real sum 0 i 0 read(x) while x -1 do end while i i+1 sum sum+x read(x) if i 0 then else end if rerata sum/i write(rerata) write( tidak ada nilai ujian yang dimasukkan )
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 ALGORITMA N,x,i,sum:integer rerata: real 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 {program untuk menghitung penjumlahan deret pecahan} DEKLARASI x,s: integer ALGORITMA S 0 read(x) repeat S S+1/x read(x) until x=-1 write(s)
QUIZ 1 ALPRO 1. Dibaca tiga buah bilangan bulat x, y, z. Buatlah algoritma dalam bentuk pseudo-code untuk mempertukarkan tripel (x,y,z) menjadi (y,z,x). 2. 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