7-ma’ruza: C++ algoritmik tilning grafik imkoniyatlari. Reja
Download 160.79 Kb. Pdf ko'rish
|
7- mavzu. C dasturining grafik imoniyatlari
- Bu sahifa navigatsiya:
- Takrоrlash uchun savоllar
7-ma’ruza: C++ algoritmik tilning grafik imkoniyatlari. Reja: 1.C++da grafik rejimida ishlash. 2.O’zgarmaslar, o’zgaruvchilar va turli qism dasturlar. 3.Graphics.h fayli bilan ishlash 4.Grafik rejimida ishlash. Tayanch so’z va iboralar:algoritmlar, C++ dasturlash tili, axborot texnologiyalari, o’zgarmaslar, grafik rejim, funksiya, qiymat. Lokal o’zgaruvchilar. Funktsiyaga qiymatlar uzatish bilan birga uning tanasida o’zgaruvchilarni e’lon qilish ham mumkin. Bu lokal o’zgaruvchilar orqali amalga oshiriladi. Qachonki dasturni bajarilishi funktsiyadan asosiy qismga qaytsa, bu funktsiyadagi lokal o’zgaruvchilar xotiradan o’chiriladi. Lokal o’zgaruvchilar xuddi boshqa o’zgaruvchilar kabi aniqlanadi. unktsiyaga beriladigan parametrlarni ham lokal o’zgaruvchilar deb atash mumkin va ularni funktsiya tanasida aniqlangan o’zgaruvchilar kabi ishlatish mumkin. Funktsiya lokal o’zgaruvchilari va parametrlarining qo’llanilishi: #include using namespace std; float Almashtirish(float); int main() { float TempFer; float TempCel; cout <<" Feringait bo`yicha temperaturani"; cout<< "kiriting:"; cin >> TempFer; TempCel = Almashtirish(TempFer); cout << "\n Bu temperatura selziy shkalasi"; cout<< "bo`yicha: "; cout << TempCel << endl; return 0 ; } float Almashtirish(float TempFer) { float TempCel; TempCel=((TempFer-32)*5)/9; return TempCel; 41 }; Natija: Feringait bo`yicha temperaturani kiriting: 50 Bu temperatura selziy shkalasi bo`yicha: 10 Global o’zgaruvchilar. main() funktsiyasida aniqlangan o’zgaruvchilar dasturdagi barcha funktsiyalar uchun murojaat qilishga imkonli va ko’rinish sohasiga ega hisoblanadi. Bunday o’zgaruvchilar dasturdagi funktsiyalar uchun global o’zgaruvchilar deyiladi. Global o’zgaruvchi nomi bilan funktsiya ichida nomlari ustma-ust tushadigan lokal o’zgaruvchilar faqatgina joriy funktsiyaning ichidagina global o’zgaruvchining qiymatini o’zgartiradi. Lekin global o’zgaruvchi funktsiya o’z ishini tugatgach u chaqirilishidan oldingi qiymatini saqlab qoladi, ya’ni funktsiya tanasida e’lon qilingan lokal o’zgaruvchi funktsiyaning ichida global o’zgaruvchini yashiradi xolos. Bunda lokal o’zgaruvchi alohida hosil qilinadi va funktsiya ishlash vaqtida global va lokal o’zgaruvchilarning nomlari bir xil bo’lsa faqatgina lokal o’zgaruvchi ustida amallar bajariladi. Global o’zgaruvchi esa funktsiyaning bajarilishi davomida oldingi qiymatini saqlab turadi. Global va lokal o’zgaruvchilarning qo’llanishi #include using namespace std; void MeningFunktsiyam() ; // prototip int x = 5, y = 7; // global o’zgaruvchilar int main() { cout << "main()dagi x ning qiymati:"< cout << "MeningFunktsiyam()funktsiyasi"<<"ishini tugatdi! \n"; cout<<"main()dagi x ning qiymati:"< } void MeningFunktsiyam() { int y = 10; cout<<"MeningFunktsiyam()dagi"<<"x:" << x <<"\n"; cout<<"MeningFunktsiyam()dagi"<<"y:"< Hatija: main()dagi x ning qiymati: 5 main()dagi y ning qiymati: 7 MeningFunktsiyam()dagi x: 5 MeningFunktsiyam()dagi y: 10 MeningFunktsiyam()funktsiyasiishini tugatdi! main()dagi x ning qiymati: 5 main()dagi y ning qiymati: 7 Lokal o’zgaruvchilar haqida batafsilroq ma’lumot. Funktsiyani ichida aniqlangan o’zgaruvchilar lokal ko’rinish sohasiga ega deyiladi. Yuqorida aytib o’tilganidek, bu o’zgaruvchilarni faqatgina funktsiyaning ichidagina qo’llash mumkinligini anglatadi. S++da o’zgaruvchilarni nafaqat dasturning boshida balki ixtiyoriy joyda aniqlash mumkin. Agarda o’zgaruvchi funktsiya tanasidagi biror bir blok ichida aniqlangan bo’lsa, bu o’zgaruvchi faqatgina shu blok ichidagina ta’sirga ega bo’lib butun funktsiyaning ichida ko’rinish sohasiga ega bo’lmaydi. Funktsiyada ishlatiladigan operatorlar. Funktsiyada ishlatiladigan operatorlar soni va turiga hech qanday chegara yo’q. Funktsiya ichida istalgancha boshqa funktsiyalarni chaqirish mumkin bo’lsada, lekin funktsiyalarni aniqlash mumkin emas. C++ tilida funktsiyaning hajmiga hech qanday talab qo’yilmasa ham uni kichikroq tarzda tuzgan ma’quldir. Har bir funktsiya tushunish oson bo’ladigan bitta masalani bajarishi lozim. Agarda funktsiya hajmi kattalashayotganligini sezsangiz, bu funktsiyani bir nechta kichikroq funktsiyalarga ajratish haqida o’ylashingiz kerak. Funktsiya argumentlari. Funktsiyaning argumentlari turli tipda bo’lishi mumkin. SHuningdek, argument sifatida C++ tilidagi biror bir qiymat qaytaradigan o’zgarmaslar, matematik va mantiqiy ifodalar va boshqa ixtiyoriy funktsiyalarni berish mumkin. Misol sifatida bizda biror bir qiymat qaytaruvchi double(), triple(), square() va cube() funktsiyalari berilgan bo’lsin. Biz quyidagi ifodani yozishimiz mumkin: Answer=(double(triple(square(my Value)))) Bu ifodada myValue o’zgaruvchisini qabul qilinadi va u cube() funktsiyasiga argument sifatida uzatiladi. cube() funktsiyasi qaytargan qiymat esa square() funktsiyasiga argument cifatida uzatiladi. square() funktsiyasi qiymat qaytargandan keyin, buning qiymati o’z navbatida triple() fukntsiyasiga argument sifatida beriladi. triple() funktsiyasining qiymati esa double() funktsiyasiga argument qilib beriladi va u Answer o’zgaruvchisiga o’zlashtiriladi. Parametrlar bu lokal o’zgaruvchilardir. Funktsiyaga uzatilgan har bir argument, bu funktsiyaga nisbatan lokal munosabatda bo’ladi. Funktsiyani bajarilishi jarayonida argumentlar ustida bajarilgan o’zgartirishlar funktsiyaga qiymat sifatida berilgan o’zgaruvchilarga ta’sir qilmaydi. Funktsiyaning qaytaradigan qiymatlari. Funktsiya yo biror bir real qiymatni, yo kompilyatorga hech qanday qiymat qaytarilmasligi haqida xabar beruvchi void tipidagi qiymatni qaytaradi. Funktsiyani qiymat qaytarishi uchun return kalitli so’zidan foydalaniladi. Bunda oldin return kalitli so’zi, keyin esa qaytariladigan qiymat yoziladi. Qiymat sifatida esa o’zgarmaslar kabi butun bir ifodalarni ham berish mumkin. Masalan: return 5 ; return (x > 5) ; return (MyFunction()) ; MyFunction() funktsiyasi biror bir qiymat qaytarishidan kelib chiqsak, yuqoridagi barcha ifodalar to’g’ri keltirilgan. return(x>5) ifodasi esa x 5 dan katta bo’lsa true, kichik yoki teng bo’lsa false mantiqiy qiymatini qaytaradi. Agarda funktsiyada return kalit so’zi uchrasa undan keyingi ifoda bajariladi va uning natijasi funktsiya chaqirilgan joyga uzatiladi. return operatori bajarilgandan keyin dastur funktsiya chaqirilgan satrdan keyingi ifodaga o’tadi. return kalitli so’zidan keyingi funktsiya tanasidagi operatorlar bajarilmaydi. Grafik biblioteka. Turbo C va Borland C++ kompilyatorlarida grafik biblioteka bilan bog’lanish uchun graphic.h – sarlavxali fayl qo’llaniladi. Bu bibliotekaga kiruvchi ba’zi grafik funktsiyalar: void initgraph(int* graphdriver, int* graphmode, char* pathtodriver)- grafik rejimga o’tkazish void closegraph(void )-grafik rejimdan matnli rejimga o’tkazish. void putpixel(int x, int y, int color) - Ekranda color rangli(x,y) kordinatali nuqtani tasvirlaydi. void line (int x1, int y1, int x2, int y2) - Ekranda chiziq chizadi chizadi. void rectangle (int left, int top, int right, int bottom) - Ekranda to’rtburchak chizadi. void circle (int x, int y; int radius) - Ekranda aylana chizadi. 43 void ellipse (int x, int y, int stangle, int endangle, int xradius, int yradius) - Ekranda ellips chizadi. void outtextxy (int x, int y, char* textstring) – Textni berilgan pozitsiyada chiqaradi. void outtext (char* textstring) – Textni joriy pozitsiyada chiqaradi. int getbcolor(void) - Fon rangini qaytaradi int getcolor(void) - Tasvir rangini qaytaradi. void getimage (int left, int top, int right, int bottom, void* bitmap) - ekran oynasini xotirada saqlash; putimage (int left, int top, void* bitmap, int op)- xotirada saqlangan tasvirni ekranga joylash; Grafik sinfga misol. Misol tariqasida nuqta tushunchasini aniqlovchi point sinfini yaratib point.cpp fayliga yozib qo’yamiz: #ifndef POINTH #define POINTH 1 class point { protected: int x,y; public: point ( int xi=0, int yi=0); int& givex(void); int& givey (void); void show(void); void move(int xn=0, int yn=0); private: void hide(); } #endif Kelgusida point sinfini boshqa sinflarga qo’shish mumkin bo’lgani uchun shartli protsessor direktivasi #ifndef POINTH ishlatilgan. Protsessorli identifikator POINTH #define POINT 1 direktivasi orqali kiritilgan. SHuning uchun #include "point.h" direktivasi bir necha marta ishlatilganda ham POINT sinfi ta’rifi teksti faqat bir marta kompilyatsiya kilinaetgan faylda paydo bo’ladi. POINT sinfi komponenta funktsiyalarini quyidagicha ta’riflaymiz: ifdef POINTCPP #define POINTCPP 1 #include #include "point.h" point ::point(int xi=0, int yi=0) { x=xi; y=yi; } int &point::givex(void) { return x; } int &point::givey(void) { return y; } void point::show(void) 44 { putpixel(x,y, getcolor()); } void point::hide (void) { putpixel(x,y,getbcolor()); } void point::move(int xn=0, int yn=0) { hide( ); x=xn; y=yn; show( ); } #endif Kiritilgan point sinfi va komponenta funktsiyalari bilan ishlovchi dasturni keltiramiz: #include #include #include "point.cpp" int main() { point A(200,50); point B; point D(500,200); int dr=DETECT, mod; initgraph(&dr, &mod, "c:\\borlandc\\bgi"); A.show();getch(); B.show();getch(); D.show();getch(); A.move();getch(); B.move(50,60);getch(); closegraph(); return 0; } Qo’shimcha yuklash. Misol tarikasida '+' amalini point sinfi bilan ta’riflanuvchi displeydagi nuqtalarga qo’llaymiz. Soddalashtirish uchun point sinfida eng kerakli kompanentalarni qoldiramiz. #include #include class point { protected: int x,y; public: point (int xi=0, int yi=0) { x=xi; y=yi; } void show (void) { putpixel (x,y,get color ( ) ); }; point operator+ (point p); }; point point : : operator + (point &p) { point d; d.x=this.x+p.x; d.y=this.y+p.y; return d; } int main() { int dr=DETECT, mod; point A(200,50); point B; point D(50,120); INITGRAPH (&dr, &mod, "C\\borlandc \\ bgi"); A.show ( ); getch ( ); B.show ( ); getch ( ); D.show ( ); getch ( ); B=A+D ; B.show ( ); getch ( ); B=A.operator + (B); B.show ( ); getch ( ); closegraph ( ); return 0; } Dastur bajarilishi natijasida displey ekraniga ketma-ket quyidagi nuqtalar qo’yiladi: A(200,50); B(0,0); D(50,120); B(250,70), B(450,220) Takrоrlash uchun savоllar 1.”Axborot texnologiyalari” fanining maqsadi nimadan ibоrat? 2.Axborot texnologiyalarining vazifalariga nimalar kiradi? 3.Axbоrоt nima va uning qanday xоssalari bоr? 4.Axbоrоtning ifоdalanish shakllarini keltiring. 5.Axbоrоtni kоmpyuterda tasvirlanishi. 6.Axbоrоt texnоlоgiyasi deganda nimani tushuniladi? 7.Axbоrоt texnоlоgiyalari qanday belgilar asоsida tavsiflanadi? Download 160.79 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling