Инструкция case
Рассмотрим фрагмент программы (листинг 2.5), которая вычисляет дату следующего дня, используя сегодняшнюю дату, представленную тремя переменными: day (день), month (месяц) и year (год).
Сначала с помощью инструкции саsе проверяется, является ли текущий день последним днем месяца. Если текущий месяц – февраль и если текущее число – 28, то дополнительно выполняется проверка, является ли год високосным. Для этого вычисляется остаток от деления года на 4. Если остаток равен нулю, то год високосный, и число 28 не является последним днем месяца.
Если выясняется, что текущий день – последний день месяца, то следующее число – первое. Затем проверяется, не является ли текущий месяц декабрем. Если нет, то увеличивается номер месяца, а если да, то увеличивается номер года, а номеру месяца присваивается значение 1.
Листинг 2.5. Вычисление даты следующего дня (фрагмент).
// вычисление даты следующего дня var day: integer; // день month: integer; // месяц year: integer; // год last:boolean; // если день – последний день месяца, // то last = True r:integer; // если год не високосный, то остаток // от деления year на 4 не равен нулю begin { переменные day, month и year содержат сегодняшнюю дату } last: = False; // пусть день – не последний день месяца case month of 4.6.9.11: if day = 30 then last: = True; 2: if day = 28 then begin r: = year mod 4; if r <> 0 then last: = True; end; else: if day=31 then last: = True; end; if last then begin // последний день месяца day: = 1; if month =12 then begin // последний месяц month: = 1; year: = year + 1; end else month: = month + 1; end else day: = day + 1; // переменные day, month и year // содержат завтрашнюю дату end;