Friday, April 13, 2012

algoritma for...to...do

algoritma for...to...do

For…to… vs For…do… dan for…downto… vs For…

downdo…

Pengulangan dengan menggunakan For, merupakan salah satu teknik pengulangan yang paling tua dalam bahasa pemrograman. For digunakan untuk mengulang statement atau satu blok statement berulang kali sejumlah yang ditentukan. Atau dapat pula dikatakan 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.
Hampir semua bahasa pemrograman menyediakan metode ini, meskipun sintaksnya mungkin berbeda. Pada struktur For kita harus tahu terlebih dahulu seberapa banyak badan loop akan diulang. Struktur ini menggunakan sebuah variable yang biasa disebut sebagai loop’s counter, yang nilainya akan naik atau turun selama proses pengulangan.
Sintaks dari statement For dalam bentuk diagram adalah sebagai berikut :
Bentuk Umum :
  1. FOR id := v1 TO v2 DO statement
  2. FOR id := v1 DOWNTO v2 DO statement

Flowchart umum untuk struktur For tampak pada gambar berikut dan perhatikan penggunaan simbol preparation pada flowchart.

Dalam mengeksekusi sebuah pengulangan dengan For ada langkah-langkahnya, urutan langkah-langkahnya adalah sebagai berikut:
  1. Menetapkan nilai counter sama dengan awal.
  2. Memeriksa apakah nilai counter lebih besar dari pada nilai akhir. Jika benar maka keluar dari proses pengulangan. Apabila kenaikan bernilai negatif, maka proses akan memeriksa apakah nilai counter lebih kecil daripada nilai akhir. Jika benar maka keluar dari proses pengulangan.
  3. Mengeksekusi pernyataan yang ada di badan loop.
  4. Menaikkan/menurunkan nilai counter sesuai dengan jumlah yang ditentukan pada argument increment. Apabila argument increment tidak ditetapkan maka secara default nilai counter akan dinaikkan 1.
  5. Ulang kembali mulai langkah no 2.

Satu hal yang penting yang harus kita perhatikan adalah nilai counter selalu ditetapkan diawal dari pengulangan. Apabila kita mencoba merubah nilai akhir pada badan loop, maka tidak akan berdampak pada berapa banyak pengulangan akan dilakukan.
Contoh Algoritma untuk mencetak pernyataan sebanyak 100 kali.
Mungkin kalian pernah ketika masih di sekolah dasar melakukan perbuatan nakal yang membuat kalian disuruh menuliskan pernyataan tertentu sebanyak 100 kali sebagai hukuman atas kenakalan tersebut. Misalkan pernyataan yang harus ditulis adalah “Saya tidak akan mengulangi perbuatan itu lagi”.
Pada contoh ini, kita memerlukan variabel counter, misalkan kita beri nama I. Nilai awalnya adalah 1 dan nilai akhirnya adalah 100. Sedangkan increment atau kenaikan tiap kali pengulangan dari I adalah satu. Perintah untuk mencetak pernyataan akan diulang satu persatu sampai nilai akhir dari counter terpenuhi (100). Flowchart penyelesaian untuk contoh ini dapat dilihat pada berikut.

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.
For..to akan menghasilkan nilai incremental atau penambahan satu setiap kali terjadi perulangan. Sedangkan for...do dipergunakan ketika nilai yang akan digunakan sudah diketahui dengan nilai yang ada di dalamnya selalu ditambah atau dikurangi satu ketika mengalami perulangan. Atau dapat pula dikatakan for…do adalah perulangan dengan penghitung (counter). Dalam beberapa sumber juga disebutkan bahwa For do merupakan struktur pengulangan dimana aksi dilakukan sebanyak hitungan pencacah pengulangan. Pencacah pengulangan dapat diset sesuai dengan nilai yang ingin kita mulai. Misalnya for pencacah pengulangan dari x sampai y do
berarti aksi dilakukan sebanyak hitungan pencacah pengulangan, yaitu dari x sampai y sebanyak b-a+1 kali.

Sintaks:
FOR variable := startindex (TO/DOWNTO) endindex DO BEGIN
statement;
END;

Dari sintaks di atas, terdapat dua jenis perubahan yang dapat digunakan, yaitu TO dan DOWNTO. TO akan menghasilkan nilai incremental atau penambahan satu setiap kali terjadi perulangan. Sedangkan DOWNTO akan menghasilkan nilai decremental atau pengurangan satu setiap kali terjadi perulangan.

Contoh penggunaan FOR...DO:

for i:=1 to 10 do begin
write(i,' ');
end;
for j:=10 downto 1 do begin
write(j,' ');
end;

Syntax for .. Do

For NamaVarKendali := Awal to Akhit Do
Pernyataan;
Atau
For NamaVarKendali := Awal to Akhit Do
Begin
Pernyataan1;
Pernyataan2; blok pernyataan
End;
Atau
For NamaVarKendali := Awal Downto Akhit Do
Pernyataan;
Atau
For NamaVarKendali := Awal Downto Akhit Do
Begin
Pernyataan1;
Pernyataan2; blok pernyataan
End;

Statemen/pernyataan atau blok pernyataan akan dikerjakan selama nilai dari NamaVarKendali dari Awal ke Akhir dengan kenaikan/penurunan satu langkah. Jika Awal lebih kecil Akhir kita pakai to, sedangkan jika Awal lebih besar Akhir kita pakai downto.
NamaVarKendali adalah idetifier yang bertype ordinal seperti byte, integer atau char dan tidak dapat bertype string atau real. Berikut adalah program untuk mencetak karakter mulai dari awal sampa akhir dan dari akhir sampai awal, diman awal dan akhir dinputkan dari keyboard. Awal, akhir bertype char.

Program CetakKarakter;
Uses Crt;
Var
Awal, Akhir, Karak : Char;
Begin
Clrscr;
Write('Karakter awal : ');Readln(Awal);
Write('Karakter akhir : ');Readln(Akhir);
writeln;
Write('N A I K : ');
For Karak := Awal to Akhir Do
Write(karak);
Writeln;
Write('T U R U N : ');
For Karak := Akhir downto Awal Do
Write(karak);
Readln
End.

contoh diatas adalah jika statemen yang diulang tunggal, yaitu hanya Write(karak). Cobalah jika awal diisi dengan ‘1’ san akhir diisi dengan ‘z’, apa ourputnya. Cobalah jika write(karak) diganti writeln(karak), apakah ada perubahan, bagaiman penjelasannya. Sering kita temukan bahwa pernyataan yang akan dulang bukan tunggal, tetapi banyak sehingga kita harus memakai blok pernyataan.
Example Algoritma untuk For-do:
Program cetak banyak_Belajar yang rajin oce!
{ mencetak ‘ Belajar yang rajin oce!’ sebanyak 5 kali }
Deklarasi
i : integer ( pencacah pengulangan )
Algoritma
for i <– 1 to 5 do ( ulangi sebanyak 5 kali )
Write ( ‘Belajar yang rajin oce!’ )
endfor
· Output
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!

Perbedaan for…to… dengan for…downto…
Pernyataan for…to… digunakan untuk pengulangan secara menaik (ascending). Sedangkan for…downto…digunakan untuk pengulangan secara menurun (descending).