logo

Funksiya

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

151.8671875 KB
                      Funksiya
                                                                  Reja: 
1. Funksiya yaratish ;
2. Qiymatlarni qaytarish; 
3. Funksiya prototiplari; 
4. Parametrlarni qiymat va adresga ko’ra jo’natish; Fu nk s i y a   f a qat   c ha qi r i l g an   v a qt d a   i s h l ay di ga n   k od   bl og i  
hi s ob l a na di .   F un k s i y a ga   pa r a me t r l a r   s i f at i da   m a' l u mo t l ar ni   uz at i s h 
mu mk i n .   F un k s i y al ar   m ua y y a n  b i r   v az i f an i   ba j a r i s h  uc hu n   i s h l at i l ad i .  
K o d   y oz i s h  j ar ay o ni da   y a r at ga n  f unk s i y a da n  b i r   y ok i   b i r   nec ht a   ma r t a 
i s h l at i s h   y ok i   u mu ma n   i s hl at m as l i k   i m k o ni y at i g a  e ga s i z .
Funksiya yaratish.
S i z   k o' p  m ar t a   f unk s i y a ni   us hb u  d ar s g ac h a  i s hl at i b  
k el di ng i z .   m a i n ( )   ha m   bi r   f u nk s i y a   hi s ob l a na di .   d as t u r   i s hg a   t us h ga n  
v aqt i d a   bi r i nc h i   b o' l i b  us hb u   f unk s i y a   i s h l a y d i .   B u  s t a nd ar t   f u nk s i y a 
bo ' l i b   s i z   h am   s h u   k ab i   f u nk s i y al ar   y ar at i s h i n gi z   mu mk i n .
Fu nk s i y a   y a r at i s h   uc h un   b i r i nc hi   f unk s i y a   qa y t a r a di ga n   t i p   y ok i  
f unk s i y a   t u r i   k ey i n  n om i   v a   ( )   oc h i l ad i .   qav s   i c h i d a   s i z   m a' l u mo t l ar  
y a' ni   pa r a me t r l a r n i   q ab ul   q i l as i z .
void   myFunction ()  {
    // Bu qiymat qaytarmaydigan funksiya
}
Mi s o l   t us hu nt i r i l di .
 m y F u n c t i o n ( )   f u n k t s i y a   n o m i
 v o i d   f u n k t s i y a   q i y m a t   q a y t a r m a y d i g a n   f u n k s i y a l i g i d a n   d a l o l a t  
b e r a d i .
 {   }   b u   f u n k s i y a   t a n a s i   b o ' l i b .   B u   y e r d a   o ' z i n g i z g a   k e r a k l i   k o d n i  
k i r i t i s h i n i g i z   m u m k i n .   U n u t m a n g   m a i n ( )   f u n k s i y a s i d a   n i m a   a m a l  
b a j a r s a n g i z   b u n d a   h a m   s h u n d a y   a m a l n i   b a j a r i s h i n i n g i z   m u m k i n .
                                Funksiya Chaqirish
Fu nk s i y a   o' z i d an   o' z i   i s hl ab   k et ma y d i .   F un k s i y a ni   c ha qi r i s hd an  
s o' ng   i s h ga   t us ha di .   Fu nk s i y an i   q ay t a   qa y t a   f oy d al an i s hi ni ng i z  
mu mk i n .   F un k s i y an i   c ha qi r i s h  uc hu n   f unk s i y a   no mi   i k k i   qav s   ( )   v a 
nu qt al i   v e r g ul   bi l a n   t ug al l a na di .
#include <iostream>
using   namespace   std ;
void   myFunction ()  {     cout <<  "I'm a developer. MasterSherkulov!" ;
}
int   main ()  {
    myFunction();
    return   0 ;
}
   int foo(int k, int t)
{
int result;
result = k * t;
return (result);
}
Yuqoridagi foo funksiyamizning ismi, () qavslar ichidagi
parametrlar   –   int   tipidagi   k   va   t   lar   kirish
argumentlaridir ,   ular   faqat   ushbu   funksiya   ichida
ko'rinadi   va   qo'llaniladi.   Bunday   o'zgaruvchilar   lokal
(local - mahalliy) deyiladi.
  result foo() ning ichida e’lon qilinganligi  uchun  u ham
