Песни о Паскале | страница 126




Как видите, метки можно группировать, перечисляя их через запятую или объединяя в диапазон.

Разумный контроль

Директивы $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.