• OnKeyDown
  • OnEnter
  • Mavzu: C++ tilida panel yaratuvchi komponentlar Mundarija kirish I bob. C++ da dasturlashning asosiy qismi




    Download 1.61 Mb.
    bet8/10
    Sana19.06.2023
    Hajmi1.61 Mb.
    #74294
    1   2   3   4   5   6   7   8   9   10
    Bog'liq
    C tilida panel yaratuvchi komponentlar1
    1. Flavonoidlar tasnifi. Flavonoidlar xossalari, Tayoqchalarni o’rnini almashtirish, O‘zbеkiston rеspublikasi xalq ta’limi vazirligi t. N. Qori niyoz, C da Enkapsulatsiya. (Sinf Class) - UzbekDevs, Tokarlik dastgohlar. Tv-7 metallarni kesib ishlash dastgohlari, Blokcheyn, 1, ozbekiston va yevropa ittifoqi savdo iqtisodiy aloqalarining asosiy, Имя существительное, O’ZBEKISTONDA TEMIR YO’L TRANSPRTINING RIVOJLANISHI, Bog\'lovchining vazifasiga ko\'ra turlari, 001dars, f5a369aa-1eba-f08f-8103-55ef9f2129a5 media , Kimyo. Shomurotova Sh.X, Djurayeva F.A (1)
    OnKeyPress va OnKeyDown hodisalari klaviatura tugmasini bosganda yuzaga keladi.
    OnKeyUp hodisasi klaviatura tugmasini qo'yib yuborganda yuzaga keladi.
    Klaviatura tugmasini bosganda hodisalar quyidagi ketma - ketlikda ro'y beradi : OnKeyDown => OnKeyPress => OnKeyUp.
    Klaviaturani bosib turganda uzluksiz ravishda OnKeyDown hodisasi, tugma quyib yuborilgandan keyin OnKeyUp hodisasi ro'y beradi.
    OnKeyPress hodisasi klaviatura tugmasi bosilganda ro’y beradi va bosilgan tugmaga mos keluvchi belgining ASCII kodini qabul qiladi.
    OnKeyPress hodisasini qayta ishlashga misol: void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
    { if(Key=='!') Key=0;
    }
    OnEnter hodisasi boshqaruv elementlari fokus olgansda yuz beradi (sichqoncha yoki tugmasi yordamida).
    OnExit hodisasi darcha boshqaruv elementi fokusni yuqotganda yuz beradi.
    Ko'p programmalar ijro davomida arifmetik amallarni bajaradi. C++ dagi amallar quyidagi jadvalda berilgan. Ular ikkita operand bilan ishlatdi C++dagi amal
    Arifmetik operator Algebraik ifoda C++ dagi ifodasi
    Qo'shish ”+” h+19 h+19
    Ayirish ”-” f-u f-u
    Ko'paytirish ”*” sl s*l
    Bo'lish ”/” v / d, vod v/d
    Bularning ba'zi birlrinig hususiyatlarini ko'rib chiqaylik. Butun sonlibo'lishda, yani bo'luvchi ham, bo'linuvchi ham butun son bo'lganda, javob butun son bo'ladi. Javob yahlitlanmaydi, kasr qismi tashlanib yuborilib, butun qismining o'zi qoladi. Modul operatori (%) butun songa bo'lishdan kelib chiqadigan qoldiqni beradi. x%y ifodasi x ni y ga bo'lgandan keyin chiqadigan qoldiqni beradi. Demak, 7%4 bizga 3 javobini beradi. % operatori faqat butun sonlar bilan ishlaydi. Vergulli (real) sonlar bilan ishlash uchun "math.h" kutubxonasidagi fmod funksiyasini qo‘llash kerak. C++ da qavslarning ma'nisi huddi algebradagidekdir. Undan tashqari boshqa boshqa algebraik ifodalarning ketma-ketligi ham odatdagidek. Ko'paytirish, bo'lish va modul olish operatorlari ijro ko'radi. Agar bir necha operator ketma-ket kelsa, ular chapdan o'nga qarab ishlanadi. Bu operatorlardan keyin esa qo'shish va ayirish ijro etiladi.
    C++ bir necha solishtirish operatorlariga ega. Algebraik ifoda C++ dagi operator C++ dagi ifoda Algebraik ma'nosi tenglik guruhi
    “== “ x == y x tengdir y ga teng emas “!=“ x!=y x teng emas y ga solishtirish guruhi katta “>“ x > y x katta y dan kichik “<“ x < y x kichkina y dan katta-teng “>=“ x >= y x katta yoki teng y ga kichik-teng “<=“ x <= y x kichik yoki teng y ga
    ==, !=, >= va <= operatorlarni yozganda oraga bo'sh joy qo'yib ketish sintaksis xatodir. Yani kompilyator dasturdagi hatoni ko'rsatib beradi va uni tuzatilishini talab qiladi. Ushbu ikki belgili operatorlarning belgilarining joyini almashtirish, masalan <= ni =< qilib yozish ko'p hollarda sintaksis hatolarga olib keladi. Gohida esa != ni =! deb yozganda sintaksis hato vujudga ham, bu mantiqiy hato bo'ladi. Mantiqiy hatolarni kompilyator topa olmaydi. Lekin ular programma ishlash mantig'ini o'zgartirib yuboradi. Bu kabi hatolarni topish esa ancha mashaqqatli ishdir (! operatori mantiqiy inkordir). Yana boshqa hatolardan biri tenglik operatori (==) va tenglashtirish, qiymat berish operatorlarini (=) bir-biri bilan almashtirib qo'yishdir. Bu ham judaayanchli oqibatlarga olib keladi, chunki ushbu hato aksariyat hollarda mantiq hatolariga olib keladi.
    Asosan dasturdagi ifodalar ketma-ket, navbatiga ko'ra ijro etiladi. Gohidabir shart bajarilishiga ko'ra, ijro boshqa bir ifodaga o'tadi. Navbatdagi emas, dasturning boshqa yerida joylashgan ifoda bajariladi. Yani sakrash yoki ijro ko'chishi vujudga keladi. 60-chi yillarga kelib, dasturlardagi ko'pchilik hatolar aynan shu ijro ko'chishlarining rejasiz ishlatilishidan kelib chiqishi ma'lum bo'ldi. Bunda eng katta aybdor deb bu ko'shishlarni amalga oshiruvchi goto (...ga bor) ifodasi belgilandi. goto dastur ijrosini deyarli istalgan yerga ko'chirib yuborishi mumkin. Bu esa programmani o'qishni va uning strukturasini murakkablashtirib yuboradi. Shu sababli "strukturali dasturlash" atamasi "goto ni yo'q qilish" bilan tenglashtirilardi. Shuni aytib o'tish kerakki, goto kabi shartsiz sakrash amallarini bajaruvchi ifodalar boshqa dasturlash tillarida ham bor. Tadqiqotlar shuni ko'rsatdiki, istalgan programma goto siz yozilishi mumkin ekan. goto siz yozish uslubi strukturali dasturlash deb nom oldi. Va bunday dastur yozish metodi katta iqtisodiy samara beradi. Strukturali dasturlash asosi shundan iboratki, har bir programma faqatgina uch hil boshqaruv strukturalaridan iboratdir.Bular ifodalarni ketma-ket ijro etish strukturasi (sequence structure), tanlash strukturasi (selection structure) va amalni qayta ijro etish strukturasidir (repetition structure). Ifodalarni ketma-ket ijro etish strukturasi C++ tomonidan ta'minlanadi. Normal sharoitda C++ ifodalari dasturdagi navbatiga ko'ra bajariladi. Tanlash buyruqlari uchtadir. Bular if, if/else va switch dir. Qayta ijro etish buyruqlari gurugiga ham uchta a'zo bor, bular while, do/while va for. Bularni har birini keyinroq tahlil qilib chiqamiz. Yuqoridagi buyruqlar nomlari C++ dasturlash tilining mahsus so'zlaridir. Dasturchi bu so'zlarni o'zgaruvchi yoki funksiyalar nomi sifatida qo'llashi ta'qiqlanadi. Quyida C++ ning ajratilgan so'zlarining to'liq ro'yhati berilgan.
    C# va C ga tegishli:
    auto do goto signed unsigned break double if sizeof void case else int static volatile char enum long struct while const extern register switch continue float return typedef default for short union Faqat C++ ga qarashli:
    asm explicit operator this virtual bool false private throw wchar_t catch friend protected true class inline public try const_cast mutable reinterpret_cast typeid delete namespace static_cast typename dynamic_cast new template using
    C++ dagi yetita boshqaruv strukturasini aytib o'tdik. Ular bittagina boshlanish nuqtasiga va bittagina chiqish nuqtasiga egadirlar. Demak biz bu dastur bo'laklarini ketma-ket ulab ketishimiz mumkin. Boshqaruv strukturalarining bu kabi ulanishini devorning g'ishtlarini ustma-ust qalashga ham taqqoslasak bo'ladi. Yoki biz bu bloklarni bir-birining ichigajoylashtirishimiz mumkin. Bu kabi qo'llashish ikkinchi uslub bo'ladi. Mana shu ikki yo'l bilan bog'langan yetita blok yordamida biz istalgan dasturimizni yoza olamiz.
    Biz shartga ko'ra bir necha harakat yo'lidan bittasini tanlaymiz. Misol uchun agar bolaning yoshi 7 ga teng yoki katta bo'lsa u maktabga borishi mumkin bo'lsin.
    Buni C++ da if ni qo'llab yozaylik.
    if (yosh >= 7) maktab();
    Bu yerda shart bajarilishi yoki bajarilmasligi mumkin. Agar yosh o'zgaruvchisi 7 ga teng yoki undan katta bo'lsa shart bajariladi va maktab() funksiyasi chaqiriladi. Bu holat true (to'g'ri) deyiladi. Agar yosh 7 dan kichik bo'lsa, maktab() tashlab o'tiladi. Yani false (noto'g'ri) holat yuzaga keladi. Biz shart qismini mantiqiy operatorlarga asoslanganligini ko'rib chiqqan edik. Aslida esa shartdagi ifodaning ko'rinishi muhim emas – agar ifodani nolga keltirish mumkin bo'lsa false bo'ladi, noldan farqli javob bo'lsa, musbatmi, manfiymi, true holat paydo bo'ladi va shart bajariladi.
    Bunga qo'shimcha qilib o'tish kerakki, C++ da mahsus bool tipi mavjud. Bu tipdagi o'zgaruvchilarning yordamida bul (mantiqiy) arifmetikasini amalga oshirish mumkin. bool o'zgaruvchilar faqat true yoki false qiymatlarini olishlari mumkin.
    if ni qo'llaganimizda ifoda faqat shart haqiqat bo'lgandagina bajariladi, aksholda tashlanib o'tiladi. if/else yordamida esa shart bajarilmaganda(false natija chiqqanda) else orqali boshqa bir yo'ldan borishni belgilashmumkin. Misolimizni takomillashtirsak. Bola 7 yosh yoki undan katta bo'lsa maktabga, 7 dan kichkina bo'lsa bog'chaga borsin.
    if (yosh >= 7) maktab(); //nuqta-vergul majburiydir else bogcha();
    Yuqorida if ga tegishli bo'lgan blok bitta ifodadan (maktab()) iborat. Shu sababli nuqta-vergul qo'yilishi shart. Buni aytib o'tishimizning sababi, masal Pascalda hech narsa qo'yilmasligi shart. C++ da bitta ifosa turgan joyga ifodalar guruhini {} qavslarda olingan holda qo'ysa bo'ladi. Masalan:
    if (yosh >= 7){ console.writeline("Maktabga!\n"); maktab(); } else{ console.writeline( "Bog'chaga!\n" ); bogcha();
    }
    Aslida har doim {} qavslarni qo'yish yahshi odat hisoblanadi; keyinchalik bir ifoda turgan joyga qo'shimcha qilinganda qavslardan biri unutilib qolmaydi.
    Strukrurali dasturlashning yana bir harakterli joyi shundaki tabulyatsiya, bo'sh joy va yangi satrlar ko'p qo'llaniladi. Bu programmani o'qishni osonlashtirish uchun qilinadi. C++ uchun bo'sh joyning hech ahamiyati yo'q, lekin dasturni tahrir qilayatgan odamga buyruqlar guruhini, bloklarni tabulyatsiya yordamida ajratib bersak, unga katta yordam bo'ladi. Yuqoridagini quyidagicha ham yozish mumkin: if(yosh>=7){ console.writeline ("Maktabga!\n");maktab()}else{ console.writeline ("Bog'chaga!\n");bogcha()};
    Biroq buni o'qish ancha murakkab ishdir. C++ da if/else strukturasiga o'hshash ?: shart operatori (conditional operator) ham bordir. Bu C++ ning bittagina uchta argument oluvchi operatori. Uch operand va shart operatori shart ifodasini beradi. Birinchi operand orqali shartimizni beramiz. Ikkinchi argument shart true (haqiqat) bo'lib chiqqandagi butun shart ifodasining javob qiymatidir. Uchinchi operand shartimiz bajarilmay (false) qolgandagi butun shart ifodasining qiymatidir.
    Masalan:
    bool bayroq; int yosh = 10;
    bayroq = ( yosh >= 7 ? true : false );
    Agar yosh 7 ga teng yoki katta bo'lsa, bool tipidagi o'zgaruvchimiz true qiymatini oladi, aks taqdirda false bo'ladi. Shart operatori qavslar ichida bo'lishi zarur, chunki uning kuchi katta emas. Javob qiymatlar bajariladigan funksiyalar ham bo'lishi mumkin:
    yosh >= 7 ? maktab() : bogcha();
    if/else strukturalarini bir-birining ichida yozishimiz mumkin. Bunda ular bir-biriga ulanib ketadi.
    if-else-if yordami bilan bir necha shartni test qilishimiz mumkin. Lekin
    bunday yozuv nisbatan o'qishga qiyin va ko'rinishi qo'pol bo'ladi. Agar shart ifoda butun son tipida bo'lsa yoki bu tipga keltirilishi mumkin bo'lsa, biz switch (tanlash) ifodalarini ishlata olamiz. switch strukturasi bir necha case etiketlaridan (label) va majburiy bo'lmagan default etiketidan iboratdir. Etiket bu bir nomdir. U dasturnig bir nuqtasidaga qo'yiladi. Programmaning boshqa yeridan ushbu etiketga o'tishni bajarish mumkin. O'tish yoki sakrash goto bilan amalga oshiriladi, switch blokida ham qo'llaniladi. 5 lik sistemadagi bahoni so'zlik bahoga o'tqizadigan blokni yozaylik.
    int baho; baho = 4; switch (baho) { case 5: console.writeline ("A'lo"); break; case 4: console.writeline( "Yahshi"); break; case 3: console.writeline( "Qoniqarli"); break; case 2: case 1: console.writeline( "A'lo"); break; default: console.writeline( "Baho hato kiritildi!"; break;
    }
    switch ga kirgan o'zgaruvchi (yuqorigi misolda baho) har bir case etiketlarining qiymatlari bilan solishtirilib chiqiladi. Solishtirish yuqoridan pastga bajariladi. Shartdagi qiymat etiketdagi qiymat bilan teng bo'lib chiqqanda ushbu case ga tegishli ifoda yoki ifodalar bloki bajariladi. So'ng break (buzmoq, tugatmoq) sakrash buyrug'i bilan switch ning tanasidan chiqiladi. Agar break qo'yilmasa, keyingi etiketlar qiymatlari bilan solishtirish bajarilmasdan ularga tegishli ifodalar ijro ko'raveradi. Bu albatta biz istamaydigan narsa. default etiketi majburiy emas. Lekin shart chegaradan tashqarida bo'lgan qiymatda ega bo'lgan hollarni diagnostika qilish uchun kerak bo'ladi. case va etiket orasida bo'sh joy qoldirish shartdir. Chunki, masalan, case 4: ni case4: deb yozish oddiy etiketni vujudga keltiradi, bunda sharti test qilinayotgan ifoda 4 bilan solishtirilmay o'tiladi.
    Takrorlash strukturasi bir ifoda yoki blokni ma'lum bir shart to'g'ri (true) bo'lishi davomida qaytarish imkonini beradi. Qaytarilayatgan ifoda shartga ta'sir ko'rsatishishi kerak. Ma'lum bir vaqt o'tkandan keyin shart false ga o'zgartilishi kerak. Bo'lmasam while (davomida) tugatilmaydi. while faqat o'zidan keyin kelgan ifodaga ta'sir qiladi. Agar biz bir guruh amallarni qaytarmoqchi bo'lsak, ushbu blokni {} qavslar ichiga olishimiz kerak. Shart takrorlanuvchi blokning boshida tekshirilgani sababli, agar shart noto'g'ri bo'lib chiqsa, blokni hech ijro ko'rmasligi ham mumkin.

    Download 1.61 Mb.
    1   2   3   4   5   6   7   8   9   10




    Download 1.61 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Mavzu: C++ tilida panel yaratuvchi komponentlar Mundarija kirish I bob. C++ da dasturlashning asosiy qismi

    Download 1.61 Mb.