for tsikli — takrorlash sonini oldindan bilganingizda ishlatiladigan eng qulay sikl. while da hisoblagichni alohida e’lon qilib, alohida oshirsak, for uch amalni — boshlang’ich qiymat, shart va oshirishni — bir qatorga jamlaydi. Bu kodni ixcham va o’qiladigan qiladi.
for — takrorlash sonini boshqarish uchun boshlash, shart va qadam ifodalarini bitta sarlavhada birlashtiradigan sikl. U aniq sonli takrorlar uchun ideal.
for tuzilishi
for sarlavhasi uch qismdan iborat: for (boshlash; shart; qadam). Ularni amalda ko’ramiz:
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 5; i++) {
cout << "Qadam: " << i << endl;
}
return 0;
}
Qadam: 1
Qadam: 2
Qadam: 3
Qadam: 4
Qadam: 5
Uch qismning har biri o’z vazifasini bajaradi: int i = 1 — hisoblagichni yaratadi (bir marta), i <= 5 — har takrordan oldin tekshiriladi, i++ — har takrordan keyin bajariladi. Bu — while bilan bir xil natija, lekin ancha ixcham.
Teskari va qadamli sikl
for ni teskari yo’nalishda yoki kattaroq qadam bilan ham yozish mumkin:
#include <iostream>
using namespace std;
int main() {
// teskari
for (int i = 5; i >= 1; i--) {
cout << i << " ";
}
cout << endl;
// ikkitadan
for (int i = 0; i <= 10; i += 2) {
cout << i << " ";
}
cout << endl;
return 0;
}
5 4 3 2 1
0 2 4 6 8 10
Birinchi sikl 5 dan 1 gacha teskari sanadi, ikkinchisi esa 0 dan 10 gacha ikkitadan oshdi. Qadamni o’zgartirib, siklni to’liq boshqarasiz.
Ichma-ich for (nested loop)
Sikl ichida sikl — jadval yoki matritsa bilan ishlashda ishlatiladi. Masalan, ko’paytirish jadvalining bir qismini chiqaramiz:
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
cout << i * j << "\t";
}
cout << endl;
}
return 0;
}
1 2 3
2 4 6
3 6 9
Tashqi sikl har qatorni, ichki sikl esa har ustunni boshqaradi. \t — tabulyatsiya belgisi, u ustunlarni tekislaydi.
Zamonaviy: range-based for
C++11 dan boshlab to’plam elementlari bo’ylab yurishning soddaroq shakli paydo bo’ldi:
#include <iostream>
using namespace std;
int main() {
int sonlar[] = {10, 20, 30, 40};
for (int son : sonlar) {
cout << son << " ";
}
cout << endl;
return 0;
}
10 20 30 40
for (int son : sonlar) har bir elementni navbatma-navbat son ga joyladi. Bu shakl indeks bilan ovora bo’lmasdan to’plamni aylanib chiqishning eng toza usuli.
Xulosa
Bu bo’limda for tsikli tuzilishini, teskari va qadamli sikllarni, ichma-ich sikllarni va zamonaviy range-based for ni ko’rib chiqdik. Aniq sonli takror uchun for — birinchi tanlov. Keyingi darsda sikllarni boshqaruvchi break va continue operatorlariga o’tamiz.