For parametrli va ichma-ich joylashgan takrorlash operatori Ma’ruza №9. Maqsad


Download 399.41 Kb.
Sana15.12.2022
Hajmi399.41 Kb.
#1008413
Bog'liq
rnJSqQz4bo7VZ2ZWRvzQM69g2IrmKPSWPqwH7XSN

For parametrli va ichma-ich joylashgan takrorlash operatori

Ma’ruza №9.

Maqsad

Quyidagi tushunchalar bilan tanishish:

for sikli

for sikli sikllarni yozishning ixchamlashgan sintaksisiga ega.

Biz shu paytgacha sikllarni quyidagicha yozib kelgan edik:

i=boshlangichQiymat;

while (i

{

//sikl tanasi

i++; //siklni nazorat qiluvchi o’zgaruvchi

}

for sikli

for siklida yuqoridagi holatni sodda ko’rinishda yozish mumkin:

for (i=boshlangichQiymat; i

{

//sikl tanasi

}

for sikli blok-sxemasi


Boshlang’ich-qiymat
Sikl-davomli-sharti
Buyruq(lar)
(sikl tanasi)
Har-qadamdan-keyingi-harakat
cout<<“C++ ga xush kelibsiz\n”;

for sikli


Agar siklga oid buyruq bitta bo’lsa qavslarni tashlab yuborish mumkin.

Maslahat.

Siklda nazorat o’zgaruvchisi siklning nazorat qismida yoki undan oldin e’lon qilinishi mumkin. Agar siklning nazorat o’zgaruvchisi(boshlang’ich qiymati) faqat siklda qo’llaniladigan bo’lsa, uni for siklning boshlang’ich qiymat qismida e’lon qilgan ma’qul. Agar boshlang’ich qiymat siklda e’lon qilinsa, undan sikldan tashqarida foydalanib bo’lmaydi. Yuqoridagi misolda i o’zgruvchisidan sikldan tashqarida foydalanib bo’lmaydi, chunki u for siklining ichida e’lon qilingan.

Eslatma!

for siklida boshlang’ich qiymatni vergullar orqali ajratilgan bir necha o’zgaruvchilar e’lon qilib berish ham mumkin:

Sikldan quyidagicha ham foydalanish mumkin:

Bu to’g’ri, ammo o’qish uchun qiyinchilik tug’diradi. Shuning uchun for siklidan bunday ko’rinishda foydalanmagan ma’qul.

Eslatma!

Agar sikl sharti qolib ketsa, u cheksiz sikl ekanligini anglatadi.

Qaysi sikl operatoridan foydalanish kerak?

O’zingizga qulay bo’lgan while, do-while yoki for sikl operatorlaridan foydalanishingiz mumkin.

Qaysi sikl operatoridan foydalanish kerak?

Umuman olganda, qaytarilishlar soni oldindan ma’lum bo’lgan hollarda for sikli qo’llaniladi. Misol uchun biror xabarni 100 marta ekranga chiqarish kerak bo’lgan hollarda. Takrorlanishlar soni aniq bo’lmagan hollarda esa while siklidan foydalaniladi. Misol uchun 0 kiritilmaguncha sonlarni kiritish. Sikl shartigacha sikl tanasi bajarilishi lozim bo’lgan paytda while o’rniga do-while siklidan foydalangan ma’qul.

Umumiy xatoliklar

do-while da (;) qo’yish lozim!

Ichma-ich sikllar

Bir sikl boshqa bir siklning ichida bo’lishi mumkin.

Ichma-ich sikllar tashqi va bir necha ichki sikllardan iborat bo’ladi. Tashqi sikl har safar takrorlanganda, ichki sikl to’liq takrorlanadi.

Quyida ko’paytirish jadvalini ichma-ich sikl yordamida chiqarish dasturini qaraymiz:

Listing 5.8 KupaytirishJadvali.cpp

Natijasi

Eslatma!

Ichma-ich sikllar bajarilishi juda uzoq vaqt olishi mumkin. Quyidagi holatni tekshirib ko’ring:

Bu yerda takrorlanish 1 trillion marta sodir bo’ladi. Agar bir harakatga 1 millisekund ketsa, u holda sikl to’liq bajarilishi uchun 277 soat vaqt kerak bo’ladi.

Sonli xatolarni kamaytirish

Sikl shartida haqiqiy sonlardan foydalanish sonli xatoliklarga olib kelishi mumkin.

Haqiqiy sonlar dasturda sonli xatoliklarni sodir qilish ehtimoli mavjud.

Quyidagi 5.9 listingda 0.01 dan boshlanuvchi va 1.0 da tugovchi, har qadami 0.01 ga oshib boruvchi yig’indini aniqlash masalasi qaralgan. Quyidagicha: 0.01+0.02+0.03+…

Listing 5.9 TestSum.cpp

Natija


Natija 49.5 bo’ldi, ammo 50.5 chiqishi lozim edi. Qanday sodir bo’ldi? Har bir takrorlanishda i 0.01 ga ortib boraverdi. Sikl tugayotganda i ning qiymati 1 dan kata bo’ldi (aynan 1 ga teng emas). Shuning uchun i qiymat sum ga qo’shilmadi.

Bu muammo qanday yechiladi?

Buni quyidagicha amalga oshirish mumkin:

double joriyQiymat = 0.01;

for (int count = 0; count < 100; count++)

{

sum += joriyQiymat;

joriyQiymat += 0.01;

}

Muammoning yechimi

Natija

break operatori

Natijasi

continue operatori

Natija


Download 399.41 Kb.

Do'stlaringiz bilan baham:





Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling