30 April 2020

BAB VII STRUKTUR PERULANGAN

program whiledo var i : integer; begin I := 1; while i <= 5 do begin writeln(‘Pascal’); i:=i+1; end; end. Program FORDO Var i : integer; Begin For i := 1 to 5 Do Writeln(‘Pascal’); End. Program NestedLoops; {* contoh aplikasi mencari nilai prima *} var i, j:integer; begin for i := 2 to 50 do begin for j := 2 to i do if (i mod j)=0 then break; {* if faktor ketemu, berarti bukan prima *} if(j = i) then writeln(i , ' adalah nilai prima' ); end; end. Ketiga kode program di atas adalah contoh dari perulangan dengan kondisi diawal Jika kita lihat sekilas, maka kita bisa menyimpulkan bahwa kode program pertama dan kedua memiliki struktur yang hampir sama, yang membedakan hanya yang pertama menggunakan pernyataan WHILE-DO, sedangkan yang kedua menggunakan pernyataan FOR-DO. Bagaimana dengan yang ketiga? Yang ketiga menunjukkan sebuah contoh penggunaan dari sebuah nested loops (perulangan bersarang/ perulangan di dalam perulangan). Bagaimana cara kerja, hasil, dan kapan ketiga kode program (pernyataan perulangan) tersebut di gunakan? Akan kita bahas pada pembahasan berikut ini. Sebagaimana yang pernah dijelaskan pada semster lalu bahwa struktur perulangan merupakan struktur yang tidak terpisahkan dengan algoritma dan pemrograman. Struktur perulangan memungkinkan program untuk melakukan serangkaian perintah secara berulang-ulang. Dan untuk memenuhi syarat bahwa algoritma harus finite (terbatas) maka dalam perulangan pasti ada titik pemberhentian. Jika ternyata dalam sebuah kasus perulangan tidak mencapai titik berhenti maka dapat dikatakan algoritma tersebut salah. Titik pemberhentian dapat diberikan dengan beberapa cara, sebagai berikut. 1. Pemberhentian dengan syarat Pemberhentian dengan syarat artinya ada sebuah kondisi yang akan menyebabkan perulangan berhenti. Pemberian syarat ini juga dapat dilakukan dengan dua cara, yaitu a. Syarat diberikan di awal, di mana selama persayaratan dipenuhi maka dilakuakn serangkain perintah b. Syarat diberikan di akhir, di mana proses akan diulang-ulang sampai syarat dipenuhi. Perbedaan antara a dan b adalah ketika syarat diberikan di awal, maka selama persayaratan itu dipenuhi , maka perulangan dilakukan. Jika kondisi sudah tidak dipenuhi maka berhenti. Sedangakan pada kasus syarat di akhir, dikerjakan serangkaian langkah. Setiap selesai rangkaian langkah diperiksa apakah kondisi sudah dicapai, jika belum maka proses diulangi lagi. Struktur yang sesuai dengan perulangan dengan kondisi di awal adalah struktur WHILE DO sedangkan untuk kondisi di akhir adalah dengan REPEAT UNTIL. 2. Pemberhentian dengan pencacah Pemberhentian dengan pencacah, artinya dari awal sudah ditentukan bahwa perulangan akan dilakukan berapa kali. Pencacah ini juga ada dua macam cara, yaitu a. Pencacah naik Pemberhentian dengan pencacah naik artinya untuk suatu pencacah, misalkan i dari 1 sampai 100 lakukan rangkain langkah x. Artinya langkah tersebut akan diulangi sebanyak seratus kali. Dalam pascal untuk kasus pencacah naik digunakan struktur FOR TO DO. b. Pencacah turun Pemberhentian dengan pencacah turun , artinya sebaliknya untuk suatu pencacah i dari 100 sampai 1 lakukan rangkaian langkah x, artinya langkah x akan diulangi sebanyak seratus kali. Dalam pascal untuk kasus pencacah naik digunakan struktur FOR DOWNTO DO Penggunaan beberapa macam pemberhentian di atas tergantung dari situasi dan kondisi, untuk lebih jelasnya akan dijelaskan seperti berikut. Perulangan dengan struktur WHILE DO Dalam berbagai bahasa Pascal dikenal struktur WHILE DO, yang berarti selama memenuhi kriteri/kondisi tertentu, maka dilakukan serangkaian proses. Struktur ini dapat diterapkan pada contoh di atas sebagai berikut. Bentuk Umum: WHILE (kondisi) DO Pernyataan; Atau jika lebih dari satu pernyataan dapat dituliskan WHILE (kondisi) DO Begin Pernyataan1; Pernyataan2; Pernyataan3; End; Perulangan dengan struktur FOR DO Perulangan dengan pencacah, yaitu menggunakan struktur FOR DO dimasukkan dalam pembahasan pada kegaiatan Belajar ini. Struktur ini digunakan untuk mengulang statement atau satu blok statement berulang kali sejumlah yang ditentukan. Bentuk umum : for nama_variabel := nilai_awal to nilai_akhir do {untuk pencacah naik} Pernyataan; atau for nama_variabel := nilai_awal downto nilai_akhir do {untuk pencacah turun} Pernyataan; Penulisan pernyataan yang akan diproses berulang kali tersebut dapat juga ditulis dalam bentuk blok pernyataan (diawali dengan BEGIN dan diakhiri dengan END), walaupun hanya berisi sebuah statement saja, Dalam menyelesaiakan suatu permasalahan kita bisa menggunakan salah satu bentuk perulangan, apakah While Do ataupun For Do. Manakah yang lebih baik? Keduanya mempunyai kelebihan dan kekurangan sendiri-sendiri. Ada permasalahan yang dapat diubah dalam dua bentuk eprulangan tapi ada yang lebih mudah menggunakan bentuk For Do, tapi ada juga yang hanya bisa digunakan bentuk While Do. Perhatikan dua contoh pertama pada bagian mengamati Kedua program di atas mempunyai keluaran yang sama yaitu mencetak ‘Pascal’ sebanyak 5 kali, yaitu untuk i=1 sampai 5. Dalam While Do, - pertama i diberi nilai 1, - Periksa apakah i <= 5? Iya maka tuliskan ‘Pascal’ kemudian nilai i ditambah 1 menjadi 2 - Periksa Apakah I<=5? Iya , Maka Tuliskan Pascal, I=I+1=3 - Periksa apakah i<=5? Iya , maka tuliskan Pascal, i=i+1=4 - Periksa apakah i<=5? Iya , maka tuliskan Pascal, i=i+1=5 - Periksa apakah i<=5? Iya , maka tuliskan Pascal, i=i+1=6 - Periksa apakah i<=5?Tidak, maka STOP Di sini i berfungsi sebagai iterator dan 5 sebagai nilai sentinel. Dalam struktur FOR DO, iterator dan sentinel diringkas dalam bentuk for i:=1 to 5, di mana i otomatis bertambah naik, mulai dari nilai awal 1 menjadi 5. Oleh karena itu struktur For Do disebut perulangan dengan pencacah. Perulangan Dengan Kondisi Di Akhir PROGRAM REPEATUNTIL var digit := 1; begin repeat write (digit); digit := digit + 1 until digit > 5 ; end. Program REPEATUNTIL var a: integer; begin a := 10; (* repeat until loop execution *) repeat writeln(‘nilai dari a adalah ', a); a := a + 1 until a = 20; end. Sebagaimana yang dijelaskan sebelumnya bahwa perulangan dapat dilakukan dengan menyatakan kondisi di akhir. Berbeda dengan kondisi di awal, di mana selama syarat (kondisi) dipenuhi maka perintah dijalankan, pada kondisi di akhir, perintah dijalankan sampai memenuhi kondisi yang diinginkan. Struktur yang digunakan adalah struktur Repeat Until. Bentuk Umum : REPEAT Pernyataan; UNTIL (kondisi) Kode Program Var digit := 1; begin repeat writeln (digit); digit := digit + 1 until digit > 5 ; end. Program di atas diawali dengan nilai awal digit=1, kemudian dilakukan perintah writeln (digit); digit := digit + 1 hingga nilai digit>5. Perbedaan antara struktur REPEAT-UNTIL dengan WHILE-DO adalah sebagai berikut : 1) Paling sedikit statement-statement di dalam perulangan REPEAT-UNTIL diproses sekali, karena seleksi kondisi ada pada statement Until yang terletak dibawah. Sedang pada struktur WHILE-DO paling sedikit dikerjakan nol kali, karena seleksi kondisi ada pada statement While yang terletak diatas, sehingga kalau kondisi sudah tidak terpenuhi, maka tidak akan masuk ke dalam lingkungan perulangan. 2) Pada REPEAT-UNTIL dapat tidak dipergunakan blok statement (tidak diperlukan Begin dan End untuk menunjukkan batas perulangannya), karena batas perulangannya sudah ditunjukkan oleh Repeat sampai dengan Until (Repeat dan Until sebagai pengganti Begin dan End). PERULANGAN DENGAN KONDISI DIINPUTKAN USER Aplikasi pemroograman dalam kehidupan nyata, khususnya yang terkait dengan struktur perulangan, memerlukan syarat yang diinputkan oleh pengguna. Sebagai contoh, dalam sebuah aplikasi kasir, ketika melayani pembeli, seorang kasir akan memasukkan data barang-barang yang dibeli dengan barcode reader, hingga akhirnya kasir akan mengklik sebuah tombol untuk menghitung total belanjaan. Proses memasukkan data dari barang pertama, kedua, dan ke barangbarang berikutnya, adalah suatu bentuk perulangan. Dan perulangan ini akan berhenti hingga akhrinya kasir mengeklik tombol untuk menghitung total belanjaan. Contoh lain misalkan dalam sebuah video game dengan koin, ketika seorang anak memasukkan koin, kemudian bermain dan akhirnya terjadi game over. Berikutnya biasanya, video game akan menampilkan hitungan mundur menunggu anak untuk memasukkan koin berikutnya agar permainan dapat dilanjutkan. Bentuk hitugan mundur ini juga menggunakan perulangan, dan akan berhenti perulangan ini untuk dua kemungkinan, si anak memasukkan koin atau perhitungan mundur selesai dan akhirnya masuk ke menu awal game kembali. Kondisi yang diinputkan dari user bisa diperoleh sebelum perulangan atau di dalam perulangan itu sendiri. Contoh di atas adalah kondisi dimasukkan oleh user di dalam perulangan itu sendiri. Contoh pengambilan kondisi sebelum perulangan adalah menentukan suku ke-n dari sebuah barisan. Misalkan menetukan suku ke n dari barisan 1,2,3,5,8, .... Nilai n diperoleh dengan menerima masukan dari user sebelum perulangan dilakukan.

Tidak ada komentar:

Posting Komentar