Loop for adalah konstruksi perulangan yang paling banyak dipakai di C ketika jumlah iterasi sudah diketahui di muka—misalnya iterasi 10 kali, iterasi sebanyak elemen di sebuah array, atau iterasi dari 0 sampai N-1. Loop for menggabungkan tiga komponen kunci perulangan ke dalam satu baris: inisialisasi counter, kondisi pengulangan, dan pembaruan counter. Penggabungan ini membuat loop for lebih ringkas dan lebih mudah dibaca dibanding while untuk kasus pencacahan. Pada chapter ini kita akan menelaah sintaks for, urutan evaluasi ketiga komponennya, serta pola iterasi array yang paling umum dipakai dalam kode C sehari-hari.

Sintaks Dasar for #

Bentuk umum for di C adalah sebagai berikut:

c
for (init; kondisi; update) {
    /* body loop */
}

Tiga komponen di dalam tanda kurung dipisahkan oleh titik koma. Berdasarkan ISO/IEC 9899 §6.8.5.3, urutan eksekusinya adalah:

  1. init dievaluasi sekali sebelum iterasi pertama.
  2. kondisi dievaluasi sebelum setiap iterasi. Jika hasil 0, loop berhenti. Jika bukan 0, body dieksekusi.
  3. Setelah body selesai, update dievaluasi, lalu kontrol kembali ke langkah 2.

Ketiga komponen boleh dikosongkan, tetapi titik koma pemisahnya wajib ada. Bentuk for (;;) adalah idiom loop tanpa akhir yang lazim dipakai bersama break.

Visualisasi Konsep #

Diagram berikut memperlihatkan urutan eksekusi tiga komponen for (init, kondisi, update) di sekitar body loop:

Pada diagram di atas, init hanya dievaluasi satu kali di awal—tidak diulang pada iterasi berikutnya. Setelah itu, siklus berulang antara kondisi → body → update → kondisi. Pengecekan kondisi selalu mendahului body, sehingga bila kondisi awal sudah false, body tidak pernah dieksekusi. Statement update dieksekusi setelah body selesai dan sebelum kondisi dievaluasi ulang. Inilah sebabnya for (int i = 1; i <= 5; i = i + 1) menghasilkan iterasi i = 1, 2, 3, 4, 5 lalu berhenti: setelah i = 5 diupdate menjadi 6, kondisi 6 <= 5 menjadi false dan loop keluar.

c
#include <stdio.h>

int main(void) {
    for (int i = 1; i <= 5; i = i + 1) {
        printf("Iterasi ke-%d\n", i);
    }

    printf("Selesai\n");
    return 0;
}

Output yang Dihasilkan:

text
Iterasi ke-1
Iterasi ke-2
Iterasi ke-3
Iterasi ke-4
Iterasi ke-5
Selesai

Mari kita telaah baris-baris kode di atas:

  1. Baris 4 (for (int i = 1; i <= 5; i = i + 1)): deklarasi int i = 1 di dalam for adalah inisialisasi counter yang berlaku sepanjang loop. Kondisi i <= 5 dievaluasi sebelum setiap iterasi. Ekspresi i = i + 1 adalah update yang dieksekusi setelah body selesai.
  2. Baris 5 (printf(...)): body loop yang mencetak nomor iterasi. Body dieksekusi ketika kondisi menghasilkan nilai bukan 0.
  3. Baris 7 (printf("Selesai\n");): dieksekusi satu kali setelah i bernilai 6 dan kondisi 6 <= 5 menjadi false.

for dengan Step Berbeda #

Update pada for tidak harus berupa i = i + 1. Kita bebas memakai step lain, misalnya hitung mundur atau lompat dua angka sekaligus:

c
#include <stdio.h>

int main(void) {
    printf("Hitung mundur:\n");
    for (int i = 5; i >= 1; i = i - 1) {
        printf("  %d...\n", i);
    }
    printf("Leppas!\n");

    printf("Bilangan genap 0..20:\n");
    for (int i = 0; i <= 20; i = i + 2) {
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}

Output yang Dihasilkan:

text
Hitung mundur:
  5...
  4...
  3...
  2...
  1...
Leppas!
Bilangan genap 0..20:
0 2 4 6 8 10 12 14 16 18 20 

Pada loop pertama, i dimulai dari 5 dan dikurangi satu setiap iterasi sampai i < 1 menjadi true (yaitu ketika i = 0). Pada loop kedua, i dimulai dari 0 dan ditambah dua setiap iterasi, sehingga mencetak bilangan genap 0, 2, 4, ..., 20. Loop kedua berhenti ketika i = 22 dan 22 <= 20 menjadi false.

Iterasi Array dengan for #

Salah satu pemakaian paling umum for adalah mengiterasi elemen array. Kita menghitung jumlah elemen dengan operator sizeof, lalu loop dari indeks 0 sampai n-1:

c
#include <stdio.h>

int main(void) {
    int harga[] = {5000, 7000, 12000, 3000, 9000};
    int total = 0;
    int n = sizeof(harga) / sizeof(harga[0]);

    for (int i = 0; i < n; i = i + 1) {
        printf("Item %d: %d\n", i, harga[i]);
        total = total + harga[i];
    }

    printf("Total belanja: %d\n", total);
    return 0;
}

Output yang Dihasilkan:

text
Item 0: 5000
Item 1: 7000
Item 2: 12000
Item 3: 3000
Item 4: 9000
Total belanja: 36000

Pola for (int i = 0; i < n; i = i + 1) adalah idiom standar mengiterasi array di C. Indeks dimulai dari 0 (bukan 1) dan berhenti sebelum mencapai n. Ekspresi sizeof(harga) / sizeof(harga[0]) menghitung jumlah elemen array dengan membagi total ukuran array dengan ukuran satu elemen—pada contoh ini, sizeof(int) * 5 / sizeof(int) = 5.

Variasi Sintaks for #

Komponen for dapat dimanipulasi untuk berbagai keperluan:

  • for tanpa init: counter sudah dideklarasikan sebelumnya.
  • for tanpa update: pembaruan dilakukan di dalam body loop.
  • for dengan banyak counter: misalnya for (int i = 0, j = 10; i < j; i = i + 1, j = j - 1).
  • for (;;): ketiga komponen kosong, loop tanpa akhir—biasanya dipasangkan dengan break.

Pilihan variasi harus dipertimbangkan dengan kejelasan kode sebagai prioritas utama. Jika loop terlihat rumit, sering kali lebih baik memecahnya menjadi loop while yang eksplisit agar pembaca dapat mengikuti alurnya.

Dengan pondasi for di atas, chapter berikutnya akan memperluas pola menjadi loop bersarang (nested loops) untuk kasus seperti tabel perkalian dan pola segitiga bintang.