7-ma’ruza: C++ algoritmik tilning grafik imkoniyatlari. Reja


Download 160.79 Kb.
Pdf ko'rish
Sana28.01.2023
Hajmi160.79 Kb.
#1137163
Bog'liq
7- mavzu. C dasturining grafik imoniyatlari



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<<"main()dagi y ning qiymati y:"<MeningFunktsiyam();
cout << "MeningFunktsiyam()funktsiyasi"<<"ishini tugatdi! \n";
cout<<"main()dagi x ning qiymati:"<cout<<"main()dagi y ning qiymati:"<return 0;
}
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