8. Funksiyalar

Oldingi bo‘limda sikllar yordamida bir xil kodni bir necha marta bajarishni o‘rgandik.

Endi dasturimiz kattalashgani sari kodni qanday tartibli saqlashni o‘rganamiz.

Buning uchun funksiyalardan foydalanamiz.


Funksiya nima?

Funksiya — ma'lum bir vazifani bajaradigan kodlar to‘plami.

Uni oddiy qilib kichik yordamchi dastur deb tasavvur qilishimiz mumkin.

Masalan, dasturimizda salomlashish vazifasi bo‘lsin.

Buning uchun:

void salom() {
    printf("Salom!");
}

funksiyasini yaratishimiz mumkin.

Keyin uni chaqiramiz:

salom();

Natija:

Salom!

Nima uchun funksiyalardan foydalanamiz?

Tasavvur qiling, bir xil kodni dasturimizning 10 ta joyida ishlatishimiz kerak.

Agar kodni har safar qayta yozsak, dastur juda uzun bo‘lib ketadi.

Funksiya yordamida esa kodni bir marta yozamiz:

void salom() {
    printf("Salom!");
}

Keyin kerakli joyda:

salom();

deb chaqiramiz.

Bu kodimizni:

  • qisqaroq;
  • tartibliroq;
  • tushunarliroq

qiladi.


Oddiy funksiya yaratish

Funksiyaning oddiy ko‘rinishi:

void funksiya_nomi() {
    // kod
}

Masalan:

void salom() {
    printf("Salom!");
}

Bu yerda:

void

funksiya qiymat qaytarmasligini bildiradi.

salom

funksiyaning nomi.

()

funksiya parametrlari yoziladigan joy.

{}

funksiya ichidagi kod.


Funksiyani chaqirish

Funksiyani yaratishning o‘zi yetarli emas.

Uni ishlatish uchun chaqirish kerak.

Masalan:

salom();

To‘liq dastur:

#include <stdio.h>

void salom() {
    printf("Salom!");
}

int main() {
    salom();

    return 0;
}

Natija:

Salom!

Funksiyani bir necha marta chaqirish

Funksiyani bir necha marta chaqirish mumkin.

#include <stdio.h>

void salom() {
    printf("Salom!\n");
}

int main() {
    salom();
    salom();
    salom();

    return 0;
}

Natija:

Salom!
Salom!
Salom!

Funksiya bir marta yozildi, lekin uch marta ishlatildi.


Funksiyaga ma'lumot berish

Ba'zan funksiya ishlashi uchun unga ma'lumot berishimiz kerak.

Masalan, turli odamlar bilan salomlashish.

Buning uchun parametrdan foydalanamiz.

void salom(char ism[]) {
    printf("Salom, %s!\n", ism);
}

Endi funksiyaga ism berishimiz mumkin:

salom("Ali");

Natija:

Salom, Ali!

Yoki:

salom("Vali");

Natija:

Salom, Vali!

Parametr nima?

Parametr — funksiyaga beriladigan ma'lumot.

Masalan:

void kvadrat(int son) {
    printf("%d", son * son);
}

Bu yerda:

son

parametr hisoblanadi.

Funksiyani chaqirganda unga qiymat beramiz:

kvadrat(5);

Natija:

25

Bir nechta parametr

Funksiya bir nechta parametrga ega bo‘lishi mumkin.

Masalan:

void qoshish(int a, int b) {
    printf("%d", a + b);
}

Uni:

qoshish(10, 5);

deb chaqiramiz.

Natija:

15

Bu yerda:

a = 10
b = 5

bo‘ladi.


return nima?

Ba'zi funksiyalar natija qaytaradi.

Masalan, ikkita sonni qo‘shadigan funksiya yaratamiz.

int qoshish(int a, int b) {
    return a + b;
}

Bu funksiya ikkita sonni qo‘shadi va natijani qaytaradi.

Keyin natijani o‘zgaruvchida saqlashimiz mumkin:

int natija = qoshish(10, 5);

Endi:

natija = 15

bo‘ladi.


return bilan to‘liq dastur

#include <stdio.h>

int qoshish(int a, int b) {
    return a + b;
}

int main() {
    int natija = qoshish(10, 5);

    printf("%d", natija);

    return 0;
}

Natija:

15

void va int

Funksiya yaratishda boshida tur yozamiz.

Masalan:

void salom() {
    printf("Salom!");
}

Bu funksiya hech qanday qiymat qaytarmaydi.

Ammo:

int qoshish(int a, int b) {
    return a + b;
}

bu funksiya int turidagi qiymat qaytaradi.

Hozircha quyidagicha eslab qolish kifoya:

void → qiymat qaytarmaydi
int  → butun son qaytaradi

Funksiyadan foydalanish

Keling, oddiy kalkulyator funksiyalarini yaratamiz.

#include <stdio.h>

