1 – dars. C++ Dasturlash tilining kelib chiqishi xaqida ma’lumot



Yüklə 0,69 Mb.
səhifə32/121
tarix02.01.2022
ölçüsü0,69 Mb.
#37187
1   ...   28   29   30   31   32   33   34   35   ...   121
aaaaKitob majmuasiiii

25 – DARS. GLOBAL OB'EKTLAR.

Global ob'ektlar deb dasturda hamma bloklar uchun umumiy bo’lgan ob'ektlarga aytiladi. Har bir blok ichida global ob'ektga murojjat qilish mumkindir.

Misol:

#include



int N=5;

void func(void)

{

Cout<<(“\tN=%d”,N);



N--;

Return;


}

void main()

{

int i;


for (i=0;i<5;i++)

{func();


N+=2;

}

}



Dastur bajarilishi natijasi:

N=5 N=6 N=7 N=8 N=9

N o’zgaruvchisi main() va func() funktsiyalari tashqarisida aniqlangan va bu funktsiyalarga nisbatan globaldir. Har bir func() chaqirlganda uning qiymati 1 ga kamayadi, asosiy dasturda bo’lsa 2 taga oshadi. Natijada N qiymati 1 ga oshib boradi.

Endi dasturni o’zgartiramiz:

#include

int N=5;


void func(void)

{

Cout<<(“\tN=%d”,N);



N--;

Return;


}

void main()

{

int N;


for (N=0;N<5;N++)

{func();


N+=2;

}

}



Dastur bajarilishi natijasi:

N=5 N=4 N=3 N=2 N=1

N uzgaruvchisi main() funktsiyasida avtomatik o’zgaruvchi sifatida ta'riflangan va u global N o’zgaruvchiga ta'sir qilmaydi. Ya'ni global N o’zgaruvchi main() funktsisida ko’rinmaydi.

Tashqi ob'ektlar.

Dastur bir necha matnli fayllarda joylashgan bo’lishi mumkin. Dastur o’z navbatida funktsiyalardan iboratdir. Hamma funktsiyalar tashqi hisoblanadi. Hatto har hil fayllarda joylashgan funktsiyalar ham har hil nomlarga ega bo’lishi lozimdir. Funktsiyalardan tashqari dasturlarda tashqi ob'ektlar o’zgaruvchilar, ko’rsatkichlar, massivlar ishlatilishi mumkin.

Tashqi ob'ektlar hamma funktsiyalarda ham ko’rinmasligi mumkin. Agar ob'ekt fayl boshida ta'riflangan bo’lsa u shu fayldagi hamma funktsiyalarda ko’rinadi.

Agar tashqi ob'ektga shu ob'ekt ta'riflangan blokdan yuqorida eki boshqa faylda joylashgan blokdan murojjat qilinishi kerak bo’lsa, bu ob'ekt extern hizmatchi so’zi yordamida ta'riflanshi lozimdir. Shuni aytish lozimki extern hizmatchi so’zi yordamida ta'riflanganda initsializatsiya qlish yo chegaralarni ko’atish mumkin emas.

Extern double summa[];

Extern char D_phil [];

Extern long M;

Misol uchun VAL va SP o’zgaruvchilari bitta faylda, bu o’zgaruvchilarga murojaat qiluvchi PUSH, POP i CLEAR funktsiyalari boshqa faylda ta'riflangan bo’lsin. Bu holda bu fayllar orasidagi bog’liklikni ta'minlash uchun quyidagi ta'riflar lozimdir:

1 faylda:

int sp = 0; /* stack pointer */

double val[maxval]; /* value stack */

2 faylda:

extern int sp;

extern double val[];

double push(f) ...

double pop() ...

clear() ...



Yüklə 0,69 Mb.

Dostları ilə paylaş:
1   ...   28   29   30   31   32   33   34   35   ...   121




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin