E. Haodudin Nurkifli Teknik Informatika Universitas Ahmad Dahlan Analisis dan Perancangan Algoritma Kuliah 5 : Looping iteratif rekursif E. Haodudin Nurkifli Teknik Informatika Universitas Ahmad Dahlan 2-Jul-18
Looping Looping / perulangan Komputer dapat melakukang perulangan sangat cepat Perlu mempelajari algoritma perulangan Ada 3 struktur perulangan Struktur for Sturktur while Sturktur repeat
Sturktur perulangan Struktur for 1.struktur for digunakan untuk menghasilkan pengulangan sejumlah kali yang dispesifikasikan 2. jumlah pengulangan di ketahui sebanyak eksekusi 3. dibutuhkan variable dan counter Algorimta for menaik For i awal to akhir do aksi End for
Algoritma for menurun for i akhir down to awal do aksi End for
Contoh algoritma Algoritma mencetak angka 1,2,..8 Algoritma for menaik Deklarasi k : integer Deskripsi for k 1 to 8 do { ulangi sebanyak 8 kali} write (k); endfor
Algoritma for menurun Algoritma cetak angka 1,2, Algoritma for menurun Algoritma cetak angka 1,2,..8 Deklarasi k : integer Deskripsi for k 8 downto 1 do write (k) end for
Struktur while Aksi berulang terus pada kondisi true dan berhenti pada kondisi false Perulangan harus berhenti, ketika perulangan tidak berhenti menandakan algoritma salah Algoritma While kondisi do aksi Endwahile
Contoh Algoritma cetak angka 1,2,..8 Deklarasi k integer Deskripsi k 1 while (k <= 8 ) do write (k) k k+1 end while
Struktur repeat Sturktur repaeat memiliki makna yang sama dengan while Algoritma repeat Repeat aksi Until (kondisi)
Contoh Algoritma catak angka 1, 2, 4, ..8 Deklarasi k integer Deskripsi k 1 repeat write (k) k = k + 1 until (k > 8)
Untuk memantapkan konsep perulangan silahkan kerjakan latihan Buatlah algoritma mencetak kata “ hallo word” sebanyak 10 kali dengan menggunakan sturktur for dan sturktur while do Buatlah algoritma mencetak bilangan ganjil dari angka 0 sampai 10 dengan menggunakan sturktur for, while dan repeat.
Analisis looping While/ Repeat tidak mudah untuk dianalisis karena banyak langkah tidak pasti. Yang paling mungkin dianalisis adalah For loop. Banyak Langkah untuk Statement FOR Kasus I: Counter : integer Step : 1 Statement S mempunyai banyak langkah yang tidak bergantung nilai counter
FOR counter : awal TO akhir S S dieksekusi sebanyak akhir – awal +1 kali Hidden : Counter ≤ Akhir S dieksekusi sebanyak akhir – awal + 2 kali Counter = counter + 1 S dieksekusi sebanyak akhir – awal + 1 kali Banyak Langkah = (akhir – awal + 2) + (akhir – awal + 1) (p + 1)
Contoh : Berapa banyak langkah dari FOR i = 1 TO n x : = x + 5 y : = y + x
Penyelesaian : = (n – 1 + 2) + (n – 1 + 1) (2 + 1) = (n + 1) + (n)(3) Banyak langkahnya = (akhir – awal + 2) + (akhir – awal + 1) (p + 1) = (n – 1 + 2) + (n – 1 + 1) (2 + 1) = (n + 1) + (n)(3) = n + 1 + 3n = 4n + 1
Kasus II : seperti kasus I tetapi mempunyai STEP = s s dieksekusi sebanyak atau ((akhir – awal) div s + 1) Contoh : Berapa banyak langkah dari FOR i:= j TO n STEP 3 x := x + i y := y + j
Contoh : Berapa banyak langkah dari FOR i = 0,5 TO 7,1 STEP 0,3 x := x + i y := y + j
TEKNIK ITERATIF & REKURSIF teknik pembuatan algoritma dengan pemanggilan procedure beberapa kali atau hingga suatu kondisi tertentu terpenuhi Contoh Teknik Iteratif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n, adalah sebagai berikut :
Function FAK (n : integer) : integer FAK=1 For i = 1 TO n FAK = FAK Function FAK (n : integer) : integer FAK=1 For i = 1 TO n FAK = FAK * i NEXT i END FAK
Gambaran jalannya proses algoritma tersebut adalah sebagai berikut : Misal n = 5, maka : FAK = 1, kemudian i FAK 1 1*1 = 1 2 1*2 = 2 3 2*3 = 6 4 6*4 = 24 5 24*5= 120
Contoh : BARISAN BILANGAN FIBBONACI → 1, 1, 2, 3, 5, 8, 13, 21, . . . Teknik Iteratif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut :
Set x, y, n, i, f : integer x ← 1 ; y ← 1 If n 〉 2 then begin for i ← 3 to n do F ← x + y x ← y y ← F end else F ← x Write(F) End
Gambaran jalannya proses algoritma tersebut adalah sebagai berikut : Misal n = 5, maka : x=1, y=1, kemudian i F x y 3 1+1=2 1 2 4 1+2=3 5 2+3=5
TEKNIK REKURSIF Teknik Rekursif merupakan salah satu cara pembuatan algoritma dengan pemanggilan procedure atau function yang sama Contoh : Teknik Rekursif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n, adalah sebagai berikut :
Function FAK (n : integer) : integer If n := 0 then FAK := 1 Else FAK := n * FAK(n-1) Gambaran jalannya proses algoritma tersebut adalah sebagai berikut : Misal n = 5, maka :
Contoh : BARISAN BILANGAN FIBBONACI → 1, 1, 2, 3, 5, 8, 13, 21, . . . Teknik Rekursif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut : Procedure F(n : integer) : integer If n ≤ 2 then F(n) = 1 else F(n) = F(n-1) + F(n-2) Endif End
Gambaran jalannya proses algoritma tersebut adalah sebagai berikut : Misal n = 5, maka :
Perbedaan Antara Teknik Iteratif dan Rekursif : 1.Tidak ada variabel lokal baru 2.Program tidak sederhana REKURSIF 1.Ada variabel lokal baru 2.Program menjadi lebih sederhana
Permainan menara hanoi latihan : Contoh paling umum dari penggunaan teknik rekursif adalah pada permainan menara Hanoi. Berdasarkan legenda, pertama kali dimainkan secara manual oleh seorang pendeta Budha di Hanoi, sehingga permainan ini disebut Menara Hanoi. Dalam permainan ini, akan dipindahkan sejumlah piringan yang tidak sama besarnya dari satu tonggak ke tonggak lainnya, dengan diperbolehkan menggunakan (melewati) sebuah tonggak bantuan. Aturan permainannya adalah semua piringan pada tonggak A akan dipindahkan ke tonggak C (dapat dengan melewati tonggak bantuan B), dengan ketentuan bahwa pemindahan piringan dilakukan satu per satu dan piringan yang lebih besar tidak boleh diletakan di atas piringan yang lebih kecil. Untuk jelasnya lihat gambar berikut :