Algoritma Pemrograman Pertemuan Ke-6 (Pengulangan atau Looping [1]) :: Noor Ifada :: S1 Teknik Informatika-Unijoyo 1
Sub Pokok Bahasan Pendahuluan Struktur Pengulangan Pengulangan tanpa kondisi dan dengan kondisi Struktur FOR (menaik dan menurun) S1 Teknik Informatika-Unijoyo 2
Pendahuluan Pengulangan (looping) adalah bentuk yang sering ditemui di dalam suatu program aplikasi. Komputer memiliki kelebihan karena kemampuannya untuk melaksanakan suatu instruksi berulangkali tanpa mengenal lelah dan bosan. Di dalam algoritma, pengulangan dapat dilakukan sejumlah kali, atau sampai kondisi berhenti pengulangan tercapai. S1 Teknik Informatika-Unijoyo 3
Struktur Pengulangan Bentuk Umum: <inisialisasi> awal pengulangan badan pengulangan akhir pengulangan <terminasi> <inisialisasi> aksi yang dilakukan sebelum pengulangan dilakukan untuk pertama kalinya. Badan pengulangan bagian algoritma yang diulang <terminasi> aksi yang dilakukan setelah pengulangan selesai dilaksanakan <inisialisasi> dan <terminasi> 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 4
Di dalam algoritma terdapat beberapa macam struktur pengulangan yang berbeda. Beberapa struktur dapat dipakai untuk masalah yang sama, namun ada notasi pengulangan yang hanya cocok dipakai untuk masalah tertentu. Pemilihan struktur pengulangan yang tepat tergantung pada masalah yang akan diprogram. S1 Teknik Informatika-Unijoyo 5
3 macam struktur pengulangan: Struktur FOR Struktur WHILE Struktur REPEAT pengulangan tanpa kondisi (unconditional looping) pengulangan dengan kondisi (conditional looping) S1 Teknik Informatika-Unijoyo 6
Pengulangan tanpa kondisi dan dengan kondisi Struktur pengulangan tanpa kondisi (unconditional looping) instruksi-instruksi di dalam badan pengulangan diulangi sejumlah kali yang dispesifikasikan (jumlah pengulangan sudah diketahui sebelum eksekusi) Struktur pengulangan dengan kondisi (conditional looping) jumlah pengulangan tidak diketahui sebelum eksekusi program. Yang dapat ditentukan hanya kondisi berhenti pengulangan, artinya instruksi-instruksi di dalam badan pengulangan diulangi sampai kondisi berhenti terpenuhi. S1 Teknik Informatika-Unijoyo 7
Struktur FOR Struktur pengulangan FOR digunakan untuk mengulang statemen atau satu blok statemen berulang kali. 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. S1 Teknik Informatika-Unijoyo 8
Bentuk umum struktur FOR: Menaik (ascending) Menurun (descending) S1 Teknik Informatika-Unijoyo 9
FOR menaik for pencacah nilai_awal to nilai_akhir do aksi endfor 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 10
Contoh: Mencetak tulisan Informatika sebanyak 5 kali Algoritma CETAK_INFORMATIKA { Mencetak Informatika sebanyak 5 kali } DEKLARASI k : integer { pencacah pengulangan } DESKRIPSI : for k 1 to 5 do { ulangi sebanyak 5 kali } write( Informatika ) endfor Program CETAK_INFORMATIKA; { Mencetak Informatika sebanyak 5 kali } (* DEKLARASI *) var k : integer; (* DESKRIPSI *) begin for k := 1 to 5 do writeln( Informatika ); (*endfor*) end. Struktur FOR dapat digunakan sebagai penyelesaian karena 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: Informatika Informatika Informatika Informatika Informatika S1 Teknik Informatika-Unijoyo 11
Contoh: 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 Algoritma PENJUMLAHAN_DERET { Menjumlahkan deret 1 + 2 + 3 +... + N, dengan N adalah bilangan bulat positif yang dibaca dari piranti masukan } DEKLARASI k : integer { pencacah pengulangan } N, jumlah : integer DESKRIPSI : read(n) { banyaknya suku deret } jumlah 0 for k 1 to N do { ulangi sebanyak N kali } jumlah jumlah + k endfor write(jumlah) S1 Teknik Informatika-Unijoyo 12
Program PENJUMLAHAN_DERET; { Menjumlahkan deret 1 + 2 + 3 +... + N, dengan N adalah bilangan bulat positif yang dibaca dari piranti masukan } (* DEKLARASI *) var k, N, jumlah : integer; (* DESKRIPSI *) begin write( Masukkan banyaknya suku deret : ); readln(n); jumlah := 0; for k := 1 to N do jumlah := jumlah + k; (*endfor*) writeln(jumlah); end. S1 Teknik Informatika-Unijoyo 13
Contoh: 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 berturut-turut adalah 12, 10, 6, 2, 4, maka nilai rataratanya adalah: (12 + 10 + 6 + 2 + 4)/5 = 34/5 = 6.8 Algoritma HITUNG_RATA_RATA { Menghitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukan. N > 0. } DEKLARASI k : integer { pencacah pengulangan } N : integer { jumlah data, > 0 } x : integer { bilangan bulat yang dibaca } jumlah : integer rata : real DESKRIPSI : read(n) { banyaknya suku deret } jumlah 0 for k 1 to N do { ulangi sebanyak N kali } read(x) jumlah jumlah + x endfor rata jumlah/n write(rata) S1 Teknik Informatika-Unijoyo 14
Program HITUNG_RATA_RATA; { Menghitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukan. N > 0. } (* DEKLARASI *) var k, N, x, jumlah : integer; rata : real; (* DESKRIPSI *) begin write( Masukkan banyaknya suku deret : ); readln(n); jumlah := 0; for k := 1 to N do begin write( Bilangan ke-,k, : );readln(x); jumlah := jumlah + x; end; rata := jumlah/n; writeln(rata); end. S1 Teknik Informatika-Unijoyo 15
Pencacah pengulangan tidak harus bertipe integer. Tipe lain pun juga dapat dijadikan sebagai pencacah asalkan tipe tersebut memiliki keterurutan (ada predecessor dan successor. Bilangan bulat dan karakter adalah tipe data yang memiliki predecessor dan successor. Bilangan riil tidak memiliki predecessor dan successor sehingga ia tidak dapat digunakan sebagai pencacah. S1 Teknik Informatika-Unijoyo 16
FOR menurun for pencacah nilai_akhir downto nilai_awal do aksi endfor pencacah menggunakan tipe data yang memilki predecessor dan successor, yaitu integer atau karakter (tipe riil tidak dapat digunakan sebagai pencacah. aksi adalah 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 berkurang satu setiap kali aksi diulangi, sampai akhirnya nilai pencacah sama dengan nilai_awal. jumlah pengulangan yang terjadi = nilai_akhir nilai_awal + 1 S1 Teknik Informatika-Unijoyo 17
Contoh: Mencetak angka 5, 4,, 1 Algoritma CETAK_ANGKA_TURUN { Mencetak 5, 4,..., 1 ke piranti keluaran } DEKLARASI k : integer { pencacah pengulangan } DESKRIPSI : for k 5 downto 1 do write(k) endfor Program CETAK_ANGKA_TURUN; { Mencetak 5, 4,..., 1 ke piranti keluaran } (* DEKLARASI *) var k : integer; 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: 5 4 3 2 1 (* DESKRIPSI *) begin for k := 5 downto 1 do write(k, ); (*endfor*) end. S1 Teknik Informatika-Unijoyo 18
Summary Pemilihan struktur pengulangan yang tepat tergantung pada masalah yang akan diprogram Struktur-struktur pengulangan terdiri dari Struktur FOR, Struktur 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 19
Daftar Pustaka Jogiyanto HM [1989]. Turbo Pascal, Andi Offset, Yogyakarta. Noor Ifada, ST [2005]. Diktat Matakuliah Algoritma Pemrograman, Hibah Kompetisi A1, Jurusan Teknik Informatika, Universitas Trunojoyo. Rinaldi Munir [2003]. Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Penerbit Informatika, Bandung. S1 Teknik Informatika-Unijoyo 20