Perulangan dalam C++ dikenal juga dengan istilah “loop”. Perulangan merupakan proses pengeksekusian statement atau baris perintah secara berulang selama kondisi yang menjadi syaratnya terpenuhi. Dengan kata lain, pengeksekusian statement secara berulang akan terhenti saat syarat tersebut tidak terpenuhi lagi.
Sebagai contoh, pernahkah kamu dihukum untuk melakukan sesuatu secara berulang? Misalnya seorang guru menghukum muridnya yang terlambat. Hukuman yang diberikan adalah menulis kalimat “Saya tidak akan terlambat lagi” sebanyak 100 kali. Maka murid tersebut akan melakukan hal yang sama, yaitu menulis kalimat yang diperintahkan sebanyak 100 kali. Si murid akan berhenti menulis jika sudah terdapat 100 kalimat “Saya tidak akan terlambat lagi”.
Bayangkan jika hal tersebut kamu lakukan dalam bahasa pemrograman C++. Hal yang paling mungkin kamu lakukan adalah mengetikkan perintah cout<<"Saya tidak akan terlambat lagi"<<endl;
sebanyak 100 baris perintah. Suatu hal yang berlebihan dan melelahkan bukan?
Agar kita dapat melakukannya dengan mudah tanpa menuliskan perintah yang sama secara berulang, kita membutuhkan perulangan.
Dalam bahasa pemrograman C++ terdapat dua jenis perulangan yang dapat digunakan yaitu:
- For
- While
Dalam tulisan ini kita akan fokus membahas mengenai for-loop.
For
For merupakan salah satu bentuk perulangan yang sering digunakan oleh programer pemula. Adapun sintaks dari for-loop adalah sebagai berikut:
for(
variable=nilai_awal; kondisi; variable++
)
{
//Baris perintah yang akan dieksekusi berulang;
}
Penjelasan tambahan dapat dilihat pada gambar 1 dan flowchart pada gambar 2.
Berdasarkan sintaks, contoh pada gambar 1, dan flowchart pada gambar 2 dapat diketahui bahwa:
- Inisialisasi merupakan nilai awal yang diberikan kepada suatu variabel tertentu yang kemudian akan digunakan sebagai counter. Selama nilai
i
masih memenuhi syarat kondisi maka pengeksekusian baris perintah di dalam blokfor
dapat dilakukan. Ketika nilai variabeli
mencapai suatu nilai tertentu atau kondisi bernilaifalse
maka perulangan akan dihentikan. Inisialisasi hanya akan dieksekusi sebanyak 1 kali pada awal proses perulangan. - Kondisi merupakan bagian yang akan diuji setiap akan dilakukannya perulangan. Selama kondisi bernilai
true
atau benar, maka statement di dalam blok perulanganfor
akan dieksekusi. Setelah pengeksekusian kondisi kembali diuji setelah prosesincrement
ataudecrement
dilakukan. - Increment /decrement adalah bagian yang berfungsi untuk merubah nilai dari variabel pada bagian inisialisasi. Perubahan dapat berupa penambahan atau pengurangan dengan jumlah tertentu. Tujuannya adalah agar suatu saat kondisi bernilai
false
atau salah sehingga perulangan terhenti.
Potongan flowchart pada gambar 2 memperjelas alur kerja dari perulangan for. Adapun alurnya secara bertahap sebagai berikut:
- Inisialisasi variabel
i
sebagai counter dilakukan pada for (inisialisasi
). - for menguji
kondisi
, jikakondisi
bernilaifalse
maka lanjut ke langkah 5. Jika bernilaitrue
, maka eksekusi perintah di dalam blok for saat ini. - Tambah
i
dengan 1 (i++
). - Lanjut ke langkah 2 di atas.
- Keluar dari for .
Contoh Program for
Berikut contoh penerapan for dalam program sederhana C++
#include <iostream>
using namespace std;
int main() {
for(int i=0; i<5; ++i){
cout << "ini contoh perulangan"<<endl;
}
}
Output:
ini contoh perulangan
ini contoh perulangan
ini contoh perulangan
ini contoh perulangan
ini contoh perulangan
Berdasarkan program pada contoh 1. dapat diperoleh output mencetak string “ini contoh perulangan” sebanyak 5 kali.
Pada iterasi pertama, variabel i
diinisialisasikan dengan nilai 0. Kemudian pada bagian kondisi nilai i
dicek apakah masih lebih kecil daripada 5? karena ya atau bernilai true
maka perintah pada baris 5 dieksekusi sehingga tampil output pertama berupa string “ini contoh perulangan“. Setelah itu bagian increment
dieksekusi dimana nilai i
ditambah dengan satu dan hasilnya disimpan kembali ke variabel i
. Jadi nilai i
saat ini sama dengan 2.
Pada iterasi kedua, nilai variabel i
dicek kembali, apakah i
masih lebih kecil dari 5? Karena saat ini i = 2
maka kondisi bernilai true
dan perintah baris 5 dieksekusi kembali. Setelah itu kembali dilakukan increment sehingga i = 3
. Setelah itu nilai i
diuji kembali pada iterasi berikutnya.
Iterasi terus dilakukan hinggai
bernilai 5. Ketika i
bernilai 5, maka kondisi akan bernilai false
. Karena kondisi bernilai false
, maka proses perulangan terhenti dan dan dilanjutkan ke baris perintah berikutnya di luar for-loop saat ini (perhatikan gambar 2).
Nested for
Dalam kondisi tertentu juga biasanya diperlukan perulangan di dalam perulangan (nested-loop). Misalnya untuk mengakses nilai dari suatu array multi dimensi. Adapun sintaks dari nested loop dengan dua for-loop (nested for) adalah sebagai berikut:
for (variable1=nilai_awal; kondisi1; variable1++){
for (variable2=nilai_awal; kondisi2; variable2++){
//Statement yang akan dieksekusi secara berulang;
}
}
Penjelasan tambahan dapat dilihat pada gambar 3 dan flowchart pada gambar 4.
Berdasarkan sintaks dan contoh pada gambar 3 dapat diketahui bahwa terdapat struktur for di dalam for. Struktur for yang berada di bagian dalam akan dieksekusi jika kondisi pada struktur for luar terpenuhi atau bernilai benar. Kemudian perintah untuk mencetak string akan dieksekusi jika kondisi pada struktur for bagian dalam bernilai benar juga.
Potongan flowchart pada gambar 4 memperjelas alur kerja dari nested loop dengan dua for. Adapun alurnya secara bertahap adalah sebagai berikut:
- Inisialisasi variabel
i
sebagai counter dilakukan pada for terluar (inisialisasi1
). - for terluar menguji
kondisi1
, jikakondisi1
bernilaifalse
maka lanjut ke langkah 5. Jika bernilaitrue
, maka langkah berikut dieksekusi:- a. Inisialisasi variabel
j
sebagai counter pada for bagian dalam (inisialisasi2
). - a. for bagian dalam menguji
kondisi2
, jikakondisi2
bernilaitrue
maka eksekusi perintah didalam blok for saat ini. Jika tidak, lanjut ke langkah 3 (keluar dari for bagian dalam). - a. Tambah
j
dengan 1 (j++
). - a. Lanjut ke langkah 2.a di atas.
- a. Inisialisasi variabel
- Tambah
i
dengan 1 (i++
). - Lanjut ke langkah 2 di atas.
- Keluar dari for terluar.
Contoh program nested for-loop
#include <iostream>
using namespace std;
int main() {
cout<<"--Nested loop dimulai--"<<endl;
for(int i=1; i<3; i++){
for(int j=1; j<3; j++){
cout << "ini baris ke-"<<i<<" kolom ke-"<<j<<endl;
}
}
cout<<"--Nested loop selesai--"<<endl;
}
Output:
--Nested loop dimulai--
ini baris ke-1 kolom ke-1
ini baris ke-1 kolom ke-2
ini baris ke-2 kolom ke-1
ini baris ke-2 kolom ke-2
--Nested loop selesai--
Berdasarkan program pada contoh 2 di atas maka dapat diperoleh hasil seperti output yang ditampilkan.
Adapun proses yang terjadi pada fungsi main()
sehingga output dapat dihasilkan adalah sebagai berikut:
- Mulai
- Statement
cout<<"--Nested loop dimulai--"<<endl;
pada baris 4 dieksekusi - Inisialisasi variabel
i
dengan nilai awal 1 sebagai counter (baris 5). - Kondisi
i<3
diuji (baris 5), jikai<3
bernilaifalse
maka lanjut ke langkah 7. Jika bernilaitrue
, maka langkah berikut dieksekusi:- a. Inisialisasi variabel
j
dengan nilai awal 1 sebagai counter pada for bagian dalam (baris 6). - a. for bagian dalam menguji kondisi
j<3
(baris 6) . Jikaj<3
bernilaifalse
maka lanjut ke langkah 5 (keluar dari for bagian dalam). Jika bernilaitrue
maka eksekusi perintah di dalam blok for saat ini yaitucout << "ini baris ke-"<<i<<" kolom ke-"<<j<<endl;
pada baris 7. Pengeksekusian perintah baris 7 akan menghasilkan “ini baris ke-i kolom ke-j” dengan nilaii
danj
saat ini. - a. Tambah
j
dengan 1 melalui perintahj++
pada baris 6. - a. Lanjut ke langkah 2.a di atas.
- a. Inisialisasi variabel
- Tambah i dengan 1 melalui perintah
i++
pada baris 5. - Lanjut ke langkah 4 di atas.
- Statement
cout<<"--Nested loop selesai--"<<endl;
pada baris 10 dieksekusi - Selesai
Sebagai catatan, kondisi i<3
dan j<3
akan bernilai false saat variabel i
dan j
bernilai 3.
Semoga dapat menambah wawasan teman-teman yang masih baru dalam dunia pemrograman. Semoga bermanfaat.
Jika ingin mendengarkan penjelasan secara lisan, jangan sungkan untuk mengunjungi channel youtube kami “PAKKODING“.
Oh iya, share halaman ini agar orang-orang yang baru belajar pemrograman dapat terbantu.
14,554 total views, 7 views today