249
10.
Go to dan har doim foydalanish qanday oqibatlarga olib keladi ?
5.9. Funksiyalar
Muhim so`zlar:
blok, funksiya,kutubxona,tip, return, void, function
prototype.
Bilib olasiz:
C++ da funksiyalarni e`lon qilish , foydalanish,
funksiyalarning afzallik tomonlari, tipli va tipsiz funksaiyalar, parameterli va
parametrsiz finksiyalarni yaratish va foydalanish.
C++
da
dasturlashning
asosiy
bloklaridan
biri
funksiyalardir.
Funksiyalarning foydasi shundaki, katta masala bir necha kichik bo`laklarga
bo`linib, har biriga alohida funksiya yozilganda, masala
yechish algoritmi ancha
soddalashadi. Bunda dasturchi yozgan funksiyalar
C++
ning standart kutubxonasi
va boshqa firmalar yozgan kutubxonalar ichidagi funksiyalar bilan birlashtiriladi.
Bu esa ishni osonlashtiradi. Ko`p holda dasturda takroran bajariladigan amalni
funksiya sifatida yozish va kerakli joyda ushbu funksiyani chaqirish mumkin.
Funksiyani programma tanasida ishlatish uchun u chaqiriladi, yani uning ismi
yoziladi va unga kerakli argumentlar beriladi. ()
qavslar ushbu funksiya
chaqirig`ini ifodalaydi. Masalan,
foo();
k = square(l);
Demak, agar funksiya argumentlar olsa, ular () qavs ichida yoziladi.
Argumentsiz funksiyadan keyin esa () qavslarning o`zi qo`yiladi.
Funksiyalar dasturchi ishini juda yengillashtiradi. Funksiyalar yordamida
programma modullashadi, qismlarga bo`linadi.
Bu esa keyinchalik dasturni
rivojlantirishni osonlashtiradi. Dastur yozilish davrida xatolarni topishni
yengillashtiradi. Bir misolda funksiyaning asosiy qismlarini ko`rib chiqaylik.
int foo(int k, int t) {
int result;
result = k * t;
return (result);}
250
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
loka
l(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. Yani:
void funk(){
int g = 10;
cout << g;
return;}
Bu funksiya void (bo`sh, hech narsasiz) tipidagi qiymatni qaytaradi.
Boshqacha
qilib aytganda, qaytargan qiymati bo`sh to`plamdir. Lekin funksiya
hech narsa qaytarmaydi deya olmaymiz. Chunki hech narsa qaytarmaydigan
maxsus funksiyalar ham bor. Ularning qaytish qiymati belgilanadigan joyga hech
narsa yozilmaydi. Biz unday funksiyalarni keyinroq ko`rib chiqamiz. Bu yerda bir
nuqta shuki, agar funksiya maxsus bo`lmasa, Lekin
oldida qaytish qiymati tipi
ko`rsatilmagan bo`lsa, qaytish qiymati int tipiga ega deb qabul qilinadi.
Void
qaytish tipli funksiyalardan chiqish uchun
return;
deb yozsak
yetarlidir.Yoki returnni qoldirib ketsak ham bo`ladi. Funksiyaning qismlari
bajaradigan vazifasiga ko`ra turlicha nomlanadi. Yuqorida ko`rib chiqqanimiz
funksiya aniqlanishi (function definition) deyiladi, chunki biz bunda funksiyaning
bajaradigan amallarini
funksiya nomidan keyin,{} qavslar ichida aniqlab yozib
chiqyapmiz. Funksiya aniqlanishida {} qavslardan oldin nuqta-vergul [;] qo`yish
xatodir. Bundan tashqari funksiya e`loni, prototipi yoki deklaratsiyasi (