7. Funksiyalar


Funksiyaning e’loni va aniqlanishi


Download 98.33 Kb.
bet2/5
Sana12.03.2023
Hajmi98.33 Kb.
#1264437
1   2   3   4   5
Bog'liq
07.Funksiyalar

7.2. Funksiyaning e’loni va aniqlanishi


Dasturdagi barcha ko‘rsatmalar yuqoridan pastga qarab bajariladi. Bu shuni anglatadiki, dasturda funksiyadan foydalanishdan avval uni qo‘shimcha ravishda e’lon qilish kerak. Shu sababli funksiyaning e’loni funksiyani chaqirishdan oldin joylashishi lozim. Bir funksiyaning aniqlanishini ikkinchi funksiyaning ichida joylashtirish mumkin emas. Funksiyaning nomi har doim global identifikator hisoblanadi.
Katta bo‘lmagan dasturlarda funksiya e’lonini ko‘rsatmasdan main() funksiyasidan oldin funksiyaning aniqlanishini joylashtirish mumkin. main() funksiyasi ham, birinchi chaqilirgani uchun, e’lonni talab qilmaydi.
#include
int sum(int x, int y) {
return x + y;
}
int main() {
cout << sum(10, 20) << endl; // 30
cin.get();
return 0;
}
Funksiyalarning e’lonini main() funksiyasidan oldin, bayonini esa funksiyadan keyin joylashtirish lozim. Bunda funksiyalarning aniqlanish tartibi ahamiyatga ega emas.
#include
int sum(int, int); // Funksiya e'loni
int main() {
cout << sum(10, 20) << endl; // 30
cin.get();
return 0;
}
int sum(int x, int у) { // Aniqlanishi
return x + y;
}
Dastur oʻlchami ortishi bilan e’lonlar va aniqlanishlar ortib boradi. Bunday holda dastur bir necha alohida fayllarga bo‘linadi. Funksiya e’lonlari h (ayrim hollarda hpp) kengaytmali sarlavha fayliga, aniqlanishlar esa bir nomli срр kengaytmali alohida faylga chiqariladi. Barcha fayllar main() funksiyasini olgan asosiy fayl bilan birga bitta papkada joylashtiriladi. #include direktivasi yordamida sarlavha fayli barcha fayllarga ulanadi. Agar #include direktivasida sarlavha fayli nomi burchakli qavslar ichida ko‘rsatilsa, fayl tizim papkalaridan qidiriladi, qo‘shtirnoq ichida ko‘rsatilsa, avval asosiy fayl joylashgan papkadan, so‘ngra tizim papkalaridan qidiradi.
Misol sifatida sum() funksiyasini alohida faylga (masalan, "mymodule" nomi bilan) chiqaramiz, so‘ngra uni asosiy faylga ulaymiz. mymodule.срр faylini yaratish uchun Обозреватель решений oynasida sichqoncha o‘ng tugmasi bosilib, Файлы исходного кода punkti va kontekstli menyudan Добавить=>Создать элемент punkti tanlanadi. Natijada Добавление нового элемента oynasi ochiladi. Файл C++ (.срр) punkti tanlanib, fayl nomi ("mymodule") kiritiladi va Добавить tugmasi bosiladi. Fayl loyixa papkasiga qo‘shiladi va uning nomi Обозреватель решений oynasida tasvirlanadi. Faylning o‘zi esa alohida qo‘yilmada ochiladi. Bu faylga quyidagi kodni qo‘yamiz (mymodule.cpp fayli):
#include "mymodule.h"
int sum(int x, int у) { // Aniqlash
return x + y;
}
mymodule.h faylini yaratish uchun Обозреватель решений oynasining Заголовочные файлы punktida sichqoncha o‘ng tugmasi bosiladi va kontekstli menyudan Добавить=>Создать элемент punkti tanlanadi. Natijada Добавление нового элемента oynasi ochiladi. Oynada Заголовочный файл (.h, fayl nomi kiritiladi - "mymodule") punkti tanlanib, Добавить tugmasi bosiladi. Bu faylga quyidagi kod joylashtiriladi (mymodule.h fayli):
#ifndef MYMODULE_H
#define MYMODULE_H
#include
int sum(int x, int y) ;
#endif
mymodule.h faylining mazmuni kompilyatsiyadan oldin tekshiriladigan shart ichida joylashgan. Shart quyidagicha ko‘rinishga ega:
#ifndef MYMODULE_H
// Ko‘rsatmalar
#endif
Shartni quyidagicha o‘qish mumkin: “agar MYMODULE_H makroaniqlanishi mavjud bo‘lmasa, u holda ko‘rsatmalar fayl ulanayotgan joyga qo‘yilsin”. Odatda makroaniqlanish nomi sarlavha fayli nomi bilan mos keladi. Faqat barcha harflar yuqori registrda ko‘rsatiladi va nuqta ostki chiziq bilan almashtiriladi. Shart #ifndef direktivasidan boshlanadi va #endif direktivasi bilan tugaydi. Bu identifikatorlar e’loni ikkki marta qo‘yilmasligi uchun zarur. Buning uchun birinchi ko‘rsatmada shart ichida #define direktivasi yordamida MYMODULE_H makroaniqlanish e’lon qilinadi. Bu holda takroriy tekshirish yolg‘on qiymat qaytaradi. Faylni bir marta ulash uchun direktivasidan ham foydalanish mumkin #pragma: #pragma once
Bu sum() funksiyasidan foydalanish uchun asosiy dasturga mymodule.h faylini ulash yetarli bo‘ladi. Ulash quyidagi listingda (main.cpp) keltirilgan:
#include "mymodule.h"
int main() {
cout << sum(10, 20) << endl; // 30
cin.get() ;
return 0;
}
#include direktivasida nafaqat faylning nomini, balki unga absolyut yoki nisbiy yo‘lni ko‘rsatish ham mumkin. Bu fayllarni turli papkalarda joylashtirish imkonini beradi. Absolyut va nisbiy yo‘lni korsatish:
#include "С:\\book\\test\\test\\mymodule.h"
#include "С:/book/test/test/mymodule.h"
#include "/book/test/test/mymodule.h"
#include "folder/mymodule.h"
Katta dasturlardan foydalanilganda statik (VC++da lib kengaytmali fayllar) yoki dinamik (dll kengaytmali fayllar) kutubxonalar yaratiladi. Statik kutubxonalar dastur yoki kompilyatsiyaning bir qismiga aylanadi, dinamik kutubxonalar esa dasturning bajarilishi vaqtida yuklanadi.

Download 98.33 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling