Funksiyalar (Functions)

C++ da funksiyalar (Functions) haqida

SU

C++ da Funksiyalar (Functions)

Funksiyalar dasturchilarga butun boshli dasturni mayda boshqarish oson bo’lgan bo’laklarga ajratishga yordam beradi. C++ da funksiyalardan biror ko’dni qayta yozishni oldini olish va yozilgan ko’dni bir necha joyda qayta ishlatish uchun foydalaniladi. Funksiyalar qiymat qabul qilishi va u qiymat bilan ma’lum amallar bajarishi va qiymat qaytarishi mumkin. Funksiyalarning yozilish sintaksisi quidagicha:

qaytuvchi_qiymat_turi funksiya_nomi(parameterlar) {
    // funksiya tanasi
}

qaytuvchi_qiymat_turi - Bu funksiya qaytaradigan ma’lumot turi hisoblanadi. Agar funksiya hech qanday qiymat qaytarmasa void kalit sozidan foydalaniladi.

funksiya_nomi - Funksiya nomi.

parameterlar - Funksiya qabul qiluvchi qiymatlar

funksiya_tanasi - Funksiya chaqirilganda ishga tushishi ko’zda tutilgan ko’d bo’lagi

C++ da funksiyalar turlari

C++ da funksiyalarni bajaradigan vazifasi va ulardan ko’zlangan maqsaddan kelib chiqib turlarga ajratish mumkin:

1. Oldindan belgilangan funksiyalar (standart kutubxona funksiyalari)

Bular C++ kutubxonalari tomonidan taqdim qilinadigan funksiyalardir. Masalan, sqrt(), abs(), va pow() kabi funksiyalardir. Ushbu funksiyalardan <cmath> kutubxonasini qo’shish orqali foydalanish mumkin.

#include <cmath>
#include <iostream>
using namespace std;
 
int main() {
    double result = sqrt(16.0);
    cout << "16ning kvadrat ildizi " << result << endl;
    return 0;
}

2. Foydalanuvchi tomonidan e’lon qilingan funksiyalar

Bunday funksiyalar dasturchilar tomonidan e’lon qilingan standart kutubxonalarga kiritilmagan funksiyalardir.

#include <iostream>
using namespace std;
 
int qoshish(int a, int b) {
    return a + b;
}
 
int main() {
    int yigindi = qoshish(5, 3);
    cout << "Natija:  " << yigindi << endl;
    return 0;
}
 
// Natija: 8

Ushbu holatda biz asosiy bo’lgan main() funksiyamizdan tashqarida qo'shish deb nomlangan yangi bir funksiya e’lon qildik. Bu funksiya o’ziga ikkita qiymat qabul qilib foydalanuvchiga ularning yig’indisini qaytaradi ya’ni ikkita sonni bir biriga qo’shuvchi funksiya xisoblanadi. Funksiyamizni asosiy main() funksiyamiz ichida chaqirib parameter sifatida 5 va 3 sonlarini kiritdik va natija 8.

Parameterlar va Argumentlar

Parameterlar - funksiya chaqirilganda qabul qilinadigan ma’lumotlarni ifodalash uchun ishlatiladigan o’zgaruvchilardir.

void salom(string ism) {  // 'ism' bu yerda parameter
    cout << "Hayirli kun, " << ism << "!" << endl;
}

Argumentlar - funksiya chaqirilganda unga uzatiladigan haqiqiy qiymat yoki o’zgaruvchi hisoblanadi.

salom("Alisa"); // "Alisa" buyerda argument

Standart parameterlar (Default parameter)

C++ parameterlarga standart qiymatlarni belgilash imkonini beradi. Agar argument berilmaganda standart qiymatlardan foydalaniladi

void salom(string ism = "foydalanuvchi") {  // 'foydalanuvchi' bu yerda standart qiymat
    cout << "Hayirli kun, " << ism << "!" << endl;
}

Standart qiymatlarni afzalligi shundaki biz funksiyani chaqirib unga argument bermasak ham dastur xatosiz ishlayveradi.

#include <iostream>
using namespace std;
 
void salom(string ism = "foydalanuvchi" ){
    cout << "Hayirli kun, " << ism << endl;
}
 
int main() {
 
    salom();
 
    return 0;
}
 
// Natija: Hayirli kun, foydalanuvchi

Ushbu holatda dastur xatosiz ishlashda davom etaveradi. E’tibor qiling, biz funksiyani chaqirganimizda unga argument kiritmadik.

Bir hil nomli funksiyalar (Overloading functions)

Ba’zida shunday holatlar ham uchrab turadi ya’ni bir hil nomli ikkita alohida funksiyalar e’lon qilinadi. Misol uchun xisoblash amallarida butun va kasrli sonlarni hisoblashda.

int qoshish(int a, int b) {
    return a + b;
}
 
double qoshish(double a, double b) {
    return a + b;
}
 
int main() {
    cout << qoshish(5, 3) << endl;  // int funksiyani chaqiradi
    cout << qoshish(3.5, 2.5) << endl;  // double funksiyani chaqiradi
 
}

Rekursiv funksiyalar (Recursive Functions)

Ushbu funksiyalar o’zini o’zi chaqirish hususiyatiga ega huddi sikllardek. Bu funksiyalarda ham sikllardagidek cheksiz sikl hosil bo’lishini oldini olish uchun funksiya tanasida ehtiyotkor bo’lish lozim. Faktorial yoki Fibonachchi algoritmlari uchun odatiy usullardan biri xisoblanadi.

#include <iostream>
using namespace std;
 
int factorial(int n) {
 
// kiruvchi sonni 0 emasligini tekshirish
    if (n == 0) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}
 
int main() {
    int num = 5;
    cout << "Factorial of " << num << " is " << factorial(num) << endl;
    return 0;
}

Factorial - biror bir manfiy bo’lmagan sonning o’zigacha bo’lgan sonlar ko’paytmasiga teng ya’ni 3 sonining factoriali 6, 5 sonining factoriali esa 120. Dasturda birinchi qiymat 0 ya’ni manfiy emasligi tekshiriladi chunki ko’paytma amali bajariladi. Agar foydalanuvchi noma’lum sabablarga ko’ra manfiy son kiritsa biz 1 qiymatini qaytaramiz ya’ni dastur nixoyasiga yetadi. Funksiya o’z o’zini chaqirishni to’xtatishi uchun ham aynan shu tekshirish amal qiladi.

Ushbu sahifada

GitHubda tahrirlash