9. Funksiyalar¶
Dasturimiz kattalashgani sari kod ham ko‘payadi.
Masalan, biror amalni bir necha marta bajarishimiz kerak bo‘lsa, bir xil kodni qayta-qayta yozish yaxshi emas.
Buning o‘rniga funksiyalardan foydalanamiz.
Funksiya — ma'lum bir vazifani bajaradigan kodlar to‘plami.
Funksiya nima?¶
Masalan, ikkita sonni qo‘shadigan funksiya yaratishimiz mumkin:
int qoshish(int a, int b) {
return a + b;
}
Keyin uni:
qoshish(10, 20);
deb chaqirishimiz mumkin.
Natija:
30
Eng oddiy funksiya¶
Avval hech qanday qiymat qaytarmaydigan funksiya yaratamiz.
void salom() {
cout << "Salom!";
}
Bu funksiya Salom! chiqaradi.
Uni ishlatish uchun:
salom();
deb chaqiramiz.
To‘liq dastur:
#include <iostream>
using namespace std;
void salom() {
cout << "Salom!";
}
int main() {
salom();
return 0;
}
Natija:
Salom!
Funksiyani chaqirish¶
Funksiya yaratishning o‘zi uni ishlatmaydi.
Masalan:
void salom() {
cout << "Salom!";
}
Bu yerda funksiya yaratildi.
Uni bajarish uchun:
salom();
deb chaqirish kerak.
Funksiya nega kerak?¶
Tasavvur qiling, siz Salom! matnini 10 marta chiqarishingiz kerak.
Funksiyasiz:
cout << "Salom!";
cout << "Salom!";
cout << "Salom!";
...
Funksiya bilan:
void salom() {
cout << "Salom!";
}
Keyin:
salom();
salom();
salom();
Kod ancha tartibli bo‘ladi.
Funksiyaga ma'lumot berish¶
Funksiyaga ma'lumot yuborish mumkin.
Masalan:
void salom(string ism) {
cout << "Salom, " << ism;
}
Endi:
salom("Ali");
Natija:
Salom, Ali
Yoki:
salom("Vali");
Natija:
Salom, Vali
Parametr¶
Quyidagi funksiyada:
void salom(string ism) {
cout << "Salom, " << ism;
}
ism — parametr.
Funksiyani chaqirganda:
salom("Ali");
"Ali" esa funksiyaga berilgan qiymat.
Bir nechta parametr¶
Funksiyada bir nechta parametr bo‘lishi mumkin.
Masalan:
void tanishtir(string ism, int yosh) {
cout << "Ism: " << ism << endl;
cout << "Yosh: " << yosh;
}
Chaqirish:
tanishtir("Ali", 18);
Natija:
Ism: Ali
Yosh: 18
Qiymat qaytaradigan funksiya¶
Funksiya faqat ekranga ma'lumot chiqarishi shart emas.
U bizga qiymat qaytarishi ham mumkin.
Masalan:
int qoshish(int a, int b) {
return a + b;
}
Bu funksiya ikkita sonni qo‘shib, natijani qaytaradi.
Keyin:
int natija = qoshish(10, 20);
Natijada:
natija = 30
bo‘ladi.
return¶
return funksiya natijasini qaytarish uchun ishlatiladi.
Masalan:
int kvadrat(int son) {
return son * son;
}
Agar:
kvadrat(5);
deb chaqirsak, natija:
25
bo‘ladi.
void¶
Agar funksiya hech qanday qiymat qaytarmasa, void ishlatiladi.
Masalan:
void salom() {
cout << "Salom!";
}
Bu funksiya faqat ish bajaradi.
Hech qanday qiymat qaytarmaydi.
int bilan void farqi¶
int:
int qoshish(int a, int b) {
return a + b;
}
Bu int qiymat qaytaradi.
void:
void salom() {
cout << "Salom!";
}
Bu hech qanday qiymat qaytarmaydi.
Oddiy qilib:
int → qiymat qaytaradi
void → qiymat qaytarmaydi
Funksiyani main() dan oldin yozish¶
Funksiyani main() dan oldin yozish mumkin.
#include <iostream>
using namespace std;
int qoshish(int a, int b) {
return a + b;
}
int main() {
cout << qoshish(10, 20);
return 0;
}
Natija:
30
Funksiyani main() dan keyin yozish¶
Funksiyani main() dan keyin ham yozish mumkin.
Lekin bu holda C++ ga funksiya haqida oldindan aytishimiz kerak.
Buning uchun function declaration ishlatiladi.
#include <iostream>
using namespace std;
int qoshish(int a, int b);
int main() {
cout << qoshish(10, 20);
return 0;
}
int qoshish(int a, int b) {
return a + b;
}
Bu yerda:
int qoshish(int a, int b);
funksiya e'lonidir.
Hozircha funksiyalarni main() dan oldin yozish biz uchun osonroq.
Funksiya yordamida kalkulyator¶
Masalan, qo‘shish va ayirish uchun alohida funksiyalar yaratamiz.
#include <iostream>
using namespace std;
int qoshish(int a, int b) {
return a + b;
}
int ayirish(int a, int b) {
return a - b;
}
int main() {
cout << qoshish(10, 5) << endl;
cout << ayirish(10, 5);
return 0;
}
Natija:
15
5
Funksiya ichida if¶
Funksiya ichida boshqa C++ kodlaridan foydalanish mumkin.
Masalan:
bool juftmi(int son) {
if (son % 2 == 0) {
return true;
}
return false;
}
Keyin:
cout << juftmi(10);
Natija:
1
Chunki 10 juft son.
Funksiya va cin¶
Funksiya ichida foydalanuvchidan ma'lumot olish ham mumkin.
Masalan:
void ismSorash() {
string ism;
cout << "Ismingiz: ";
cin >> ism;
cout << "Salom, " << ism;
}
Keyin:
ismSorash();
Funksiyalar dasturni tartibli qiladi¶
Katta dasturda hamma kodni main() ichiga yozish noqulay.
Masalan:
int main() {
// 100 qator kod
// yana 100 qator kod
// yana kod...
}
Buning o‘rniga vazifalarni funksiyalarga bo‘lish mumkin:
void login() {
// login kodi
}
void menyu() {
// menyu kodi
}
void hisoblash() {
// hisoblash kodi
}
Shunda dastur tushunarliroq bo‘ladi.
Amaliy mashqlar¶
1-mashq¶
salom() nomli funksiya yarating.
U:
Salom, dasturchi!
matnini chiqarsin.
2-mashq¶
Ikki sonni qabul qiladigan va ularning yig‘indisini qaytaradigan funksiya yarating.
Masalan:
qoshish(10, 20)
Natija:
30
3-mashq¶
Sonning kvadratini qaytaradigan funksiya yarating.
Masalan:
kvadrat(5)
Natija:
25
4-mashq¶
Son juft yoki toq ekanligini tekshiradigan funksiya yarating.
Masalan:
juftmi(10)
true qaytarsin.
5-mashq¶
Uchta son qabul qiladigan va eng katta sonni qaytaradigan funksiya yarating.
Muhim narsalarni eslab qoling¶
Funksiya — ma'lum bir vazifani bajaradigan kodlar to‘plami.
Funksiya:
void salom() {
cout << "Salom!";
}
ko‘rinishida yaratilishi mumkin.
Funksiyani chaqirish:
salom();
Parametrlar orqali funksiyaga ma'lumot berish mumkin:
qoshish(10, 20);
return natijani qaytaradi.
void funksiya qiymat qaytarmaydi.
Funksiyalar katta dasturlarni kichik va tushunarli qismlarga bo‘lishga yordam beradi.