Algoritma Pemrograman Pertemuan Ke- 6 dan 7 Pengulangan atau Looping Rahmady Liyantanto
[email protected] liyantanto.wordpress.com
S1 Teknik Informatika-Unijoyo
Sub Pokok Bahasan
Pendahuluan Struktur Pengulangan Pengulangan tanpa kondisi dan dengan kondisi Struktur FOR (menaik dan menurun) Struktur WHILE Struktur REPEAT WHILE vs REPEAT
S1 Teknik Informatika-Unijoyo
Pendahuluan
Pengulangan (looping) adalah pelaksanaan suatu instruksi berulangkali Di dalam algoritma, pengulangan dapat dilakukan sejumlah kali, atau sampai kondisi berhenti pengulangan tercapai
S1 Teknik Informatika-Unijoyo
Struktur Pengulangan
Bentuk Umum:
: aksi yang dilakukan sebelum pengulangan dilakukan untuk pertama kalinya.
badan pengulangan: bagian algoritma yang diulang
: aksi yang dilakukan setelah pengulangan selesai dilaksanakan
dan tidak selalu harus ada, namun pada berbagi kasus inisialisasi umumnya diperlukan
awal dan akhir pengulangan dinyatakan sebagai kata kunci yang bergantung pada struktur pengulangan yang digunakan S1 Teknik Informatika-Unijoyo
Macam struktur pengulangan Struktur FOR
pengulangan tanpa kondisi (unconditional looping): jumlah pengulangan sudah diketahui sebelum eksekusi
Struktur WHILE
pengulangan dengan kondisi (conditional looping): jumlah pengulangan tidak diketahui sebelum eksekusi program. Yang dapat ditentukan hanya kondisi berhenti pengulangan (instruksi-instruksi di dalam badan pengulangan diulangi sampai kondisi berhenti terpenuhi)
Struktur REPEAT
S1 Teknik Informatika-Unijoyo
Struktur FOR
Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi. Untuk mencacah sudah jumlah pengulangan diperlukan sebuah peubah (variable) pencacah (counter). Peubah ini nilainya selalu bertambah satu setiap kali pengulangan dilakukan Jika cacah pengulangan sudah mencapai jumlah yang dispesifikasikan, maka proses pengulangan berhenti Bentuk umum struktur FOR: q Menaik (ascending) q Menurun (descending) S1 Teknik Informatika-Unijoyo
Struktur FOR: menaik
Pencacahàmenggunakan tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter (tipe riil tidak dapat digunakan sebagai pencacah)
Aksià satu atau lebih instruksi yang diulang.
Nilai_awal harus lebih kecil atau sama dengan nilai_akhir (jika nilai_awal lebih besar dari nilai_akhir, maka badan pengulangan tidak dimasuki)
Pada awalnya pencacah diinisialisasikan dengan nilai_awal. Nilai pencacah secara otomatis bertambah satu setiap kali aksi pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_akhir
Jumlah pengulangan yang terjadi = nilai_akhir – nilai_awal + 1 S1 Teknik Informatika-Unijoyo
Contoh 1: Mencetak tulisan ‘Informatika Informatika’’ sebanyak 5 kali
Jumlah pengulangan sudah ditentukan sebelumnya (5 kali)
Badan pengulangan hanya berisi satu instruksi, yaitu write(‘Informatika’)
k adalah peubah pencacah yang bertipe integer
pada mulanya k bernilai 1, nilai k selalu bertambah 1 setiap kali pengulangan dilakukan, sampai akhirnya k mencapai 5
Jumlah pengulangan yang dilakukan: 5 – 1 + 1 = 5 kali
Keluaran dari algoritma CETAK_INFORMATIKA adalah string ‘Informatika’ sebanyak 5 kali. S1 Teknik Informatika-Unijoyo
Contoh 2:
Menghitung jumlah angka-angka dari 1 sampai N jumlah = 1 + 2 + 3 + ... + N
Nilai N dibaca terlebih dahulu dari piranti masukan. Misalnya, jika N = 5, maka jumlah angka dari 1 sampai 5 adalah deret: 1 + 2 + 3 + 4 + 5 = 15
S1 Teknik Informatika-Unijoyo
S1 Teknik Informatika-Unijoyo
Contoh 3:
Menghitung nilai rata-rata dari N buah data bilangan bulat yang dibaca dari piranti masukan. Nilai rata-rata adalah jumlah seluruh nilai dibagi dengan banyaknya nilai
Misalkan, N = 5 dan data bilangan yang dibaca berturutturutadalah 12, 10, 6, 2,4, maka nilai rata-atanya adalah: =(12 +10 + 6 + 2 + 4)/5 = 34/5 = 6.8 S1 Teknik Informatika-Unijoyo
S1 Teknik Informatika-Unijoyo
Struktur FOR: menurun
Pencacahàmenggunakan tipe data yang memiliki predecessor dan successor, yaitu integer atau karakter (tipe riil tidak dapat digunakan sebagai pencacah)
Aksià satu atau lebih instruksi yang diulang.
Nilai_akhir harus lebih besar atau sama dengan nilai_awal (jika nilai_akhir lebih kecil dari nilai_awal , maka badan pengulangan tidak dimasuki)
Pada awalnya pencacah diinisialisasikan dengan nilai_akhir. Nilai pencacah secara otomatis bertambah satu setiap kali aksi pengulangan dimasuki, sampai akhirnya nilai pencacah sama dengan nilai_awal.
Jumlah pengulangan yang terjadi = nilai_akhir – nilai_awal + 1 S1 Teknik Informatika-Unijoyo
Contoh: Mencetak angka 5, 4, …, 1
Pada algoritma CETAK_ANGKA_TURUN, angka-angka yang dicetak bersesuaian dengan nilai pencacah pengulangan. Keluaran dari algoritma adalah angka 5 yang turun sampai ke angka 1: 54321
S1 Teknik Informatika-Unijoyo
Struktur WHILE
aksi (atau runtunan aksi) dilaksanakan berulang kali selama kondisi bernilai true. Jika kondisi bernilai false, badan pengulangan tidak akan dilaksanakan, yang berarti pengulangan selesai Pengulangan harus berhenti. Pengulangan yang tidak pernah berhenti menandakan bahwa logika algoritma tersebut salah. Pengulangan berhenti apabila kondisi bernilai false. Agar kondisi suatu saat bernilai false, maka di dalam badan pengulangan harus ada instruksi yang mengubah nilai peubah kondisi S1 Teknik Informatika-Unijoyo
Contoh 1: Mencetak tulisan ‘Informatika Informatika’’ sebanyak 5 kali
S1 Teknik Informatika-Unijoyo
Contoh 2:
Menghitung jumlah angkaangka dari 1 sampai N. Nilai N dibaca terlebih dahulu dari piranti masukan. Misalnya, jika N = 5, maka jumlah angka dari 1 sampai 5 adalah deret 1 + 2 + 3 + 4 + 5 = 15
S1 Teknik Informatika-Unijoyo
S1 Teknik Informatika-Unijoyo
Contoh 3:
Menghitung nilai rata-rata dari N buah data bilangan bulat yang dibaca dari piranti masukan. Nilai rata-rata adalah jumlah seluruh nilai dibagi dengan banyaknya nilai
Misalkan, N = 5 dan data bilangan yang dibaca berturutturutadalah 12, 10, 6, 2,4, maka nilai rata-atanya adalah: =(12 +10 + 6 + 2 + 4)/5 = 34/5 = 6.8 S1 Teknik Informatika-Unijoyo
S1 Teknik Informatika-Unijoyo
Perihal WHILE
Kesalahan yang biasa terjadi pada penggunaan struktur WHILE adalah tidak menuliskan instruksi yang mengubah peubah kondisi, misalnya tidak menuliskan instruksi kßk+1. Sehingga pengulangan tidak pernah memenuhi kondisi pengulangan berhenti WHILE juga dapat digunakan sebagai penggunaan FOR. (WHILE juga dapat digunakan untuk proses yang jumlah pengulangannya tidak dapat ditentukan)
S1 Teknik Informatika-Unijoyo
Contoh 4:
Dalam algoritma JUMLAH_DAN_KALI, ditetapkan bahwa dari masukan nilai integer x, jika x ganjil, maka peubah M yang telah diinisialisasi dengan 1 ditambah 10, dan jika x genap maka M dikali 10 Pengulangan ini akan terus dilakukan selama x tidak sama dengan 0
S1 Teknik Informatika-Unijoyo
S1 Teknik Informatika-Unijoyo
Struktur REPEAT
Notasi ini mendasarkan pengulangan pada kondisi boolean. Aksi di dalam badan pengulangan diulang sampai kondisi boolean bernilai true. Dengan kata lain, jika kondisi boolean masih false, pengulangan masih terus dilakukan. Karena proses pengulangan suatu saat harus berhenti, maka di dalam badan pengulangan harus ada aksi yang mengubah nilai peubah kondisi . Struktur REPEAT mempunyai makna yang sama dengan WHILE, dan dalam beberapa masalah kedua struktur tersebut komplemen satu sama lain. S1 Teknik Informatika-Unijoyo
Contoh 1: Mencetak tulisan ‘Informatika Informatika’’ sebanyak 5 kali
Badan pengulangan berisi dua instruksi: write(‘Informatika’) dan kßk+1
Kondisi berhenti pengulangan adalah k > 5, artinya jika k masih ≤ 5, maka badan pengulangan masih boleh dimasuki
k harus terdefinisi nilainya sebelum pengulangan dilaksanakan pertama kali. Karena itu, pada bagian inisialisasi, k diisi dengan nilai 1
Instruksi yang mengubah nilaipeubah kondisi adalah instruksi kßk+1. Instruksi ini mencacah jumlah pengulangan, sehingga jika k > 5, pengulangan dihentikan S1 Teknik Informatika-Unijoyo
Contoh 2: Menghitung 1 + 2 + 3+ … + N Nilai N dibaca terlebih dahulu (N > 0).
S1 Teknik Informatika-Unijoyo
S1 Teknik Informatika-Unijoyo
Contoh 3: Menghitung nilai rata rata--rata N buah data bilangan bulat yang dibaca dari piranti masukan
S1 Teknik Informatika-Unijoyo
S1 Teknik Informatika-Unijoyo
WHILE vs REPEAT
Seperti halnya pada struktur WHILE, struktur REPEAT juga dapat digunakan untuk masalah yang jumlah pengulangannya tidak diketahui atau tidak dapat ditentukan
Pemilihan struktur WHILE atau REPEAT bergantung pada karakteristik dari persoalan. Ada permasalahan yang hanya benar bila menggunakan struktur WHILE, tetapi bisa fatal bila menggunakan REPEAT
Perbedaan antara struktur REPEAT dan WHILE: q
struktur REPEATà kondisi pengulangan diperiksa pada akhir pengulangan. Jadi, instruksi di dalam badan pengulangan dilaksanakan dulu, baru kemudian pengetesan kondisi dilakukan. Sehingga badan pengulangan dilaksanakan paling sedikit satu kali
q
struktur WHILE à kondisi pengulangan diperiksa di awal pengulangan. Jadi, instruksi di dalam badan pengulangan hanya dapat dilaksanakan bila pengetesan kondisi menghasilkan nilai true. Sehingga, badan pengulangan mungkin tidak akan pernah dilaksanakan bila kondisi pengulangan pertama kali bernilai false S1 Teknik Informatika-Unijoyo
WHILE vs REPEAT: Jumlah Pengulangan
Hasil dari algoritma tidak ada (karena badan pengulangan tidak pernah dimasuki)
Hasil dari algoritma adalah 8 (karena badan pengulangan telah dimasuki satu kali) S1 Teknik Informatika-Unijoyo
Kesimpulan [1]
Pemilihan struktur pengulangan yang tepat tergantung pada masalah yang akan diprogram Struktur-struktur pengulangan terdiri dari Struktur FOR,Struk tur WHILE, dan Struktur REPEAT Struktur FOR digunakan pada aksi yang jumlah pengulangannya diketahui atau dapat ditentukan sebelum eksekusi Struktur FOR ada 2 macam, yaitu menaik (ascending) dan menurun (descending)
S1 Teknik Informatika-Unijoyo
Kesimpulan [2]
Struktur WHILE dan REPEAT digunakan pada aksi yang jumlah pengulangan tidak diketahui sebelum eksekusi program.Yang dapat ditentukan hanya kondisi berhenti pengulangan Struktur WHILE digunakan pada kasus yang mengharuskan terlebih dahulu pemeriksaan kondisi objek sebelum objek tersebut dimanipulasi Struktur REPEAT digunakan pada kasus yang terlebih dahulu memanipulasi objek, baru kemudian memeriksa kondisi objek tersebut
S1 Teknik Informatika-Unijoyo
Daftar Pustaka
Jogiyanto HM [1989]. Turbo Pascal,Yogyakarta: Andi Offset. Noor Ifada [2005]. Diktat Matakuliah Algoritma Pemrograman (Hibah Kompetisi A1), Bangkalan: Jurusan Teknik Informatika, Universitas Trunojoyo. Rinaldi Munir [2003]. Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika.
S1 Teknik Informatika-Unijoyo