int qoshish(int a, int b) {
    return a + b;
}

int ayirish(int a, int b) {
    return a - b;
}

int main() {
    printf("%d\n", qoshish(10, 5));
    printf("%d\n", ayirish(10, 5));

    return 0;
}

Natija:

15
5

Bu usul yordamida katta dasturlarni kichik qismlarga bo‘lish mumkin.


Funksiya va sikl

Funksiyani sikl bilan birga ham ishlatish mumkin.

Masalan:

#include <stdio.h>

void salom() {
    printf("Salom!\n");
}

int main() {
    for (int i = 1; i <= 5; i++) {
        salom();
    }

    return 0;
}

Natija:

Salom!
Salom!
Salom!
Salom!
Salom!

Bu yerda for sikli salom() funksiyasini besh marta chaqirdi.


Funksiya va if

Funksiya ichida if ishlatish ham mumkin.

Masalan:

#include <stdio.h>

void tekshir(int yosh) {
    if (yosh >= 18) {
        printf("Voyaga yetgan.");
    } else {
        printf("Voyaga yetmagan.");
    }
}

int main() {
    tekshir(20);

    return 0;
}

Natija:

Voyaga yetgan.

Funksiya nomini to‘g‘ri tanlash

Funksiya nomi uning vazifasini tushuntirib turgani yaxshi.

Masalan:

void salom()

yaxshi nom.

int qoshish(int a, int b)

ham yaxshi nom.

Quyidagi nom esa tushunarsizroq:

void abc()

Shuning uchun funksiyalarga ma'noli nom berishga harakat qiling.


Bir nechta funksiyali dastur

Keling, bir nechta funksiyadan foydalanamiz.

#include <stdio.h>

void salom() {
    printf("Salom!\n");
}

void xayr() {
    printf("Xayr!\n");
}

int main() {
    salom();
    xayr();

    return 0;
}

Natija:

Salom!
Xayr!

Har bir funksiya o‘z vazifasini bajarmoqda.


Funksiyaning umumiy ko‘rinishi

Hozircha funksiyani quyidagicha tasavvur qiling:

qaytish_turi funksiya_nomi(parametrlar) {
    // kodlar
}

Masalan:

int qoshish(int a, int b) {
    return a + b;
}

Bu yerda:

int

→ funksiya qaytaradigan qiymat turi.

qoshish

→ funksiya nomi.

int a, int b

→ parametrlar.

return a + b;

→ qaytariladigan natija.


Funksiyadan foydalanishning foydasi

Tasavvur qiling, dasturimizda 500 qator kod bor.

Agar hamma kod bitta joyda bo‘lsa, uni tushunish qiyin bo‘lishi mumkin.

Funksiyalar yordamida uni qismlarga ajratish mumkin:

main()
    ↓
foydalanuvchini tekshirish()
    ↓
hisoblash()
    ↓
natijani chiqarish()

Har bir funksiya alohida vazifani bajaradi.

Shuning uchun katta dasturlarda funksiyalar juda muhim.


Amaliy mashqlar

1-mashq

salom() nomli funksiya yarating.

U:

Salom, dasturchi!

matnini chiqarsin.


2-mashq

Ikki sonni ko‘paytiradigan funksiya yozing.

Masalan:

kopaytirish(5, 4)

natijasi:

20

bo‘lishi kerak.


3-mashq

Sonning kvadratini qaytaradigan funksiya yozing.

Masalan:

kvadrat(5)

natijasi:

25

bo‘lishi kerak.


4-mashq

Son musbat yoki manfiy ekanini tekshiradigan funksiya yozing.

Masalan:

tekshir(10)

natijasi:

Musbat

bo‘lishi kerak.


5-mashq

Quyidagi dastur nima chiqaradi?

#include <stdio.h>

int qoshish(int a, int b) {
    return a + b;
}

int main() {
    int natija = qoshish(20, 30);

    printf("%d", natija);

    return 0;
}

Muhim narsalarni eslab qoling

Funksiya — ma'lum bir vazifani bajaradigan kodlar to‘plami.

Funksiya yaratish:

void salom() {
    printf("Salom!");
}

Funksiyani chaqirish:

salom();

Parametr bilan:

void salom(char ism[]) {
    printf("Salom, %s!", ism);
}

Natija qaytarish:

int qoshish(int a, int b) {
    return a + b;
}

Funksiyani chaqirish:

int natija = qoshish(10, 5);

Xulosa

Funksiyalar dasturimizni kichik va tushunarli qismlarga bo‘lishga yordam beradi.

Masalan:

int qoshish(int a, int b) {
    return a + b;
}

Bu funksiya ikkita sonni qabul qiladi va ularning yig‘indisini qaytaradi.

Funksiyalarni yaxshi tushunish juda muhim, chunki keyingi mavzularda ular bilan tez-tez ishlaymiz.