Perulangan for C++, Lengkap Contoh dan Penjelasan Detail

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.

Gambar 1. Contoh penggunaan for-loop
Gambar 2. Flowchart for-loop

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 blok for dapat dilakukan. Ketika nilai variabel i mencapai suatu nilai tertentu atau kondisi bernilai false 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 perulangan for akan dieksekusi. Setelah pengeksekusian kondisi kembali diuji setelah proses increment atau decrement 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:

  1. Inisialisasi variabel i sebagai counter dilakukan pada for (inisialisasi).
  2. for menguji kondisi, jika kondisi bernilai false maka lanjut ke langkah 5. Jika bernilai true, maka eksekusi perintah di dalam blok for saat ini.
  3. Tambah i dengan 1 (i++).
  4. Lanjut ke langkah 2 di atas.
  5. 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 idiuji kembali pada iterasi berikutnya.

Iterasi terus dilakukan hinggai bernilai 5. Ketika ibernilai 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.

Gambar 3. Contoh penggunaan nested for-loop

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.

Gambar 4. Potongan flowchart nested for-loop dengan 2 for

Potongan flowchart pada gambar 4 memperjelas alur kerja dari nested loop dengan dua for. Adapun alurnya secara bertahap adalah sebagai berikut:

  1. Inisialisasi variabel i sebagai counter dilakukan pada for terluar (inisialisasi1).
  2. for terluar menguji kondisi1, jika kondisi1 bernilai false maka lanjut ke langkah 5. Jika bernilai true, maka langkah berikut dieksekusi:
    1. a. Inisialisasi variabel j sebagai counter pada for bagian dalam (inisialisasi2).
    2. a. for bagian dalam menguji kondisi2, jika kondisi2 bernilai true maka eksekusi perintah didalam blok for saat ini. Jika tidak, lanjut ke langkah 3 (keluar dari for bagian dalam).
    3. a. Tambah j dengan 1 (j++).
    4. a. Lanjut ke langkah 2.a di atas.
  3. Tambah i dengan 1 (i++).
  4. Lanjut ke langkah 2 di atas.
  5. 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:

  1. Mulai
  2. Statement cout<<"--Nested loop dimulai--"<<endl; pada baris 4 dieksekusi
  3. Inisialisasi variabel i dengan nilai awal 1 sebagai counter (baris 5).
  4. Kondisi i<3 diuji (baris 5), jika i<3bernilai false maka lanjut ke langkah 7. Jika bernilai true, maka langkah berikut dieksekusi:
    1. a. Inisialisasi variabel j dengan nilai awal 1 sebagai counter pada for bagian dalam (baris 6).
    2. a. for bagian dalam menguji kondisi j<3 (baris 6) . Jika j<3 bernilai falsemaka lanjut ke langkah 5 (keluar dari for bagian dalam). Jika bernilai true maka eksekusi perintah di dalam blok for saat ini yaitu cout << "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 nilai i dan j saat ini.
    3. a. Tambahjdengan 1 melalui perintah j++ pada baris 6.
    4. a. Lanjut ke langkah 2.a di atas.
  5. Tambah i dengan 1 melalui perintah i++ pada baris 5.
  6. Lanjut ke langkah 4 di atas.
  7. Statement cout<<"--Nested loop selesai--"<<endl; pada baris 10 dieksekusi
  8. 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.

 4,497 total views,  6 views today

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *