Kitob uchta qismdan iborat. "Strukturali dasturlash", "Obyektli-yo’nalishli dasturlash", "Standart kutubxonalar"



Download 333,2 Kb.
bet56/90
Sana10.07.2022
Hajmi333,2 Kb.
#770437
1   ...   52   53   54   55   56   57   58   59   ...   90
Bog'liq
C majmua

Tashqi e'lonlar
Ixtiyoriy funksiya dasturning barcha modullarida avtomatik ko'rinadi. Agar funksiya amal qilish sohasini u tavsiflangan fayl bilan chegaralash talab qilinsa static modigikatordan foydalaniladi.
Bir nechta modullarda o'zgaruvchi yoki konstantaga kirishni amalga oshirish uchun

  • bitta modulda global sifatida uni aniqlash;

  • uni boshqa modullarda extern modifikator yordamida tashqi deb e'lon qilish.

Boshqa usul – bu e'lonni sarlavha faylga joylashtirish va uni zarur modullarga kiritish.


Bitta va faqat bitta o'zgaruvchini barcha tavsiflari kelishtirilishi lozim.
one.cpp va two.cpp fayllarda ikkita global o'zgaruvchilarnimy_header.h sarlavha fayli yordamida tavsiflash misoli.

// my_header.h – tashqi e'lonlar


extern int a;
extern double b;

// ------------------------------
// one.cpp
#include "my_header.h"
int a;

// ------------------------------
// two.cpp
#include "my_header.h"
double b;

one.cpp va two.cpp fayllarda ikkita o'zgaruvchiga kirish mumkin.


Agar o'zgaruvchi static kabi tavsiflangan bo'lsa, uni amal qilish sohasi, u tavsiflagan fayl bilan chegaralanadi.
Tipni tavsiflashda bitta ta'rif qoidasiga tayanish lozim, ya'ni dasturda foydalanilgan tip roppa-rosa bir marta aniqlanishi lozim. Odatda bu sarlavha faylda bajariladi, keyin bu tipni foydalanuvchi modullarga ulanadi. Bu qoidaning buzilishi qiyin aniqlanadigan xatolarga olib keladi, chunki kompilyatorlar, odatda turli fayllarda bitta tipning ta'riflarini taqqoslash imkoniyatiga ega emas.


Nomlangan soha

Nomlangan soha e'lonlarni mantiqiy guruhlash va ularga kirishni chegaralash uchun xizmat qiladi. Oddiy qo'llanilishiga misol, bir kishi tomonidan yozilgan kodni ikkinchi tomonidan yozilgan koddan ajratish hisoblanadi. Yagona global ko'rinish sohasidan foydalanilganda alohida qismlardan dasturni shakllantirish mumkin bo'lganlarning ustma-ust tushishi va bahslashivu sababli juda murakkab. Nomlangan sohalardan foydalanish zarur bo'lmagan vositalarga kirishga to'sqinlik qiladi.


Nomlangan sohani e'lon qilish (uni yana nomlar fazosi deb ham ataladi)

namespace [ nom_sohasi ]{ /* E'lon */ }


formatga ega.


Nomlangan soha bir necha marta e'lon qilinishi mumkin, bunda keyingi e'lonlar oldingilarning kengaytmalari kabi qaraladi. Shunday qilib, nomlangan soha bitta fayl doirasida e'lon qilinishi va o'zgartirilishi mumkin.
Agar soha nomi berilgan bo'lsa, uni kompilyator har bir modul bo'yicha turlicha noyob identifikator yordamida mustaqil aniqlanadi. E'lonlarni bunday sohaga joylashtirish foydali, chunki kodning lokallik xossasini saqlaydi. Bir fayldan boshqa faylning nomlangan sohasi elementiga kirish mumkin emas.
Misol.

namespace demo{


int i = 1;
int k = 0;
void func1(int);
void func2(int) { /* … */}
}
namespace demo{ // Kengaytma
// int i = 2; Qo'shma ta'rif noto'g'ri
void func1(double); // Ortiqcha yuklanish
void func2(int); // To'g'ri (takroriy e'lon)
}

Nomlangan soha e'lon qilishda e'lonlar va ta'riflar qatnashishi mumkin. Unga nafaqat e'lonlarni balki ularni soha nomi va :: ko'rinish sohasiga kirish operatori yordamida aniqlanadi, masalan,


void demo::func1(int) { /* … */}


Bu interfeys va amalga oshirishni bo'lish uchun qo'llaniladi. Shunday usul bilan nomlar fazosida yangi elementni e'lon qilish mumkin emas.


Soha ichiga e'lon qilingan obyektlar e'lon paytidan boshlab ko'rinadi. Ularga soha nomi va :: ko'rinish sohaga kirish operatori bilan oshkora murojaat qilish mumkin, masalan,

demo::i = 100; demo::func2(10);


Agar nom ko'pincha o'z fazosidan tashqarida foydalanilsa, uni using operatori yordamida erishadigan qilib e'lon qilish mumkin:


using demo::i;


Shundan so'ng nomni sohaning oshkora ko'rsatilmasdan ham foydalanish mumkin.


Agar birorta sohadan barcha nomlarnierishadigan qismi talab etilsa using namespace operatori qo'llaniladi.

using namespace demo;


using va using namespace operatorlarini nomlangan sohada boshqa sohadagi e'lonlarni erishadigan qilish uchun uning ichidagi e'lonlardan foydalanish mumkin.


namespace Department_of_Applied_Mathematics{


using demo::i;
// …
}

Nomlangan sohada oshkora yoki using operatori yordamida e'lon qilingan nomlar using namespace operator yordamida e'lon qilingan nomlarga nisbatan afzallikka ega (ustma-ust turuvchi bir nechta nomlangan sohalarni ishga kiritilganda ahamiyatga ega).


Nomlar fazolar qisqa nomlari bir-biri bilan bahsga kirishadi, uzunlari real kodni yozishda amaliy emas, shuning uchun nomlar sinonimlarini kiritishga ruxsat beriladi:

namespace DAM = Department_of_Applied_Mathematics;





Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   52   53   54   55   56   57   58   59   ...   90




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish