For parametrli va ichma-ich joylashgan takrorlash operatori Ma’ruza №9. Maqsad
Download 399.41 Kb.
|
rnJSqQz4bo7VZ2ZWRvzQM69g2IrmKPSWPqwH7XSN
For parametrli va ichma-ich joylashgan takrorlash operatoriMa’ruza №9.MaqsadQuyidagi tushunchalar bilan tanishish:
for siklifor 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 siklifor siklida yuqoridagi holatni sodda ko’rinishda yozish mumkin:for (i=boshlangichQiymat; i{//sikl tanasi…}for sikli blok-sxemasiBoshlang’ich-qiymat Sikl-davomli-sharti Buyruq(lar) (sikl tanasi) Har-qadamdan-keyingi-harakat cout<<“C++ ga xush kelibsiz\n”; for sikliAgar 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 xatoliklardo-while da (;) qo’yish lozim!Ichma-ich sikllarBir 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.cppNatijasiEslatma!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 kamaytirishSikl 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.cppNatijaNatija 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 yechimiNatijabreak operatoriNatijasicontinue operatoriNatijaDownload 399.41 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling