Sikl for

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Sikllarni solishtirish: for vs while

while siklini komandalar yoki komandalar guruhini bir necha marta bajarish kerak bo'lgan har qanday holatda foydalanish mumkin. Lekin ushbu holatlar orasida bittasi alohida ko'rib chiqilishi kerak.

Bu holatda dasturchi (dastur muallifi) oldindan sikli necha marta bajarilishini biladi. Odatda bu maxsus hisoblagich o'zgaruvchisini kiritish orqali amalga oshiriladi va har bir sikl iteratsiyasida o'zgaruvchi 1 birligacha oshiriladi (yoki kamayadi).

Hammasi to'g'ri ishlayotganga o'xshaydi, lekin juda qulay emas. Sikldan oldin biz hisoblagich o'zgaruvchisi uchun boshlang'ich qiymatni belgilaymiz, keyin shartni tekshiramiz: u allaqachon yakuniy qiymatga yetganmi yoki yo'q. Lekin odatda uni sikl tanasining oxirida o'zgartiramiz.

Agar sikl tanasi katta bo'lsa-chi? Yoki bir necha ichki sikllar bo'lsa-chi? Umuman olganda, bunday holatlarda hisoblagich o'zgaruvchisini to'liq boshqarishni bir joyda to'plashni istardik. Shu sababli Java'da for sikli paydo bo'lgan. U juda qiyin emas:

for (komanda1; shart; komanda2)
{
   komandalar bloki
}

Agar while siklida qavs ichida faqat shart bo'lsa, bu yerda yana ikkita komanda qo'shilgan, nuqta va vergul bilan ajratilgan.

Haqiqatan ham barchasi oddiyroq, kompilyator for siklini oddiy while sikliga shunday aylantiradi:

komanda1;
while (shart)
{
   komandalar bloki
   komanda2;
}

Keling, misol bilan ko'rsatamiz: keyingi ikkita misol bir xil.

1-variant 2-variant
for (int i = 0; i < 20; i++)
{
 System.out.println(i);
}
int i = 0;
while (i < 20)
{
 System.out.println(i);
   i++;
}

Biz shunchaki bir joyda hisoblagich o'zgaruvchisi i bilan bog'liq bo'lgan barcha kodni to'pladik.

komanda1 for siklida faqat bir marta, sikl boshlanishidan oldin bajariladi (bu ikkinchi misolda ko'rinadi)

komanda2 sikl tanasi bilan bir xil marta bajariladi, lekin sikl tanasi to'liq bajarilgandan keyin amalga oshiriladi


2. for sikli qaerda ishlatiladi

for sikli Java'da eng ko'p foydalaniladigan sikl variantidir. U har joyda qo'llaniladi, chunki bu dasturchilar uchun ancha tushunarli va qulayroq while sikli yozish shaklidir. Amalda har qanday while siklini for sikliga aylantirish mumkin.

Misollar:

while sikli for sikli
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
for (int i = 3; i >= 0; i--)
{
   System.out.println(i);
}
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
for (int i = 0; i < 3; i++)
{
   System.out.println(i);
}
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
for (boolean isExit = false; !isExit; )
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
while (true)
   System.out.println("C");
for (; true; )
   System.out.println("C");
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
      break;
}
for (; true; )
{
   String s = console.nextLine();
   if (s.equals("exit"))
      break;
}

Oxirgi misolga e'tibor bering. U yerda sikl hisoblagichi bilan ishlash komandalar o'tkazib yuborilgan. Hisoblagich yo'q - komanda yo'q.

Java for siklida «hisoblagichni boshlash komandasi» va «hisoblagichni o'zgartirish komandasi»ni yozishga ruxsat beradi. Sikl sharti ifodasini yozmaslikka ham ruxsat bor.



3. for siklidan foydalanishni nozik jihatlari

for siklidan foydalanish va break va continue operatorlari bilan bog'liq muhim jihatlar.

break operatori while siklida qanday ishlasa, for siklda ham xuddi shunday ishlaydi — siklni darhol to'xtatadi. Lekin continue operatori sikl tanasini o'tkazib yuboradi, lekin sikl hisoblagichini o'zgartiruvchi komanda2 ni emas.

Keling, qanday qilib for va while bog'liq ekanligini yana ko'rib chiqamiz.

for (komanda1; shart; komanda2)
{
   komandalar bloki
}
komanda1;
while (shart)
{
   komandalar bloki
   komanda2;
}

Agar for siklining komandalar blokida continue operatori ishlatilsa, blokning qolgan qismi o'tkazib yuboriladi, ammo komanda2 (qiymat o'zgartiriladi) bajariladi.

Keling, 7 ga bo'linadigan sonlarni o'tkazib yuborishni yana bir bor ko'rib chiqaylik.

Bu kod yopiq bo'ladi Bu kod juda yaxshi ishlaydi
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0) continue;
   System.out.println(i);
   i++;
}
for (int i = 1; i <= 20; i++)
{
   if ( (i % 7) == 0) continue;
   System.out.println(i);
}

while sikli bilan kod ishlamaydi — i hech qachon 7 dan oshib ketmaydi. Lekin for sikli bilan kod juda yaxshi ishlaydi.



4. for sikllarini solishtirish: Java vs Pascal

Aytgancha, Pascal'da ham For sikli bor. U deyarli barcha dasturlash tillarida mavjud. Faqat Pascal'da u ancha tushunarliroq. Misollar:

Pascal Java
For i := 1 to 10 do
Begin
   Writeln(i);
End;
for (int i = 1; i <= 10; i++)
{
   System.out.println(i);
}
For i := 1 to 10 do step 2
Begin
   Writeln(i);
End;
for (int i = 1; i <= 10; i = i + 2)
{
   System.out.println(i);
}
For i := 10 downto 0 do step 2
Begin
   Writeln(i);
End;
for (int i = 10; i >= 0; i = i - 2)
{
   System.out.println(i);
}

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION