Как видите, метки можно группировать, перечисляя их через запятую или объединяя в диапазон.
Директивы $R+ и $Q+ лучше использовать при отладке программы. В хорошо отлаженной программе таких ошибок возникать не должно, – за это отвечает программист. При компиляции окончательной версии эти директивы лучше отключить, чтобы не увеличивать размер программы и не замедлять её работу.
• Существуют три категории типов данных: простые, сложные и указатели.
• Простые типы данных делятся на порядковые и вещественные.
• К порядковым типам относятся целые числа, символы, перечисления и булевы данные.
• Целые числа представлены пятью типами, которые отличаются размерами и диапазонами.
• Присвоение переменной порядкового типа значения, выходящего за допустимый диапазон, влечет ошибку нарушения диапазона.
• При включенной директиве $R+ нарушение диапазона приводит к аварии программы, а при отключенной – к переполнению или антипереполнению.
• Функцией ORD можно определить код любого значения порядкового типа.
• Переход к следующему или предыдущему значению порядкового типа выполняется функциями SUCC и PRED.
• Для быстрого прибавления и вычитания единицы предпочтительней применять процедуры INC и DEC.
• Порядковые типы данных обладают рядом общих свойств, что позволяет применять их в счетчиках циклов и в метках оператора выбора.
А) Напомню, что функция SizeOf возвращает объём памяти, занимаемый переменной, например:
Writeln( SizeOf( LongInt ) ); { 4 }
Writeln( SizeOf( M1 ) ); { 1 }
Воспользуйтесь ею для распечатки размеров всех известных вам порядковых типов данных.
Б) Перечислимые типы и диапазоны строятся на базе других типов данных (Byte, ShortInt и так далее). Какие типы данных, по вашему мнению, будут положены в основу следующих диапазонов:
var N : -10..10;
M : -200..200;
R : 0..40000;
L : 0..400000;
S : ’0’..’9’;
В) Процедура печати Writeln не способна распечатать название месяца, представленного в перечислении. Напишите для этого свою собственную процедуру (объявите тип TMonth и воспользуйтесь оператором CASE).
Г) «Не думай о секундах свысока…». Штирлицу подарили секундомер, который показывал секунды, прошедшие с начала суток. Пусть ваша программа переведёт это число в привычные часы, минуты и секунды.
Подсказки: во-первых, примените операции DIV и MOD. Во-вторых, переменную для секунд объявите как LONGINT (а не INTEGER), поскольку количество секунд в сутках (86400) не поместится в типе INTEGER.
Глава 33
Вещественные числа
