Dart for parametrli takrorlanish operatori

for – parametrli takrorlanish operatori hisoblanib, asosan, unga 3 ta parametr asosida turli vazifalar beriladi. Xuddi C oilasidagi kabi ko’rinishi bilan tanishib chiqsak hozir. Keyin ro’yxatlar mavzusida Dart dasturlash tilidagi for siklining boshqa ko’rinishlari bilan ham tanishib o’tamiz.

For sikli sintaksisi :

for (boshlash; shart; qadam) {
// kod bloki
}
  • for kalit so’zi dan foydalaniladi
  • Qavslar ichida uning parametrlari ko’rsatiladi
  • Boshlash (start) siklning boshlanish nuqtasini bildiruvchi ifoda beriladi. Shu orqali boshlanish nuqtasini o’rnatadi va 1 marotaba ishlatiladi.
  • Shart (stop) sikl qachon to’xtatilishi kerakligini va keyingi qadamga o’tkazilishini tekshirishni bildiruvchi mantiqiy ifoda ko’rsatiladi. Mantiqiy va taqqoslash operatorlaridan foydalaniladi. Mantiqiy ifoda true (rost) bo’lsa, keyingi qadamga o’tadi, aks holda false bo’lganda yakunlanadi.
  • Qadam (step) sikl boshlangan vaqtda o’tishlar sonini bildiruvchi ifoda. Tayinlash operatorlari ishlatiladi bu yerda va har bir siklning kod bloki yakunlanganda bajariladi.
  • Jingalak qavslar sikl tanasini ifodalaydi va u yerga kod bloki yoki ifodalar yoziladi. Ifoda faqat bitta bo’lsa yozmaslik ham mumkin.

Ekranga 5 marotaba “UzbekDevs” so’zini chiqarib ko’raylik:

Siklsiz

void main() {
print("UzbekDevs");
print("UzbekDevs");
print("UzbekDevs");
print("UzbekDevs");
print("UzbekDevs");
}

Sikl bilan

void main() {
for (var i = 0; i < 5; i++) {
print("UzbekDevs");
}
}

Siklsiz holatda biz 5 marotaba yozib chiqishimiz kerak. Sikl ishlatilgan holatda faqatgina bir marotaba yozib, parametrlarini to’g’ri ko’rsatib qo’yish yetarli. Sikl orqali berilgan kodni endi tahlil qilib ketaylik :

  • Sikl yaratilmoqda
  • i = 0 sikl boshlanish nuqtasini belgilab beryabdi. Hozir u 0 dan boshlanmoqda.
  • i < 5 sikl qachongacha bajarilib borish uchun berilgan shart. i qiymati 5 ga teng bo’lgunga qadar shart doimo to’g’ri bo’ladi.
  • i++ postfiks inkrement orqali i qiymati 1 ga ortib bormoqda. Sikl birinchi bor ishlagan vaqtda bu qism bajarilmaydi. Avvalo, shart tekshiriladi va sikl tanasi bajariladi. Shundan so’ng, i qiymati oshiriladi.
  • Sikl tanasi ichida kod bloki ishlaydi hamda print(“UzbekDevs”); ifodasi ekranga “UzbekDevs” satrini chiqaradi.

For tanasini ishlatmagan holatda ham for siklidan foydalanish imkoniyati mavjud :

void main() {
var sum = 0;
for (var i = 0; i < 5; sum += i, i++);
print(sum);
}
>> 10

Bu kodda 1 dan 5 gacha (5 hisobga olinmaydi) bo’lgan sonlar yig’indisini hisoblab chiqilmoqda. sum bu yig’indini o’zida saqlab ketmoqda. For sikli tanasi yozilmaydi va nuqta-vergul orqali yakunlanadi.

i++ postfiks inkrement o’rniga i += 1 yoki i = i + 1 shaklini ham qo’llash mumkin. Bu bizga qiymatni faqat 1 ga emas, balki boshqa qiymatlarga o’zgartirish imkoniyatini beradi. 1 o’rnida boshqa sonni yoza olamiz.

Hech qanday parametrlar yoki shart ifoda berilmasa (doimo rost bo’lsa) for sikli cheksiz takrorlanadi va bu kabi siklga abadiy sikl (infinity loop) deyiladi.

void main() {
for (;;) {
print(1);
}
}


void main() {
for (;0 < 1;) {
print(1);
}
}


void main() {
for (var i = 0; ; i++){
print(i);
}
}

continue kalit so’zi

Keyingi qadamga o’tkazish imkonini beradi. Ya’ni qaysidir holatlar uchun sikl tanasini to’liq bajarilishini tashlab ketish uchun imkon yaratadi. 1 dan 10 gacha bo’lgan 3 ga bo’linuvchi sonlarni chiqaraylik.

void main() {
for (var i = 1; i <= 10; i++) {
if (i % 3 != 0) {
continue;
}
print(i);
}
}
>> 3 >> 6 >> 9

Sikl bajarilish davomida if shart operatori orqali i ning qiymati 3 ga bo’linishiga tekshirib ko’riladi. Bo’linmagan holatda continue ishlatiladi sikl keyingi iteratsiyaga o’tib ketadi. Kodning print(i); qismi ishlamaydi. Boshqa holatda i ning qiymati ekranga chiqariladi.

For sikli orqali bir vaqtning o’zida bir nechta o’zgaruvchilarni berish va boshqarish mumkin:

void main() {
for (var i = 1, j = 0; i <= 6 || j < x10; i++, j += 2) {
print("$i $j");
}
}
>> 1 0 >> 2 2 >> 3 4 >> 4 6 >> 5 8 >> 6 10

Yuqoridagi kodda i va j o’zgaruvchilari yaratib ketilmoqda. Shart ham murakkablashdi va i, j qiymatlari turli tarzda oshirilmoqda.