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



Download 333,2 Kb.
bet13/90
Sana10.07.2022
Hajmi333,2 Kb.
#770437
1   ...   9   10   11   12   13   14   15   16   ...   90
Bog'liq
C majmua

O’zgaruvchilar va ifodalar

Ixtiyoriy dasturda xisoblashlarni bajarish talab etiladi. Qiymatlarni hisoblash uchun operandlar, amallar ishoralari va qavslardan iborat ifadalardan foydalaniladi. Operandlar hisoblashlar uchun ma’lumotlarni beradi. Operandlar bajarish uchun zarur amallarni bajaradi. Har bir operand o’z navbatida ifoda yoki uning xususiyat holatidan biri hisoblanadi, masalan, konstanta yoki o’zgaruvchi bilan. Amallar bajarilish tartibini o’zgartirish uchun qavslar ishlatiladi. Ifodalar tarkibining qismlari va ularni hisoblash oidalarini qaraymiz.




O’zgaruvchilar
O’zgaruvchi - bu ma’lum tipdagi ma’lumotlar saqlanadigan xotiraning nomlangan sohasi. O’zgaruvchining nomi va qiymati bor. Nom qiymat saqlanadigan xotira sohasiga ko’rsatish uchun xizmat qiladi. Dasturni bajarish paytida o’zgaruvchi qiymatini o’zgartirish mumkin.
Foydalanishdan oldin ixtiyoriy o’zgaruvchi tavsiflanishi lozim. a ismli va x xaqiqiy o’zgaruvchili butun o’zgaruvchi tavsifiga misol.
int a: float x;
O’zgaruvchilarni tasvirlash operatorining umumiy ko’rinishi:
[xotira sinfi] [const] tip nom [initsializator]
Bu operatorning tarkibiy qismlarini berishning qoidalarini qaraymiz:

  • Xotiraning majburiy bo’lmagan sinfi auto, extern, satatic va register qiymatlardan birini qabul qilishi mumkin;

  • const modifikator o’zgaruvchi qiymatini o’zgartirish mumkin emasligini ko’rsatadi. Bunday o’zgaruvchi nomlangan konstanta yoki kanstantalar deb ataladi.

  • Tavsiflashda o’zgaruvchiga boshlang’ich qiymat berish mumkin, bu initsializatsiya deb ataladi. Initsializatorni ikki shaklda: tenglik belgsi bilan

