Programmmalash asoslari fanidan LAB
Programmmalash asoslari fanidan tayyorlagan Labaratoriya ishlari
Kirish “Programmalash asoslari” fanidan labaratoriya ishini bajarishning bosh maqsadi talabalarga qo‘yilgan masalani echuvchi kompyuter programmasini tuzishga o‘rgatishdir. Shu maqsadda programmalash tillari va muhitlari haqida umumiy tushunchalar beriladi va bu tillardan foydalanish o‘rgatiladi. Laboratoriya ishi nazariy va amaliy qismlardan iborat. Nazariy qism informatika va hisoblash texnikasi, algoritmlar, C/C++ programmalash tili, Qt ob’yektga yo‘naltirilgan programmalash muhiti boblaridan tashkil topgan. Nazariy qismda programmalashga kirishning nazariy asosi bo‘lgan algoritmlarga alohida e’tibor qaratilgan. Bu erda algoritmlarni tavsiflash va keyinchalik kompyuterda amalga oshirish uchun zarur bo‘lgan bir qator matematik tushunchalar yordamchi algoritm, rekursiya, xotira, massiv, indeks, parametr va h.k. kiritilib, turli xil sinf masalalarining algoritmlari tuziladi. Programmalash tili - tuzilgan algoritmni kompyuter amalga oshirish uchun vositadir. Bu o‘rinda turli murakkablikdagi sintaksis va semantikaga ega bo‘lgan tillardan foydalanish mumkin. Fanda C++ tilining alfaviti, til qurilmalarining umumiy sintaksisi, berilganlar turlari, operatsiyalar va funktsiyalar qaraladi, oqim bilan ishlash, ko‘rsatgichlar, amallarni qayta yuklashlar, funktsiyalarni qayta yuklash, qoliplar va modulli programmmalash va grafika moduli bilan ishlash o‘rgatiladi. Programmalashga o‘rgatish mos amaliy masalalarga tayangan holda olib boriladi. Fanning amaliy qismida algoritmlar, C++ programmalash tili, Qt muhitida ishlash bo‘yicha masalalarni o‘z ichiga oladi. Programmalash asoslari fani bevosita tizimli programmalash, Berilganlar bazasini boshqarish tizimlari, Kompyuter grafikasi va Kompyuter tarmoqlari fanlari bilan uzviy bog‘liqdir va bu fan kompyuter texnologiyalari bo‘yicha mutaxassis tayyorlashda umumiy asos rolini o‘ynaydi.
1-LABAROTORIYA ISHI Mavzu: Obyekt modeli va uning afzaliklari Dasturlarni yozishga protsedurali yondashuv yaxshi, lekin sizning dasturingiz kichik bo'lsa bundan foydalanishingiz mumkin. Dastur hajmi katta bo’la boshlagach, siz darhol ushbu protseduraviy yondashuvdagi muammolarning ba'zi qiyinchiliklarini sezasiz. Kod katta va hajmli. Dasturga kiritmoqchi bo'lgan, biror narsa qo'shadigan, o'zgartiradigan va hokazo kerakli funksiyani yoki kerakli kodni topish siz uchun murakkab muammo aylanadi. Dasturga yangi xususiyatlarni qo'shish va uni kengaytirish murakkab bo’ladi. Protseduraviy yondashuv - bu hamma narsa ma'lum bir tartibda ketganda va biror narsani o'zgartirish uchun ko'p ishni bajarish, ko'p bog'liqliklarni tuzatish kerak: siz birini o'zgartirasiz, o'zgarishlar kodning boshqa qismiga ta'sir qiladi va hokazo. Agar siz katta dasturni protsedurali yondashuv yordamida yozmoqchi bo'lsangiz, bu kamchiliklarning barchasini o'zingiz sezishingiz mumkin. Shundan so'ng, sizning dasturingizda kodni tartibga solishning boshqa usulini topishingiz mumkin. Bunday yo'l bor va u OYD deb nomlanadi. So'nggi paytlarda u juda mashhur bo'lib ketdi. OYD - bu katta va murakkab dasturlarni ishlab chiqishni soddalashtirishning bir usuli. Bular prinsipial jihatdan, agar bizga biron bir katta dastur yozishning hojati bo'lmasa, OYDsiz osonlikcha qila olamiz. Bir butunlik – yaxlit kontekstda fikrlash nazariy jihatdan ajoyib yondashuv bo'lsa -da, har ikki tomonda ham tegishli kod nusxalari borligi sababli, xatti - harakatlarning o'zi yuborilmaydi. Shu bilan birga, butun ob'ektni butun tarmoq bo'ylab uzatiladigan kontekstda o'ylash muhimdir. To'g'ri loyihalash – bu konsepsiyaning yaxshi namunasi- bu brauzer yuklanadigan ob'ekt. Brauzer ma'lum bir ob'ekt qanday harakatlarni bajarishini oldindan bilmaydi, chunki u hali kodni "ko'rmagan". Ob'ekt yuklangach, brauzer ushbu ob'ektdagi kodni bajaradi va undagi ma'lumotlarni ishlatadi
2-LABAROTORIYA ISHI Mavzu: Abstraktlash Abstrakt sinf ta’rifi . Hech bo’lmasa bitta sof (bo’sh) virtual funksiyaga ega bo’lgan sinf abstrakt sinf deyiladi. Quyidagi e’longa ega bo’lgan komponentali funksiya sof virtual funksiya deyiladi: virtual <tur> <funksiya_nomi> (<formal_parametrlar_ro’yxati>) = 0; Bu yozuvda « = 0» konstruksiya «sof spesifikator» deyiladi. Sof virtual funksiya ta’rifiga misol: virtual void fpure (void) = 0; Sof virtual funksiya hech narsa qilmaydi va uni chaqirib bo’lmaydi. Uning qo’llanilishi – hosila sinflarda uning o’rnini egallovchi funksiyalar uchun asos bo’lish. Abstrakt sinf esa hosila sinf uchun asosiy (bazaviy) sinf sifatida ishlatilishi mumkin. Agar sof virtual funksiya hosila sinfda to’liq ta’riflanmasa, u hosila sinfda ham sof virtual bo’lib qoladi, natijada hosila sinf ham abstrakt sinf bo’ladi. Abstrakt sinfni faqat boshqa sinf ajdodi sifatida ishlatish mumkin: Ba’zi sinflar abstrakt tushunchalarni ifodalaydi va ular uchun ob’ekt yaratib bo’lmaydi. Bunday sinflar biror hosila sinfda ma’noga ega bo’ladi:masalan, class Abstract { public: virtual void draw() = 0; }; class Derived : public Abstract { public: void draw() { cout « "Salom.";} };
int main( void ) { Derived d; Abstract a; return 0; } Agar sof virtual funksiya hosila sinfda to’liq ta’riflanmasa, u hosila sinfda ham sof virtual bo’lib qoladi, natijada hosila sinf ham abstrakt sinf bo’ladi. class Abstract { virtual int f() = 0; virtual float g(float) = 0; }; class Derived : class Abstract { int f(); }; int main (void) { Abstract a; //hato Derived d; // hato } Abstrakt sinflar realizasiya detallarini aniqlashtirmasdan faqat interfeysni ko’rsatish uchun ishlatiladi. Masalan, operasion tizimda qurilma drayveri abstract sinf sifatida berilishi mumkin: class character_device { public: virtual int open() = 0; virtual int close(const char*) = 0; virtual int read(const char*, int) = 0;