For loop di bahasa C dipakai saat kamu sudah tahu berapa kali sebuah blok kode harus diulang. Sintaksnya cuma satu baris header dengan tiga bagian, tapi banyak pemula tersandung karena tidak paham urutan eksekusinya. Panduan ini membahas cara menggunakan for loop dalam bahasa C langkah demi langkah, mulai dari bentuk paling sederhana sampai pola yang sering muncul di kode nyata.
Bentuk Dasar For Loop
Header for loop berisi tiga bagian yang dipisahkan titik koma: inisialisasi, kondisi, dan perubahan nilai. Ketiganya berdiri di dalam tanda kurung, lalu blok kode yang diulang ditaruh di dalam kurung kurawal.
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 5; i++) {
printf("Baris ke-%dn", i);
}
return 0;
}
Kalau dijalankan, program mencetak lima baris dengan angka 1 sampai 5. Bagian int i = 1 jalan sekali di awal, i <= 5 dicek sebelum setiap putaran, dan i++ dieksekusi setelah badan loop selesai. Urutan ini berlaku di semua compiler C, jadi perilakunya konsisten di GCC, Clang, maupun MSVC.
Membaca Urutan Eksekusinya
Kesalahan pemula paling sering muncul di sini: mengira kondisi dicek setelah badan loop. Urutannya selalu inisialisasi, cek kondisi, jalankan badan, ubah nilai, kembali ke cek kondisi, dan begitu seterusnya.
- Inisialisasi dijalankan sekali. Variabel
idiberi nilai awal. - Kondisi dievaluasi. Kalau hasilnya salah, loop langsung berhenti dan kode setelahnya dijalankan.
- Badan loop dieksekusi.
- Bagian perubahan nilai jalan, biasanya menambah atau mengurangi satu.
- Kembali ke langkah 2.
Karena urutan ini, loop yang menulis for (int i = 0; i < n; i++) akan berjalan tepat n kali. Itu sebabnya indeks array di C dimulai dari nol: jumlah putarannya cocok dengan panjang array tanpa perlu penyesuaian.
Menghitung Mundur dan Melompat
For loop tidak harus naik satu-satu. Kamu bisa menghitung mundur dengan mengubah arah perbandingan dan pakai i--.
for (int i = 5; i >= 1; i--) {
printf("%dn", i);
}
Untuk melompat lebih dari satu langkah, cukup ganti bagian perubahan nilai. Contoh berikut mencetak angka genap dari 0 sampai 10:
for (int i = 0; i <= 10; i += 2) {
printf("%d ", i);
}
Perhatikan bahwa kondisi tetap harus mengarah ke titik berhenti. Kalau i += 2 dipasangkan dengan kondisi i != 10, loop bisa jalan selamanya bila nilai awalmu ganjil. Pakai perbandingan seperti <= atau >= supaya lebih aman.
Memakai Loop untuk Menelusuri Array dan String
Pola paling umum di kode C adalah menelusuri array dengan indeks. Ukuran array dihitung sekali, lalu dipakai sebagai batas loop.
int nilai[] = {80, 75, 90, 65, 88};
int jumlah = 5;
int total = 0;
for (int i = 0; i < jumlah; i++) {
total += nilai[i];
}
printf("Total: %dn", total);
Untuk string, batasnya bukan angka tetap melainkan karakter null ' ' di akhir teks. Kamu bisa mengecek karakter per karakter sampai ketemu penanda itu, atau memakai fungsi strlen dari string.h kalau panjangnya sudah diketahui. Kalau masih belum nyaman dengan array, ada baiknya kamu berlatih dulu lewat kumpulan latihan menulis kode C untuk pemula sebelum lanjut ke loop bersarang.
Nested Loop: Loop di Dalam Loop
Loop bersarang dipakai saat kamu butuh kombinasi dua indeks, misalnya mencetak tabel perkalian atau pola bintang. Loop dalam menyelesaikan semua putarannya untuk setiap satu putaran loop luar.
for (int baris = 1; baris <= 3; baris++) {
for (int kolom = 1; kolom <= 3; kolom++) {
printf("%d ", baris * kolom);
}
printf("n");
}
Hasilnya matriks 3×3. Total putaran badan loop dalam adalah 9, karena 3 putaran luar dikali 3 putaran dalam. Begitu angka ini membesar, biaya komputasinya naik cepat, jadi pakai nested loop hanya saat memang perlu.
Kesalahan yang Sering Terjadi
Beberapa jebakan di bawah ini muncul hampir di setiap kode pemula. Mengenali polanya lebih cepat daripada menebak-nebak kenapa programmu diam saja.
- Lupa menaikkan nilai: menulis
for (int i = 0; i < 10;)tanpai++membuat kondisi selalu benar dan program menggantung. - Salah tanda perbandingan:
i <= npada array berukurannmembaca satu elemen di luar batas. Ini bisa merusak memori tanpa pesan error. - Mendeklarasikan ulang variabel loop: di C standar lama,
int idi header hanya berlaku di dalam loop. Kalau butuh nilainya setelah loop, deklarasikan di luar. - Titik koma setelah header:
for (...) ;membuat badan loop kosong dan hanya bagian header yang berjalan.
Sebagian besar dari masalah ini bisa dicegah dengan mengaktifkan peringatan compiler. Bendera -Wall -Wextra di GCC atau Clang akan memberi tahu kalau ada variabel yang tidak terpakai atau perbandingan tanda tangan yang mencurigakan. Kalau baru mulai, panduan memilih compiler C untuk pemula menjelaskan cara memasang dan mengatur opsi ini.
Kapan Sebaiknya Pakai While
For loop cocok saat jumlah putaran sudah diketahui di awal. Kalau jumlahnya bergantung pada input pengguna atau isi file, while lebih pas karena kondisinya bisa berubah tanpa terikat penghitung. Perbedaan ini terasa saat kamu membaca data sampai penanda akhir, di mana tidak ada angka pasti untuk dijadikan batas. Panduan while loop dalam bahasa C membahas pola itu lebih detail, termasuk cara menghindari loop tak berujung.
Di proyek yang lebih besar, logika perulangan sering muncul lagi di bahasa lain. Kalau nanti kamu menyentuh sisi server, misalnya saat memproses banyak data dalam satu request, pola callback sering dipakai dan penjelasannya ada di panduan callback di Ruby on Rails. Untuk tampilan, kerapian jarak antar elemen juga berpengaruh pada keterbacaan, seperti dijelaskan pada artikel tentang cara menyusun sistem spasi pada antarmuka agar konsisten.
Ringkasan
For loop di C punya tiga bagian di header: inisialisasi, kondisi, dan perubahan nilai. Inisialisasi jalan sekali, kondisi dicek sebelum tiap putaran, dan perubahan nilai terjadi setelah badan loop. Kuasai urutan itu, biasakan memakai batas yang aman untuk array, dan aktifkan peringatan compiler supaya kesalahan ketahuan lebih awal.
Pertanyaan yang Sering Diajukan
Apakah boleh mendeklarasikan variabel loop di dalam header for?
Boleh, dan itu praktik yang umum di C99 ke atas. Variabel tersebut hanya berlaku di dalam blok loop, jadi kalau nilainya dibutuhkan setelah loop selesai, deklarasikan di luar header.
Kenapa for loop saya tidak pernah berhenti?
Biasanya karena kondisi selalu bernilai benar. Periksa apakah bagian perubahan nilai benar-benar mengubah variabel yang dipakai di kondisi, dan pastikan arah perubahannya menuju titik berhenti.
Bisakah for loop dipakai untuk menelusuri string?
Bisa. Salah satu caranya memakai strlen untuk mendapatkan panjang string, lalu jadikan itu batas loop. Cara lain mengecek tiap karakter sampai bertemu ' ' sebagai penanda akhir string.