Рубрика:
Карьера/Образование /
Пятая пара
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АЛЕКСЕЙ ВТОРНИКОВ, ЗАО КБ «Ростовский Универсальный», ведущий программист, pdp8dec@gmail.com
Алгоритмы: ирландское рагу
Структуры данных и алгоритмы их обработки – краеугольный камень профессиональных навыков любого программиста. Плюс, конечно, способность погрузиться в предметную область
«С миру по нитке – нищему рубаха»
Поговорка
Увы, прикладным программистам редко (а многим так и никогда) приходится сталкиваться с действительно интересными задачами – все больше унылая рутина: рисование экранных форм для ввода и вывода информации, выборка данных из базы, их компоновка и генерация отчетов. Но всегда хочется чего-то более интересного. Кто-то находит удовольствие в программировании «для себя», кто-то участвует в Open Source-проектах, кто-то – в заказной разработке, кто-то в аутсорсинге.
И пусть говорят, что все давно придумано, но ведь интересно же! Порой даже из бесцельного наблюдения рождается нечто великое. Именно мечтатели и фантазеры открывали звезды, законы природы, создавали великие произведения искусства...
Коварная четверка
Вот простой вопрос, на котором стабильно спотыкаются большинство программистов: какие года считаются високосными? Казалось бы, ответ очевиден: високосные – это те года, что делятся без остатка на 4. То есть 2000-й, 2004-й и т.д. високосные, так? Так, конечно, но копнем чуть глубже: что вы скажете о годах 1900 или, например, 2100 – они високосные? Если ваш ответ «да», то вот вы и ошиблись: это самые обычные годы, состоящие из 365 дней каждый. Не верите? Общее правило таково: в григорианском календаре, которым мы пользуемся, годы столетий, чтобы являться високосными, должны делиться без остатка на 400. Так что, ни 1900, ни 2100 – года не високосные. Удивительно, но ошибка эта столь распространена, что она присутствует в некоторых широко известных программах, например, в Excel 2003, где после прибавления 1 к 28.02.1900 выдается дата 29.02.1900, хотя правильное значение должно быть 01.03.1900 (см. рис. 1).
Рисунок 1. Ошибка Excel 2003
Кстати, для даты 28.02.2100 следующий день тот же Excel 2003 считает верно – чудеса да и только! Как говорил один из персонажей фильма «Семнадцать мгновений весны»: «Маленькая ложь рождает большое недоверие, Штирлиц». К слову, OpenOffice считает правильно, а «принудительно» введенное в ячейку значение 29.02.1900 программа интерпретирует не как дату, а как строку.
Конечно, можно возразить: мол, вряд ли кому-то из ныне живущих повезет дожить до ближайшего високосного столетия (т.е. до 2400 года). На это я могу сказать так: работу надо сразу делать качественно и правильно, вне зависимости от того, увидите вы ее результат или нет. Вспомните, не так давно человечество боролось с проблемой представления дат в базах данных, что привело к знаменитой проблеме 2000 года, и «экономия» обернулась большими затратами на ревизию и исправление кода.
В качестве небольшого упражнения напишите программу, реализующую алгоритм определения високосности года.
Статью целиком читайте в журнале «Системный администратор», №9 за 2014 г. на страницах 74-78.
PDF-версию данного номера можно приобрести в нашем магазине.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|