Powered By Blogger

Selasa, 16 April 2013

Pengulangan (Looping)



Perulangan adalah suatu proses terhadap hal yang sama yang diulang beberapa kali sampai suatu kondisi atau batas tertentu terpenuhi. Untuk memberikan gambaran mengenai perulangan dapat disimak pada kasus berikut ini.
Terdapat sebuah permasalahan bagaimana mencetak bilangan bulat dari 1 sampai dengan 10. Hasil output yang diinginkan adalah 1 2 3 4 5 6 7 8 9 10.
Langkah-langkah untuk menyelesakan permasalahan diatas dapat dilakuakan sebagai berikut:
1.      Menentukan nilai awal yaitu 1.
2.      Cetakan nilai tersebut sebanyak 10 kali.
3.      Setiap langkah mencetak lakukan penambahan 1 (increament 1).

Algoritma diatas mengandung langkah-langkah yang diulang. Langkah-langkah ini disebut dengan perulangan. Istilah lain dari perulangan adalah looping atau repetition. Didalam bahasa pemrograman pascal perulangan dapat dituliskan  dengan tiga pernyataan yang berbeda. Pernyataan tersebut adalah:
-          for to do
-          while do
-          repeat until
Penjelasan mengenai ketiga pernyataan diatas akan dibahas pada bagian-bagian tersendiri.

1.      Struktur For

Struktur perulangan for merupakan struktur untuk meuliskan perulangkan selama dalam kondisi tertentu. Nilai perulangan sudah ditentukan dengan sebuah nilai awal dan nilai akhir. Nilai awal merupakan nilai yang diberikan untuk memulai suatu instruksi yang berada didalam blok tersebut. Perulangan terhadap pernyataan atau instrukti tersebut akan berhenti jika kondisi akhir yang telah disebut terpenuhi.

Terdapat dua buah jenis pernyataan dengan menggunakan struktur for yaitu pernyataan naik dan pernyataan turun. Perulangan naik dinyatakan dengan pernyataan For…To…do, sedangkan untuk perulangan turun dapat dinyatakan dengan pernyataan For…downto …do.

Pernyataan For…to…do dapat dituliskan dengan sintaks For counter=nilai_awal To nilai_akhir Do aksi/blok aksi dimana nilai_akhir lebih besar dari nilai awal. Untuk pernyataan yang sebaliknya dapat digunakan perintah For..Downto..Do dengan sintaks For counter=nilai_awal downto nilai_akhir do aksi/blok aksi dimana nilai_awal lebih besar dari nilai akhir.

Algoritma berikut adalah tentang mencetak bilangan bulat dari 1 sampai dengan 10 dengan menggunakan perulangan For…To…Do.

Algoritma PerulanganFor1;
Deklarasi
      I:integer
Deskripsi
      mulai
For I ß 1 to 10 do
   Write(i)
End for
Selesai


Program Perulangan dengan for 1
Program perulananFor1;
Uses wincrt;
Var
       I:integer;
Begin
   Writeln(‘Program Perulangan dengan For’);
   For i:=1 to 10 do
     Writeln(i);
End.
Hasil output program
Program Perulangan dengan For
1
2
3
4
5
6
7
8
9
10

Pada kasus diatas, perintah writeln(i) diulang sebanyak sepuluh kali, mulai dari i=1 sampai i=10. Perulangan ini secara otomatis  akan menambahkan counter dengan 1. Sehinggga i akan mengalami increament 1 sampai dengan i =10.

Apabila kasus tersebut dibalik yaitu mengulang penulisan i tetapi i dimulai dari 10 sampa ke 1 maka dapat dilakukan dengan perintah for…downto…do.
Algoritma PerulanganFor2;
Deklarasi
      I:integer
Deskripsi
   Mulai
   For I ß 10 downto 1 do
   Write(i)
   Selesai

Program Perulangan denga for 2
Program perulananFor;
Uses wincrt;
Var
       I:integer;
Begin
   Writeln(‘Program Perulangan dengan For’);
   For i:=10 downto 1 do
   Writeln(i);
End.

Hasil output program:
Program Perulangan dengan For
10
9
8
7
6
5
4
3
2
1

