"Dasturlash I" fanidan yakuniy nazorat savollari
Download 372.68 Kb.
|
Dasturlash I fanidan yakuniy nazorat savollari
Dasturni ishlab chiqish jarayonida kod yozish va tekshirish bosqichlari(implementation, testing). 17.boolma’lumot turi (bool data type, mantiqiy o‘zgaruvchi, sonlarning mantiqiy turga konvertatsiyasi); bool ma’lumot turi o`zgaruvchini true (rost) yoki false (yolg`on) qiymatlari bilan e’lon qiladi. true va false – mantiqiy qiymatlar bo`lib, xuddi 1 va 0 ga o`shaydi. Ular dasturlash tilida kalit so`zlardir va ulardan ismlar sifatida foydalanib bo`lmaydi. Ichki fonda C++ true qiymati o`rniga 1 ni va false qiymati o`rniga 0 ni ishlatadi. Agar konsol oynada mantiqiy qiymat kiritsak, agar u rost (true) bo`lsa dastur ekranga 1 ni chiqaradi, agar yolg`on (false) bo`lsa, 0 ni chiqaradi. Dasturda bool o`zgaruvchiga sonli qoymatlarni ham berish mumkin. Bunda 0 dan boshqa ixiyoriy son true qiymat, 0 ning o`zi false qiymat qabul qiladi.
if– shart operatori (ifoperatori, blok-sxemasi); if – shart operatori dasturga hisoblash uchun maxsus alternative tanlov qismni belgilovchi tuzilma. Dastur tuzish davomida ko`p hollarda masalani yechimini topish bir nechta holatlar uchun bajarilishiga duch kelamiz. C++ da tanlash operatorlarining bir necha xili mavjud: bir yo`nalishli if operatori, ikki yo`nalishli if-else operatori, ichma-ich if operatorlar, switch operatori va shartli ifodalar. Bir yo`nalishli if operatori shart faqat bitta (true) bo`lgan holatlarda ishlaydi. if (mantiqiy ifoda) { ko`rsatma satri (s); Agar mantiqiy ifoda true qiymat qabul qilsa, blok ichidagi ko`rsatmalar bajariladi. Mantiqiy ifoda qavslar ichida yozilishi kerak. Shart operatorining bajarilishida uning tanasini belgilash uchun figurali qavslar ({ va })dan foydalanish mumkin. Agar dasturda faqat bir yoqlama shart operatori bo`lsa va undan keyin ushbu shartga tegishli bo`lgan boshqa bajariluvchi ifodalar bo`lmasa bu qavslardan foydalanish shart emas Ikki tarmoqli if-else operatori (ikki tarmoqliif-else operatori, blok-sxemasi). Ikki tarmoqli if-else operatori berilgan mantiqiy ifodaning true yoki false qiymat qabul qilganda operatsiya bajarishga mo`ljallangan. Bir tarmoqli if operatori agar mantiqiy ifoda rost qiymat qabul qilsa, dastur bosqichini operatsiya bajarishga yo`naltiradi. Mantiqiy ifoda yolg`on qiymat qabul qilganda esa hech qanday operatsiya bajarilmaydi. Ammo qo`yilgan shartning bajarilmagan holatida ham biror operatsiya amalga oshirilishi lozim bo`ladigan masalalar ham bor. Bunda ikki tarmoqli if - else operatoridan foydalanishimiz mumkin. Bu operator mantiqiy turning true yoki false qiymati uchun dastur oqimini bir-biridan farq qiluvchi ikki xil vazifaning bajarilishiga yo`naltiradi. Quyida ikki tarmoqli if - else operatorining yozilish qoidasi keltirilgan: if(mantiqiy ifoda) { mantiqiy ifoda rost qiymat olgandagi operatsiya; } else
{ mantiqiy ifoda yolg`on qiymat olgandagi operatsiya; } if - else operatori mantiqiy turning true yoki false qiymati uchun dastur oqimini bir-biridan farq qiluvchi ikki xil vazifaning bajarilishiga yo`naltiradi Ichma-ich joylashgan if va ko‘p tarmoqli if-else operatorlari (nested if statement, multi way if statement); Ichma-ich joylashgan if operatorini shakllantirish uchun if operatorini boshqa bir if operatori ichiga joylashtirish mumkin. if yoki if-else operatorlari tarkibida boshqa if yoki if-else operatorlarini ishlatgan holda istalgancha C++ tiliga muvofiq ko`rsatma satrlarini yozish mumkin. Ichkarida yozilgan if operatorini tashqi if uchun ichki deb atash mumkin. Ichki if da yana boshqa ichki if operatori bo`lishi mumkin. Shu narsa aniqki, bu yerda ichki if operatorlarning soni chegaralanmagan.Ko`p tarmoqli if-else operatoridan foydalangan holda ko`p sonli tanlovlar (alternativlar) uchun maqbul format keltirilgan. Mantiqiy operatorlar (Logical operators – !, &&, and ||); Mantiqiy operatorlar (!,&& va | |)dan qo`shma mantiqiy ifodalar hosil qilishda foydalanish mumkin. Ba’zida dasturlash davomida hisoblashlarni amalga oshirish uchun bir nechta shartlar kombinatsiyasini qo`llashga to`g`ri keladi. Ushbu kombinatsiyalarni qo`llash uchun mantiqiy operatorlardan foydalanish mumkin. Mantiqiy operatorlar shuningdek, Booleanoperatorlar deb ham tanilgan. U Boolean qiyatlar ustida operatsiya bajarib, yangi Boolean qiymat hosil qiladi. Yo`q (!) operatori true ni false ga, false ni esa true ga o`zgartirib ta’minlaydi, va (&&) operatori tavsiflangan. Bunda har ikkala mantiqiy operandlar bir vaqtda true qiymatga ega bo`lsagina true qiymat qabul qiladi,yoki (||) operatori tasvirlangan. Bu operator ikki operandning ixtiyoriy bittasi true qiymatga ega bo`lsa true qiymat qabul qiladi. Switchoperatori (switch statement); Switch operatori o`zgaruvchi yoki ifoda qiymatiga asoslangan ko`rsatmani bajarish uchun ishlatiladi. if operatori o`qishda qiyinchilik tug`diradi. C++ ko`p sonli tanlashlarni oddiy usul bilan hal qiluvchi switch operatorini taqdim etadi. Switch operatori barcha holatlarni tekshiradi va ma’qul holatdagi ko`rsatmani bajaradi. Bu operator status (holat)ning shunday tartibda 0, 1, 2 yoki 3 qiymatlariga mos kelish-kelmasligini tekshiradi. Agar moslik mavjud bo`lsa, unga tegishli ko`rsatma hisoblanadi, agar aksi bo`lsa, shu haqda xabar chiqariladi. Quyida switch ning yozilish qoidasi to`liq ko`rsatilgan: switch(switch-ifoda) { caseqiymat1: ko`rsatma satri 1; break; caseqiymat2: ko`rsatma satri 2; break; ...
caseqiymatN: ko`rsatma satri N; break;
default: dastlabki holat uchun ko`rsatma satri switch operatorida quyidagi qoidalar kuzatiladi: switchifodasiintegral qiymat berishi kerak va har doim qavslar orasiga olinadi; qiymat1, qiymat1, … qiymatN lar integral o`zgarmas ifodalar bo`lib, o`zgaruvchilardan iborat bo`lishi ko`zda tutilmaydi (xuddi 1+x kabi). Bu qiymatlar butun turdagi sonlar va ular suzuvchi-nuqtali sonlar bo`la olmaydi. case (moslik qatori) operatoridagi qiymat switch-ifoda qiymatiga mos kelganda, o`sha case ga tegishli ko`rsatmalar bajarilishni boshlaydi va bu jarayon break (to`xtatish) operatori bajarilganda yoki switch operatorining so`nggi qismi bo`lgan holatda to`xtaydi; default case – shunday xususiyatga egaki, yuqoridagi case lardan birortasining qiymati switch-ifoda qiymatiga mos kelmaganda bajariluvchi amalni belgilaydi; break operatorini qo`llash majburiy emas. U switch operatorining ishini darhol to`xtatish uchun ishlatiladi. Zaruriy hollarda break operatoridan foydalanishni unutmang! Bitta case qiymati mos kelsa, unga tegishli ko`rsatma bajarilishi boshlanadi va u break operatoriga qadar bajariladi yoki switch operatorining so`nggi qismiga qadar bajarilishda davom etib ketadi. Shartli operatorlarda ko‘p uchraydigan xatoliklar; if operatorida figurali qavslarni unutib qoldirish, nuqtali vergulni xato qo`yish, == o`rniga = ni qo`yish, else blokini umumiy blokdan chiqarib qo`yish – tanlov ko`rsatmalaridagi xatoliklardir. Ikki tarmoqli if-else va o`zgaruvchilarni double turida e’lon qilish – xatolikning oldini olishdir. Bir tarmoqli tanlov operatori tarkibida figurali qavslarni qoldirib yozish xato hisoblanmaydi. Bordiyu, agar figurali qavslar ko`p tarmoqli shart operatorlarida unutib qoldirilsa, dasturlashdagi asosiy xatolikka olib keladi. Agar if operatori tarkibiga yangi ko`rsatma satrini joylashtirmoqchi bo`lsak, shartlarni guruhlashtirishdagi xatolik yuzaga keladi. Dastur kodida if operatori ishlatilganda aynan u yozilgan satr so`ngida “;” - belgisi qo`yilmasligi lozim. Bunda dastur bajarilishi shartning qabul qilgan qiymatiga ko`ra shart tanasining tegishli qismiga o`tishi lozim. Nuqtali vergulning qo`yilishi shart operatori ishini shu joyda to`xtatib qo`yadi. Dasturlashda if operatori tarkibida tenglik shartini tekshirish uchun ikkita tenglik belgilarini ketma-ket yozish kerak. Aks holda, ya’ni bitta tenglik belgisi ishlatilsa mantiqiy xatolikka yo`l qo`yilgan bo`ladi. Bilamizki bitta tenglik “=” belgisi C++da ta’minlash (o`zgaruvchiga qiymatni ta’minlash) operatori sifatida qo`llaniladi. Shart operatorida tenglik shartini tekshirish uchun bitta tenglik belgisidan foydalanilsa, shart tekshirilayotgan o`zgaruvchiga qiymat ta’minlanib qoladi va bu mantiqiy xatolik hisoblanadi. Tasodifiy sonlarni hosil qilish (rand () funksiyasi, srand (seed) funksiyasi). Tasodifiy sonni hosil qilish rand () sonlari oldindan aniqlangan tasodifiy sonlardir. Ya’ni, unda har doim bir xil tizim ishlaydi, rand () bir xil ketma-ketlikdagi sonlarni har gal chiqaraveradi. Shaxsiy kompyuterda, masalan, ushbu ko`rsatma satri har doim 130, 10982, va1090 sonlarini hosil qiladi. random () funksiyasi algoritmi tasodifiy sonlarni hosil qilishda saralangan deb nomlanuvchi qiymatlardan foydalanadi.Odatga ko`ra saralangan qiymat 1 ga teng. Agar saralangan qiymatni turli sonlar uchun aniqlasak, turli tasodifiy sonlar chiqadi. Saralangan sonni tanlash uchun Amallarning bajarilish tartibi va assotsiativligi (operator precedence, operator associativity (+,-,*,/,%,||,&,!,<,> amallari misolida)). Dasturlash tillarida amallar huddi hayotdagidek ketma-ketlikda bo’ladi. Dastur kodni o’qishda tepadan pastga qarab o’qiydi, chapdan o’ngga qarab o’qiydi va shunday amallarni ham birinchi tepadagisini va chapdan eng birinchisidan boshlab bajarishni boshlaydi. Matematik amallar Matematika qonunlariga binoan bajariladi, ya’ni birinchi qavs ichi, ko’paytirish, bo’lish, qo’shish va ayirish. Matematik funksiyalar (Trigonometrikfunksiyalar, Exponent funksiyalar); Funksiya – muayyan masalani yechuvchi ko`rsatmalar majmuidir. Ularni trigonometric funksiyalar, eksponent funksiyalar va xizmatchi funksiyalar turlariga tasniflash mumkin. C++ trigonometrik funksiyalarni hisoblash uchun cmath kutubxonasi tarkibidagi quyidagi funksiyalarni taqdim etadi: Cmath kutubxonasidagi trigonometrik funksiyalar
Quyidagi beshta funksiya cmath kutubxonasidagi exponentlash funksiyalari hisoblanadi: cmath kutubxonasidagi exponentlash funksiyalari.
Matematik funksiyalar (Yaxlitlash funksiyalari, min, max va abs funksiyalari); min va max funksiyalari ikki son (int, double, long, yoki float)ning minimumini yoki maxsimumini qaytaradi. abs funksiyasi esa sonning modul qiymatini qaytaradi. Ceil bu sonni bitta kata butun songa yaxlitlaydi.Floor esa sonni bitta kichik songa yaxlitlaydi. Belgili ma’lumot turi, belgilar jadvali, belgini klaviaturadan o‘qish va maxsus birikmalar (char turi, ASCII, belgini o‘qitish, maxsus birikmalar); C++ da sonli qiymatlarni qo`shishda belgilarni ham ishlatish mumkin.Belgili ma’lumot turi (char) o`zida faqat bitta belgini saqlaydi. Belgili literallar bittalik qo`shtirnoqlar (‘ ’) orasiga olib yoziladi. Ko`pchilik kompyuterlarda kata va kichik harflar, raqamlar, tinish va boshqaruvchi belgilarni ifodalash uchun 8 bitli ASCII (American Standard Code for Information Interchange – Axborot almashish uchun amerikacha standart kod)shifrlash sxemasidan foydalaniladi. Kompyuter tomonidan belgini klaviaturadan o`qilishi quyidagi dastur kodida berilgani kabi amalga oshiriladi: cout<< "Belgini kiriting: "; char ch; cin>> ch; // belgini o`qish cout<< "O`qilgan belgi: " << ch << endl; Maxsus belgilarni anglatuvchi maxsus birikmalar Download 372.68 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling