Иллюстрированный самоучитель по Tirbo Pascal


Вычисление дня недели - часть 3


begin {InputDate}

correctly := false 

end; {InputDate} 

{...............................}

Procedure WriteDay(d,m,у: Integer); 

{Вычисляет день недели и выводит его на экран}  

begin {WriteDay} 

end; {WriteDay} 

{..............................}

begin 

repeat

InputDate(d,m,y,IsCorrectDate); 

if IsCorrectDate then

WriteDay(d,m,y) 

until not IsCorrectDate 

end.

Теперь можно разработать процедуру INPUTDATE. Ввод даты не вызывает трудностей - стандартные процедуры WRITE и READLN отлично приспособлены для этой цели. Для проверки правильности даты нужно проверить принадлежность месяца диапазону 1...12 и года - диапазону 1582...4903. Кроме того, число не должно выходить из диапазона 1...31. Если Вы не очень настаиваете на более точной проверке числа в зависимости от месяца и года (для февраля), то программная реализация процедуры будет следующей:

Procedure InputDate(var d,m,y : Integer;

var correctly : Boolean);

{Вводит в переменные d, m и у очередную дату и проверяет ее. Если дата правильная, устанавливает correctly=true, иначе correctly=false }  

begin {InputDate}

Write('Введите дату в формате ДД ММ ГГ: ');

ReadLn(d,m,y);

correctly := (d>=l)and (d<=31) and (m>=l)

and (m<=12) and (y>=1582) and (y<=4903)

end; {InputDate}

При выполнении этой процедуры ввод, например, трех нулей приведет к присвоению переменной CORRECTLY значения FALSE, что вызовет завершение работы программы.

Теперь разберемся с процедурой WRITEDAY. Получив в параметрах обращения день, месяц и год, она должна:

  • преобразовать месяц и год так, как описано выше (год должен начинаться 1 марта);
  • вычислить день недели;
  • выдать на экран результат.

Первое и второе действия очень просты и легко программируются. Что касается выдачи на экран, то можно потребовать от программы, чтобы эта выдача была не просто числом от 0 до 6, а одной из строк «воскресенье», «понедельник», ..., «суббота». Для этого потребуются дополнительные усилия: нужно сначала создать массив строковых констант с именем, например, DAYS_OF_WEEK (дни_недели), а затем выбрать из этого массива и выдать на экран нужную строку. Создать массив текстовых констант можно с помощью объявления типизированной константы (см. гл. 7):




Начало  Назад  Вперед



Книжный магазин