30
MATERI 6 MATERI 6 REPETITION / PERULANGAN REPETITION / PERULANGAN

Materi 5a - Repetition-perulangan

Embed Size (px)

Citation preview

Page 1: Materi 5a - Repetition-perulangan

MATERI 6MATERI 6

REPETITION / REPETITION / PERULANGANPERULANGAN

Page 2: Materi 5a - Repetition-perulangan

PendahuluanPendahuluan

Penggunaan instruksi repetisi bersifat Penggunaan instruksi repetisi bersifat meng-hemat penulisan dan membuat meng-hemat penulisan dan membuat struktur logika dari suatu program menjadi struktur logika dari suatu program menjadi lebih sederhana dan jelas sehingga lebih sederhana dan jelas sehingga mudah dipahami, dimodifikasi bilamana mudah dipahami, dimodifikasi bilamana diperlukan.diperlukan.

Page 3: Materi 5a - Repetition-perulangan

Perulangan/Repetisi SederhanaPerulangan/Repetisi Sederhana

Perhatikan pola berikut :Perhatikan pola berikut :

******************Pola tersebut diwujudkan dengan perintah :Pola tersebut diwujudkan dengan perintah :

NL; p*;p*;p*;NL; p*;p*;p*; NL; p*;p*;p*;NL; p*;p*;p*; NL; p*;p*;p*NL; p*;p*;p*

atau atau def r3(p) = p();p();p() enddefdef r3(p) = p();p();p() enddefdef tiga() = NL; p*;p*;p* enddefdef tiga() = NL; p*;p*;p* enddefr3(tiga) r3(tiga)

Page 4: Materi 5a - Repetition-perulangan

Perulangan SederhanaPerulangan Sederhana

Prosedur tersebut meskipun cukup baik Prosedur tersebut meskipun cukup baik tetapi tidak menolong untuk mencetak tetapi tidak menolong untuk mencetak bujursangkar dengan ukuran yang berbeda-bujursangkar dengan ukuran yang berbeda-beda, misalkan 4x4, 2x2 dan seterusnya. beda, misalkan 4x4, 2x2 dan seterusnya.

Penggunaan perulangan/repetisi akan Penggunaan perulangan/repetisi akan sangat menolong dalam hal-hal seperti ini. sangat menolong dalam hal-hal seperti ini. Salah satu perulangan sederhana dengan Salah satu perulangan sederhana dengan perintah perintah times-dotimes-do sebagai berikut:sebagai berikut:timestimes 3 3 dodo p* p* odod mencetak *** mencetak ***timestimes 4 4 dodo NL; p* NL; p* odod mencetak sekolom mencetak sekolom 4 *4 *

Page 5: Materi 5a - Repetition-perulangan

Perulangan SederhanaPerulangan Sederhana

Jadi, jika ingin menyederhanakan :Jadi, jika ingin menyederhanakan :p*; p*; p*p*; p*; p*

Kita bisa merubahnya menjadi:Kita bisa merubahnya menjadi:timestimes 3 3 dodo p* p* odod

Di mana 3 adalah batasan berapa kali Di mana 3 adalah batasan berapa kali perulangan akan dilakukan, perulangan akan dilakukan, p* adalah perintah yang akan diulang. p* adalah perintah yang akan diulang. Sedangkan Sedangkan timestimes, , dodo, dan , dan odod adalah adalah syntaxsyntax perintah. perintah.

Page 6: Materi 5a - Repetition-perulangan

Perulangan SederhanaPerulangan Sederhana

Syntax perulangan :Syntax perulangan :timestimes F F dodo P P odod

Hal-hal yg perlu diperhatikan adalah :Hal-hal yg perlu diperhatikan adalah : Batasan perulangan (F) tidak boleh diisi Batasan perulangan (F) tidak boleh diisi

dengan angka negatif.dengan angka negatif. Jika F diisi dengan angka nol, maka Jika F diisi dengan angka nol, maka

tidak akan ada perulangan yang tidak akan ada perulangan yang dilakukan.dilakukan.

F bisa diisi dengan sebuah F bisa diisi dengan sebuah persamaan/rumus, misalnya 8-2 atau persamaan/rumus, misalnya 8-2 atau 2+3, selama hasil akhirnya bukan 2+3, selama hasil akhirnya bukan bilangan negatif.bilangan negatif.

Page 7: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam PerulanganPerulanganPerhatikan pola berikut ini :Perhatikan pola berikut ini :

************************

Jika diinginkan mendapatkan bentuk Jika diinginkan mendapatkan bentuk seperti di atas, maka harus melakukan seperti di atas, maka harus melakukan perulangan ke kanan dan perulangan perulangan ke kanan dan perulangan ke bawah.ke bawah.

Page 8: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam PerulanganPerulangan

Perintah yg benar adalah :Perintah yg benar adalah :

timestimes 3 3 dodoNL; NL; timestimes 4 4 dodo p* p* odod

odod

Di mana jika program dijalankan, akan Di mana jika program dijalankan, akan menghasilkan 4 perulangan ke kanan menghasilkan 4 perulangan ke kanan dan 3 perulangan ke bawah (yang dan 3 perulangan ke bawah (yang masing-masing menjalankan 4 masing-masing menjalankan 4 perulangan ke kanan).perulangan ke kanan).

Page 9: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam PerulanganPerulangan Jadi untuk pola 3x3 * dapat Jadi untuk pola 3x3 * dapat

direalisasikan sebagai berikut:direalisasikan sebagai berikut:

timestimes 3 3 dodo

NL; NL; timestimes 3 3 dodo p* p* odod

odod

{program 6.1} {program 6.1}

Page 10: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam PerulanganPerulangan

Perhatikan program berikut:Perhatikan program berikut:

timestimes 3 3 dodo

timestimes 3 3 dodo p* p* odod

od; NLod; NL

Page 11: Materi 5a - Repetition-perulangan

Times-doTimes-do dan dan Formula Bukan KonstantaFormula Bukan Konstanta

Seringkali perulangan bisa bersifat Seringkali perulangan bisa bersifat variabel agar dapat mencetak variabel agar dapat mencetak bujursangkar dengan ukuran yang bujursangkar dengan ukuran yang berbeda. Perhatikan program berbeda. Perhatikan program perulangan dalam bentuk variabel perulangan dalam bentuk variabel berikut:berikut:

timestimes n n dodo

NLNL; ; timestimes m m dodo p* p* odod

od od {program 6.2}{program 6.2}

Page 12: Materi 5a - Repetition-perulangan

Times-doTimes-do dan dan Formula Bukan KonstantaFormula Bukan Konstanta

Kalau Program 6.2 dieksekusi dengan n = Kalau Program 6.2 dieksekusi dengan n = m = 3, maka didapatkan pola 3x3. m = 3, maka didapatkan pola 3x3.

Salah satu cara untuk memberikan nilai Salah satu cara untuk memberikan nilai adalah dengan menggunakan prosedur adalah dengan menggunakan prosedur sebagai berikut:sebagai berikut:

def rect(n,m)def rect(n,m) = = timestimes n n dodo

NL; NL; timestimes m m dodo p* p* odod

odod

enddefenddef ( (Program Program 6.36.3) )

Page 13: Materi 5a - Repetition-perulangan

Penulisan yang terstrukturPenulisan yang terstruktur

Perhatikan program berikut ini :Perhatikan program berikut ini :timestimes 2 2 dodo NL; times 40 NL; times 40 dodo NL; NL; timestimes 20 20 dodo p* p* odod odod odod

Program itu akan membingungkan kita Program itu akan membingungkan kita saat konsentrasi kita melemah. saat konsentrasi kita melemah. Solusinya, gunakan penulisan yang Solusinya, gunakan penulisan yang terstruktur :terstruktur :timestimes 2 2 dodo

NL; NL; timestimes 40 40 dodoNL; NL; timestimes 20 20 dodo p* p* odod

odododod

Page 14: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam SequenceSequence

Perulangan sederhana seperti Perulangan sederhana seperti times-times-dodo adalah suatu instruksi perulangan adalah suatu instruksi perulangan dengan jumlah pengulangan yang dengan jumlah pengulangan yang bersifat tetap sehingga tidak dapat bersifat tetap sehingga tidak dapat untuk menangani semua bentuk untuk menangani semua bentuk perulangan yang ada. perulangan yang ada.

Page 15: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam SequenceSequence Jika ingin mencetak pola berikut ini :Jika ingin mencetak pola berikut ini :

******************************

Maka programnya seperti berikut ini:Maka programnya seperti berikut ini:

NL; p*; (NL; p*; (atau bisa juga ditulis NL; atau bisa juga ditulis NL; timestimes 1 1 dodo p* p* odod

NL; NL; timestimes 2 2 dodo p* p* odod;;NL; NL; timestimes 3 3 dodo p* p* odod;;NL; NL; timestimes 4 4 dodo p* p* odod;;NL; NL; timestimes 5 5 dodo p* p* odod; ; ((Program 6.4Program 6.4))

Page 16: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam SequenceSequence

Namun dapat dilihat bahwa program ini Namun dapat dilihat bahwa program ini mempunyai struktur yang bersifat perulangan di mempunyai struktur yang bersifat perulangan di mana semua baris terdiri dari bentuk sbb:mana semua baris terdiri dari bentuk sbb:

NL; NL; timestimes n n dodo p* p* odod

dengan n mempunyai nilai yang berbeda-beda dengan n mempunyai nilai yang berbeda-beda tetapi meningkat secara berurutan. Dapat tetapi meningkat secara berurutan. Dapat dibuat prosedur sbb:dibuat prosedur sbb:

defdef tn(n) = NL; tn(n) = NL; timestimes n n dodo p* p* odod enddefenddef

tn(1); tn(2); tn(3); tn(4); tn(5) (tn(1); tn(2); tn(3); tn(4); tn(5) (Program 6.5Program 6.5))

Page 17: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam SequenceSequence

Program 6.5 lebih sederhana dari Program Program 6.5 lebih sederhana dari Program 6.4, tetapi belum memanfaatkan struktur 6.4, tetapi belum memanfaatkan struktur perulangan, karena masih terdapat suatu set perulangan, karena masih terdapat suatu set pengulangan <1,2,3,4,5>.pengulangan <1,2,3,4,5>.

Solusinya, dibuatlah bentuk perulangan Solusinya, dibuatlah bentuk perulangan for-for-dodo. Prosedur dalam Program 6.5 dapat . Prosedur dalam Program 6.5 dapat dirubah menjadi sebagai berikut :dirubah menjadi sebagai berikut :

forfor n n runningthroughrunningthrough 1..5 1..5 dodoNL; times n NL; times n dodo p* p* odod

odod ( (Program 6.6Program 6.6))

Catatan : syntax penulisan Catatan : syntax penulisan for-dofor-do untuk tiap-tiap untuk tiap-tiap bahasa pemrograman berbeda, tetapi bahasa pemrograman berbeda, tetapi menggunakan konsep yang sama.menggunakan konsep yang sama.

Page 18: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam SequenceSequence

Program 6.5 digabung dengan Program 6.5 digabung dengan Program 6.6 menjadiProgram 6.6 menjadi

forfor n n rtrt 1..5 1..5 dodo tn(n) tn(n) odod ((Program 6.7Program 6.7))

Page 19: Materi 5a - Repetition-perulangan

Perulangan di dalam Perulangan di dalam SequenceSequenceNilai n yang menunjukkan berapa Nilai n yang menunjukkan berapa banyak perulangan akan dilakukan, banyak perulangan akan dilakukan, dapat digantikan oleh rumus, misalnya dapat digantikan oleh rumus, misalnya ::

ForFor n n rtrt 1..5 1..5 dodo

NL; NL; timestimes 6-n6-n dodo print* print* odod

odod

Page 20: Materi 5a - Repetition-perulangan

For Do yang Menghitung TurunFor Do yang Menghitung Turun

Penggunaan Penggunaan forfor juga mengijinkan juga mengijinkan perhitungan turun <5,4,3,2,1>.perhitungan turun <5,4,3,2,1>.

forfor n n rtrt 5..1 5..1 dodo

NL; NL; timestimes n n dodo p* p* odod

odod ((Program 6.8Program 6.8))

Page 21: Materi 5a - Repetition-perulangan

Hal Penting dalam Hal Penting dalam PerulanganPerulangan

Solusi yang ditawarkan harus masuk Solusi yang ditawarkan harus masuk akal (logis), terstruktur, dan sistematis.akal (logis), terstruktur, dan sistematis.

Cari bagian-bagian program yang ditulis Cari bagian-bagian program yang ditulis berulang-ulang.berulang-ulang.

Buat rumus/formula yang sistematis Buat rumus/formula yang sistematis dan terstruktur untuk mendeskripsikan dan terstruktur untuk mendeskripsikan bagian-bagian yang berulang.bagian-bagian yang berulang.

Jika kita merencanakan sebuah solusi Jika kita merencanakan sebuah solusi program berbasiskan perulangan, ada program berbasiskan perulangan, ada hal-hal yang harus diperhatikan :hal-hal yang harus diperhatikan :

Page 22: Materi 5a - Repetition-perulangan

Merencanakan Solusi Merencanakan Solusi dengan Perulangandengan Perulangan Setiap kali ada persoalan, harus dipilih struktur Setiap kali ada persoalan, harus dipilih struktur

mana yang paling tepat untuk persoalan mana yang paling tepat untuk persoalan tersebut, apakah menggunakan tersebut, apakah menggunakan sequencesequence atau atau perulanganperulangan

Misal:Misal: ************** * ** * * ** * * ** * * ** * * ** * **

Page 23: Materi 5a - Repetition-perulangan

Merencanakan Solusi Merencanakan Solusi dengan Perulangandengan Perulangan

Langkah 1: mencari penggalan-penggalan Langkah 1: mencari penggalan-penggalan urutanurutan– Baris pertama: Baris pertama:

NL; NL; timestimes 7 7 dodo p* p* odod– Baris kedua: Baris kedua:

NL; ps; p*; NL; ps; p*; timestimes 4 4 dodo ps ps odod; p*; p*– Baris ketiga: Baris ketiga:

NL; NL; timestimes 2 2 dodo ps ps odod; p*; ; p*; timestimes 3 3 dodo ps ps odod; p*; p*

– Baris keempat: Baris keempat: NL; NL; timestimes 3 3 dodo ps ps odod; p*; ; p*; timestimes 2 2 dodo ps ps odod; p*; p*

Page 24: Materi 5a - Repetition-perulangan

Merencanakan Solusi Merencanakan Solusi dengan Perulangandengan Perulangan

– Ternyata baris ke-2,3,4 dan 5 dari pola Ternyata baris ke-2,3,4 dan 5 dari pola 7x7 di atas dapat dicetak 7x7 di atas dapat dicetak menggunakan repetisi for.menggunakan repetisi for.

– Namun perhatikan juga bahwa Namun perhatikan juga bahwa program ini bukan suatu repetisi program ini bukan suatu repetisi mutlak melainkan suatu mutlak melainkan suatu sequencesequence (urutan) sebagai berikut:(urutan) sebagai berikut: cetak baris pertama;cetak baris pertama; cetak baris-baris tengah menggunakan for;cetak baris-baris tengah menggunakan for; cetak baris terakhir.cetak baris terakhir.

Page 25: Materi 5a - Repetition-perulangan

Merencanakan Solusi Merencanakan Solusi dengan Perulangandengan Perulangan

Langkah 2: mencari formula yang Langkah 2: mencari formula yang membuat situasi umummembuat situasi umum– Baris-baris tengah dari pola mempunyai Baris-baris tengah dari pola mempunyai

bentuk sbb:bentuk sbb:

NL; NL; timestimes F1 F1 dodo ps ps odod; p*;; p*;

timestimes F2 F2 dodo ps ps odod; p*; p*– Terlihat bahwa untuk baris kedua F1 Terlihat bahwa untuk baris kedua F1

dimulai dari 1 sedangkan F2 mulai dari dimulai dari 1 sedangkan F2 mulai dari 2. Baik F1 dan F2 mempunyai 2. Baik F1 dan F2 mempunyai maksimum 5.maksimum 5.

Page 26: Materi 5a - Repetition-perulangan

Merencanakan Solusi Merencanakan Solusi dengan Perulangandengan Perulangan

Program lengkap menjadi sbb:Program lengkap menjadi sbb:

NL; NL; timestimes 7 7 dodo p* p* odod;;

for i rtfor i rt 1..5 1..5 dodo

NL; NL; times i dotimes i do ps ps odod; p*;; p*;

timestimes 5-i do5-i do ps ps odod; p*; p*

odod

NL; NL; timestimes 6 6 dodo ps ps odod; p* (; p* (Program Program 6. 96. 9))

Page 27: Materi 5a - Repetition-perulangan

Merencanakan Solusi Merencanakan Solusi dengan Perulangandengan Perulangan Untuk menggeneralisasikan program ini Untuk menggeneralisasikan program ini

menjadi nxn segitiga maka 7 dapat diganti menjadi nxn segitiga maka 7 dapat diganti dengan n:dengan n:

defdef segitiga (n) = segitiga (n) = NL; NL; timestimes n n dodo p* p* odod;;forfor i i rtrt 1..n-2 1..n-2 dodo

NL; NL; timestimes i i dodo ps ps odod;p*;;p*;timestimes n-2-i n-2-i dodo ps ps odod; p*; p*

ododNL; NL; timestimes n-1 n-1 dodo ps ps odod; p* ; p*

enddefenddef ((Program 6.10Program 6.10))

Page 28: Materi 5a - Repetition-perulangan

LatihanLatihan Buat pola berikut ini. Jarak antar segitiga Buat pola berikut ini. Jarak antar segitiga

satu spasi.satu spasi.**** **** ******** **** **** *** *** ****** *** *** ** ** **** ** ** * * ** * *

Page 29: Materi 5a - Repetition-perulangan

LatihanLatihan Buat pola berikut ini dengan perulangan!Buat pola berikut ini dengan perulangan!

Page 30: Materi 5a - Repetition-perulangan

Tugas Take Tugas Take HomeHome

Buat perintah dengan perulangan untuk mencetak Buat perintah dengan perulangan untuk mencetak pola:pola:

a) a) b) b)

c) c) d)d) d) d)