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.
Bentuk Umum :
- FOR id := v1 TO v2 DO statement
- 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:
- Menetapkan nilai counter sama dengan awal.
- 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.
- Mengeksekusi pernyataan yang ada di badan loop.
- 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.
- 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”.
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.
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
{ 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!
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).