Funksiyalar



Download 298,71 Kb.
Pdf ko'rish
bet3/3
Sana30.12.2021
Hajmi298,71 Kb.
#192216
1   2   3
Bog'liq
№ 5

1 – misol: Ikki sonni qo‘shish uchun funksiya yarating. 

#include  

using namespace std; 

int a,b; 

int add() 



 

return a+b; 



int main() 



 

a = 5; 

b = 6; 

int c = add(); 

 

cout << c << endl; 


 

return 0; 

Yuqorida tuzilgan dasturda global o‘zgaruvchilar uchun qo‘shish funksiyasi 

yaratilgan, ya’ni bu funksiya faqatgina shu dasturning glabal o‘zgaruvchilari a va b 

lar uchun o‘rinli bo‘ladi. Agar o‘zgaruvchilarning nomlari boshqa nom bilan atalsa 

unda  bu  funksiya  hech  qanday  qiymat  qaytarmaydi.  Bu  funksiyaning  ixtiyoriy 

o‘zgaruvchilar  uchun  qiymat  qaytarishini  ta’minlash  uchun  funksiyani  parametrli 

qilib e’lon qilishimiz kerak bo‘ldi. 

2 – misol: Ikki sonni qo‘shish uchun funksiya yarating. 

#include  

using namespace std; 

int add(int x, int y) 



 

return x+y; 



int main() 



 

int a, b; 

 

cout << "a ni kiriting: "; cin>>a; 

 

cout << "b ni kiriting: "; cin>>b; 

 

int c = add(a,b); 

 

cout << "Yiindi: " << c << endl; 

 

return 0; 

Natija: 


 

3 – misol: Berilgan to‘rtta sondan eng kattasini topish dasturini tuzing. 

#include  

using namespace std; 

int max(int x, int y) 




 

return (x>y)?x:y; 



int main() 



 

int a, b, c, d, a1, b1, m; 

 

cout << "a ni kiriting: "; cin>>a; 

 

cout << "b ni kiriting: "; cin>>b; 

 

cout << "c ni kiriting: "; cin>>c; 

 

cout << "d ni kiriting: "; cin>>d; 

 

a1 = max(a,b);  

b1 = max(c,d);  

m = max(a1,b1); 

 

cout << "Eng kattasi: " << m << endl; 

 

return 0; 

Natija: 


 

5.3. Qiymat qaytarmaydigan funksiyalar 

Qiymat  qaytarmaydigan  funksiyalar  dasturlash  tillarida  protseduralar  deb 

ataladi.  C++  dasturlash  tilida  protsedura  e’lon  qilish  uchun  funksiyadan 

foydalaniladi.  Funksiya  qiymat  qaytarmasligini  ifodalash  uchun  void  hizmatchi 

so‘zidan foydalaniladi. 

4  –  misol:  1  dan    n  gacha  bo‘lgan  soni  kvadratini  va  kubini  aniqlovchi 

funksiya yarating. 



#include  

using namespace std; 

void display(int x) 



 

int i = 1;  

 

L1: printf("Son: %4i  Kvadrati: %5i  Kubi:%6i\n",i, i*i, 

i*i*i); 


 

i++; 

 

if (i <= x) goto L1; 



int main() 



 

int n; 

 

cout << "n ni kiriting: "; cin>>n; 

 

display(n); 

 

return 0; 

Natija: 


 

5.4. Funksiyaning prototipi va inline funksiyalar 

Funksiyaning  prototipi  nima?  Funksiya  prototipi  bu  dasturda  ishlatiladigan 

funksiyalarni  oldindan  e’lon  qilishni  bildiradi.  Bunda  funksiyalar  bir  –  biriga 

murojaatni xatolarsiz bajarilashini ta’minlashga yordam beradi. Funksiya prototipi 

e’lon  qilinganda  funksiyaning  tipi,  funksiyaning  parametrlari  tiplari  ham  e’lon 

qilinadi. Ammo paramertlarning nomlari e’lon qilinishi shart emas.  



5  –  misol:  Ikki  son  berilgan  ularning  o‘rnini  almashtirish  funksiyasini 

yaratish. 

Bu dasturni yaratishda biz havolalar imkoniyatidan ham foydalanamiz. 

#include  

using namespace std;  

void swap (int&, int&); // funksiya prototipi 

int main() 




 

int a = 0,b = 0; 

 

cout << "a ni kiriting: "; cin>>a; 

 

cout << "b ni kiriting: "; cin>>b; 

 

cout << endl; 

 

printf("SWAPdan oldin: A = %i, B = %i\n",a,b); 

 

swap(a,b); 

 

printf("SWAPdan keyin: A = %i, B = %i\n",a,b); 

 

return 0; 



void swap (int &x, int &y) 



 

int c = x; 

 

x = y; 

 

y = c; 

Natija: 


 

Yuqorida  aytib  o‘tilganidek  funksiyalar  dastur  yaratishda  katta  qulayliklar 

yaratadi. Yaratilgan funksiyalar kompilyator yordamida har safar chaqirilganda va 

uni ishlatilgandagi qo‘shicha ish bajarishga olib keladi. Registrdagi o‘zgaruvchilar 

o‘zgartiriladi, lokal o‘zgaruvchilar quriladi, parametr sifatida berilgan argumentlar 

funksiya stekiga yoziladi. Buning hammasi qo‘shimcha vaqt talab qiladi. Umuman 

aytganda,  hech  qanday  funksiyasiz  yozilgan  dastur,  ya’ni  hamma  amallari  asosiy 

funksiyada  yozilgan  monolit  dastur,  bir  nechta  funksiyalarga  ega,  ayni  shu  ishni 

bajaruvchi  dasturga  nisbatan    tezroq  ishlaydi.  Funksiyalarning  bu  noqulayligini 

tuzatish uchun inline sifatidagi funksiyalar qo‘llaniladi. Bunda kompilyator dastur 

ichida funksiyaning nomi kelgan vaqtda, funksiyaning nomini o‘rniga funksiyaning 

tanasini  joylashtirishga  olib  keladi  va  bu  usul  yordamida  dastur  ishlash  jarayoni 

tezlashadi, lekin uning hajmi ortadi.  

6 – misol: n! ni topuvchi dastur yarating. 

#include  

using namespace std; 



inline unsigned int fact(int n) 



 

int p = 1; 

 

int i=1;  

 

L1: p *= i; 

 

i++; 

 

if (i <= n) goto L1; 

 

return p; 



int main() 



 

int n = 0; 

 

cout << "n ni kiriting: "; cin>>n; 

 

cout << "Factorial: "<< fact(n) << endl; 

 

return 0; 

 Natija: 

 

5.5. Rekursiya 

Rekursiya deb o‘ziga o‘zi murojaat qiluvchi funksiyaga aytiladi. Rekursiya 2 

turda bo‘ladi. Ular bevosita va bilvosita rekursiyadir. Bevosita rekursiya bu funksiya 

o‘ziga – o‘zi to‘g‘ridan – to‘g‘ri murojaat qiladi. Bilvosita rekursiya bir funksiya 

ikkinchi  funksiyaga  murojaat  qilsa  va  o‘z  navbatida  ikkinchi  funksiya  birinchi 

funksiyaga  murojaatidan  hosil  bo‘ladi.  Misol  uchun  faktorialni  hisoblash 

funksiyasini keltiramiz: 

long fact(int k) 



 

if (k<0) return 0; 

 

if (k==0) return 1; 

 

else return k*fact(k-1); 




Manfiy  argument  uchun  funksiya  0  qiymat  qaytaradi.  Parametr  0  ga  teng 

bo‘lsa, funksiya 1 qiymat qaytaradi. Aks holda parametr qiymat birga kamaytirilgan 

holda  funksiyaning  o‘zi  chaqiriladi  va  uzatilgan  parametrga  ko‘paytiriladi. 

Funksiyaning o‘z  – o‘zini chaqirish  formal  parametr  qiymati  0 ga teng bo‘lganda 

to‘htatiladi.  Keyingi  misolimizda  ihtiyoriy  haqiqiy  sonning  butun  darajasini 

hisoblash rekursiv funksiyasini keltiramiz. 



double expo(double a, int n) 



 

if (n==0) return 1; 

 

if (a==0.0) return 0; 

 

if (n>0) return a*expo(a,n-1); 

 

if (n<0) return expo(a,n+1)/a; 

Misol  uchun  funksiyaga  expo(2.0,3)  shaklda  murojaat  qilinganda  rekursiv 

ravishda funksiyaning ikkinchi parametri kamaygan holda murojaatlar hosil bo‘ladi: 

expo(2.0,3), expo(2.0,2), expo(2.0,1), expo(2.0,0).  

Bu murojaatlarda quyidaga ko‘paytma hisoblanadi: 2.0*2.0*2.0*1 va kerakli 

natija hosil qilinadi. 

Nazorat savollari: 

1.  Funksiya nima? 

2.  Protsedura nima? 



Qiymat qaytarmaydagan funksiyalardan qiymatni olib chiqsa bo‘ladimi? 

 

Download 298,71 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©www.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