Struktur Perulangan

4.1. KEGIATAN BELAJAR 1 PERULANGAN DENGAN KONDISI DIAWAL 

4.1.1.  Tujuan pembelajaran 
           Siswa memahami konsep dan struktur perulangan dengan kondisi di awal.

4.1.2.  Aktivitas Belajar Siswa
4.1.2.1.  Mengamati 


Coba perhatikan contoh kode program berikut.











4.1.2.2.  Menanya 

Dari ketiga contoh kode program di atas, buat pertanyaan yang berkaitan dengannya, misalkan:
1. Apakah yang membedakan 3 souce code di atas?
2. Bagaimana cara kerja dari 3 kode program di atas?
3. Lalu, apa hasil eksekusi dari 3 kode program di atas?
4. Ketiga kode programdi atas merupakan contoh dari perulangan dengan kondisi di awal,
    lalu kapan kita akan menggunakannya?

4.1.2.3. Mengumpulkan Informasi/Mencoba

                    Jika  kita  lihat  sekilas,  maka  kita  bisa  menyimpulkan  bahwa  kode  program  pertama  dan kedua memiliki struktur yang hampir sama, yang membedakan hanya yang pertama menggunakan pernyataan WHILE-DO, sedangkan  yang kedua menggunakan  pernyataan  FOR-DO.  Bagaimana dengan  yang ketiga?  Yang ketiga menunjukkan  sebuah  contoh  penggunaan  dari  sebuah  nested loops (perulangan bersarang/ perulangan di dalam perulangan). Bagaimana carakerja, hasil, dan kapan ketiga kode program (pernyataan perulangan) tersebut di gunakan? Akan kita bahas pada pembahasan berikut ini.
                     Sebagaimana  yang  pernah  dijelaskan  pada  semster  lalu  bahwa  struktur  perulangan
merupakan  struktur  yang  tidak  terpisahkan  dengan  algoritma  dan  pemrograman.  Struktur
perulangan memungkinkan program untuk melakukan serangkaian perintah secara berulang-ulang.
Dan untuk memenuhi syarat bahwa algoritma harus finite (terbatas) maka dalam perulangan pasti
ada titik pemberhentian. Jika ternyata dalam sebuah kasus perulangan tidak mencapai titik berhenti
maka dapat dikatakan algoritma tersebut salah.
                    Titik pemberhentian dapat diberikan dengan beberapa cara, sebagai berikut.
1. Pemberhentian dengan syarat
    Pemberhentian dengan syarat artinya ada sebuah kondisi yang akan menyebabkan perulangan
    berhenti. Pemberian syarat ini juga dapat dilakukan dengan dua cara, yaitu:

a. Syarat diberikan di awal, di mana selama persayaratan dipenuhi maka dilakuakn serangkain
     perintah
b. Syarat diberikan di akhir, di mana proses akan diulang-ulang sampai syarat dipenuhi.
    Perbedaan antara a dan b adalah ketika syarat diberikan di awal, maka selama persayaratan
    itu  dipenuhi  ,  maka  perulangan  dilakukan.  Jika  kondisi  sudah  tidak  dipenuhi maka  berhenti.
    Sedangakan  pada  kasus  syarat  di  akhir,  dikerjakan  serangkaian  langkah.  Setiap  selesai
    rangkaian  langkah  diperiksa  apakah  kondisi  sudah  dicapai,  jika  belum  maka  proses  diulangi
    lagi. Struktur yang sesuai dengan perulangan dengan kondisi di awal adalah struktur WHILE
    DO sedangkan untuk kondisi di akhir adalah dengan REPEAT UNTIL.
2. Pemberhentian dengan pencacah
        Pemberhentian dengan pencacah, artinya dari awal sudah ditentukan bahwa perulangan  akan
dilakukan berapa kali. Pencacah ini juga ada dua macam cara, yaitu
a. Pencacah naik
    Pemberhentian  dengan  pencacah  naik  artinya  untuk  suatu  pencacah,  misalkan  i  dari  1
    sampai 100 lakukan rangkain langkah x. Artinya langkah tersebut akan diulangisebanyak
    seratus kali. Dalam pascal untuk kasus pencacah naik digunakan struktur FOR TO DO.
b. Pencacah turun
    Pemberhentian  dengan  pencacah  turun  ,  artinya  sebaliknya  untuk  suatu  pencacah  i  dari
    100  sampai  1  lakukan  rangkaian  langkah  x,  artinya  langkah  x  akan  diulangi  sebanyak
    seratus kali. Dalam pascal untuk kasus pencacah naik digunakan struktur FOR DOWNTO
    DO

Perulangan dengan struktur WHILE DO

Dalam berbagai bahasa Pascal dikenal struktur WHILE DO, yang berarti selama memenuhi
kriteri/kondisi  tertentu,  maka  dilakukan  serangkaian  proses.  Struktur  ini  dapat  diterapkan  pada
contoh di atas sebagai berikut.
Bentuk Umum:




Atau jika lebih dari satu pernyataan dapat dituliskan








Perhatikan Flow Diagram berikut:

Untuk lebih jelasnya, perhatikan contoh kode program berikut, beserta dengan hasilnya.

Contoh 1

























Perulangan dengan struktur FOR DO

Bentuk umum :


Contoh 3
Buatlah program untuk menentukan suku terbesar yang kurang dari n  dari barisan
2, 4, 8, 16, ....
Jawab:
Masalah ini kurang cocok diselesaikan dengan struktur FOR DO karena banyaknya perulangan tidak diketahui dengan pasti sehingga sulit mementukan ioterator dan nilai sentinelnya. Dengan menggunakan struktur While Do dapat diperoleh solusi sebagai berikut.
Program Barisan2; var n,suku:integer; begin
     readln(n);      suku:=2;
          While suku<=n do
                        suku:=suku*2;
     suku:=suku/2;      writeln(‘suku ke- ‘, n,’ adalah : ’, suku); end.

Misalkan n adalah 50, kita dapat menelusuri program di atas sebagai berikut.
Suku=2, periksa apakah suku<50? Ya, maka suku=suku*2=4
Suku=4, periksa apakah suku<50? Ya, maka suku=suku*2=8
Suku=8, periksa apakah suku<50? Ya, maka suku=suku*2=16
Suku=16, periksa apakah suku<50? Ya, maka suku=suku*2=32
Suku=32, periksa apakah suku<50? Ya, maka suku=suku*2=64
Suku=64, periksa apakah suku<50? STOP, lihat nilai terakhir suku adalah 64, karena ketika suku=32, pasti masih tetap dikalikan 2, sehigga setelah iterasi berakhir maka perlu dibagi lagi dengan 2.

Nested Loops (perulangan bersarang)

Dalam beberapa permasalahan sering dijumpai perulangan di dalam perulangan. Bisa menggunakan berbagai struktur WHILE DO atau FOR DO atau kombinasi dari struktur perulangan yang berbeda-beda.

for variabel1:=nilai_awal1 to [downto] nilai_akhir1 do begin
   for variabel2:=nilai_awal2 to [downto] nilai_akhir2 do    begin          statement;    end; end;  

Sedangkan bentuk umum untuk perulangan bersarang WHILE DO adalah sebagai berikut
while(kondisi1)do begin
   while(kondisi2) do    begin       statement(s);    end;    statement(s);
end;

Untuk lebih jelasnya, perhatikan contoh kode program berikut, beserta dengan hasilnya.
program NestedLoops; {* contoh aplikasi mencari nilai prima *} var
   i, j:integer; begin
   for i := 1 to 5 do    begin
      for j := 1 to i do           write('*');       writeln;    end; end.
Output:
*
**
***
****
*****

Dalam program di atas diulangai dari i=1 sampai 5.
i=1, ulangi dari j=1 sampai 1 tuliskan ‘*’, kemudian ganti baris (writeln)
i=2, ulangi dari j=1 sampai 2 tuliskan ‘*’ sehingga ada dua ‘*’ , kemudian ganti baris (writeln) i=3, ulangi dari j=1 sampai 3 tuliskan ‘*’ sehingga ada tiga ‘*’ , kemudian ganti baris (writeln) i=4, ulangi dari j=1 sampai 4 tuliskan ‘*’ sehingga ada empat ‘*’ , kemudian ganti baris (writeln) i=5, ulangi dari j=1 sampai 5 tuliskan ‘*’ sehingga ada lima ‘*’ , kemudian ganti baris (writeln) 

          4.1.2.3.     Mencoba/Mengumpulkan Informasi

Lembar Kegiatan Siswa
1. Diberikan algoritma dalam pseudocode sebagai berikut.
Algoritma Kelipatan5

Variabel i, a:integer i =1 {i sebagai iterator} a=5 WHILE (a< 50) DO        WRITE a         i=i+1         a=5*i END

a.      Ubahlah dalam bentuk kode Program menggunakan Pascal
b.      Tuliskan output dari program yang kalian buat.
2.    Buatlah program untuk menentukan suku ke-n dari barisan:
2, 5, 8, 11, ....
Dengan struktur WHILE DO dan FOR DO.
3.    Buatlah program untuk menampilkan data seperti berikut:
1     2     3     4     5
1     2     3     4
1     2     3
1     2
1
1
1     2
1     2     3
1     2     3     4
1     2     3     4     5

                                  
(a)                              (b) 

4.2. KEGIATAN BELAJAR 2 PERULANGAN DENGAN KONDISI DI AKHIR

4.2.1. Tujuan pembelajaran
Dengan Kegiatan Belajar ini diharapkan siswa mampu memahami perulangan dengan kondisi berada di akhir dan menerapkannya uuntuk menyelesaaikan masalah pemrograman.
4.2.2. Aktivitas belajar siswa 4.2.2.1. Mengamati
Perhatikan Souce code berikut
PROGRAM REPEATUNTIL var digit := 1; begin repeat
write (digit); digit := digit + 1
until digit > 5 ;
end.

Program REPEATUNTIL
var    a: integer; begin
   a := 10;
   (* repeat until loop execution *)    repeat
      writeln(‘nilai dari a adalah ', a);       a := a + 1    until a = 20; end.
Kedua contoh di atas adalah contoh kode program dari struktur kontrol yang akan dibahas selanjutnya
          4.2.2.1.     Menanya
Dari kedua contoh kode program di atas, buat pertanyaan yang berkaitan dengan keduanya, misalkan:
1.    Apakah hasil/output dari kode program diatas?
2.    Bagaimana proses dari kode program diatas sehingga menghasilkan hasil/output tersebut?
Hasil/output, serta proses dari kode program di atas akan di jelaskan pada pembahasan berikut ini

4.2.2.3. Mengumpulkan Informasi 
Sebagaimana yang dijelaskan pada KB sebelumnya bahwa perulangan dapat dilakukan dengan menyatakan kondisi di akhir. Berbeda dengan kondisi di awal, di mana selama syarat (kondisi) dipenuhi maka perintah dijalankan,  pada kondisi di akhir, perintah dijalankan sampai memenuhi kondisi yang diinginkan. Struktur yang digunakan adalah struktur Repeat Until.

REPEAT UNTIL

Digunakan untuk mengulang (repeat) statement atau blok statement sampai (until) kondisi
yang diseleksi di Until tidak terpenuhi.
Bentuk Umum : 
REPEAT 

       Pernyataan; UNTIL (kondisi)


Contoh 1.
Kode Program
Var digit := 1; begin repeat
     writeln (digit);      digit := digit + 1
until digit > 5 ;
end.
Output:
1
2
3
4
5

Program di atas diawali dengan nilai awal digit=1, kemudian dilakukan perintah 
writeln (digit);
                             digit := digit + 1
hingga nilai digit>5.

Contoh 2.
Kode program:
var    a: integer; begin
   a := 10;       repeat          writeln(‘nilai dari a adalah ', a);          a := a + 2    until a = 20; end.
Hasil:
nilai dari a adalah 10 nilai dari a adalah 12 nilai dari a adalah 14 nilai dari a adalah 16 nilai dari a adalah 18 nilai dari a adalah 20
Bagaimana jika kondisi diganti dengan a=21? Smaapi kapanpun syarat ini tidak akan dipenuhi karena nilai dari a pasti genap, sedangkan 21 ganjil. Dengan demikian terjadi perulangan terus menerus.

WHILE DO dengan Perulangan dengan kondisi di akhir yaitu REPEAT UNTIL, adalah Perbedaan antara struktur REPEAT-UNTIL dengan WHILE-DO adalah sebagai berikut :
1)    Paling sedikit statement-statement di dalam perulangan REPEAT-UNTIL diproses sekali, karena seleksi kondisi ada pada statement Until yang terletak dibawah. Sedang pada struktur WHILE-DO paling sedikit dikerjakan nol kali, karena seleksi kondisi ada pada statement While yang terletak diatas, sehingga kalau kondisi sudah tidak terpenuhi, maka tidak akan masuk ke dalam lingkungan perulangan.
2)    Pada REPEAT-UNTIL dapat tidak dipergunakan blok statement (tidak diperlukan Begin dan End untuk menunjukkan batas perulangannya), karena batas perulangannya sudah ditunjukkan oleh Repeat sampai dengan Until (Repeat dan Until sebagai pengganti Begin dan End).

