MODUL MATA KULIAH LOGIKA DAN ALGORITMA STIMIK EL RAHMA JOGJAKARTA 2015 JURUSAN : SISTEM INFORMASI SEMESTER GENAP 2015 Materi : ITERASI Iterasi adalah sifat tertentu dari algoritma atau program komputer di mana suatu urutan atau lebih dari langkah algoritmik yang dilakukan di loop program. Iterasi dapat diartikan sebagai suatu proses atau metode yang digunakan secara berulang-ulang (pengulangan) dalam menyelesaikan suatu permasalahan matematik. Salah satu kelebihan komputer dibandingkan dengan manusia adalah kemampuannya untuk mengulang suatu instruksi, bahkan aksi, secara berulang-ulang dengan performansi yang sama. Berbeda dengan manusia yang cenderung melakukan kesalahan jika melakukan hal yang sama karena lelah atau bosan. Struktur pengulangan secara umum terdiri dari dua bagian : 1. Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan. Kondisi ini ada yang dinyatakan secara ekplisit oleh pemrogram atau dikelola sendiri oleh komputer (implisit). 2. Badan pengulangan, yaitu aksi/pernyataan yang harus diulang selama kondisi yang ditentukan untuk pengulangan masih dipenuhi. Disamping itu, struktur pengulangan biasanya disertai dengan bagian : 1.Inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali. 2.Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan. Insialisasi dan terminasi tidak selalu harus ada, namun pada berbagai kasus inisisalisasi umumnya diperlukan. Struktur pengulangan secara umum : <inisialisasi> awal pengulangan badan pengulangan akhir pengulangan <terminasi> Pengulangan harus berhenti, ini yang harus dijamin oleh pemrogram. Karena algoritma yang tidak pernah berhenti/pengulangan yang terus menerus (looping) adalah algoritma yang salah. Struktur Kontrol pengulangan terdiri dari : a. Pernyataan FOR b. Pernyataan WHILE a. Pernyataan REPEAT 5.1 Pernyataan FOR Adalah pengulangan yang paling sederhana. Pengulangan ini dipakai jika kita mengetahui berapa kali pengulangan akan dilakukan. Bentuk umum pernyataan FOR ada dua macam, yaitu menaik (ascending) atau menurun (descending). FOR menaik Bentuk umum struktur kontrol FOR menaik ini, dapat dirumuskan dengan : Notasi Algoritmik : FOR DO (nama_pencacahnilai_awal) TO (nilai_akhir) (aksi/pernyataan) EndFor Keterangan: Aksi/pernyataan adalah satu atau lebih instruksi yang diulang. Keterangan: Nilai_awal dan nilai_akhir pada umumnya bilangan integer atau karakter, asal nilai_akhir ≥ nilai_awal Pengulangan dilaksanakan berulang-ulang tanpa kondisi atau syarat apapun dengan jumlah ulangan= nilai_akhir – nilai_awal + 1 Pada awalnya, pencacah diinisialisasi dengan nilai_awal. Nilai pencacah secara otomatis bertambah satu setiap kali badan pengulangan dimasuki, sampai akhirnya nilai pencacah = nilai_akhir. Notasi Pascal : for do (nama_pencacah:=nilai_awal) to (nilai_akhir) begin (aksi/pernyataan) End; Contoh : Misalkan kita ingin mencetak angka 1 sampai 10, maka algoritma dan programnya adalah : Algoritmik : Program Tulis_nomor Deklarasi : nomor: integer Algoritma : FOR nomor1 To 10 DO write(nomor) EndFor Pascal : Program Var Tulis_nomor; nomor : integer; Begin for nomor:= 1 to 10 do writeln(nomor); end. FOR menurun Bentuk umum struktur kontrol FOR menurun ini, dapat dirumuskan dengan : Notasi Algoritmik : FOR (nilai_akhir) (nama_pencacahnilai_awal) DO (aksi/pernyataan) EndFor Keterangan: DOWNTO Aksi/pernyataan adalah satu atau lebih instruksi yang diulang. Nilai_awal dan nilai_akhir pada umumnya bilangan integer atau karakter, asal nilai_awal ≥ nilai_akhir Pengulangan dilaksanakan berulang-ulang tanpa kondisi atau syarat apapun dengan jumlah ulangan= nilai_awal – nilai_akhir + 1. Pada awalnya, pencacah diinisialisasi dengan nilai_awal. Nilai pencacah secara otomatis berkurang satu setiap kali badan pengulangan dimasuki, sampai akhirnya nilai pencacah = nilai_akhir. Notasi Pascal : for (nama_pencacah:=nilai_awal) downto (nilai_akhir) do begin (aksi/pernyataan) end; Contoh : Misalkan kita ingin meghitung mundur angka dari 10 sampai 1, maka algoritma dan programnya adalah : Algoritmik : Program hitung_mundur Deklarasi : nomor: integer Algoritma : FOR nomor10 Downto 1 DO write(nomor) EndFor Pascal : Program Var Hitung_mundur; nomor : integer; Begin for nomor:= 10 downto 1 do writeln(nomor); end. 5.2 Pernyataan WHILE Bentuk umum struktur kontrol WHILE dapat dirumuskan dengan : WHILE (kondisi_pengulangan) DO (aksi/pernyataan) EndWhile Keterangan: Pengulangan bisa tidak dilakukan , jika pada saat awal, kondisi_pengulangan tidak terpenuhi (false). Tidak mengetahui berapa kali pengulangan akan dikerjakan Kondisi pengulangan akan diperiksa sebelum masuk ke aksi / pernyataan. Pengulangan akan dilaksanakan berulang-ulang jika kondisi_pengulangan dipenuhi (true). Di dalam pernyataan, harus ada instruksi yang mengubah nilai kondisi agar pengulangan berhenti. Notasi Pascal : while (kondisi_pengulangan) do begin (aksi/pernyataan) end; Contoh : Buat algoritma/program untuk menampilkan angka sesuai dengan angka yang di-input dari keyboard. Program akan berhenti jika user meng-input angka 0 ; Algoritmik : Program CetakAngka Deklarasi : i,angka: integer Algoritma : write('Masukan angkanya: ') read(angka) i1 While (angka ≠ 0) do write(‘Angka yang anda input:’, angka) write('Masukan angkanya: ') read(angka) ii+1 EndWhile Pascal : Program Var CetakAngka; i, angka : integer; Begin write('Masukan angkanya: '); readln(angka); i:=1; While (angka <> 0) do Begin writeln(‘Angka yang anda input:’, angka); write('Masukan angkanya: '); readln(angka); ii+1; end end. 5.3 Pernyataan REPEAT Bentuk umum struktur kontrol REPEAT dapat dirumuskan dengan : REPEAT (aksi/pernyataan) UNTIL (kondisi_berhenti) Keterangan: Aksi / pernyataan akan dikerjakan minimal satu kali , karena pernyataan dilaksanakan terlebih dahulu kemudian baru diperiksa kondisi berhenti. Aksi / pernyataan akan dikerjakan berulang-ulang dan akan berhenti jika kondisi berhenti terpenuhi Tidak mengetahui berapa kali pengulangan akan dikerjakan Di dalam pernyataan, harus ada instruksi yang mengubah nilai kondisi agar pengulangan berhenti.. Notasi Pascal : repeat begin (aksi/pernyataan) end; until (kondisi_berhenti) Kesimpulan : FOR digunakan untuk proses pengulangan yang jumlah pengulangannya dapat diketahui diawal. WHILE fungsinya sama seperti FOR, tetapi WHILE juga dapat digunakan untuk proses yang jumlah pengulangannya tidak dapat ditentukan sebelum eksekusi. REPEAT fungsinya sama seperti WHILE, kita dapat menggunakan WHILE maupun REPEAT untuk masalah-masalah tertentu. Tetapi, pada beberapa masalah, pemilihan WHILE atau REPEAT bergantung kepada persoalannya. Ini artinya, ada masalah yang hanya benar bila menggunakan struktur WHILE, tetapi bisa fatal bila menggunakan REPEAT. Untuk mengetahui struktur mana yang lebih tepat, kita harus mengetahui perbedaannya, yaitu : Pada Konstruksi REPEAT, kondisi pengulangan diperiksa pada akhir pengulangan. Jadi instruksi di dalam badan pengulangan dilaksanakan dulu, baru pemeriksaan kondisi dilakukan. Konsekuensinya badan pengulangan dilaksanakan paling sedikit satu kali. Pada konstruksi WHILE, kondisi pengulangan diperiksa di awal pengulangan. Jadi instruksi didalam badan pengulangan hanya dapat dilaksanakan jika pemeriksaan kondisi menghasilkan nilai true. Konsekuensinya badan pengulangan mungkin tidak akan pernah dilaksanakan, bila kondisi pengulangan pertama kali bernilai false. Jadi : → 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 kemudian memeriksa kondisi objek tersebut. Latihan 1. Tuliskanlah algoritma untuk menentukan nilai terkecil dari N buah data integer yang dibaca dari papan ketik. Nilai N dibaca terlebih dahulu (N>0) 2. Buat algoritma/program untuk menampilkan kata “Saya sedang belajar pemrograman” sebanyak 50 kali. 3. Buat algoritma/program untuk menulis angka deret tambah mulai dari angka 0 hingga 100 dengan pertambahan 10. Sehingga tampilan output di layar : 0 10 20 30 40 50 60 70 80 90 100 (dengan selang 2 spasi diantara angka-angka itu). 4. Buat algoritma/program untuk menampilkan jumlah angka 20 bilangan asli pertama. Bilangan asli adalah bilangan bulat dimulai dari 1,2,3,…. 5. Buat algoritma/program untuk membuat Daftar telepon. Daftar Telepon berisi Nama dan No.Telp. Pertama kali dibaca berapa jumlah data Nama dan No.Telp yang akan diinput, kemudian masukan data Nama dan No.Telp sesuai dengan jumlah data yang dibaca dari keyboard. 6. Buat algoritma/program untuk menghitung nilai rata-rata dari N buah data bilangan bulat yang dibaca dari keyboard. Nilai rata-rata adalah jumlah seluruh data dibagi dengan banyaknya data. Misalnya, jika N=5 dan data bilangan yang dibaca berturut-turut adalah 2,5,3,4,2 maka nilai rata-ratanya adalah (2+5+3+4+2)/5=16/5=3.2.