lokaldir.   Demak   biz   funksiya   ichida   o'zgaruvchilarni   va
sinflarni   (class)   e’lon   qilishimiz   mumkin   ekan.   Lekin
funksiya ichida boshqa funksiyani e’lon qilib bo'lmaydi.
foo()   funksiyamiz   qiymat   ham   qaytaradi.   Qaytish
qiymatining tipi foo() ning e’lonida eng boshida kelgan
-   int   tipiga   ega.   Biz   funksiyadan   qaytarmoqchi   bo'lgan qiymatning   tipi   ham   funksiya   e’lon   qilgan   qaytish
qiymati   tipiga   mos   kelishi   kerak   -   ayni   o'sha   tipda
bo'lishi   yoki   o'sha   tipga   keltirilishi   mumkin   bo'lgan
tipga   ega   bo'lishi   shart.   Funksiyadan   qiymatni   return
ifodasi   bilan   qaytaramiz.   Agar   funksiya   hech   narsa
qaytarmasa e’londa void tipini yozamiz. Ya’ni:
Funksiya – bu yordamchi algoritm bo’lib (dasturosti), ish
natijasi sifatida ma’lum bir qiymatlari olinadi.
Misollar:
• Sondan ildiz chiqarish
• Murakkab formulalar x bo’yicha qiymatlarni hisoblash
• Savolga javob (oddiy osonki yoki yo’q?)
Nega?
• Dasturning turli joylarida bir xil hisoblashlarni bajarish 
uchun
• Ommabop funksiyalar kutubxonasini yaratish uchun
O’zgaruvchi:
Xotiraning   nomlangan   qismi   bo’lib,   o’zida   ma’lum   bir
toifadagi   qiymatlarni   saqlaydi.   O’zgaruvchining   nomi   va
qiymatlari   bo’ladi.   O’zgaruvchining   nomi   orqali   qiymat
saqlanayotgan   xotira   qismiga   murojaat   qilinadi.
Programma   ishlashi   jarayonida   o’zgaruvchining   qiymatini
o’zgartirish   mumkin.   Har   qanday   o’zgaruvchini
ishlatishdan oldin, uni e’lon qilish lozim.
Quyidagi   butun   sozlardan   foydalanish   uchun   b ,   haqiqiy
sonlardan   foydalanish   uchun   h   o’zgaruvchisi   e’lon
qilingan:
int   b;
float   h;
O’zgarmaslar (const) Hisoblash   jarayonida   qiymatini   o’zgartirmaydigan
kataliklarga aytiladi.
float const   pi =   3.14;
Programmaning ma’lum qismini tavsiflash uchun ishlatiladi
va   bu   qatorda   hech   qanday   aml   bajarilmaydi,   ya’ni
programmaning biror qismini yaxshiroq tushuntirish uchun
xizmat qiladi. Izoh   «/*»   va   «*/»   simvollari orasida beriladi.
/* Bu yerga izoh yoziladi. */
Bundan   tashqari   birsatrli   izohlardan   ham   foydalanish
mumkin.  Buning uchun izoh boshiga   «//»   belgisi qo’yiladi.
Operator
Tilning   yakunlangan   jumlasi   hisoblanadi   va   ma’lumotlar
taxlilining   tugallangan   bosqichini   ifodalaydi.   Operator
nuqtali vergul   «;»   bilan ajratiladi.
Identifikator
Programmist tomonidan programma elementlari (funksiya,
o’zgaruvchilar, o’zgarmaslar …) uchun ixtiyoriy nom.
                      Funksiyanın elonqilish
C++ dilində funksiya aşağıdakı kimi elan olunur:
Nəticənin_tipi funksiyanın_adı (tip1 argument1, tip2 
argument2, ...);
Burada   nəticənin_tipi   funksiyanın qaytaracağı nəticənin 
tipini göstərir. Əgər funksiya heç bir nəticə qaytarmırsa, 
onda   nəticənin_tipi   olaraq   void   yazırıq.
funksiyanın_adı   olaraq ingilis əlifbasının hərflərindən, 
rəqəmlərdən, _ simvolundan istifadə edə bilərik. Funksiya 
adı mütləq ingilis əlifbası hərfi ilə başlamalıdır və operator 
adları ilə üst-üstə düşməməlidir. Funksiyanın adından 
sonra mötərizə daxilində funksiyanın qəbul edəcəyi  arqumentlərin siyahısı verilir. Arqumentlər bir-birindən 
vergüllə ayrılır. Arqumentlərin əsas tipi önəmlidir. 
Funksiyanın elanında arqumentlərə verilən adlar heç bir 
əhəmiyyət daşımır və onlar buraxıla bilər.
Aşağıdakı kimi:
Nəticənin_tipi funksiyanın_ad (tip1, tip2, ...);
Nümunə:
int cem (int x, int y);
Burada biz   int   tipli nəticə qaytaran və   int   tipli iki arqument 
qəbul edən   cem   funksiyası elan elədik. Biz bunu 
aşağıdakı kimi də yaza bilərik, harada ki, arqumentlərin 
adları göstərilmir.
int cem (int, int );
 
 Funksiyanın mətn kodunun tərtibi
Funksiyanı elan etməklə biz kompilyatora funksiya (ad, tip,
arqumentlər) barəsində məlumat veririk.Funksiyanın mətn 
kodunu tərtib etməklə biz onun görəcəyi işi 
proqramlaşdırmış oluruq. Bunun üçün aşağıdakı 
qaydadan istifadə edirik:
Nəticənin_tipi funksiyanın_ad (tip1 arg1, tip2 arg2) {
proqram kodu
return nəticə;
}
Burada ilk sətir funksiyanın elanı sətridir. Fərq yalnız odur 
ki, mötərizədən sonra ; deyil { simvolu gəlir. { simvolu 
funksiyanın proqram kodu blokunun başlanğıcını bildirir. 
{ simvolundan sonra funksiyanın proqram kodu 
yerləşdirilir. Burada biz adi halda olduğu kimi, istənilən 
proqram kodu yerləşdirə bilərik və hətta digər funksiyalara  müraciət də edə bilərik. Bundan əlavə, biz funksiyanın öz 
kodu daxilində onun özünə müraciət də edə bilərik. Buna 
proqramlaşdırmada   rekursiya   deyirlər.
Gəlin, yuxarıda elan etdiyimiz   cem   funksiyasının proqram 
kodunu tərtib edək:
int cem (int x, int y)
{
int z;
z = x + y;
return z;
}
Burada funksiyanın daxilində   int   tipli   z   dəyişəni elan etdik. 
Daha sonra,   z   dəyişəninə funksiyanın arqumentlərinin 
( x   və   y ) cəmini mənimsətdik və alınmış qiyməti nəticə 
olaraq qaytardıq.
 
5.3 Return əmri, funksiyadan geri qayıtma
Proqramda hər- hansı funksiyaya müraciət aşağıdakı 
şəkildəki kimi baş verir:
  #include <iostream>
/* cəm funksiyanın elanı */ 
int cem (int x, int y);
int main (int argc, char *argv[])
{ 
int x,y,z;
std::cout<<"x-i daxil edin \n"; 
std::cin>>x;
std::cout<<"y-i daxil edin \n"; 
std::cin>>y;
/* cəm funksiyasını çağırırıq */ 
z = cem(x,y);
std::cout<<"x ilə y-in cəmi = "<<z<<"\n"; return 0; 
}
Ko’rsatkichlar
K o ' r s at k i c h.   O ' z i ni ng   qi y ma t i   s i f at i d a   x ot i r a   ma nz i l i i ni   k o' r s at uv c h i  
( s a ql ov c h i )   o' z ga r uv c hi l a r g a   -   k o ' r s a t k i c h  o' z ga r u v c h i l ar   dey i l ad i .
Ma s a l a n   :   K o' r s at k i c h ni ng   q i y m at i
1 . 0 x 2 2 f f 4 0
2 . 0 x 2 2 f f 3 3
3 . v a   x a k a z o   k a b i   x o t i r a n i n g   a n i q   q i s m i   b o ' l i s h i   m u m k i n .
B os hq a   o' z ga r uv c hi l a r   k a bi ,   k o' r s at k i c h l a r d an   f oy da l a ni s h   uc h un  
ul ar ni   e' l o n  q i l i s h,   t o i f as i n i   a ni ql as h  s h ar t .
int  *countPtr,  count ;
bu   y er da   c o unt P t r   -   i nt   t oi f as i d ag i   o b' ek t g a  k o' r s at k i c h,   c o un t   es a 
od di y   b ut u n  ( i nt )   t o i f as i d ag i   o' z ga r uv c hi .   K o ' r s at k i c hl ar ni   e' l o n  q i l i s h da
ha r   b i r   o' z ga r uv c hi   ol di ga n   *   qo ' y i l i s hi   s ha r t .
Maslahat:   Ko'rsatkich o'zgaruvchilarini e'lon qilishning uchta usuli mavjud, ammo birinchi usul 
afzal ko'riladi:
string * mystring;
string  *mystring;
string  * mystring;
* op er at or   (   de r e f er en ce   op er at or i )   y or da mi da   o' z g ar uv c hi ni ng  
qi y ma t i ni   ol i s h  uc hu n  k o' r s at g i c h da n   f oy d al an i s hi ng i z   m um k i n   :
# include   <iostream>
# include   <string>
using namespace std ;
int  main() {
    string  food =  "Palov" ;   
    string *  ptr  = &food ;       
    cout <<  ptr  <<  "\n" ;
    cout << * ptr  <<  "\n" ;
    return   0 ;
} 0 x 6 d f e d 4
P a l o v
Ko'rsatkich. O'zining qiymati sifatida xotira 
manziliini ko'rsatuvchi (saqlovchi) 
o'zgaruvchilarga    - ko'rsatkich o'zgaruvchilar    
deyiladi.
Masalan : Ko'rsatkichning qiymati
1) 0x22ff40
2) 0x22ff33
3) va xakazo kabi xotiraning    aniq qismi 
bo'lishi mumkin.
Boshqa o'zgaruvchilar kabi, ko'rsatkichlardan 
foydalanish uchun ularni e'lon qilish, toifasini 
aniqlash shart.int *countPtr, count;
bu yerda countPtr -    int toifasidagi ob'ektga 
ko'rsatkich, count esa oddiy butun (int) toifasidagi 
o'zgaruvchi. Ko'rsatkichlarni e'lon qilishda har bir 
o'zgaruvchi oldigan * qo'yilishi shart.
Misol 1:   Ko'rsatkich ko'rsatayotgan manzili 
qiymatini dasturi
#include <iostream.h>
int main()
{
int n = 5;
int * nPtr;
// & manzilini olish amali
nPtr = &n;
cout << "n=" << n << endl;
*nPtr = 15;
cout << "n=" << n << endl;
cout << "\nKo'rsatkich qiymati,\n"; cout << "ya'ni ko'rsatkich ko'rsatayotgan 
manzili=" << nPtr<<endl;
cout << "Ko'rsatkich ko'rsatayotgan manzili 
qiymati="
<<*nPtr<<endl;
system ("pause");
return 0;
}
Misol 2:   Ko'rsatkich - joylashgan manzili dasturi
#include <iostream.h>
int main()
{
double n = 5;
double *kPtr;
kPtr = &n;
cout << "o'zgaruvchilar qiymati" << endl;
cout << "n=" << n << endl;
cout << "*kPtr=" << *kPtr << endl;
cout << "\nxotira manzilii" << endl;
cout << "n - o'zgaruvchisi joylashgan manzili.
&n=" << &n << endl;
cout << "Ko'rsatkich ko'rsatayotgan manzili. 
kPtr=" << kPtr <<
endl;
cout << "Ko'rsatkich - joylashgan manzili.    
&kPtr=" << &kPtr <<
endl;
cout << "\n o'zgaruvchilarni xotirada 
egallagan xajmi" <<
endl;
cout << "n=" << sizeof(n) << endl; cout << "*kPtr=" << sizeof(kPtr) << endl;
system ("pause");
return 0;
}

Funksiya Reja: 1. Funksiya yaratish ; 2. Qiymatlarni qaytarish; 3. Funksiya prototiplari; 4. Parametrlarni qiymat va adresga ko’ra jo’natish;

Fu nk s i y a f a qat c ha qi r i l g an v a qt d a i s h l ay di ga n k od bl og i hi s ob l a na di . F un k s i y a ga pa r a me t r l a r s i f at i da m a' l u mo t l ar ni uz at i s h mu mk i n . F un k s i y al ar m ua y y a n b i r v az i f an i ba j a r i s h uc hu n i s h l at i l ad i . K o d y oz i s h j ar ay o ni da y a r at ga n f unk s i y a da n b i r y ok i b i r nec ht a ma r t a i s h l at i s h y ok i u mu ma n i s hl at m as l i k i m k o ni y at i g a e ga s i z . Funksiya yaratish. S i z k o' p m ar t a f unk s i y a ni us hb u d ar s g ac h a i s hl at i b k el di ng i z . m a i n ( ) ha m bi r f u nk s i y a hi s ob l a na di . d as t u r i s hg a t us h ga n v aqt i d a bi r i nc h i b o' l i b us hb u f unk s i y a i s h l a y d i . B u s t a nd ar t f u nk s i y a bo ' l i b s i z h am s h u k ab i f u nk s i y al ar y ar at i s h i n gi z mu mk i n . Fu nk s i y a y a r at i s h uc h un b i r i nc hi f unk s i y a qa y t a r a di ga n t i p y ok i f unk s i y a t u r i k ey i n n om i v a ( ) oc h i l ad i . qav s i c h i d a s i z m a' l u mo t l ar y a' ni pa r a me t r l a r n i q ab ul q i l as i z . void myFunction () { // Bu qiymat qaytarmaydigan funksiya } Mi s o l t us hu nt i r i l di .  m y F u n c t i o n ( ) f u n k t s i y a n o m i  v o i d f u n k t s i y a q i y m a t q a y t a r m a y d i g a n f u n k s i y a l i g i d a n d a l o l a t b e r a d i .  { } b u f u n k s i y a t a n a s i b o ' l i b . B u y e r d a o ' z i n g i z g a k e r a k l i k o d n i k i r i t i s h i n i g i z m u m k i n . U n u t m a n g m a i n ( ) f u n k s i y a s i d a n i m a a m a l b a j a r s a n g i z b u n d a h a m s h u n d a y a m a l n i b a j a r i s h i n i n g i z m u m k i n . Funksiya Chaqirish Fu nk s i y a o' z i d an o' z i i s hl ab k et ma y d i . F un k s i y a ni c ha qi r i s hd an s o' ng i s h ga t us ha di . Fu nk s i y an i q ay t a qa y t a f oy d al an i s hi ni ng i z mu mk i n . F un k s i y an i c ha qi r i s h uc hu n f unk s i y a no mi i k k i qav s ( ) v a nu qt al i v e r g ul bi l a n t ug al l a na di . #include <iostream> using namespace std ; void myFunction () {

cout << "I'm a developer. MasterSherkulov!" ; } int main () { myFunction(); return 0 ; } int foo(int k, int t) { int result; result = k * t; return (result); } Yuqoridagi foo funksiyamizning ismi, () qavslar ichidagi parametrlar –   int tipidagi k va   t lar kirish argumentlaridir , ular faqat ushbu funksiya ichida ko'rinadi va qo'llaniladi. Bunday o'zgaruvchilar lokal (local - mahalliy) deyiladi. result foo() ning ichida e’lon qilinganligi uchun u ham lokaldir. Demak biz funksiya ichida o'zgaruvchilarni va sinflarni (class) e’lon qilishimiz mumkin ekan. Lekin funksiya ichida boshqa funksiyani e’lon qilib bo'lmaydi. foo() funksiyamiz qiymat ham qaytaradi. Qaytish qiymatining tipi foo() ning e’lonida eng boshida kelgan - int tipiga ega. Biz funksiyadan qaytarmoqchi bo'lgan

qiymatning tipi ham funksiya e’lon qilgan qaytish qiymati tipiga mos kelishi kerak - ayni o'sha tipda bo'lishi yoki o'sha tipga keltirilishi mumkin bo'lgan tipga ega bo'lishi shart. Funksiyadan qiymatni return ifodasi bilan qaytaramiz. Agar funksiya hech narsa qaytarmasa e’londa void tipini yozamiz. Ya’ni: Funksiya – bu yordamchi algoritm bo’lib (dasturosti), ish natijasi sifatida ma’lum bir qiymatlari olinadi. Misollar: • Sondan ildiz chiqarish • Murakkab formulalar x bo’yicha qiymatlarni hisoblash • Savolga javob (oddiy osonki yoki yo’q?) Nega? • Dasturning turli joylarida bir xil hisoblashlarni bajarish uchun • Ommabop funksiyalar kutubxonasini yaratish uchun O’zgaruvchi: Xotiraning nomlangan qismi bo’lib, o’zida ma’lum bir toifadagi qiymatlarni saqlaydi. O’zgaruvchining nomi va qiymatlari bo’ladi. O’zgaruvchining nomi orqali qiymat saqlanayotgan xotira qismiga murojaat qilinadi. Programma ishlashi jarayonida o’zgaruvchining qiymatini o’zgartirish mumkin. Har qanday o’zgaruvchini ishlatishdan oldin, uni e’lon qilish lozim. Quyidagi butun sozlardan foydalanish uchun b , haqiqiy sonlardan foydalanish uchun h o’zgaruvchisi e’lon qilingan: int b; float h; O’zgarmaslar (const)

Hisoblash jarayonida qiymatini o’zgartirmaydigan kataliklarga aytiladi. float const pi = 3.14; Programmaning ma’lum qismini tavsiflash uchun ishlatiladi va bu qatorda hech qanday aml bajarilmaydi, ya’ni programmaning biror qismini yaxshiroq tushuntirish uchun xizmat qiladi. Izoh «/*» va «*/» simvollari orasida beriladi. /* Bu yerga izoh yoziladi. */ Bundan tashqari birsatrli izohlardan ham foydalanish mumkin. Buning uchun izoh boshiga «//» belgisi qo’yiladi. Operator Tilning yakunlangan jumlasi hisoblanadi va ma’lumotlar taxlilining tugallangan bosqichini ifodalaydi. Operator nuqtali vergul «;» bilan ajratiladi. Identifikator Programmist tomonidan programma elementlari (funksiya, o’zgaruvchilar, o’zgarmaslar …) uchun ixtiyoriy nom. Funksiyanın elonqilish C++ dilində funksiya aşağıdakı kimi elan olunur: Nəticənin_tipi funksiyanın_adı (tip1 argument1, tip2 argument2, ...); Burada nəticənin_tipi funksiyanın qaytaracağı nəticənin tipini göstərir. Əgər funksiya heç bir nəticə qaytarmırsa, onda nəticənin_tipi olaraq void yazırıq. funksiyanın_adı olaraq ingilis əlifbasının hərflərindən, rəqəmlərdən, _ simvolundan istifadə edə bilərik. Funksiya adı mütləq ingilis əlifbası hərfi ilə başlamalıdır və operator adları ilə üst-üstə düşməməlidir. Funksiyanın adından sonra mötərizə daxilində funksiyanın qəbul edəcəyi