4.3. KEGIATAN BELAJAR 3 PERULANGAN DENGAN KONDISI DIINPUTKAN USER 

4.3.1. Tujuan Pembelajaran
           Siswa memahami perulangan dengan kondisi diinputkan user dan menggunakannya untuk menyelesaikan masalah pemrograman.
4.3.2. Aktivitas Kegiatan Belajar
Dalam bab ini, hampir sama dengan bab-bab sebelumnya. Tetapi, yang membedakan adalah dalam bab ini, kita akan belajar bagaimana caranya kita akan menggunakan perulangan dengan kondisi sesuai dengan apa yang akan di inputkan oleh si user. Sehingga nilai yang akan di hasilkan pun akan dinamis atau menyesuaikan.
4.3.2.1. Mengamati
Perhatikan Program berikut.
Program UlangVolumeBalok;
Uses crt;
Var     p,l,t, V:integer;            pilihan:char;  
Begin
      Clrscr;
      Repeat
Readln(p);
Readln(l);
Readln(t); V:= p*l*t; writeln (v);
Write  (‘ingin menghitung lagi  y/n’);
Readln (pilihan); until (pilihan==”n”); readln; End.
Program  ini diambil dari semester yang lalu mengenai algoritma perulangan dengan kondisi dari user.

4.3.2.2. Menanya
Dari contoh diatas, buat pertanyaan seperti contoh berikut.
1.    Tentukan apa maksud dari program  atas!
2.    Kapan program berhenti?
3.    Variabel apakah yang menjadi iterator?
4.    Berapa kali user bisa menghitung volume balok?

4.3.2.3. Mencoba/Mengumpulkan Informasi
Aplikasi pemroograman dalam kehidupan nyata, khususnya yang terkait dengan struktur perulangan, memerlukan syarat yang diinputkan oleh pengguna.  Sebagai contoh, dalam sebuah aplikasi kasir, ketika melayani pembeli, seorang kasir akan memasukkan data barang-barang yang dibeli dengan barcode reader, hingga akhirnya kasir akan mengklik sebuah tombol untuk menghitung total belanjaan. Proses memasukkan data dari barang pertama, kedua, dan ke barangbarang berikutnya, adalah suatu bentuk perulangan. Dan perulangan ini akan berhenti hingga akhrinya kasir mengeklik tombol untuk menghitung total belanjaan.
Contoh lain misalkan dalam sebuah video game dengan koin, ketika seorang anak memasukkan koin, kemudian bermain dan akhirnya terjadi game over. Berikutnya biasanya, video game akan menampilkan hitungan mundur menunggu anak untuk memasukkan koin berikutnya agar permainan dapat dilanjutkan. Bentuk hitugan mundur ini juga menggunakan perulangan, dan akan berhenti perulangan ini untuk dua kemungkinan, si anak memasukkan koin atau perhitungan mundur selesai dan akhirnya masuk ke menu awal game kembali.
Kondisi yang diinputkan dari user bisa diperoleh sebelum perulangan atau di dalam perulangan itu sendiri. Contoh di atas adalah kondisi dimasukkan oleh user di dalam perulangan itu sendiri. Contoh pengambilan kondisi sebelum perulangan adalah menentukan suku ke-n dari sebuah barisan. Misalkan menetukan suku ke n dari barisan 1,2,3,5,8, .... Nilai n diperoleh dengan menerima masukan dari user sebelum perulangan dilakukan.
Diskusikan LKS berikut agar lebih jelas.


Komentar