Слайд 1C++ дастурлаш тилида амалларни қайта юклаш
Слайд 2Режа:
Амалларни қайта юклаш ҳақида тушунча.
Структураларда амалларни қайта юклаш.
Слайд 3Амалларни қайта юклаш ҳақида тушунча
C++ дастурлаш тилининг имкониятлардан бири шундаки унда
амалларни қайта юклаш, яъни ҳар бир объектлар учун турли амаллар бажаришни назорат қилиш мумкин. Аниқроқ қилиб айтадиган бўлсак, C++ дастурлаш тилининг маълумотлари турлари устида бажариладиган амаллар, яъни, қўшиш, айриш, кўпайтириш ва ҳоказолар.
Слайд 4 C++ дастурлаш тили объектга йўналтирилган дастурлаш тили бўлганлиги сабабли бу тилда
яратилган дастурларнинг кўпгинаси объектлар билан ишлайди. Бу дастурларда объектлар устида турли амаллар бажариши мумкин.
Масалан, математика курсидан бизга маълумки, комплекс сонлар устида турла амаллар бажариш мумкин. Қуйидаги мисолни математик жиҳатдан ишлаб чиқамиз.
Слайд 5 1 – мисол: 5+2i ва 2-5i комплекс сонлари бериган бўлсин. Бу
сонларни йиғиндисини, айирмасини ва кўпайтмасини топинг.
Биз биламизки математика курсида i2 = -1. Мисолдаги сонларни иккита алоҳида қисмларга ажратишимиз мумкин.
Слайд 6 Биринчи соннинг ҳақиқий сони қисми 5 га комплекс қисми эса 2i
га тенг.
Иккинчи сон ҳам ҳудди биринчи сон каби икки қисмга бўлинади. Бу икки комплекс сонларни йиғиндиси (айирмаси)ни топишда уларнинг ҳар бир қисмлари алоҳида қўшилади (айрилади).
Слайд 7Йиғиндиси: 5 + 2i + 2 – 5i = 7 –
3i,
Айирмаси: 5 + 2i – (2 – 5i) = 3 + 7i
Кўпайтмаси: (5 + 2i) * (2 – 5i) =10 – 25i + 4i – 10i2 = 20 – 21i
Комплекс сонларни устида амаллар юқорида кўрсатилгандек бажарилади. Амалларни қайта юклаш учун operator хизматчи сўзидан фойдаланилади.
< натижавий_тип > operator < амал_белгиси > (…)
Слайд 8Структураларда амалларни қайта юклаш
Структураларни эълон қилиш вақтида амаллар қайта юкланади. Комплекс
сонлар учун қуйдагича структура тузиш мумкин.
struct Complex
{
float re;
float im;
};
Слайд 91 – мисолни ишлаш учун биринчи навбатда структара эълон қилинади. Сўнгра
тузилган структура ёрдамида ўзгарувчилар эълон қилиниб уларга қиймат берилади ва уларнинг йиғиндиси қуйида берилган дастур ёрдамида топилади.
Слайд 10#include
using namespace std;
struct Complex
{
float re;
float im; };
int main()
{
Complex a = {5,2},b = {2,-5};
Complex c;
c.re = a.re + b.re;
c.im = a.im + b.im;
cout << c.re << " " << c.im << endl;
return 0; }
Слайд 11 Дастурда кўриб турганимиздек структура ёрдамида эълон қилинган ўзгарувчиларнинг йиғиндисини топишда уларнинг
ҳар бир элементи алоҳида – алоҳида қўшилмоқда. Биз қўшиш амалини структурамиз учун қайта юклашимиз керак бўлади.
Қайта юклаш амалга оширилганидан сўнг структура ёрдамида эълон қилинган ўзгарувчиларнинг йиғиндисини топиш ва қийматини бериш, оддий сонларни йиғиндисини топиш каби амалга оширилади.
Слайд 12#include
using namespace std;
struct Complex
{
float re;
float im;
};
Complex& operator + (Complex& x,
Complex& y)
Слайд 13
{
Complex z;
z.re = x.re + y.re;
z.im = x.im + y.im;
return z;
};
Слайд 14 int main()
{
Complex a = {5,2},b = {2,-5};
Complex c;
c = a +
b;
cout << c.re << " "<< c.im << endl;
return 0;
}
Слайд 15 Юқорида келтирилган дастур, яратилган структура учун фақатгина қўшиш амалини қайта юклаш
амалга оширилган. Дастурга ўзгартиришлар киритамиз, яъни структура ёрдамида яратилган ўзгарувчиларнинг айирмаси ва кўпайтмасини учун ҳам амалларни қайта юклаймиз. Дастур шунда қуйидаги кўринишга келади.
Слайд 16#include
#include
using namespace std;
struct Complex
{
float re;
float im;
};
Complex& operator + (Complex&
x, Complex& y)
Слайд 17{
Complex z;
z.re = x.re + y.re;
z.im = x.im + y.im;
return z;
};
Complex&
operator - (Complex& x, Complex& y)
Слайд 18{
Complex z;
z.re = x.re - y.re;
z.im = x.im - y.im;
return z;
};
Complex&
operator * (Complex& x, Complex& y)
Слайд 19{
Complex z;
z.re = x.re*y.re - x.im*y.im;
z.im = x.re*y.im + x.im*y.re;
return z;
};
int
main(int argc, char *argv[])
Слайд 20{ Complex a = {5,2},b = {2,-5};
Complex c;
c = a + b;
cout
<<"Yig'indisi: " << c.re <<" "<< c.im <<"i"<< endl;
c = a - b;
cout <<"Ayirmasi: " << c.re << " "<< c.im <<"i"<< endl;
c = a * b;
cout <<"Ko'paytmasi: " << c.re << " "<< c.im <<"i"<< endl;
system("PAUSE");
return EXIT_SUCCESS; }
Слайд 21Назорат саволлари:
Амалларни қайта юклаш деганда нимани тушунасиз?
Қандай амалларни қайта юкласа бўлади?
Структура
учун бўлиш амалини қайта юкласа бўладими?