Table of Contents
Pengertian
Perulangan atau loop/looping seperti namanya adalah sebuah pernyataan yang digunakan untuk mengulang sebuah blok kode beberapa kali yang ditentukan, atau sampai kondisinya terpenuhi (true).
Macam-macam Perulangan
Perulangan dibagi menjadi 2 jenis: Count-controlled loop atau biasa disebut for, dan Condition-controlled loop yang memiliki 2 macam yaitu while-do dan repeat-until.
Count-controlled loop
Jenis perulangan ini sering ditemui dalam bahasa pemrograman lainnya, namun ada sebuah perbedaan khusus untuk for dalam bahasa pemrograman Pascal.
for VARIABLE := START to FINISH do STATEMENT;
Dimana:
- VARIABLE adalah variabel integer sebagai penghitung (counter) perulangan. Umumnya menggunakan variabel i.
- START adalah nilai integer awal untuk penghitungnya.
- FINISH adalah nilai integer akhir untuk mengakhiri perulangan.
- STATEMENT adalah pernyataan yang ingin dijalankan dalam perulangan.
Dalam bahasa Pascal secara spesifik, perulangan for hanya bisa melangkah (step) sekali kedepan +1 dengan TO atau kebelakang -1 dengan DOWNTO. Dalam artian jika awalnya 1 dan akhirnya 5, maka perulangan terjadi berurutan secara berurutan 1, 2, 3, 4, 5.
Untuk mengubah jumlah step ini hanya bisa dilakukan menggunakan condition-controlled loop.
For loop sederhana
for i := 1 to 10 do writeln(i);
Bentuk perulangan paling sederhana ini akan mengeluarkan angka 1 sampai 10.
For loop dengan percabangan
for i := 1 to 10 do
begin
if i < 5 then writeln(i, ' kurang dari 5')
else if i = 5 then writeln(i, ' adalah 5')
else writeln(i, ' lebih dari 5');
end;
Percabangan dalam perulangan ini akan mengeluarkan kalimat yang berbeda dengan kondisi:
- i kurang dari lima akan mengeluarkan
i kurang dari 5
- i sama dengan lima akan mengeluarkan
i adalah 5
- jika kedua kondisi tidak terpenuhi maka akan mengeluarkan
i lebih dari 5
For loop rekursif
Sederhananya, perulangan rekursif adalah perulangan yang memiliki perulangan lagi didalamnya.
for i := 1 to 10 do
begin
writeln('BAB ', i);
for j := 1 to 3 do writeln('BAB ', i, 'SUB BAB ', j);
end;
Jika dilihat sekilas, dapat dianalisis bahwa:
- Perulangan pertama dari 1 sampai 10,
- Perulangan pertama mengeluarkan
BAB i
untuk setiap angka dalam perulangan, - Perulangan kedua dari 1 sampai 3, dan
- Perulangan kedua mengeluarkan
BAB i SUB BAB j
untuk setiap angka dalam perulangan.
Condition-controlled loop
Condition-controlled loop atau perulangan yang dikontrol oleh suatu kondisi seperti namanya, mempunyai kondisi yang harus dipenuhi (true). Jika kondisi bernilai false maka perulangan akan dilanjutkan.
Perulangan ini dapat menyebabkan infinite loop jika kondisi yang diberikan tidak pernah dipenuhi, namun beberapa kegunaan dari infinite loop yaitu untuk memastikan bahwa program tidak akan pernah berhenti berjalan.
While-do
while CONDITION do STATEMENT;
Perulangan while-do mempunyai struktur yang serupa seperti for, namun untuk memberhentikan perulangan diperlukan kondisi yang dapat berupa apapun yang menghasilkan nilai Boolean true atau false.
Jika kondisi tidak dipenuhi, maka perulangan akan dilanjutkan, namun jika kondisi sudah dipenuhi, maka perulangan selesai. Karena perulangan while-do melakukan pengecekan kondisi sebelum menjalankan pernyataan, maka perulangan itu sendiri bisa terlewatkan jika kondisi sudah terpenuhi.
Contoh while-do
readln(i);
while i < 100 do
begin
writeln(i);
i := i * 2;
end;
Contoh perulangan ini, jika variabel i bernilai dibawah 100, maka variabel i akan dikalikan dengan 2. Jika input yang dimasukkan tidak bernilai dibawah 100 maka perulangan akan dilewat seluruhnya.
Input | Output |
---|---|
2 | 2 4 8 16 32 64 |
3 | 3 6 12 24 48 96 |
Repeat-until
repeat STATEMENT until CONDITION;
Berbalikan dengan while-do, jika kondisi pada repeat-until bernilai true maka perulangan akan dilanjutkan, jika kondisi bernilai false maka akan perulangan berhenti.
Perulangan repeat-until juga akan menjalankan pernyataan sebelum melakukan pengecekan kondisi, sehingga bisa dipastikan bahwa perulangan akan berjalan minimal 1 kali.
Contoh repeat-until
repeat
begin
writeln('masukkan dengan benar');
readln(i);
end;
until i = 'benar';
Pada contoh ini, perulangan akan:
- Mengeluarkan
masukkan dengan benar
, - Membaca input user ke variabel string i, dan
- Mengulang perulangan sampai variabel i bernilai ‘benar’.
Perbedaan while-do dengan repeat-until
Perhatikan dua potongan kode berikut dengan algoritma yang sama persis.
- Diberikan input untuk variabel i,
- Masuk kedalam bagian perulangan dengan kondisi jika i kurang dari 100 maka ulang perulangan,
- Mengeluarkan variabel i,
- Mengalikan variabel i dengan 2,
- Setelah perulangan selesai, keluarkan variabel i.
readln(i);
while i < 100 do
begin
writeln(i);
i := i * 2;
end;
readln(i);
repeat
begin
writeln(i);
i := i * 2;
end;
until i >= 100;
Perbedaan | While-do | Repeat-until |
---|---|---|
Letak pengecekan kondisi | Awal | Akhir |
Jika kondisi bernilai true | Melanjutkan | Selesai |
Jika kondisi sudah terpenuhi sebelumnya | Dilewati | Berjalan sekali |
Perbedaan for dengan perulangan lain
Perbedaan yang didapat dari for dengan perulangan lain yaitu:
Perbedaan | For | Lainnya |
---|---|---|
Sintaksis | Wajib memiliki variabel integer penghitung | Hanya berupa kondisi boolean |
Kondisi | Berupa integer yang bernilai jelas | Bisa dengan operator dan tipe data lain |
Langkah | Hanya bisa naik atau turun sebanyak 1 | Tidak ada langkah tertentu (sesuai kondisi) |
Jadi dengan perbedaan yang sudah disebutkan,
- Perulangan for lebih cocok digunakan jika awal dan akhirnya sudah pasti, contohnya 1 sampai 10, atau -100 sampai 0.
- Karena limitasi dalam menentukan jumlah langkah, perulangan for tidak cocok jika digunakan seperti halnya mengalikan variabel i dengan 2.
- Jika ingin menggunakan operator dan tipe data selain integer, bisa menggunakan perulangan lainnya.
Catatan
Dalam post ini digunakan bentuk flowchart paling sederhana dimana perulangan menggunakan blok percabangan untuk mengecek kondisi.
Namun seiring perkembangan zaman, ada pula bentuk flowchart lainnya seperti yang ada pada aplikasi Flowgorithm.
Lalu flowchart manakah yang lebih benar dan tepat? Tidak ada, karena flowchart sendiri digunakan untuk mempermudah dalam membaca kode, jadi tidak ada yang lebih benar dan tepat kecuali disuruh untuk membuatnya secara spesifik.
Just my 2 cents.