Глава 4. Типы данных
Простые типы
К простым типам относятся порядковые и вещественные типы. Порядковые типы отличаются тем, что каждый из них имеет конечное число возможных значений. Эти значения можно определенным образом упорядочить (отсюда -название типов) и, следовательно, с каждым из них можно сопоставить некоторое целое число - порядковый номер значения.
Вещественные типы, строго говоря, тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однакоколичество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным.
Порядковые типы
К порядковым типам относятся (см. рис.4.1) целые, логический, символьный, перечисляемый и тип-диапазон. К любому из них применима функция ORD(X), которая возвращает порядковый номер значения выражения X. Для целых типов функция ORD(X) возвращает само значение X, т.е. ORD(X) = X для X, принадлежащего любому шелому типу. Применение ORD(X) к логическому, символьному и перечисляемому типам дает положительное целое число в диапазоне от 0 до 1 (логический тип), от 0 до 155 (символьный), от 0 до 65535 (перечисляемый). Тип-диапазон сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции ORD(X) зависит от свойств этого типа.
К порядковым типам можно также применять функции:
PRED (X) - возвращает предыдущее значение порядкового типа (значение, которое соответствует порядковому номеру ORD(X)- 1), т.е.
ORD(PRED(X)) = ORD(X) - 1;
SUCC (X) - возвращает следующее значение порядкового типа, которое соответствует порядковому номеру ORD(X) +1, т.е.
ORD(SUCC(X)) = ORD(X) + 1.
Например, если в программе определена переменная
var
с : Char;
begin
с := '5' ;
end.
то функция PRED(C) вернет значение '4', а функция SUCC(C) - значение '6'.
Если представить себе любой порядковый тип как упорядоченное множество значий, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция PRED(X) не определена для левого, a SUCC(X) - для правого конца этого отрезка.
Целые типы. Диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать один, два или четыре байта. В табл. 4.1 приводится название целых типов, длина их внутреннего представления в байтах и диапазон возможных значений.
Таблица 4.1
| Целые типы | ||
|
Название |
Длина, байт |
Диапазон значений |
|
Byte |
1 |
0. . .255 |
|
ShortInt |
1 |
-128. . .+127 |
|
Word |
2 |
0. . .65535 |
|
Integer |
2 |
-32768.. .+32767 |
|
LongInt |
4 |
-2 147 483 648... +2 147 483 647 |
При использовании процедур и функций с целочисленными параметрами следует руководствоваться «вложенностью» типов, т.е. везде, где может использоваться WORD, допускается использование BYTE (но не наоборот), в LONGINT «входит» INTEGER, который, в свою очередь, включает в себя SHORTINT.
Перечень процедур и функций, применимых к целочисленным типам, приведен в табл.4.2. Буквами b, s, w, i, l обозначены выражения соответственно типа BYTE, SHORTINT, WORD, INTEGER и LONGINT, x - выражение любого из этих типов; буквы vb, vs, vw, vi, vl, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.
Таблица 4.2
|
Стандартные процедуры и функции, применимые к целым типам |
||
|
Обращение |
Тип результата |
Действие |
|
abs (x) |
x |
Возвращает модуль х |
|
chr(b) |
Char |
Возвращает символ по его коду |
|
dec (vx[, i] ) |
- |
Уменьшает значение vx на i, а при отсутствии i -на 1 |
|
inc(vx[, i] ) |
- |
Увеличивает значение vx на i, а при отсутствии i - на 1 |
|
Hi(i) |
Byte |
Возвращает старший байт аргумента |
|
Hi(w) |
To же |
То же |
|
Lo(i) |
" |
Возвращает младший байт аргумента |
|
Lo (w) |
" |
То же |
|
odd(l) |
Boolean |
Возвращает True, если аргумент - нечетноечисло |
|
Random (w) |
Как у параметра |
Возвращает псевдослучайное число, равномерно распределенное в диапазоне0...(w-l) |
|
sgr (x) |
X |
Возвращает квадрат аргумента |
|
swap ( i ) |
Integer |
Меняет местами байты в слове |
|
swap (w) |
Word |
|
Важно! Я не в коем разе не претендую на звание учителя по программированию! Я всего лишь хочу помочь вам немного углубить свои знания в данной теме, чтобы впоследствии вы не чувствовали себя "не в своей тарелке" на уроках информатики или в ВУЗе. Только для этого и для данной цели и был создан этот сайт. Все претензии будут проходить мимо, так как я никого не принуждаю учиться именно у меня на сайте.