= qiymat
yoki oddiy qavslar ( ) bilan yozish mumkin.
Konstanta e’lon qilishda initsializatsiyalanishi mumkin bitta operatorda bir tipdagi bir nechta o’zgaruvchini vergullar bilan ajratib tasvirlash mumkin.
Misollar:
short int а = 1; // a butun o’zgaruvchi
const char С = ' С '; // c simvol konstanta
char s, sf = ' f '; // initsializatsiya faqat sf ga taaluqli
char t (54);
float с = 0.22, x(3), sum;
Agar initsializatsiyalanadigan qiymat tipi o’zgarishi tipi bilan ustma-ust tushsa ma’lum qoidalar bo’yicha tip almashtiriladi va bajariladi. Xotira tipi va sinfidan tashqari tavsifi oshkora yoki jimlik bo’yicha uning amal qilish sohasini beradi. Xotira sinfi va amal qilish sohasi nafaqat xos tavsifga balki uning dasturi matni joyiga bog’liq.
Identifikator amal qilish sohasi – bu dasturning shunday qismiki, unda u bilan bog’liq xotira sohasiga kirish uchun foydalanish mumkin. Amal qilish sohasiga bog’liq ravishda o’zgaruvchi lokal yoki global bo’lishi mumkin.
Agar o’zgaruvchi blok ichida aniqlangan bo’lsa (blok figurasi qavslari chegaralangan) u lokal deb ataladi, uning amal qilish sohasi – blok oxirigacha tavsif nuqtasidan barcha ichma - ich joylashgan bloklarni o’z ichiga olgan. Agar o’zgaruvchi ixtiyoriy blokdan tashqarida aniqlangan bo’lsa, u global deb ataladi va uning amal qilish sohasi global deb hisoblanadi, unda u tavsif nuqtasidan uning oxirigacha aniqlangan.
Xotira sinfi hayotiy muddatini va dasturiy obyektning ko’rinish sohasini (xuxsusan, o’zgaruvchini) aniqlaydi. Agar xotira sinfi oshkora ko’rsatilmagan bo’lsa, u kompyuter tomonidan e’lon kontekstiga asoslanib aniqlanadi.
Dasturni bajarish davomida ( blokni bajarish davomida ) hayot muddati doimiy va o’zgaruvchi bo’lishi mumkin.
Identifikator ko’rinishi sohasi deb - identifikator bilan bog’liq xotira sohasiga oddiy kirishga kirish mumkin bo’lgan dastur matni qismiga aytiladi. Ko’proq ko’rinish sohasi amal qilish sohasi bilan ustma – ust tushadi. Bundan istisno, ichma-ich joylashgan blokda o'sha nomdagi o’zgaruvchi tavsiflangan. Bu holda ichma-ich joylashgan blokda tashqi o’zgaruvchi ko’rinmas, vaxolanki u amal qilish sohasiga kiradi. Shunga qaramay agar bu o’zgaruvchiga agar global bo’lsa, ko'rinish sohasiga kirish amalidan foydalanib murojaat qilish mumkin::.
Xotira sinfini berish uchun quyidagi identifiktordan foydalaniladi:
auto - avtomat o’zgaruvchi. Unga xotira stekda ajratiladi va ta’rini o’z ichiga olgan operatorni bajarishda har safar initsializatsiyalanadi. Xotirani tozalash o’zgaruvchi tavsiflangan blokdan chiqishda ro’y beradi. Uning hayot muddati - tavsiflash momentidan blok oxirigacha. Global o’zgaruvchilar uchun bu identifikatordan foydalanilmaydi, lokallar uchun u jimlik bo’yicha qabul qilinadi, shuning uchun uni oshkora ravishda katta ma’noga ega emas.
extern - o’zgaruvchi dasturning boshqa joyida aniqlanishini bildiradi ( boshqa joyida yoki matn bo’yicha). Dasturning barcha modullarida mumkin bo’lgan o’zgaruvchilarni yaratish uchun foydalaniladi.
static - statik o’zgaruvchi. Hayotiy muddati – doimiy. O’zgaruvchi ta’kidini o’zagiga olgan operatsiyani birinchi bajarishda bir marta initsializatsiyalashda tavsiflash operatorning joylashishiga bog’liq ravishda statik o’zgaruvchilar global va lokal bo’lishi mumkin. Global statik o’zgaruvchilar faqat ular tavsiflanishi modulda ko’rinadi.
register - auto ga o’xshash, lekin xotira protsessor registrlarida imkoniyati bo’yicha ajratiladi. Agar bunday kompilyator bunday imkoniyat bo’lmasa o’zgaruvchilar auto kabi qayta ishlanadi.
int а; //1 a global o’zgaruvchi
int main( ){
int b; // 2 b lokal o’zgaruvchi
extern int x; // 3 x o’zgaruvchi boshqa joyda aniqlangan
static int с; // 4 с lokal statik o’zgaruvchi
а = 1; // 5 global o’zgaruvchi berish
int а; // 6 а lokal o’zgaruvchi
а = 2; // 7 lokal o’zgaruvchi berish
::а = 3; // 8 global o’zgaruvchi berish
return 0;
}
int x = 4; // 9 x ni aniqlash va initsializatsiyalash

Bu misolda a global o’zgaruvchi barcha bloklardan tashqarida aniqlangan. Unga xotira dastur ish boshlaganda ma’lumotlar segmentida ajratiladi, amal qilsih sohasi butun dastur hisoblanadi, ko’rinish sohasi 6-8 satrlaridan boshqa butun uchun ulardan birinchida aniqlanadi o’sha paytdagi lokal o’zgaruvchi aniqlanadi, uning amal qilish sohasi uni tavsiflash nuqtasidan boshlanadi va blokdan chiqishda tugaydi b va c o’zgaruvchilar – lokal, ularning ko’rinish sohasi – blok, lekin yashash davri turlicha: b ga xotira bloki kirishda stekda ajratiladi va undan chiqishda ozod qilinadi, c o’zgaruvhi esa ma’lumotlar segmentida joylashadi va dastur ishlash davrida mavjud bo’ladi.


Agar ta’riflashda o’zgaruvchilarning boshlang’ich qiymati oshkor berilmasa, u holda kompilyator global va lokal o’zgaruvchilarga mos tipdagi nol qiymat beradi. Avtomat o’zgaruvchilar initsializatsiyalanmaydi.
O’zgaruvchi nomi o’z amal qilish sohasida yagona bo’lishi lozim (masalan, bir blokda ikkita bir xil nomga ega ikkita o’zgaruvchi bo’lishi mumkin emas).



Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   9   10   11   12   13   14   15   16   ...   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