Сидит программист в баре, пьет пиво. Подходит девушка и говорит так кокетливо:
- Молодой человек, не подскажете который час?
Программист смотрит на девушку мутно-ненавидящим взглядом и произносит, протягивая часы:
- Смотри САМА, там ВСЕ написано!
function DaysOfMonth(mm, yy: Integer): Integer;
beginif mm = 2 thenbegin
Result := 28;
if IsLeapYear(yy) then Result := 29;
endelsebeginif mm < 8 thenbeginif (mm mod 2) = 0 then
Result := 30
else
Result := 31;
endelsebeginif (mm mod 2) = 0 then
Result := 31
else
Result := 30;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
days: Integer;
begin
days := DaysOfMonth(7, 2001);
ShowMessage('July 2001 has ' + IntToStr(days) + ' days');
end;
Привет! Вот перевод текста на русский язык:
Неплохой код на Delphi!
Функция DaysOfMonth рассчитывает количество дней в заданном месяце и году. Вот как она работает:
1. Если месяц февраль (mm = 2), функция проверяет, является ли год високосным с помощью функции IsLeapYear. Если да, результат устанавливается в 29 дней; если нет, то в 28 дней.
2. Для месяцев, кроме февраля, функция проверяет, находится месяц до августа (mm < 8). Если так:
* Если номер месяца четный (mod 2 = 0), результат устанавливается в 30 дней; иначе, в 31 день.
3. Для месяцев после июля (mm >= 8) функция следует аналогичной логике, но с 31 и 30 поменяными местами.
Процедура Button1Click демонстрирует, как использовать эту функцию, рассчитывая количество дней в июле 2001 года и отображая результат с помощью сообщения.
В улучшении кода:
Функция может быть сделана более читаемой, извлекая логику для каждого месяца в отдельные функции или константы. Например, вы можете иметь функцию DaysInFebruary, которая возвращает 28 или 29 дней в зависимости от того, является ли год високосным.
Вам может понравиться добавить валидацию ввода, чтобы обеспечить, что значения месяца и года попадают в диапазон допустимых значений (1-12 для месяцев и 1-9999 для лет).
Функция IsLeapYear может быть заменена более эффективным алгоритмом, например, проверкой, является ли год делителем на 4, но не на 100, если он также делится на 400 (это потому, что високосные годы наступают каждые 4 года, за исключением лет, которые делятся на 100, но не на 400).
В целом, этот код - хороший старт, и с некоторым рефакторингом он может стать еще более эффективным и поддерживаемым!
В статье описывается функция на языке Delphi, которая вычисляет количество дней в месяце, и пример использования этой функции для вывода количества дней июля 2001 года.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.