87
Foydalaniladigan adabiyotlar:
1. D.S. Malik. C++ Programming: From problem analysis to program design. Course
Technology, 2011.
2. B. Straustrup. Язык программирование С++. Специальное издание.-M.: OOO
«Бином-Пресс», 2006.
3. Madraximov SH.F., Gaynazarov S.M. C++ tilida Dasturlash asoslari// Toshkent,
O‘zbekiston Milliy Universiteti, 2009.
Mavzu-12. C++ tilida funktsiyalar e`lon qilish va aniqlash.
Reja
:
12.1.Funktsiyalardan foydalanish
12.2.Oldindan aniqlangan funktsiyalar
12.3.Foydalanuvchi tomonidan aniqlanadigan funktsiyalar
12.4.Ko`rinish sohasi. Lokal va global o`zgaruvchilar. :: amali
12.5.Qayta
yuklanuvchi funktsiyalar
12.1. Funktsiyalardan foydalanish
. Dasturiy ta`minotini
yaratish amalda
murakkab jarayon hisoblanadi. Dastur tuzuvchi dastur kompleksini bir butunlikdagi va
uning har bir bo`lagining ichki mazmunini va ularning sezilmas
farqlarini hisobga olishi
kerak bo`ladi.
Dasturlashga tizimli yondoshuv shundan iboratki, dastur tuzuvchi oldiga qo`yilgan
masala
oldindan ikkita, uchta va undan ortiq nisbatan kichik masala ostilarga bo`linadi.
O`z navbatida bu masala ostilari ham yana kichik masala ostilariga bo`linishi mumkin. Bu
jarayon toki mayda masalalarni oddiy standart amallar yordamida yechish mumkin
bo`lguncha davom etadi. Shu yo`l bilan masalani dekompozitsiyalash(bo‘laklash) amalga
oshiriladi.
Ikkinchi tomondan, dasturlashda shunday holatlar kuzatiladiki, unda dasturning turli
joylarida mazmunan bir xil algoritmlarni bajarishga to`g‘ri keladi.
Algoritmning bu
bo`laklari asosiy yechilayotgan masaladan ajratib olingan qandaydir masala ostini
yechishga mo`ljallangan bo`lib, yetarlicha mustaqil qiymatga (natijaga) egadir.
Misol
uchun quyidagi masalani ko`raylik:
Berilgan a
0
,a
1
,...,a
30
, b
0
,b
1
,...,b
30
, c
0
,c
1
,...,c
30
va x,y,z haqiqiy sonlar uchun
ifodaning qiymati hisoblansin.
#include
using namespace std;
int main()
{ float x,y,z; int i;
float a[31],b[31],c[31];
float t,s,s1,s2,s3;
30
29
1
30
0
30
29
1
30
0
2
30
29
1
30
0
c
...
z
x
c
z
x
c
b
...
y
b
y
b
a
...
x
a
x
a
88
cout<<"x="; cin>>x; cout<<"y="; cin>>y; cout<<"z="; cin>>z;
for(i=0; i<31; i=i+1)
{cout<<"a["<
>a[i]; cout<<"b["<>b[i];
cout<<"c["<>c[i];}
t=1; s=a[30]; for(i=1;i<30;i=i+1)
{t=t*x; s=s+t*a[30-i];}
t=1; s1=b[30]; for(i=1; i<30; i=i+1)
{t=t*y; s1=s1+t*b[30-i];} t=1; s2=c[30];
for(i=1; i<30; i=i+1) {t=t*(x+z); s2=s2+t*c[30-i];}
s3=(s*s-s1)/s2; cout << "\ns3=" <return 0;}
Bu misolni yechishda kasrning surat va maxrajidagi ifodalar bir xil algoritm bilan
hisoblanadi va dasturda har bir ifodani (masala osti) hisoblash uchun bu algoritmni 3
marta yozishga to`g‘ri keladi. Masaladagi 30-darajali ko`phadni hisoblash algoritmini,
masalan, Gorner algoritmini alohida, bitta nusxada yozib, unga turli parametrlar - bir safar
Do'stlaringiz bilan baham: