Chapter 4 Counting Repetition 4.1 Pengantar Dalam menulis program, beberapa perintah harus dituliskan berulangkali sesuai dengan hasil yang diharapkan. Misalnya, jika ingin menampilkan 100 karakter ’*’ di layar monitor maka perintah print* harus ditulis 100 kali. Cara ini tentu saja sangat merugikan dan tidak efisien. Solusi yang dapat digunakan adalah dengan menggunakan loop, repetisi atau perulangan. Dengan demikian maka perintah dapat dituliskan satu kali saja dengan menambahikan instruksi supaya komputer mengerjakannya berkali-kali. 4.2 Repetisi Sederhana Sintaks dasar yang digunakan untuk menuliskan repetisi adalah : times F do P od Keterangan : times f do p od
= = = = =
instruksi repetisi jumlah pengulangan awal pengulangan perintah yang diulang akhir pengulangan
Untuk menampilkan 100 bintang di layar, dapat dilakukan dengan repetisi yang sederhana seperti pada program 4.1 times 100 do print* od program 4.1
Komputer akan mengerjakan yang tertulis di antara do dan od sebanyak 100 kali sesuai dengan diinstruksikan padanya. 4.3 Nested Repetition atau Repetisi Bersarang Repetisi bersarang adalah repetisi yang dituliskan di dalam repetisi yang lain. Contoh tampilan hasil program yang dapat dipakai untuk memahami repetisi bersarang dapat dilihat pada gambar 4.1. *** *** *** Gambar 4.1
IT 132 Dasar-Dasar Pemrograman
2
Dengan menggunakan sequence : NL;print*;print*;print*; NL;print*;print*;print*; NL;print*;print*;print*; Program 4.2
Baris 1,2 dan 3 pada program 4.2 adalah sama sehingga program 4.2 dapat dimodifikasi menggunakan repetisi seperti pada program 4.3. times 3 do NL; print*;print*;print*; od Program 4.3
Jika diperhatikan dengan teliti maka dapat terlihat bahwa print* dipanggil secara berurut sebanyak 3 kali. Dengan demikian bagian ini dapat ditulis dengan menggunakan repetisi juga seperti pada program 4.4. times 3 do NL; times 3 do print* od od Program 4.4
Program seperti program 4.4 ini menggunakan repetisi bersarang, dimana terdapat repetisi di dalam repetisi lainnya. Bagian yang dicetak tebal merupakan repetisi yang menjadi bagian dari repetisi lainnya. 4.4 Non Constant Repetition Repetisi dapat dituliskan dengan lebih fleksibel, dimana jumlah pengulangan dapat berubah-ubah sesuai dengan kebutuhan. Perhatikan program 4.5 times N do NL; times 3 do print* od od Program 4.5
Pada program 4.5, jumlah baris ditentukan dengan nilai variabel N. Dengan demikian bentuk tampilan dapat berubah-ubah sesuai dengan nilai N yang diberikan. Bentuk program ini lebih efektif jika dituliskan pada suatu definisi seperti pada program 4.6.
http://bepung.net
IT 132 Dasar-Dasar Pemrograman
3
def bintang3(N) = times N do NL; times N do print* od od enddef bintang3(3); bintang3(7) Program 4.6
Pemanggilan bintang3(3) akan memberikan hasil yang berbeda dengan bintang3(7). Jumlah baris yang akan tercetak sesuai dengan parameter yang diberikan saat definisi bintang3(N) dipanggil. Program ini sudah lebih fleksibel karena dengan menggunakan sebuah definisi sudah dapat menghasilkan tampilan yang berbeda-beda. 4.5 Flexible Repetition Program 4.6 dapat diubah menjadi bentuk yang lebih efisien lagi dengan perubahan sedikit, seperti pada program 4.7. def kotak(N,M) = times N do NL; times M do print* od od enddef kotak(3,5); kotak (7,4) Program 4.7
Pada program 4.7 telah ditambahkan sebuah parameter lagi, dengan nama M, yang menentukan jumlah bintang yang tercetak pada tiap barisnya. Pemanggilan kotak(3,5) akan menghasilkan 3 baris bintang dengan masing-masing baris memiliki 5 bintang. Begitu juga dengan pemanggilan kotak(7,4) akan menghasilkan 7 baris bintang dengan 4 bintang pada tiap barisnya. 4.6 Repetition pada Sequence Repetisi yang fleksibel dengan jumlah pengulangan yang dapat ditentukan masih kurang cukup untuk menyelesaikan banyak masalah. Contoh tampilan yang dapat digunakan untuk mengembangkan konset repetisi adalah dengan melihat gambar 4.2. * ** *** **** Gambar 4.2
http://bepung.net
IT 132 Dasar-Dasar Pemrograman
4
Untuk menghasilkan tampilan seperti gambar 4.2, dapat digunakan sequence seperti pada program 4.8 NL;print*; NL;times 2 NL;times 3 NL;times 4 NL;times 5
do do do do
print* print* print* print*
od; od; od; od;
Program 4.8
Baris pertama dari program 4.8 dapat diubah menjadi bentuk yang lebih mirip dengan baris lainnya, seperti pada program 4.9 NL;times NL;times NL;times NL;times NL;times
1 2 3 4 5
do do do do do
print* print* print* print* print*
od; od; od; od; od;
Program 4.9
Perbedaan dari tiap baris terletak pada jumlah pengulangan yang terjadi. Dengan memanfaatkan definisi dan parameter maka program dapat dikempbankan seperti pada program 4.10 def tn(n) = NL;times n do print* od; enddef tn(1); tn(2); tn(3); tn(4); tn(5) Program 4.10
Program 4.10 sudah memadai namun masih dapat dikembangkan lagi menjadi bentuk yang lebih sederhana dengan menggunakan bentuk repetisi yang lebih fleksibel. 4.7 Sequenced Repetition Dengan memperhatikan kembali program 4.9 semua perintah yang ada dapat dituliskan sekali saja dengan menentukan jumlah pengulangan yang dilakukan adalah 1 kali, 2 kali, 3 kali 4 kali dan 5 kali atau dapat dituliskan pengulangan dilakukan masing-masing sebanyak 1 kali sampai 5 kali. Perintah repetisi yang dapat menjawab kebutuhan ini adalah repetisi menggunakan for yang dapat dituliskan seperti pada program 4.11 yang merupakan pengembangan dari program 4.9. for n runningthrough 1..5 do NL; times n do print* od Program 4.10
Nilai n akan terisi secara berurutan mulai dari 1, 2, 3, 4 dan 5. Dengan demikian maka print* akan dilakukan sebanyak n, yaitu berurutan dari 1 sampai 5. kata kunci runningthrough dapat disingkat menjadi rt. http://bepung.net
IT 132 Dasar-Dasar Pemrograman
5
Bentuk lain dari program 4.10 dapat dituliskan seperti pada program 4.11 dengan makna dan hasil yang sama. for n rt <1,2,3,4,5> do NL; times n do print* od Program 4.11
Contoh program lain yang juga menggunakan for. for x rt ”gutnite” do printchar(x) od Program 4.12
for I rt
do I od Program 4.13
4.8 Counting Backward Untuk repetisi yang melakukan penghitungan terbalik, dari besak ke kecil, dapat dituliskan seperti pada program 4.14, program 4.15 dengan konsep yang sama dengan repetisi lainnya. for n rt <5,4,3,2,1> do NL; times n do print* od Program 4.14
Program 4.14 menuliskan sequence bilangan secara terbalik. for n runningbackthrough <1,2,3,4,5> do NL; times n do print* od Program 4.15
Pada program 4.15 meniuliskan sequence bilangan secara urut dari 1 sampai 5 namung menggunakan runningbackthourh (disingkat rbt) sehingga nilai n akan terisi secara urut dari 5 sampai 1. Begitu pula dengan program 4.16 for n rbt 1..5 do NL; times n do print* od Program 4.16
4.9 Contoh Kasus Sebagai latihan, cobalah untuk membuat menghasilkan tempilan seperti pada gambar4.3.
program
yang
http://bepung.net
IT 132 Dasar-Dasar Pemrograman
6
****** * * * * * * ** * Gambar 4.3
4.10 Repetition pada Pascal Penulisan repetisi pada pascal dapat dilakukan keyword for. Siktaks dasar dari perintah for adalah :
menggunakan
for := to do begin end Program 4.17 dapat dilihat dan dipelajari sebagai contoh. Program ini merupakan implementasi dari program 4.7. uses crt; procedure bintang(n,m : integer); var a,b : integer; begin for a:=1 to n do begin writeln; for b:=1 to m do write(‘*’); end; end; BEGIN bintang(4,5); END. Program 4.17
Program 4.18 merupakan implementasi dari program 4.6.
http://bepung.net
IT 132 Dasar-Dasar Pemrograman
7
uses crt; procedure segi3(n : integer); var a,b : integer; begin for a:=1 to n do begin writeln; for b:=1 to a do write(‘*’); end; end; BEGIN segi3(9); END. Program 4.18
4.11 Repetition Pada Bahasa C++ Pada bahasa C++, program 4.17 dapat dituliskan seperti pada program 4.19, sedangkan program 4.18 seperti pada program 4.20. include <stdio.h> void bintang(int n, int m) { int a,b; for (a=1;a <= n;a++) { printf(”\n”); for (b=1;b <= m;b++) printf(”*”); } } void main() { bintang(4,5); } Program 4.19
include <stdio.h> void segi3(int n) { int a,b; for (a=1;a <= n;a++) { printf(”\n”); for (b=1;b <= a; b++) printf(”*”); } } void main() { segi3(9); }
http://bepung.net