C O`zgarmaslar

O’zgarmaslar turlari. O’zgarmas bu o’zgartirish mumkin bo’lmagan qiymatdir. C tilida besh turdagi o’zgarmaslar ishlatilishi mumkin: simvollar, butun sonlar, haqiqiy sonlar, sanovchi o’zgarmaslar va nul ko’rsatkich.

Belgili o’zgarmaslar. Belgili o’zgarmaslar odatda bir bayt joyni egallaydi va bu 256 xil belgini saqlash uchun yetarlidir. Char turi qiymatlarini 0…255 sonlar to’plamiga yoki ASCII belgilar to’plamiga interpretasiya qilish mumkin.

ASCII belgilari deganda kompyuterlarda qo’llaniladigan standart belgilar to’plami tushuniladi. ASCII - bu American Standard Code for Information Interchange (Amerikaning axborot almashinishi uchun standart kodi) degan ma’noni anglatadi.

Misol uchun ‘x’,’*’,’\012’,’\0’,’\n’- bitta simvolli o’zgarmas; ‘dd’,’\n\t’,’\x07\x07’ ikki simvolli o’zgarmaslar.

C kompilyatorida tekstlarni formatlovchi bir nechta maxsus belgilardan foydalaniladi. (Ulardan eng ko’p tarqalgani jadvalda keltirilgan). Maxsus belgilar axborotlarni ekranga, faylga va boshqa chiqarish qurilmalariga chiqarishda formatlash uchun qo’llaniladi. Maxsus '\' simvolidan boshlangan simvollar eskeyp simvollar deyiladi. Simvolli o’zgarmas qiymati simvolning kompyuterda qabul qilingan sonli kodiga tengdir.

Ma’lumotlarning butun son turi. Butun sonlar o’nlik, sakkizlik yoki o’n oltilik sanoq sistemalarida berilishi mumkin. O’nlik sanoq sistemasida butun sonlar 0-9 raqamlari ketma-ketligidan iborat bo’lib, birinchi raqami 0 bo’lishi kerak emas. Lekin yagona 0 bo’lishi mumkin. Sakkizlik sanoq sistemasida butun sonlar 0 bilan boshlanuvchi 0-7 raqamlaridan iborat ketma-ketlikdir. O’n oltilik sanoq sistemasida butun son 0x yoki 0X bilan boshlanuvchi 0-9 raqamlari va a-f yoki A-F harflaridan iborat ketma-ketlikdir.

Masalan, 15 va 22 o’nlik sonlari sakkizlikda 017 va 026, o’n oltilikda 0xF va 0x16 shaklda tasvirlanadi.

Ma’lumotlarning uzun butun son turi. Oxiriga l yoki L harflari qo’yilgan o’nlik, sakkizlik yoki o’n oltilik butun son. Ma’lumotlarning ishorasiz (unsigned) butun son turi: Oxiriga u yoki U harflari qo’yilgan o’nlik, sakkizlik yoki o’n oltilik oddiy yoki uzun butun son.

Ma’lumotlarning haqiqiy son turi. Ma’lumotlarning haqiqiy son turi olti qismdan iborat bo’lishi mumkin: butun qism, nuqta, kasr qism, e yoki E belgisi, o’nlik daraja va F yoki f suffikslari.

Masalan : 66., .0, .12, 3.14F, 1.12e-12.

Ma’lumotlarning uzun haqiqiy son turi:

Oxiriga L yoki l suffikslari qo’yilgan haqiqiy son.

Masalan: 2E+6L;

Sanovchi o’zgarmas. Sanovchi o’zgarmaslar enum xizmatchi so’zi yordamida kiritilib, int turidagi sonlarga qulay so’zlarni mos qo’yish uchun ishlatiladi.

Misol uchun:

	enum{one = 1,two = 2,three = 3};

Agar son qiymatlari ko’rsatilmagan bo’lsa eng chapki so’zga 0 qiymati berilib qolganlariga tartib bo’yicha o’suvchi sonlar mos qo’yiladi:

	enum{zero,one,two};

Bu misolda avtomatik ravishda o’zgarmaslar quyidagi qiymatlarni qabul kiladi:

	zero = 0, one = 1, two = 2;

O’zgarmaslar aralash ko’rinishda kiritilishi ham mumkin:

	enum(zero,one,for = 4,five,seeks}.

Bu misolda avtomatik ravishda o’zgarmaslar quyidagi qiymatlarni qabul kiladi:

	zero = 0, one = 1, for = 4; five = 5, seeks = 6;

Yana bir misol:

	Enum BOOLEAN {NO, YES};

O’zgarmaslar qiymatlari:

	NO = 0, YES = 1;

Nul ko’rsatkich. NULL- ko’rsatkich yagona arifmetik bo’lmagan o’zgarmasdir. Konkret realizasiyalarda null ko’rsatkich 0 yoki 0L yoki nomlangan o’zgarmas NULL orqali tasvirlanishi mumkin. Shuni aytish lozimki, bu o’zgarmas qiymati 0 bo’lishi yoki ‘0’ simvoli kodiga mos kelishi shart emas.

Mantiqiy o’zgarmas. Mantiqiy o’zgarmaslar true (rost) va false (yolg’on) qiymatlardan iborat. C tilida butun sonlar va ifodalar mantiqiy o’zgarmaslar sifatida qaraladi. Ichki ko’rinishi false – 0, ixtiyoriy boshqa qiymat true deb qaraladi.

Satrli o’zgarmas. Satrli o’zgarmaslar C tili o’zgarmaslariga kirmaydi, balki leksemalari alohida turi hisoblanadi. Shuning uchun adabiyotlarda satrli o’zgarmaslar satrli leksemalar deb ham ataladi.

Satrli o’zgarmas bu ikkilik qavslarga olingan ixtiyoriy simvollar ketma-ketligidir. Misol uchun "Men satrli o’zgarmasman".

Satrlar orasiga eskeyp simvollar ham kirishi mumkin. Bu simvollar oldiga \ belgisi qo’yiladi.

Misol uchun :

	"\n Bu satr \n uch qatorga \n joylashadi".

Satr simvollari xotirada ketma-ket joylashtiriladi va har bir satrli o’zgarmas oxiriga avtomatik ravishda kompilyator tomonidan '\0' simvoli qo’shiladi. Shunday satrning xotiradagi hajmi simvollar soni +1 baytga tengdir.

Ketma-ket kelgan va bo’shliq, tabulyasiya yoki satr oxiri belgisi bilan ajratilgan satrlar kompilyasiya davrida bitta satrga aylantiriladi.

Misol uchun:

"Salom" "Toshkent" satrlari bitta satr deb qaraladi.

"Salom Toshkent" Bu qoidaga bir necha qatorga yozilgan satrlar ham bo’ysunadi.

Misol uchun:

"O’zbekistonga "

"bahor "

"keldi" qatorlari bitta qatorga mos:

"O’zbekistonga bahor keldi"

Agar satrda '\' belgisi uchrasa va bu belgidan so’ng to '\n' satr oxiri belgisigacha bo’shliq belgisi kelsa bu bo’shliq belgilari '\' va '\n' belgisi bilan birga satrdan o’chiriladi. Satrning o’zi keyingi satrda kelgan satr bilan qo’shiladi.

"O’zbekistonga \

bahor \

keldi" qatorlari bitta qatorga mos:

"O’zbekistonga bahor keldi".

Nomlangan o’zgarmaslar. C tilida o’zgaruvchilardan tashqari nomlangan o’zgarmaslar kiritilishi mumkin. Bu o’zgarmaslar qiymatlarini dasturda o’zgartirish mumkin emas. O’zgarmaslar nomlari dasturchi tomonidan kiritilgan va xizmatchi so’zlardan farqli bo’lgan identifikatorlar bo’lishi mumkin. Odatda nom sifatida katta lotin harflari va ostiga chizish belgilari kombinasiyasidan iborat identifikatorlar ishlatiladi. Nomlangan o’zgarmaslar quyidagi shaklda kiritiladi:

	const tur o’zgarmas_nomi = o’zgarmas_qiymati.

Misol uchun:

	const double EULER = 2.718282;
	const long M = 99999999;
	const R = 765;

Oxirgi misolda o’zgarmas turi ko’rsatilmagan, bu o’zgarmas int turiga tegishli deb hisoblanadi.