В программировании (как и в математике) используются два набора чисел: непрерывный и дискретный.
К непрерывному набору относятся вещественные (дробные) числа. Смысл непрерывности заключается в том, что для двух любых, сколь угодно близких друг другу неравных чисел найдётся промежуточное число. Например, возьмём A=0.000001 и B=0.000002. Для них существует промежуточное число C=0.0000015. При использовании компьютера понятие непрерывности нарушается. Дело в том, что для дробного числа в компьютере выделяется определённое количество байт. Например, в Pascal ABC для числа типа Real резервируется 8 байт. Такое число содержит 16 значащих цифр и по модулю не может превосходить величины 1.7∙10308. Самое маленькое положительное число типа Real равно 5.0∙10-324. Следовательно, если A и B отличаются на 1 только в 16-ой цифре, то найти между ними промежуточное значение C невозможно.
Надо иметь в виду, что в других реализациях Паскаля тип Real может отличаться по количеству байт, верхнему и нижнему пределам, числу значащих цифр. Кроме того, многие реализации Паскаля имеют и другие вещественные типы данных (single, double, cardinal…), которые отличаются от Real количеством байт, верхним и нижним пределами, числом значащих цифр. Поэтому, приступая к работе с какой-либо реализацией Паскаля, следует изучить используемые в ней вещественные типы данных или, если очень высокая точность расчётов не требуется, ограничиться типом Real, который имеется в любой реализации Паскаля.
К дискретному набору (порядковые типы данных) относятся целые числа. Кроме уже известного Вам типа Integer, существуют и другие. Сравним их с помощью таблицы:
Тип
Байт
Значащих цифр
Нижний предел
Верхний предел
Integer
-32768
Byte
ChortInt
-128
Word
LongInt
-2147483648
К порядковым типам данных относятся не только числовые, но ещё перечислимые, символьные и ограниченные типы данных. Рассмотрим их подробнее:
Перечислимый тип определяется упорядоченным набором идентификаторов. Задаётся этот набор в разделе type (он находится до раздела var), а в разделе varописываются переменные такого типа. Например:
type DayOfWeek = (Mon,Tue,Wed,Thi,Thr,Sat,Sun);
var Segodnya, Zavtra: DayOfWeek;
begin Segodnya:=Wed;
Zavtra:=succ(Segodnya);
writeln('Завтра будет ',ord(Zavtra));
end.
С данными перечислимого типа возможны такие операции:
1. Найти порядковый номер величины в наборе: k:=ord(Zavtra);
2. Найти следующее значение в наборе: Zavtra:=succ(Segodnya);
3. Найти предыдущее значение в наборе: Vchera:=pred(Segodnya);
Переменную перечислимого типа можно использовать в качестве счётчика в цикле for и в качестве проверяемого выражения в команде выбора варианта case. Например: