8. for, while va do while

Dasturlashda ba'zan bir xil kodni bir necha marta bajarishimiz kerak bo‘ladi.

Masalan:

Salom
Salom
Salom
Salom
Salom

Buni besh marta cout bilan yozishimiz mumkin.

Lekin bu yaxshi usul emas.

Buning o‘rniga sikllardan foydalanamiz.

C++ da asosiy uchta sikl mavjud:

for
while
do while

Sikl nima?

Sikl — biror kodni bir necha marta takrorlash.

Masalan:

1
2
3
4
5

raqamlarini chiqarish uchun sikldan foydalanish mumkin.


for sikli

for ma'lum marta takrorlash kerak bo‘lganda juda qulay.

Oddiy ko‘rinishi:

for (boshlanish; shart; o‘zgarish) {
    // kod
}

Masalan:

for (int i = 1; i <= 5; i++) {
    cout << i << endl;
}

Natija:

1
2
3
4
5

for qanday ishlaydi?

Quyidagi kodni ko‘ramiz:

for (int i = 1; i <= 5; i++) {
    cout << i << endl;
}

Bu yerda:

int i = 1

boshlang‘ich qiymatni beradi.

Keyin:

i <= 5

shartni tekshiradi.

Keyin:

i++

i ni bittaga oshiradi.

Shuning uchun:

1
2
3
4
5

chiqadi.


1 dan 10 gacha

for (int i = 1; i <= 10; i++) {
    cout << i << endl;
}

Natija:

1
2
3
4
5
6
7
8
9
10

10 dan 1 gacha

Siklni teskari yo‘nalishda ham ishlatish mumkin.

for (int i = 10; i >= 1; i--) {
    cout << i << endl;
}

Natija:

10
9
8
7
6
5
4
3
2
1

Juft sonlarni chiqarish

Masalan, 2 dan 10 gacha juft sonlarni chiqaramiz:

for (int i = 2; i <= 10; i += 2) {
    cout << i << endl;
}

Natija:

2
4
6
8
10

while sikli

while ham kodni takrorlaydi.

Uning oddiy ko‘rinishi:

while (shart) {
    // kod
}

Masalan:

int i = 1;

while (i <= 5) {
    cout << i << endl;
    i++;
}

Natija:

1
2
3
4
5

while qanday ishlaydi?

Avval shart tekshiriladi:

i <= 5

Agar shart true bo‘lsa, kod bajariladi.

Keyin i oshadi:

i++;

Keyin shart yana tekshiriladi.

Bu jarayon shart false bo‘lguncha davom etadi.


while bilan hisoblash

Masalan:

int i = 1;
int yigindi = 0;

while (i <= 5) {
    yigindi += i;
    i++;
}

cout << yigindi;

Natija:

15

Chunki:

1 + 2 + 3 + 4 + 5 = 15

do while

do while ham sikl.

Lekin uning muhim farqi bor:

Kod kamida bir marta bajariladi.

Oddiy ko‘rinishi:

do {
    // kod
} while (shart);

Masalan:

int i = 1;

do {
    cout << i << endl;
    i++;
} while (i <= 5);

Natija:

1
2
3
4
5

while va do while farqi

while avval shartni tekshiradi.

while (shart) {
    // kod
}

Agar shart boshidanoq noto‘g‘ri bo‘lsa, kod umuman bajarilmaydi.

do while esa avval kodni bajaradi:

do {
    // kod
} while (shart);

Shuning uchun kod kamida bir marta bajariladi.


Misol

while:

int i = 10;

while (i < 5) {
    cout << i;
}

Bu yerda hech narsa chiqmaydi.

Chunki:

10 < 5

noto‘g‘ri.

do while:

int i = 10;

do {
    cout << i;
} while (i < 5);

Natija:

10

Chunki do ichidagi kod birinchi bo‘lib bajariladi.


Foydalanuvchi bilan sikl

Sikllar foydalanuvchi kiritadigan ma'lumotlar bilan ham ishlatiladi.

Masalan, 5 ta son olish:

for (int i = 1; i <= 5; i++) {
    int son;

    cout << "Son kiriting: ";
    cin >> son;
}

Dastur foydalanuvchidan besh marta son so‘raydi.


Sonlar yig‘indisi

Foydalanuvchidan 5 ta son olib, ularning yig‘indisini topamiz.

#include <iostream>

using namespace std;

int main() {
    int yigindi = 0;

    for (int i = 1; i <= 5; i++) {
        int son;

        cout << "Son kiriting: ";
        cin >> son;

        yigindi += son;
    }

    cout << "Yig'indi: " << yigindi;

    return 0;
}

Masalan:

10
20
5
3
2

Natija:

Yig'indi: 40

Cheksiz sikl

Ba'zan sikl to‘xtamay qolishi mumkin.

Masalan:

int i = 1;

while (i <= 5) {
    cout << i;
}

Bu yerda i hech qachon o‘zgarmaydi.

Shuning uchun:

i <= 5

doim true bo‘lib qoladi.

Natijada sikl cheksiz davom etadi.

To‘g‘ri variant:

int i = 1;

while (i <= 5) {
    cout << i << endl;
    i++;
}

break

Siklni oldinroq to‘xtatish uchun break ishlatiladi.

Masalan:

for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        break;
    }

    cout << i << endl;
}

Natija:

1
2
3
4

i 5 ga yetganda sikl to‘xtaydi.


continue

continue joriy takrorlashni tashlab, keyingi takrorlashga o‘tadi.

Masalan:

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        continue;
    }

    cout << i << endl;
}

Natija:

1
2
4
5

Bu yerda 3 chiqarilmadi.


Qaysi sikldan foydalanish kerak?

Boshlang‘ich darajada quyidagicha eslab qolish mumkin:

for

Takrorlanish soni ma'lum bo‘lsa.

Masalan:

10 marta takrorlash.

while

Shart bajarilguncha takrorlash kerak bo‘lsa.

Masalan:

foydalanuvchi to‘g‘ri javob berguncha.

do while

Kod kamida bir marta bajarilishi kerak bo‘lsa.

Masalan:

menyuni kamida bir marta ko‘rsatish.

Amaliy mashqlar

1-mashq

for yordamida:

1
2
3
...
20

raqamlarini chiqaring.


2-mashq

for yordamida 1 dan 20 gacha bo‘lgan juft sonlarni chiqaring.


3-mashq

while yordamida 10 dan 1 gacha bo‘lgan sonlarni chiqaring.


4-mashq

1 dan 100 gacha bo‘lgan sonlar yig‘indisini toping.

Natija:

5050

bo‘lishi kerak.


5-mashq

Foydalanuvchidan son oling.

while yordamida 1 dan shu songacha bo‘lgan sonlarni chiqaring.

Masalan:

Son: 5

Natija:

1
2
3
4
5

Muhim narsalarni eslab qoling

Sikl bir xil kodni bir necha marta bajarish uchun ishlatiladi.

for — takrorlanish soni ma'lum bo‘lganda qulay.

while — shart asosida takrorlash uchun ishlatiladi.

do while — kodni kamida bir marta bajaradi.

break — siklni to‘xtatadi.

continue — joriy takrorlashni tashlab, keyingisiga o‘tadi.

Eng ko‘p ishlatiladigan sikllar:

for
while
do while

Sikllarni yaxshi tushunish juda muhim, chunki ular deyarli barcha katta dasturlarda ishlatiladi.