11,1 Obyektga mo‘ljallangan yondashuv tarixi



Download 221,05 Kb.
bet28/70
Sana26.02.2022
Hajmi221,05 Kb.
#466131
1   ...   24   25   26   27   28   29   30   31   ...   70
Bog'liq
C

13.1 Strukturalar
Struktura - bu ma'lumotlarni bir butun nomlangan elementlar to’plamiga birlashtirish. Struktura elementlari (maydonlar) har xil turda bo‘lishi mumkin va ular har xil nomlarga ega bo‘lishi kerak.
Strukturali tur quyidagicha aniqlanadi: struct {}
Strukturada, albatta. bitta komponenta bo‘lishi kerak. Struktura tu­ridagi o'zgaruvchi quyidagicha ta’riflanadi:
;
Struktura turidagi o'zgaruvchi ta'riflanganda initsializatsiya qilinishi mumkin:
=;
Strukturani initsializatsiyalash uchun uning elementlari qiymatlari figurali qavslarda tavsiflanadi.
Misollar:

  1. struct Student {

char name[20]; int kurs; float rating;
};
Student s={"Qurbonov", 1, 3.5};

  1. struct

{
char name[20]; char title[30j; float rate;
}employee= {"Ashurov", "direktor", 10000};
Strukturalarni o‘z!ashtirish. Bitta tuzilma turdagi o‘zgaruvchilar uchun o'zlashtirish operatsiyasi aniqlangan. Bunda har bir elementdan nusxa olinadi. Masalan:

Student ss = s;
Struktura elementlariga murojaat. Struktura elementlariga murojaat aniqlangan ismlar yordamida bajariladi:

  • Struktura_nomi >. < element_nomi >

Masalan:
employee.name - "Ashurov" qiymatga ega bo'lgan ozgaruvchi; employee.rate - 10000 qiymatga ega boigan butun turdagi o'zgaruvchi Quyidagi misolda fazoda berilgan nuqtaviy jismni tasvirlovchi komponentalari jism massasi va koordinatalaridan iborat struktura kiritilgan boiib, nuqtaning koordinatalar markazigacha boigan masofasi hisoblangan.
#include using namespace std;
#include struct {
double mass; float coord[3];
} point = {12.3, {1.0, 2.0, -3.0}}; int main()
{
int i;
float s=0.0; for (i=0; i<3; i + +) s+ =point.coord[i]*point.coord[i]; cout«"\n masofa = "«sqrt(s); return 0;
}
Strukturalar va funksiyalar. Strukturalar funksiyalar argumentlari sifatida yoki funksiya qaytaruvchi qiymat sifatida kelishi mumkin. Bundan tashqari, funksiya argumenti sifatida struktura turidagi massiv kelishi mumkin.
Misol uchun kompleks son modulini hisoblash dasturini keltiramiz:
double modul(complex a)
{return sqrt(a.real*a.real + a.imag*a.imag}
Ikki kompleks son yig'indisini hisoblash funksiyasi: complex add(complex a, complex b)
{complex c; c.real = a.real + b.real;

  1. imag = a.imag+b.imag; return c;

}
Misol:
#include < iostream > using namespace std; struct person {
char name[20]; int year;
};
person old_person(person a[], int n) int i;
person s=a[0]; for(i = l; is.year) s=a[i]; return s;
}
void print_person(person s)
{
cout«"name = "«s.name; cout« "year=" «s.year «endl;
}
int main()
{
person a[] = {{"smit", 34}, {"bobbi", 45}, {"pit", 56}}; person s = old_person(a, 3); print_person(s); return 0;



Funksiyada bitta struktura turidagi o‘zgaruvchi qiymatini o‘zgartirish mumkin emas, lekin massiv elementlari qiymatini o'zgartirish mumkin: #include < iostream > using namespace std; struct goods { char name[20]; long price; float percent;
};
void change_percent(goods a[], int n, float percent)
{
int i;
for(i = l; i
}
void print_goods(goods s)
{
cout«s.name«" "<
}
void all_print(goods a[], int n)
{
int i;
for(i=0; i
};
int main()
{
goods a[] = {{"smit", 34, 0.5}, {"bobbi", 45, 0.7}, {"pit", 56, 0.8}};
all_print(a, 3);
change_percent(a, 3, 0.5);
all_print(a, 3);
int ii; cin»ii;
return 0;
}


13.2 Sinf ta’rifi
Sinf struktura tushunchasi kengavtmasi sifatida. Sinflarni eng sodda holda quyidagicha tasvirlash mumkin:
Sinf-kaliti Sinf-soni {komponentalar ro'yxati}
Sinf komponentalari sodda holda turlangan maiumotlar va funksiya­lardan iborat boiadi. Figurali qavslarga olingan komponentalar ro‘yxati sinf tanasi deb ataladi. Sinfga tegishli funksiyalar komponenta-funksiyalar yoki sinf funksiyalari deb ataladi.
Sinf kaliti sifatida struct xizmatchi so‘zi ishlatilishi mumkin. Masalan, quyidagi konstruksiya kompleks son sinfini kiritadi. struct complex {
double real; double imag;
void define (double re = 0.0, double im = 0.0)
{
real = re; imag=im;
} J void display (void)
{
cout< ="real = "«real; cout< ="imag="«imag;
}
};
Strukturadan bu sinfning farqi shuki. komponenta maiumotlardan (real, imag) tashqari ikkita komponenta funksiya (defme() va display()) kiritilgan.
Bu kiritilgan sinf o‘zgaruvchilar turi deb qaralishi mumkin. Bu turlar yordamida konkret obyektlarni quyidagicha tasvirlash mumkin:
Misol uchun: complex x, y; complex dim[8|;
Sinfga tegishli obyektlar quyidagicha tasvirlanadi; Sinf-nomi.obyekt-nomi
Dasturda obyekt komponentasiga quyidagicha murojaat qilish mum­kin:
Sinf-nomi.obyekt-nomi:: komponenta-nomi yoki soddaroq holda Obyekt-nomi. Element-nomi
Misol uchun: x.real= 1.24;
x.imag=0.0; dim[3].Real = 0.25; dim[3].Imag=0.0;
Sinfga tegishli funksiyalarga quyidagicha murojaat qilinadi:
obyekt-nomi.funksiya-nomi
Misol uchun:
x. define(0.9) (Bu holda real = 0.9 va imag=0.01 x. define(4.3,20.0) (Bu holda kompleks son 4.3 + i*20.0) display funksiyasi ekranda kompleks son qiymatlarini tasvirlaydi. Komponenta o‘zgaruvchilar va funksiyalar. Sinf komponenta o‘zgaruvchilari sifatida o‘zgaruvchilar, massivlar, ko‘rsatkichlar ishlati- lishi mumkin. Elementlar ta'riflanganda initsializatsiya qilish mumkin emas. Buning sababi shuki, sinf uchun xotiradan joy ajratilmaydi. Kom­ponenta elementlariga komponenta funksiyalar orqali murojaat qilin- ganda, faqat nomlari ishlatiladi. Sinfdan tashqarida sinf elementlariga emas obyekt elementlariga murojaat qilish mumkin. Bu murojaat ikki xil bo'lishi mumkin.

Download 221,05 Kb.

Do'stlaringiz bilan baham:
1   ...   24   25   26   27   28   29   30   31   ...   70




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish