6. For, While va Do-While

Ba'zan dasturda bir xil ishni bir necha marta bajarishimiz kerak bo‘ladi.

Masalan, 1 dan 10 gacha bo‘lgan sonlarni chiqarish.

Har bir son uchun alohida System.out.println() yozish noqulay.

Buning o‘rniga loop, ya'ni takrorlash operatorlaridan foydalanamiz.

Java'da asosiy looplar:

for
while
do-while

for

for ma'lum bir ishni bir necha marta bajarish uchun ishlatiladi.

Masalan:

for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

Natija:

1
2
3
4
5

for qanday ishlaydi?

Quyidagi kodga qarang:

for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

Bu yerda uchta qism bor:

int i = 1
i <= 5
i++

Birinchisi — boshlang‘ich qiymat:

int i = 1

Ikkinchisi — shart:

i <= 5

Uchinchisi — har bir takrorlanishdan keyin bajariladi:

i++

Ya'ni i har safar 1 taga oshadi.


for bilan matn chiqarish

Masalan:

for (int i = 1; i <= 3; i++) {
    System.out.println("Salom!");
}

Natija:

Salom!
Salom!
Salom!

Kod uch marta ishladi.


1 dan 10 gacha

for (int i = 1; i <= 10; i++) {
    System.out.println(i);
}

Natija:

1
2
3
4
5
6
7
8
9
10

10 dan 1 gacha

Loopni kamaytirish ham mumkin.

for (int i = 10; i >= 1; i--) {
    System.out.println(i);
}

Natija:

10
9
8
7
6
5
4
3
2
1

Juft sonlarni chiqarish

if va for ni birga ishlatish mumkin.

for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        System.out.println(i);
    }
}

Natija:

2
4
6
8
10

while

while ham takrorlash uchun ishlatiladi.

Masalan:

int i = 1;

while (i <= 5) {
    System.out.println(i);

    i++;
}

Natija:

1
2
3
4
5

while shart true bo‘lib turgan paytda ishlaydi.


while qanday ishlaydi?

Avval:

int i = 1;

yaratiladi.

Keyin:

i <= 5

tekshiriladi.

Agar shart true bo‘lsa, kod ishlaydi.

Keyin:

i++

bajariladi.

Keyin yana shart tekshiriladi.

Bu jarayon shart false bo‘lguncha davom etadi.


while bilan oddiy misol

int son = 1;

while (son <= 3) {
    System.out.println("Salom!");
    son++;
}

Natija:

Salom!
Salom!
Salom!

Muhim: whileda shartni tugatish

Quyidagi kod xavfli:

int i = 1;

while (i <= 5) {
    System.out.println(i);
}

Bu yerda i o‘zgarmayapti.

Shuning uchun shart doimo true bo‘lib qoladi.

Natijada loop to‘xtamaydi.

To‘g‘ri:

int i = 1;

while (i <= 5) {
    System.out.println(i);
    i++;
}

do-while

do-while ham while ga o‘xshaydi.

Farqi shundaki, do-while ichidagi kod kamida bir marta bajariladi.

Masalan:

int i = 1;

do {
    System.out.println(i);
    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 false bo‘lsa, kod umuman ishlamasligi mumkin.

do-while esa avval kodni bajaradi:

do {
    // kod
} while (shart);

Shuning uchun kod kamida bir marta ishlaydi.


Misol

while:

int i = 10;

while (i < 5) {
    System.out.println(i);
}

Bu yerda hech narsa chiqmaydi.

Chunki:

10 < 5

false.

do-while:

int i = 10;

do {
    System.out.println(i);
} while (i < 5);

Natija:

10

Chunki do-while avval kodni bir marta bajardi.


break

Loopni muddatidan oldin to‘xtatish uchun break ishlatiladi.

Masalan:

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

    if (i == 5) {
        break;
    }

    System.out.println(i);
}

Natija:

1
2
3
4

i 5 bo‘lganda loop to‘xtadi.


continue

continue joriy takrorlanishni tashlab, keyingi takrorlanishga o‘tadi.

Masalan:

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

    if (i == 3) {
        continue;
    }

    System.out.println(i);
}

Natija:

1
2
4
5

3 chiqarilmadi.


Loop ichida hisoblash

Loop yordamida yig‘indi hisoblash mumkin.

Masalan:

int yigindi = 0;

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

System.out.println(yigindi);

Natija:

15

Chunki:

1 + 2 + 3 + 4 + 5 = 15

Ichma-ich loop

Bir loop ichida boshqa loop bo‘lishi mumkin.

Masalan:

for (int i = 1; i <= 3; i++) {

    for (int j = 1; j <= 3; j++) {
        System.out.println(i + " " + j);
    }

}

Bunday loop nested loop deyiladi.

Hozircha ichma-ich looplarning murakkab qismlarini o‘rganish shart emas.


Qaysi loopdan foydalanamiz?

Boshlang‘ich darajada quyidagicha eslab qolish oson:

for — takrorlanish soni taxminan ma'lum bo‘lsa.

Masalan:

1 dan 10 gacha

while — ma'lum bir shart bajarilguncha davom etsa.

Masalan:

foydalanuvchi to‘g‘ri qiymat kiritguncha

do-while — kod kamida bir marta bajarilishi kerak bo‘lsa.


Oddiy amaliy dastur

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

public class Main {
    public static void main(String[] args) {

        int yigindi = 0;

        for (int i = 1; i <= 100; i++) {
            yigindi += i;
        }

        System.out.println(yigindi);
    }
}

Natija:

5050

Amaliy mashqlar

1-mashq

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

2-mashq

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

3-mashq

1 dan 20 gacha bo‘lgan juft sonlarni chiqaring.

4-mashq

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

5-mashq

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

6-mashq

do-while yordamida 1 dan 5 gacha bo‘lgan sonlarni chiqaring.

7-mashq

for yordamida 5 ga ko‘paytirish jadvalini chiqaring:

5 x 1 = 5
5 x 2 = 10
5 x 3 = 15

va hokazo.


Muhim narsalarni eslab qoling

for — kodni ma'lum miqdorda takrorlash uchun.

while — shart true bo‘lib turganda ishlaydi.

do-while — kodni kamida bir marta bajaradi.

break — loopni to‘xtatadi.

continue — joriy takrorlanishni tashlab ketadi.

Masalan:

for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}

Bu kod 1 dan 5 gacha bo‘lgan sonlarni chiqaradi.

Keyingi bobda arraylar yordamida bir nechta ma'lumotlarni bitta o‘zgaruvchida saqlashni o‘rganamiz.