Program diatas akan mencetak nilai i mulai dari 10 sampai dengan 1. I sebagai conter dari perulangan maka secara otomatis akan mengalami pengurangan 1 (decreament) pada setiap langkah perulangan. Pernyataan aksi yang ada pada program diatas hanya terdiri dari satu statemen. Apabila aksi tersebut terdiri dari beberapa statemen, maka penulisannya didalam program pascal harus ditambah dengan penyaaan begin sebelum aksi dan pernyataan end; setelah pernyataan aksi.

Contoh yang lain dapat dilihat pada kasus menghitung nilai rata-rata dari beberapa data yang dimasukan. Perulangan akan dilakukan untuk membaca data dan menjumlahkannya dalam variabel tertentu. Hasil penjumlahan dari data yang dimasukan tersebut akan dihitung rata-ratanya dengan pembagian.

Algoritma rerata1;
Deklarasi
      I,n,jumlah,x:integer
     Rerata:real;
Deskripsi
  Mulai
   Read (n)
   Jumlahß0
   For I ß 1 to n do
      Read(x)
      JumlahßJumlah+x
   End for
   Rerata ßjumlah/n
   Write(rerata)
   Selesai

Program Menghitung rata-rata 1
Program rerata1;
Uses wincrt;
Var
   i,n,x,jumlah:integer;
   Rerata:real;
Begin
Writeln(‘Program Mengitung Rata-rata’);
Write(‘Masukan Jumlah Data=’);
Readln(n);
Jumlah:=0;
For i:=1 to n do
  Begin
   Write(‘Masukan Data ke-‘,I,’=’);
   Readln(x);
   Jumlah:=jumlah+x;
  End;
Rerata:=jumlah/n;
Writeln(‘Rata-rata=’,rerata:5:2);
End.

Hasil Output program
Program Mengitung Rata-rata
Masukan Jumlah Data=5
Masukan Data ke-1=6
Masukan Data ke-2=5
Masukan Data ke-3=8
Masukan Data ke-4=7
Masukan Data ke-5=7
Rata-rata= 6.60

Pada perulangan diatas, aksi tidak hanya terdiri satu satu pernyataan tetapi lebih dari satu pernyataan. Setelah pernyataan for maka perlu ditambahkan pernyataan begin dan pernyataan end setelah akhir blok aksi ditambahkan pernyataan end.


2. While do

Struktur while do merupakan perintah untuk melakukan perulangan selama sebuah kondisi terpenuhi atau bernilai benar. Jika kondisi yang disyaratkan sudah tidak terpenuhi maka perulangan akan berhenti. Proses pengecekan terhadap kondisi akan dilakukan terlbi dahulu sebelum pernyataan yang akan diulang. Oleh karena itu perlu adanya sebuah proses yang dapat mengontrol kondisi agar berhenti.

Perulangan dengan while do lebih fleksibel karena program tidak ditentukan berapa kali perulangan terjadi. Dari kasus mencetak bilangan dari 1 sampai 10 pada bagian sebelumnya dapat juga diselesaikan dengan struktur while do.

Algoritma PerulanganWhile;
Deklarasi
      i:integer
Deskripsi
  Mulai
   I ß1
   While (I <= 10 ) do
       Write(i)
       I ß i+1
    Endwhile
    Selesai


Program Perulangan dengan while
Program perulanganwhile;
Uses wincrt;
Var
   I:integer;
Begin
writeln('Program Perulangan dengan While');
I:=1;
While i<= 10 do
  Begin
    Writeln(i);
    I:=i+1;
 End;
End.

Hasil Output program
Program Perulangan dengan While
1
2
3
4
5
6
7
8
9
10

Pada program tersebut, aksi setelah while do dinyatakan dalam beberapa pernyataan sehingga dituliskan dalam pernyataan begin dan end. Pada program diatas perulangan sudah diketahui yaitu sebanyak sepuluh kali. Dalam kasus yang lain struktur while do dapat digunakan untuk perulangan yang belum diketahui jumlah perulangannya. Sebagai contoh program untuk menghitung data yang dimasukan dan rata-ratanya sampai data yang dimasukan berupa angka nol (0).

Algoritma rerata2;
Deklarasi
      i,n,jumlah,x:integer
     Rerata:real;
Deskripsi
   Mulai
   Read (x)
   n ß 0
   Jumlahß0
   While (x <>0) do
            Nß n+1
            JumlahßJumlah+x
            Read(x)
   Endwhile
   Rerata ßjumlah/n
   Write(n)
   Write(jumlah)
   Write(rerata)
   Selesai

Program Menghitung rata-rata dengan while
Program rerata2.
uses wincrt;
var
   i,n,x,jumlah:integer;
   rerata:real;
begin
writeln('Masukan nilai-nila (0 untuk berhenti)=');
readln(x);
n:=0;
while x<>0 do
begin
  n:=n+1;
  jumlah:=jumlah+x;
  read(x);
end;
rerata:=jumlah/n;
writeln(‘Jumlah=’,jumlah);
writeln(‘Rerata=’,rerata);
end.

Hasil output program:
Masukan nilai-nila (0 untuk berhenti)=
6
7
9
7
8
9
0
Jumlah=46
Rerata= 7.66666666666667E+0000

Pada program diatas data yang diinputkan berupa angka nol (0) tidak akan dihitung karena sebagai stoping point (tanda untuk berhenti perulangan).

3.  Repeat Until

Struktur Repeat..until merupakan sebuah perintah untuk melakukan perualangan terhadap suatu pernyataan atau blok pernyataan sampai suatu kondisi terpenuhi. Jika kondisi sudah terpenuhi maka pernyataan tidak akan diulang lagi. Pemeriksaan kondisi ada pada bagian setelah pernyataan yang diulang. Struktur ini juga perlu adanya suatu proses yang dapat mengontrol program agar program dapat berhenti.

Perulangan dengan repeat until juga lebih fleksibel bila dibandingkan dengan struktur for to do. Perulangan ini juga tidak ditentukan berapa kali suatu pernyataan harus dilakukan. Dari kasus mencetak bilangan dari 1 sampai 10 dapat dilihat pada algoritma dan program dibawah ini.

Algoritma PerulanganRepeat;
Deklarasi
      i:integer

Deskripsi
  Mulai
   i ß1
   Repeat
       Write(i)
       I ß i+1
     Until (I > 10 )
   selesai

Program  Perulangan dengan repeat
program perulanganRepeat;
uses wincrt;
var
   i:integer;
begin
writeln('Program Perulangan dengan Repeat');
i:=1;
repeat
  writeln(i);
  i:=i+1;
until i>10
end.

Hasil output program
Program Perulangan dengan Repeat
1
2
3
4
5
6
7
8
9
10

Pada program diatas, aksi dengan pernyataan-pernyataan yang ada setelah pernyataan while akan selalu diulang sampai pada kondisi yang dinyatakan dengan klausa until terpenuhi. Pernyataan-pernyatan yang ada pada blok aksi tidak digunakan begin dan end walupun pada blok tersebut terdapat beberapa pernyataan. Pada kasus yang lain yaitu pada algoritma menghitung rata-rata dari sejumlah bilangan yang dimasukan sampai bilangan yang dimasukan berupa angka nol.

Algoritma rerata2;
Deklarasi
      i,n,jumlah,x:integer
     Rerata:real;
Deskripsi
   Mulai
   n ß 0
   Jumlahß0
   Repeat
            Nß n+1
            Read(x)
           JumlahßJumlah+x
    Until x=0
   Rerata ßjumlah/(n-1)
   Write(n)
   Write(jumlah)
   Write(rerata)
    Selesai


Program 23. Menghitung rata-rata dengan repeat
Program rerata3;
Uses wincrt;
var
   i,n,jumlah,x:integer;
   rerata:real;
begin
writeln('Masukan data (0 untuk berhenti)=');
n:=0;
jumlah:=0;
repeat
  n:=n+1;
  readln(x);
  jumlah:=jumlah+x;
until x=0;
rerata:=jumlah/(n-1);
writeln('Jumlah=',jumlah);
writeln('Rerata=',rerata);
end.

Hasil output program:
Masukan data (0 untuk berhenti)=
5
9
8
7
8
6
0
Jumlah=43
Rerata= 7.16666666666667E+0000

 Sekian dan Terima Kasih...............

 

Tidak ada komentar:

Posting Komentar