Anda di halaman 1dari 19

ALGORITMA

Lecture
Pengulangan
Pengantar[1]

• Salah satu kemampuan komputer yang dapat


dimanfaatkan adalah 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),
komputer akan melakukan pengulangan
dengan setia sesuai dengan perintah yang
diberikan.
2
Pengantar[2]
• Pengulangan harus berhenti, ini yang harus dijamin
oleh pemrogram.
• salah satu sifat algoritma yang harus dipenuhi adalah
terjadi dalam selang waktu terbatas maka
pengulangan yang terus menerus (looping) adalah
algoritma yang salah.
• Pengulangan yang terus menerus harus dapat
dideteksi pemrogram bahkan sebelum program
dieksekusi oleh mesin.

3
Struktur Pengulangan

Pengulangan terdiri dari dua bagian :


• kondisi yang mengakibatkan
pengulangan suatu saat berhenti, yang
dinyatakan oleh sebuah ekspresi logik
baik secara eksplisit maupun implisit
• badan pengulangan, yaitu aksi yang
harus diulang selama kondisi yang
ditentukan untuk pengulangan masih
dipenuhi
4
Struktur Pengulangan
Disamping itu, struktur pengulangan
biasanya disertai dengan bagian :
• inisialisasi, yaitu aksi yang dilakukan
sebelum pengulangan dilakukan
pertama kali.
• terminasi, yaitu aksi yang dilakukan
setelah pengulangan selesai dilakukan

5
Notasi Pengulangan
• Notasi pengulangan adalah salah satu notasi dasar
dalam penulisan algoritma selain analisa kasus.
Notasi pengulangan merupakan sebagian dari skema
pengulangan yang akan dibahas pada bab-bab
berikutnya.

Ada lima macam notasi pengulangan:


• berdasarkan jumlah pengulangan (repeat times)
• berdasarkan kondisi berhenti (repeat until)
• berdasarkan kondisi pengulangan (while do)
• berdasarkan dua aksi (iterate stop)
• berdasarkan pencacah (traversal)

6
Berdasarkan jumlah pengulangan

• Aksi akan diulang sebanyak n kali, dan


bukan urusan pemrogram untuk
mengelola pengulangan tersebut.
• Dengan hanya menyebutkan
pengulangan tersebut,pengulangan pasti
akan berhenti suatu saat.
7
Berdasarkan kondisi berhenti

• Aksi akan dihentikan jika kondisi-berhenti dipenuhi (berharga


true)
• Aksi akan diulang jika kondisi-berhenti belum tercapai.
• Badan pengulangan pada notasi ini (Aksi) minimal akan
dilakukan satu kali karena pada waktu eksekusi pengulangan
yang pertama tidak ada dilakukan test terhadap kondisi-
berhenti.
• Test terhadap kondisi berhenti dilakukan setelah Aksi
dilaksanakan..

8
Berdasarkan kondisi pengulangan

• Aksi akan dilakukan selama kondisi-pengulangan masih


dipenuhi (berharga true).
• Badan pengulangan (Aksi) pada notasi ini mungkin tidak akan
pernah dilakukan, karena sebelum aksi yang pertama
dieksekusi dilakukan test terhadap kondisi berhenti.
• Test terhadap kondisi-pengulangan dilakukan setiap kali
sebelum Aksi dilaksanakan.
• Pengulangan ini berpotensi untuk menimbulkan aksi "kosong"
(tidak pernah melakukan apa-apa karena pada test yang
pertama, kondisi-pengulangan tidak dipenuhi (berharga false).

9
Berdasarkan dua aksi(iterate stop)

iterate
Aksi-1
stop (kondisi-berhenti)
Aksi-2
{ Kondisi berhenti dicapai di titik program
ini}
10
Berdasarkan dua aksi(iterate stop)
• Pengulangan ini seolah-olah adalah "gabungan“
pengulangan kedua dan ketiga
• Mekanisme :
1.Secara otomatis Aksi-1 dieksekusi
2.Kemudian test terhadap kondisi berhenti
3.Tergantung kondisi berhenti :
– Aksi-2 akan diaktifkan dan kemudian Aksi-1 yang
berikutnya diulang, atau
– pengulangan dihentikan karena efek neto dari Aksi-1
menghasilkan kondisi berhenti
• Pengulangan ini berguna untuk kasus-kasus dimana
Aksi-2 merupakan hal yang harus dilakukan
tergantung dari hasil Aksi-1
11
Berdasarkan pencacah (traversal)
nama-pencacah traversal [range harga]
Aksi

{ Catatan : nama--pencacah harus suatu type


yang terdefinisi suksesor dan predesesornya,
setelah pelaksanaan pengulangan selesai,
harga yang tersimpan pada nama-pencacah
tidak terdefinisi : jika hendak dipakai, harus
didefinisikan kembali }

12
Berdasarkan pencacah (traversal)
• Pemrogram tidak perlu melakukan operasi terhadap
suksesor/predesesor karena setiap kali selesai
melakukan Aksi, otomatis mesin akan melakukan
operasi mendapatkan suksesor dari harga yang
sedang berlaku saat itu
• Pengulangan otomatis berhenti setelah penjelajahan
terhadap nama-pencacah sudah mencakup semua
harga yang terdefinisi dalam range harga
• Pengulangan ini biasanya dipakai jika harga yang
tersimpan dalam nama-pencacah ingin dimanfaatkan
dalam Aksi, namun tidak boleh DIUBAH karena akan
mengacaukan urutan eksekusi yang dilakukan.

13
Penutup
• Suatu bentuk pengulangan dapat
"diterjemahkan" menjadi bentuk yang lain
dengan notasi algoritmik yang tersedia
• Instruksi pengulangan tidak dapat berdiri
sendiri, dan harus disertai dengan instruksi-
instruksi lain sebelum dan sesudah
pengulangan
• Persoalannya adalah memilih bentuk
pengulangan yang benar dan tepat
• Tidak semua bahasa pemrograman yang ada
menyediakan semua bentuk pengulangan di
atas
14
Contoh algoritma[1]
Program TULISBIL1
{Dibaca N >= 0, Menuliskan 1,2,3,… N berderet ke bawah, dengan
bentuk repeat..N times}

Kamus :
i : integer {bilangan yang akan ditulis}

Algoritma :
input (N)
i  1
repeat N times
output (i)
i  i + 1
15
Contoh algoritma[2]
Program TULISBIL2
{Dibaca N >= 0, Menuliskan 1,2,3,… N berderet ke bawah, dengan
bentuk repeat..until…}
Kamus :
i : integer {bilangan yang akan ditulis}

Algoritma :
input (N)
i  1
repeat
output (i)
i  i + 1
until (i>N)
16
Contoh algoritma[3]
Program TULISBIL3
{Dibaca N >= 0, Menuliskan 1,2,3,… N berderet ke bawah, dengan
bentuk while…do}

Kamus :
i : integer {bilangan yang akan ditulis}
Algoritma :
input (N)
i  1
while i <= N do
output (i)
i  i + 1
{ i > N}
17
Contoh algoritma[4]
Program TULISBIL4
{Dibaca N >= 0, Menuliskan 1,2,3,… N berderet ke bawah,
dengan bentuk traversal}

Kamus :
i : integer {bilangan yang akan ditulis}

Algoritma :
input (N)
i traversal [1..N]
output (i)

18
Contoh algoritma[5]

Anda mungkin juga menyukai