1-Амалий машғулот
Download 0.81 Mb. Pdf ko'rish
|
1-Амалий машғулот
1-Амалий машғулот Мавзу:Функцияларни эьлони ва аниқлаш ва мурожаати. Асосий саволлар 1.С++ дастурлаш тилида функциялар эълон қилиш ва аниқлаш. 2.С++ дастурлаш тилида main () функцияси. 3.Функция параметрлари ва аргументлари Дастурда ишлатиладиган ҳар қандай функция эълон қилиниши керак. Одатда функциялар эълони сарлавҳа файлларда эълон қилинади ва #include директиваси ёрдамида Дастур матнига қўшилади. Функция эълонини функция прототипи тавсифлайди (айрим ҳолларда сигнатура дейилади). Функция прототипи қуйидаги кўри-нишда бўлади:
Бу ерда <қайтарувчи қиймат тури> - функция ишлаши натижасида у томонидан қайтарадиган қийматнинг тури. Агар қайтариладиган қиймат тури кўрсатилмаган бўлса, келишув бўйича функция қайтара-диган қиймат тури int деб ҳисобланади, <параметрлар рўйхати>- вергул билан ажратилган функция параметрларининг тури ва номлари рўйхати. Параметр номини ёзмаса ҳам бўлади. Рўйхат бўш бўлиши ҳам мумкин. Функция прототипларига мисоллар: int almashsin(int,int); double max(double x,double y); void func(); void chop_etish(void); Функция прототипи тушириб қолдирилиши мумкин, агар прог-рамма матнида функция аниқланиши уни чақирадиган функциялар матнидан олдин ёзилган бўлса. Лекин бу ҳолат яхши услуб ҳисоб-ланмайди, айниқса ўзаро бир - бирига мурожаат қилувчи функциялар-ни эълон қилишда муаммолар юзага келиши мумкин.
мазмунга эга танадан иборат бўлади. Агар функция қайтарувчи тури void туридан фарқли бўлса, унинг танасида албатта мос турдаги параметрга эга return оператори бўлиши шарт. Функция танасида биттадан ортиқ return оператори бўлиши мумкин. Уларнинг ихтиёрий бирортасини бажариш орқали функциядан чиқиб кетилади. Агар функция қайтарадиган қиймат уни чақирган функцияда ишлатилмайдиган бўлса, функциядан чиқиш учун параметрсиз return оператори ишлатилиши мумкин ёки умуман return ишлатилмайди. Охирги ҳолда функциядан чиқиш - охирги ёпилувчи қавсга етиб келганда рўй беради. Функция Дастурнинг бирорта модулида ягона равишда аниқланиши керак, унинг эълони эса функцияни ишлатадиган модул-ларда бир неча марта ёзилиши мумкин. Функция аниқланишида сарлавҳадаги барча параметрлар номлари ёзилиши шарт. Одатда Дастурда функция маълум бир ишни амалга ошириш учун чақирилади. Функцияга мурожаат қилганда, у қўйилган масала-ни ечади ва ўз ишини тугатишида қандайдир қийматни натижа сифатида қайтаради.
Бу ерда ҳар бир <аргумент i > - функция танасига узатиладиган ва кейинчалик ҳисоблаш жараёнида ишлатиладиган ўзгарувчи, ифода ёки ўзгармасдир. Аргументлар рўйхати бўш бўлиши мумкин. Функциялар ҳам ўз танасида бошқа функцияларни, ўзини ҳам чақириши мумкин. Ўз танасида ўзини чақирадиган функцияларга рекурсив функциялар дейилади. Олдинги бобларда таъкидлаб ўтилганидек, С++ тилидаги ҳар қандай Дастурда албатта main() бош функцияси бўлиши керак. Айни шу функцияни юклагич томонидан чақирилиши билан програм-ма бажарилиши бошланади. 1- расмда бош функциядан бошқа функцияларни чақириш ва улардан қайтиш схемаси кўрсатилган. Дастур main() функциясини бажаришдан бошланади ва «f1(x,y);» - функция чақиришгача давом этади ва кейинчалик бошқа-рув f1(x,y) функция танасидаги амалларни бажаришга ўтади. Бунда Radius параметрининг қиймати сифатида функция х ўзгарувчи қийматини, symbol параметри сифатида у ўзгарувчисининг қиймати ишлатилади. Функция танаси return операторигача бажарилади. return оператори бошқарувни main() функцияси танасидаги f1() функцияси чақирилган оператордан кейинги операторга ўтишни таъминлайди, яъни функциядан қайтиш рўй беради. Шундан кейин main() функция-си операторлари бажарилишда давом этади ва «f2(a,b,c);» - функция чақириши орқали бошқарув f2() функция танасига ўтади ва ҳисоблаш жараёнида мос равишда YesNo сифатида а ўзгарувчисининг, сount сифатида b ўзгарувчиcининг ва key сифатида с ўзгарувчисининг қийматлари ишлатилади. Функция танасидаги return оператори ёки охирги оператор бажаргандан кейин автоматик равишда бош функцияга қайтиш амалга оширилади.
1-расм. Бош функциядан бошқа функцияларни чақириш ва қайтиш Аксарият ҳолларда main() функциясининг параметрлар рўйхати бўш бўлади. Агар юкланувчи Дастурни ишга туширишда, буйруқ сатри орқали юкланувчи Дастур ишга туширилганда, унга параметрларни узатиш (бериш) зарур бўлса, main() Дастурси функциясининг синтаксиси ўзгаради: int main(int argc, char* argv[]); Бу ерда argc - узатиладиган параметрлар сони, argv[]- бир-биридан пунктуация белгилари (ва пробел) билан ажратилган параметрлар рўйхатини ўз ичига олган массивга кўрсаткич. Қуйида функцияларни эълон қилиш, чақириш ва аниқлашга мисоллар келтирилган: // функциялар эълони int Mening_funksiyam(int Number, float Point); char Belgini_uqish(); void bitni_urnatish(short Num); void Amal_yoq(int,char); // функцияларни чақириш result=Mening_funksiyam(Varb1,3.14); symb=Belgini_uqish(); bitni_urnatish(3); Amal_yoq(2,Smbl); // функцияларни аниқлаш int Mening_funksiyam(int Number,float Point); { int x; //... return x; } char Belgini_uqish() { char Symbol; cin>>Symbol; return Symbol; }; void bitni_urnatish(short number) { global_bit=global_bit | number; }; void Amal_yoq(int x,char ch){}; Функциянинг Дастурдаги ўрнини янада тушунарли бўлиши учун сон квадратини ҳисоблаш масаласида функциядан фойдала-нишни кўрайлик. Функция прототипини “sarlavha.h” сарлавҳа файлида жойлаш-тирамиз: long Son_Kvadrati(int); Асосий Дастурга ушбу сарлавҳа файлини қўшиш орқали Son_Kvadrati() функция эълони Дастур матнига киритилади:
Худди шу масалани сарлавҳа файлидан фойдаланмаган ҳолда, функция эълонини Дастур матнига ёзиш орқали ҳам ҳал қилиш мумкин:
Дастур ишлашида ўзгариш бўлмайди ва натижа сифатида экранга 25 сонини чоп этади. 1-Мисол. #include using namespace std; int sum(int a, int b){ return a + b; // } int main() { int a, b, c; //================================================= a = 55, b =59; c = sum(a,b); //c = 55+59, c = 114 cout <<"c="< //================================================= a = 30, b =20; c = sum(a,b); //c = 30+20, c = 50 cout <<"c="< //================================================= a = 111, b =112; c = sum(a,b); cout <<"c="< //================================================= cin.get(); } Дастур натижаси 2-Мисол. #include using namespace std; int sum(int a, int b){ cout <<"Yig'indi butun son="; return a + b; } double sum(double a, double b){ cout <<"Yig'indi xaqiqiy son="; return a + b; } int main(){ double value1 = 5.6; // double value2 = 6.7; // int value3 = 9; int value4 = 10; cout << sum(value1, value2) << '\n'; cout << sum(value3, value4) << '\n'; } Дастур натижаси Топшириқлар 1-Топшириқ. Берилган функцияларни функция ёрдамида ҳисоблаш дастурини тузинг. Y катталикнинг қийматини аргументларнинг берилган Х 1 , Х
2 , Х
3 , Х
4 , Х
5 , Х
6 , Х
7 қийматларида ҳисоблаш дастурини тузинг. № Y № Y
2
6 3 3 2 3 2 2 1 cos ln sin
4 X X X e X X X X 2. 2 7 2 5 6 2 1 4 3 sin
) cos(
1 ) cos( 1 X X X X X X X
7.
7 ) ln( sin
6 5 4 3 2 1 X e X X X X X X 8. 1 2 7 3 6 4 3 2 5 1 ) (log X X X X X X X X
9.
11.
13.
2 7 2 6 5 4 3 2 2 1 ) cos(
X X X X X X X 14. 7 6 5 2 4 3 2 2 1 X X X X X X X 15.
17.
19.
2 7 5 4 3 2 2 2 1
X X X X X X
7 6 5 4 3 2 2 1 cos 2 sin X X X X X X X
21.
23.
25.
7 6 5 4 3 sin
2 1
X X X X e X X
7 6 5 4 3 2 1 sin X X X arctgX X X X
7 6 5 4 3 sin
2 1
X X X X e X X
7 6 5 4 3 2 1 sin X X X arctgX X X X
Қуйидаги жадвалда Х 1 , Х
2 , Х
3 , Х
4 , Х
5 , Х
6 , Х
7 ларнинг қийматлари берилган: № X 1 X 2 X 3 X 4 X 5 X 6 X 7 1. 6,4
4,8 3,7
4,8 6,4
3,7 3,7
2. 6,3
5,6 4,9
6,3 5,6
4,9 4,9
3. 7,5
6,8 5,6
7,5 6,8
5,6 5,6
4. 8,6
7,2 3,8
8.6 7.2
3,8 3,8
5. 4,5
6,5 3,7
4,5 6,3
3,7 3,7
6. 10,4
5,5 3,6
10,4 3,6
5,5 3,6
7. 8,3
7,4 6,5
8,2 7,4
6,5 6,5
8. 9,9
8,8 9,9
7,7 8,8
7,7 9,9
9. 7,8
6,6 7,8
5,5 5,5
6,6 7,8
10. 7,2
4,1 7,2
5,2 5,2
4,1 7,2
11. 6,8
3,4 4,4
6,8 4,4
3,4 4,4
12. 5,4
2,8 3,8
5,4 2,8
2,8 3,8
13. 2,5
2,8 1,4
2,8 1,4
2,5 1,4
14. 2,4
2,3 1,5
1,5 2.3
2.4 1,5
15. 2,6
1,6 2,6
2,1 1,6
2,1 2,6
16. 1,4
2,5 2,4
2,5 2,4
1,4 2,4
17. 3,2
2,3 1,7
1,4 3,2
3,2 1,7
18. 5,2
3,3 2,2
2,2 5,2
3,3 2,2
19. 4,8
1,2 5,6
4,2 1,2
5,6 5,6
20. 3,4
2,3 4,5
3,4 2,3
4.5 4,5
21. 2,3
3,7 6,4
2,3 3,7
6,4 6,4
22. 3,2
4,4 2,3
3,1 2,3
4,4 2,3
23. 4,2
5,5 5,5
4,2 3,4
3,4 5,5
24. 5,3
6,6 4,5
4,5 5,3
6,6 4,5
25. 4,2
1,2 5,6
4,2 1,2
5,6 5,6
26. 3,4
2,3 4,5
3,6 2,3
4,5 4,5
27. 2,3
3,7 6,4
2,3 3,7
6,4 6,4
28. 1,7
2,9 3,4
1,7 2,8
3,4 3,4
29. 1,8
2,7 3,3
1,8 3,3
2,7 3,3
30. 1,9
2,6 3,2
1,9 2,3
2,6 3,2
31. 3,2
4,4 2,3
3,1 2,3
4,4 2,3
32. 4,2
5,5 5,5
4,2 3,4
3,4 5,5
33. 5,3
6,6 4,5
4,5 5,3
6,6 4,5
2-Топшириқ.Берилган функцияларни функция ёрдамида ҳисоблаш дастурини тузинг. № Функция Ўзгарувчи қийматилари № Функция Ўзгарувчи қийматилари 1.
2 1 1 1 x z z x x z y 7 , 3 5 , 2 z x
18. x xu x u y 2 3 2 2 sin 75 , 0 5 , 2 x u
2. 2 2 2 sin y x x z 07 , 1 05 , 0 y x
19. b a b a b a b a x 2 3 2 3
3 , 2 5
a
3. x z x z x y 1 1 1 2 2 2 2
3 , 1 03 , 0
x
20. 3 2 5 sin
6 5 2 xa xa x y
03 , 0 02 , 0 a x
4. 1 1 1 2 2 x a a w
04 , 0 4 , 2 x a
21. x y x y x a 1 1 3 3 3 2 2
5 , 0 8 , 0
x
5. x x y y x a 2 1 3 2 2 2 2
4 3 y x
22. 3 2 2 2 2 2 3 2 2 2 b a b a b ab a y
6 , 2 3 , 1
a
6. 2 2 5 3 2 cos 1 a x a x tg x y
5 , 2 32 , 0
x
23. 3 2 3 3 3 2 3 3 3 , 2
a b a b a b a z 34 , 0 4 b a
7.
a b a b a z sin 3 65 , 2 2 2
34 , 0 01 , 0 b a
24. a b a a b b a b s sin sin 2 sin sin 2 2 9 , 0 7 , 0 b a
8. 3 2 3 2 4 3 b a b a y
2 , 1 1 , 2 b a
25.
y x y x y x a 2 2 sin sin
sin sin
4 , 0 6 , 0 y x
9. n m n m n n n r 2 4 6 3 2 5 4
n
26. y tg x y x b 2 2 3 4 cos 2 , 0 3 , 0 y x
10. b a b a v 2 2 2 sin
cos 3 1 3
05 , 0 02 , 0
a
27. a ab b a a b b a y 2 4 cos 2 4 2 3 25 , 0 b a
11. 3 2 2 2 2 2 b a b a s
2 4 b a
28. 3 2 3 2 4 3 b a b a y
2 , 1 1 , 2 b a
12. 2 5 2 2 3 3 h h v v h vh a
2 3 h v
29. n m n m n n n r 2 6 3 10
5 4 m n
13.
a ab b a b a z 2 2 3
4 , 1 8 , 2
a
30. b a b a v 2 2 2 sin
cos 1 3
05 , 0 02 , 0 b a
14. b a a tg b tg a s cos
1 2 2 2
5 , 1 8 , 0 b a
31. 3 4 2 2 2 2 b a b a s
2 4 b a
15. 2 cos
1 : 2 cos 1 3 y x b
6 , 0 3 , 0 y x
32. y x y x y x a 2 2 sin sin
sin sin
4 , 0 6 , 0 y x
16.
a ab b a b a z 2 2 3 :
4 , 1 8 , 2
a
33. y tg x y x b 2 2 3 4 cos 2 , 0 3 , 0 y x
17. b a a tg b tg a s cos
1 2 : 2 2
5 , 1 8 , 0
a
34. a ab b a a b b a y 2 : 4 cos
2 4 2
3 25 , 0
a
3-Топшириқ. Берилган функцияларни функция ёрдамида ҳисоблаш дастурини тузинг. № Функция № Функция 1. 3 d c B tgx B Y X x y x y
x e x x x a x 3 3 ln 5 2
4 2 3 2 sin
ln 2 1 3 X X x t tg B
19 3 2 ln 3 3 sin cos
sin x b axy x a x b x a
3. 2 37 , 0 3 18 , 0 2 X Lg e x
x b x e xy 2 4 3 cos
3 log
sin 2 sin
4. ajk X 3 cos 1 19 4 , 0
21 X t X X e ln 2 3 2 1 sin ln
2 2 sin log a t tg e x yi 22. 3 ln 3 3 sin lg X x X tg b a
5 sin
3 1
j i i y x x
5 2
2 cos
1 1
a a w
3
cos sin
ln 3
m x a x x arctgx e
24. 3 3 4 5 2 2 62 , 35 1 2 , 43 75 , 3 5 , 3
x x y y x a
X K X K X k k sin
1 1 ln 1
25. 2 , 578 5 3 65 , 3 2 cos
3 , 56 1 2 5 3 5
x a x ctg x x y
7 ,
4 1 / 1 2 3 10 03 , 12 5 2 2 a b a x a b
5 2 2 12 21 1 , 34 1 , 21 cos ) ( 3 65 , 2 b a b a b a z 10 x x x x e x e x sin
1 1 3 2 1 2
27. 3 2 3 2 4 3 sin
b a tg b a y
2 sin 14
n m n m n n n r 2 4 6 3 2 12 x x t t 2 2 log 1 arcsin 29. b a b a v 2 2 2 sin
cos 3 1 3
13 2 2 2 x cbs b c b c t 30. 3 32 , 65 2 2 ln 5 6 b a b a s
5 ,
5 3 4 4 1 1 3 x x x 31. 2 5 2 2 3 3 h h v v h vh a
15 2 2 2 1 3 3 X X X X
b a ab b a b a z 3 , 65 2 , 65 3 4 2 45
16 x x a a x ctg arctg 2 2 3 1 / 1 1
33. b a a tg b tg a s cos
1 2 2 2
x a ln lg
34. 2 cos 1 2 cos 1 3
x b
Download 0.81 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling