Dart while, do while takrorlanish operatorlari

Takrorlanishlarga inson hayoti davomida bir necha bor takrorlaydigan ishlarni tushunishimiz mumkin. Misol qilib keltirib o’tsak, o’quvchilarning kuniga 4-5 soat dars o’tishi, insonlarning bankomatlardan pul yechib olishi va boshqalar.

Kunlik faoliyatimiz davomida ishlatayotgan odatiy ko’plab ilovalarimizda ham takrorlanish ishlari bajariladi. Bu degani u ilovalarni ishlab chiqishimizda biror dasturlash tilidan foydalaniladi. Demak, mana shu dasturlash tilida takrorlanish vazifasini bajaruvchi sikl operatorlari mavjud. Dart dasturlash tilida bu vazifani for, while, do while kabi sikl operatorlari bajaradi.

Sikl ahamiyati :

  • Misol, ekranga 1 dan 1000 gacha bo’lgan sonlarni chiqarish lozim.
  • Oddiy yo’l bilan buni quyidagi usulda bajarish mumkin.
print(1);
print(2);
...
print(1000);

Sikl orqali buni oson va qulay bajarish imkoniyati bor.

Sikl – bu kod qismini qandaydir shart asosida takrorlanib ishlashi hisoblanadi. Sikl yordamida qonuniyat orqali o’zgaradigan vazifani bajarsa bo’ladi. Sikl orqali nisbatan kod uzunligi qisqaradi va kamroq joyni egallaydi.

while – sharti oldin keluvchi takrorlanish operatori. Ya’ni toki shart bajarilgunga qadar sikl tanasi ham bajariladi. Sintaksisi :

while (shart) {
// kod bloki
}

Yuqoridagi misolni while sikl operatori orqali ko’radigan bo’lsak,

void main() {
var counter = 0;
while (counter < 1000) {
counter++;
print(counter);
}
}

counter nomli o’zgaruvchi yaratib oldik, while siklidagi shartga esa 1000 dan kichik bo’lsa ishlayversin deb buyruq yozdik. counter o’zgaruvchisi qiymati 0 ga teng. Demak, sikldagi shart cheksiz marotaba ishlaydi. Nega? 0 doimo 1000 dan kichik bo’lganligi bois. Biz aynan siklni 1000 marotaba ishlatib, 1 dan 1000 gacha bo’lgan sonlarni ekranga chiqarishimiz kerak. Bunga esa counter qiymatini 1 ga oshirib borishimiz talab etiladi (postfiks inkrement ishlatilmoqda). Shu orqaligina shart cheksiz bajarilmasligiga yechim topgan bo’lamiz. Har qiymat oshirilganda esa uni ekranga chiqarib boramiz.

do while – sharti keyin keluvchi takrorlanish operatori hisoblanadi. Ya’ni avval sikl tanasi bajariladi va keyin shart tekshiriladi. Sintaksisi :

do {
// kod bloki
} while (shart);

Boshida berib o’tib ketgan misolimizga endi qo’shimcha shartlar qo’shamiz. 1 dan 1000 gacha toq sonlarni ekranga chiqaraylik. Buning uchun 2 xil yechim mavjud : counter qiymatini 1 deb olib 2 ga oshirib borishimiz yoki counter qiymatini toq son bo’lishini tekshirib natija rost bo’lganda keyin ekranga chiqarish.

void main() {
var counter = 0;
do {
counter++;
if (counter % 2 == 1)
print(counter);
} while (counter < 1000);
}


void main() {
var counter = 1;
do {
print(counter);
counter += 2;
} while (counter < 1000);
}

Sikl bajarilish jarayonida uni biz biror shart asosida to’xtashimiz mumkin. Siklni to’xtatish uchun break kalit so’zidan foydalaniladi. Avtomobil tez yurib ketayotgan vaqtda yo’ldan piyoda chiqib yubordi, Bu kabi vaziyatlarda haydovchi tormozni bosib, avtomobilni to’xtatib qoladi. Piyodani urib yubormaslik uchun avvalo.

Masalan, hozirda talabalar nazorat ishlari bo’yicha maksimal 100 ball to’play olishadi. Undan ortib ketishi mumkin emas. Umumiy 1 semestrda 3 nazorat ishi mavjud bo’lib, joriy, oraliq, yakuniy mos ravishda 25, 25, 50 ball olishi mumkin ulardan. Talaba olgan ballarini ketma-ketlikda sikl orqali kiritsin va biz uni tekshirib boraylik. Agarda mos maksimal ballardan yuqori qiymatni aytgan bo’lsa, bizni aldagan bo’ladi va mana shu holatda “Siz bizga yolg’on aytdingiz”, – deya chiqarsin va sikl yakunlansin.

import 'dart:io';

void main() {
var cnt = 0;
while (cnt < 3) {
var score = int.parse(stdin.readLineSync() ?? '0');
if (((cnt == 0 || cnt == 1) && score > 25) || (cnt == 2 && score > 50)) {
print("Siz bizga yolg'on aytdingiz");
break;
}
print(score);
cnt += 1;
}
}

Talaba bizga aytgan ballarni qabul qilib olyabmiz. Keyin esa 0 va 1 ga teng bo’lganda ball 25 dan, 2 da esa 50 dan katta bo’lib ketsa, yolg’on aytganligi haqida aytmoqdamiz.

Koddagi kiritish qismiga hozirda aniq tushunmasligingiz mumkin. Bu bo’yicha to’liq ma’lumotni Nullability mavzusida bilib olasiz.