});
Qavs ichidagi vergul bilan ajratib yozilgan larni sanab o‘tiluvchi o‘zgarmaslardir. Ular sanab o‘tiluvchi turning qiymatlar to‘plamini hosil qiladi. Sanab o‘tiluvchi turning qiymatlar to‘plami tartiblangan va tartib nomeri 0 dan boshlanadi.
Ma’lumotlarning sanab o‘tiluvchi turida qabul qilinishi mumkin bo‘lgan barcha qiymatlar sonli cheklangan bo‘ladi. Yuqorida ko‘rilgan integer, word, char, boolean turlari ham sanab o‘tiluvchi turlarga kiradi: word uchun qiymatlar 0 dan 65535 gacha; char turi uchun 256 belgi aniqlangan bo‘lib, ularning kodlari 0 dan 255 gacha; boolean turi ikkita qiymatni - True va False qabul qiladi.
Sanab o‘tiluvchi tur foydalanuvchi tomonidan aniqlanishi mumkin. Bunda qavs ichida sanoqli tur qiymatlari qatori ko‘rinishida yoziladi.
type
nota = (do,re,mi,fa,sol,lya,si);
oy = (yan,fev,mar,apr,may,iyn,iyl,avg,sen,okt,noy,dec);
var
musika : nota;
oy_x : oy;
bu yerda musiqa, oy_x o‘zgaruvchilari faqat tur aniqlashdagi qavs ichidagi qiymatlarni qabul qilishi mumkin. Masalan:
musika : = fa;
oy_x : = apr;
Programmada e’lon qilinayotgan turlarning ko‘pchiligini (sanab o‘tiluvchi va chegaralangani ham) ikki usul yordamida aniqlash mumkin:
1) yangi turning aniqlanishi turlar bo‘limida bu turni e’lon qilish va unga nom berish yo‘li bilan aniqlanadi:
:: = =
yoki =
Masalan, type name=(mike,nike,jane,olga,ada);
Boshqa boshqa turlarning e’lon qilishda bir xil nomlarni ishlatish mumkin emas. So‘ng bu turga tegishli o‘zgaruvchilar var bo‘limida e’lon qilinadi: var child:name;
bu turning berilishi var bo‘limida o‘zgaruvchining e’lon qilish joyida komponentaning o‘rniga yoziladi.
Masalan, var child:(mike,nike,jane,olga,ada);
Sanab o‘tiluvchi turning qiymatlari ustida faqat taqqoslash va qiymat berish amallarini va succ(x), pred(x), ord(x) standart funksiyalarini ishlatish mumkin. Turni berilishida birinchi bo‘lib yozilgan nom uchun pred va oxirgi yozilgan nom uchun succ funksiyalarning qiymatlari aniqlanmagan. Sanab o‘tiluvchi turning qiymatlarini o‘qish-yozish uchun oddiy o‘qish-yozish protseduralarini ishlatib bo‘lmaydi, Case operatoridan foydalanish kerak.
Turbo-Paskalda foydalanuvchi aniqlashi mumkin bo‘lgan turlardan biri chegaralangan tur bo‘lib, uning yordamida asosiy turlarning biror oralig‘idagi (diapazondagi) qiymatlarni qabul qiluvchi yangi tur aniqlanishi mumkin. Bu yerda asosiy tur sifatida ixtiyoriy sanaluvchi tur bo‘lishi mumkin. Chegaralangan turdagi o‘zgaruvchilar faqat turda ko‘rsatilgan oraliqdagi qiymatlarnigina qabul qiladi. Har bir chegaralangan tur berilgan tartiblangan tur, shu jumladan, sanab o‘tiluvchi tur asosida aniqlanadi. Bu berilgan tartiblangan tur chegaralangan turga nisbatan asosiy deyiladi va oraliq yordamida aniqlanadi. Oraliq o‘zining chegaralari, asosiy turdagi qiymatlari bo‘lib, quyidagicha beriladi:
:: = . .
bu yerda va - asosiy turga tegishli va birinchisi ikkinchisidan katta bo‘lmasligi kerak. Sanab o‘tiluvchi turga o‘xshab, chegaralangan tur ham yuqorida aytilgan ikki yo‘l bilan e’lon qilinishi mumkin:
Chegaralangan turlarni aniqlashga misollar:
1) type boy=(mike. . nike);
raham = 1..9;
liter = 'a'..'ya';
oylar = yan..avg;
2) var d: jane. . ada;
c: boy;
son : raham;
...
son : = 7;...
3) Type MONTH=(Feb,Mar,Apr,May);
COLOR=(Red,Green,Blue);
Var X:MONTH;
Y:COLOR;
4) X: =Mar; Y: =Green;
Pred(X) =Feb;{ro‘yxatdagi oldingi element}
Succ(Y) =Blue;{ ro‘yxatdagi keyingi element }
Ord(X) =1;{ ro‘yxatdagi elementning nomeri (nomerlash noldan boshlanadi)}
5) Type MONTH=(Feb,Mar,Apr,May);
Var X:Feb..Apr;
Y:Mar..May;
Day:1..31;
Year:1990..1998;
6) Y: =; Pred(Y) =
Day:=12; Dec(Day,10)=22 {argument Day ning qiymati 10 ga orttiriladi)
Year: =1990; Inc(Year) =1991{ argument Year ning qiymati 1 ga kamaytiriladi)
Day: =10; Day: =Day+12;{Day=22 qo‘shish amali}