Mavzuga kirish; while – sikl operatori


int sum = 0, i = 1; while



Yüklə 428,4 Kb.
səhifə3/7
tarix02.12.2023
ölçüsü428,4 Kb.
#137603
1   2   3   4   5   6   7
Takrorlanuvchi jarayoni tashkil etish

int sum = 0, i = 1;
while (i < 10)
{
sum = sum + i;
}
Bu siklning bajarilishi cheksizdir, chunki bunda i har doim 1 ga teng vai<10 sharti har doim true qiymat qabul qiladi.
Eslatma.Siklning-davom-etish-sharti u false qiymat qabul qilgunga qadar aniq bajariladi. Dasturlashda ko`p uchraydigan xatoliklardan biri – cheksiz sikllar(bunda sikl tugatilmasdan, sikl tanasidagi ko`rsatma satrlari bajarilaveradi).Agar dasturingiz odatdagidan ko`proq vaqt davomida bajarilish jarayoni (run time)da qolsa va to`xtamasa, unda cheksiz sikl yozilgan bo`lishi mumkin. Agar dastur komanda oynasida ishga tushirilgan bo`lsa, uni Ctrl+C– tugmalar kombinatsiyasi orqali to`xtatish mumkin.
Ogohlantirish!Ko`pincha dasturchilar birinchi marta yoki dastlabki bir necha marotaba sikl operatorini yozishda xatolikka yo`l qo`yishadi. Buni ko`pchilik bir-buzilish xatoligi (off-by-one error) deb ataydi. Misol uchun, quyidagi sikl C++ ga xush kelibsiz!jumlasini 100 martadan ko`proq, 101 marta chiqaradi. Xatolikka shartli qismda yo`l qo`yilgan. Unda hisob<100 sharti hisob<=100 dan kichik.
inthisob = 0;
while (hisob<= 100)
{
cout<< "C++ ga xush kelibsiz!\n";
hisob++;
}
Avval ko`rib chiqqan – ikki sonning ayirmasi dasturini while operatoridan foydalangan holda qayta ko`rib chiqamiz. U dasturda foydalanuvchiga ikkita sonning ayirmasini topib, kiritishga undovchi, agar foydalanuvchi to`g`ri javob kiritsa to`g`ri javob kiritilganligini, yoki noto`g`ri javob berilsa, javob noto`g`ri ekanligini va to`g`ri javobni ko`rsatish shartlari qo`yilgan edi. Endi while operatoridan foydalangan holda, foydalanuvchi tomonidan toki to`g`ri javob berilmaguncha, uni to`g`ri javobni topishga undovchi ko`rsatma satrlarini qo`shib, dasturga o`zgartirish kiritamiz.
8.1-kodli ro`yxat. AyirmaSavoliniTakrorlash.cpp
1 #include
2 #include // for time function
3 #include // for rand and srand functions
4 usingnamespace std;
5
6 intmain()
7 {
8 // 1. Tasodifiy, bir xonali, butun sonlar generatsiyasi
9 srand(time(0));
10 intson1 = rand() % 10;
11 intson2 = rand() % 10;
12
13 // 2. Agar son1 < son2 bo`lsa, son1 bilan son2 joy almashadi
14 if (son115 {
16 int temp = son1;
17 son1 = son2;
18 son2 = temp;
19 }
20
21 // 3. O`quvchini son1 - son2 ning qiymatini topishga undash
22 cout<23 intjavob;
24 cin>>javob;
25
26 // 4.Javob to`g`ri bo`lguncha so`rashni takrorlash
27 while (son1 - son2 != javob)
28 {
29 cout << "Noto`g`rijavob. Qaytadan urinib ko`ring."
30 <31 cin >>javob;
32 }
33
34 cout << "Siz javobni topdingiz!"<35
36 return 0;
37 }

4 – 3 ning qiymati nechchi? 4
Noto`g`ri javob. Qaytadan urinib ko`ring.4 – 3 nechchi? 5
Noto`g`ri javob. Qaytadan urinib ko`ring. 4 – 3 nechchi? 1
Siz javobni topdingiz!

27-32-satrlarda joylashgan sikl, son1 - son2 != javob sharti true qiymat qabul qilganda foydalanuvchini ikki sonning ayirmasini topishga takroran undaydi. Qachonki, son1 - son2 != javob sharti false qiymat qabul qilganda, sikl ishini tugatadi.

Yüklə 428,4 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin