Автор: Пользователь скрыл имя, 23 Декабря 2012 в 15:27, курсовая работа
Целью данного курсового проекта является программная реализация вечного календаря (алгоритм расчёта дня недели по заданной дате).
Программа должна работать следующим образом:
– пользователь вводит дату,
– после выполнения программы на экран должен выводиться день недели, на который попадает эта дата.
Программа должна быть реализована на языке С++ в среде Visual C++.
Введение………………………………………………………....……
4
1 Постановка задачи и сфера её применения…..………………......
5
2 Теоретическая часть…………………………………….……….....
6
2.1 История календарей……………………..………….......…….
6
2.2 Описание использованного алгоритма.………...…………...
11
2.3 Пример реализации алгоритма………………………………
11
3 Программная реализация………………………………….……….
13
3.1 Описание алгоритма и структуры программы……………..
13
3.2 Описание программных средств…………………………….
17
4 Инструкция пользователя………………………………………….
20
Заключение……………………………………………………..…….
21
Перечень ссылок……………………………………………………..
22
Приложение А Текст программы………………………….………..
23
Приложение Б Результат………..……………………………….…..
28
Приложение В …………………………………………….………….
29
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ХАРКОВСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ РАДИОЭЛЕКТРОНИКИ
Кафедра информатики
КУРСОВАЯ РАБОТА
Тема: “Построение вечного календаря”
по дисциплине «Программирование»
Выполнил: Руководители:
студент группы КИ-11-1 Руденко Д. А.
Литвиненко А.В.
Харьков 2009
РЕФЕРАТ
Пояснительная записка к курсовой работе: 29 с., 4 таб., 8 рис., 4 раздела, 3 приложения, 3 источника.
Объект исследования – построение вечного календаря.
Цель работы – программная реализация вечного календаря (алгоритм расчёта дня недели по заданной дате). Систематизировать навыки и знания, полученные в процессе выполнения лабораторных работ по предмету «Программирование».
Метод исследования – изучение литературы, написания и отладки программ на компьютере.
Вечный календарь имеет большое значение в повседневной жизни. Данную программу можно использовать для определения дня недели интересующей даты.
Для реализации поставленной задачи, мной был использован алгоритм вычисления дня недели по заданной дате. Было предусмотрено два варианта задания даты. В ходе выполнения курсового проекта я изучил историю календарей, особенности построения вечного календаря в среде программирования. Рассмотрел основные алгоритмы вычисления дня недели, изучил их преимущества и недостатки.
Программа должна быть реализована на языке С++ в среде Visual C++.
СОДЕРЖАНИЕ
Введение………………………………………………………. |
4 |
1 Постановка задачи и сфера её применения…..………………...... |
5 |
2 Теоретическая часть…………………………… |
6 |
2.1 История календарей……………………..…………...... |
6 |
2.2 Описание использованного алгоритма.………...…………... |
11 |
2.3 Пример реализации алгоритма……………………………… |
11 |
3 Программная реализация………………………………….………. |
13 |
3.1 Описание алгоритма и структуры программы…………….. |
13 |
3.2 Описание программных средств……………………………. |
17 |
4 Инструкция пользователя…………………………………………. |
20 |
Заключение…………………………………………………… |
21 |
Перечень ссылок……………………………………… |
22 |
Приложение А Текст программы…… |
23 |
Приложение Б Результат………..……… |
28 |
Приложение В …………………………………………… |
29 |
ВВЕДЕНИЕ
Существуют разнообразные
Как правило, каждый метод имеет
две модификации — для
Я разработал свой алгоритм вычисления дня недели введённой даты, для этого я использовал следующее:
Для удобства номер месяца преобразовывается таким образом, чтобы март был первым месяцем, а февраль — двенадцатым и относился к прошлому году (например, май 1998 > 03 1998, январь 1983 > 11 1982). Для определения сдвига используется следующая формула: a = (14-месяц) div 12 (a — вспомогательная величина). Затем определяются год и месяц с учётом поправки: y = год - a; m=месяц+12·a-2.
Далее вся дата переводится в дни, т.е. количество лет в дате умножается на 365 + количество месяцев умножается на 30 + количество дней, внесённые в дату.
Далее уравниваются недостающие
дни к определённому месяцу при учитывании
високосных лет (+(год-1)/4-(год-1)/100+(год-
Именно этот алгоритм был использован в моей курсовой работе.
1 ПОСТАНОВКА ЗАДАЧИ И СФЕРА ЕЁ ПРИМЕНЕНИЯ
Целью данного курсового проекта является программная реализация вечного календаря (алгоритм расчёта дня недели по заданной дате).
Программа должна работать следующим образом:
– пользователь вводит дату,
– после выполнения программы на экран должен выводиться день недели, на который попадает эта дата.
Программа должна быть реализована на языке С++ в среде Visual C++.
2 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
В ходе выполнения курсового проекта я изучил историю календарей, особенности построения вечного календаря с среде программирования. Рассмотрел основные алгоритмы вычисления дня недели, изучил их преимущества и недостатки.
2.1. История календарей
Календарь, хотя и примитивный, появился уже в древнейших цивилизациях, когда люди начали планировать свою хозяйственную деятельность и определяться, когда им праздновать свои религиозные праздники.
История развития календарных систем по-своему увлекательна. В ней отразился не только процесс накопления человеком знаний об окружающем мире, но также борьба политиков и религиозных идей.
Даже с объективной точки зрения построение хорошего календаря - сложная, до сих пор не вполне решенная задача. Астрономы, математики, физики бились над ней с древних времен, уточняли периоды движения небесных тел, потом умножали и делили эти числа, стараясь построить все более совершенный календарь.
Юлианский календарь
Сегодня почти во всем мире используется календарь, практически доставшийся нам от древних римлян, которые в свою очередь заимствовали его у египтян. Но произошло это не сразу.
До нас не дошло точных сведений о зарождении римского календаря. Согласно Марку Теренцию Варрону (116-27 гг. до н.э.) сначала год календаря римлян состоял из 10 месяцев и 304 дней.
Первым месяцем был март (назван в честь бога войны Марса). Следующим шел апрель (от латинского "aperire" - "раскрывать", так как в этом месяце раскрываются почки на деревьях). Третий месяц был посвящен богине Майе - матери Меркурия. Четвертый в честь богини Юноны, супруги Юпитера, покровительницы женщин, был назван июнем.
Последующие месяцы носили числовые обозначения. А начинался год с первым весенним новолунием. Оставшиеся до весны дни римляне на месяцы не делили, жили всю зиму "в безвремении" до начала следующего года.
Последним, по Макробию (V в. н.э.), был введен лунный год в 355 дней с добавлением двух новых месяцев - января и февраля.Чтобы согласовать счет времени с солнечным циклом, через год вставлялся дополнительный месяц мерцедоний. В этот месяц, между прочим, полагалось возвращать долги. Продолжительность мерцедония определяли римские понтифики.
Цицерон (106-43 гг. до н.э.) утверждал, что понтифики злоупотребляли предоставленным им правом: за взятки удлиняли сроки пребывания на общественных должностях для своих друзей и укорачивали для своих врагов, манипулировали временем уплаты налогов.
Потом они, видимо, запутались, и со счетом дней в Риме началась полная неразбериха. Вольтер писал об этом времени: "Римские полководцы всегда побеждали, но никогда не знали, в какой день это случалось".
Устранить этот беспорядок решил первый римский император Гай Юлий Цезарь (100-44 гг. до н.э.).
Побывав в Египте, Цезарь имел возможность познакомиться с особенностями здешнего солнечного календаря. Проведенная им в 46 г. до н.э. календарная реформа позже была названа юлианской. Он пригласил в Рим группу астрономов во главе с Созигеном, и они решили, что лунный календарь надо заменить солнечным.
В юлианском календаре тропический год (время между двумя зимними солнцестояниями) считается равным 365,25 дней. Такая точность достигается за счет введения високосного года (366 дней), следующего через каждые три обычные года (365 дней).
В благодарность за упорядочение календаря, а также, учитывая выдающиеся заслуги Юлия Цезаря на военном и государственном поприщах, римский сенат принял решение переименовать месяц Quintilis, в котором родился Цезарь, в июль.
Римляне не сразу научились правильно считать високосные года (они вообще больше воевать любили), и поэтому правившему за Юлием Цезарем императору Октавиану Августу пришлось снова вставлять в календарь дополнительные дни для согласования с Солнцем.
Григорианский календарь
Введение високосного года, однако, не решило проблему полностью.
Так как год юлианского календаря все-таки несколько больше его астрономического значения, то с течением времени накапливается ошибка приблизительно в один день на каждые 128 лет. Долгое время на это внимания не обращали, хотя и знали. Наверное, слишком уж хлопотное это дело - календарная реформа.
К концу XVI столетия эта погрешность составляла уже около 10 дней. Это очень обеспокоило христианских священников.
Дело в том, что по сложившейся церковной традиции, христианская Пасха должна отмечаться в первое воскресенье после первого полнолуния после весеннего равноденствия. Расчет пасхальных дней на много лет вперед был произведен в 325 году н.э. При этом днем весеннего равноденствия ошибочно принято было считать 21 марта по юлианскому календарю. С течением лет реальная дата весеннего равноденствия сдвигалась все ближе к зиме и в XVI веке уже приходилась на 11 марта. Вместе с календарной датой весеннего равноденствия сдвигалась Пасха и другие церковные праздники. За усовершенствования календаря в XV веке взялась Римская Католическая Церковь.
В 1475 году папа Сикст IV пригласил
для этого в Рим выдающегося
немецкого астронома и
Многими известными в то
время учеными выдвигались
Григорианский календарь общепризнан в настоящее время. Интересно заметить, что и он не является абсолютно точным солнечным календарем. Ошибка в один 1 день в нем набегает за 3300 лет. Это, в частности, приводит к тому, что сейчас солнце проходит через точку весеннего равноденствия почти на 3 часа раньше, чем 400 лет назад. Позже были предложены более точные календарные системы, однако они не прижились.
Календарь в Православной Церкви
В христианском мире по сегодняшний
день нет единства в использовании
календаря. Восточная Православная
Церковь сразу же отказалась принять
григорианскую календарную
Во-первых, в григорианском календаре христианская Пасха иногда приходится на один день с еврейской или даже раньше нее, что некоторые православные считают недопустимым. Во-вторых, по старому стилю церковные праздники вычислять проще, так как он согласован с движением Луны. Как утверждает Архимандрит Рафаил: "Через юлианский календарь, его математико-символическую знаковую систему, время воцерковляется в ритмах богослужения, особенно в пасхалии."
Но, наверное, основная причина, по которой Русская Православная Церковь не переходит на новый стиль - это опасение раскола.
По мнению Юрия Белановского, руководителя информационно-аналитического отдела московского Центра духовного развития молодежи, русский Патриарх не ставит ребром вопрос о переходе на новый стиль, потому что не видит для этого серьезного повода и потому что у многих верующих, к сожалению, нет правильного представления о роли календаря в церковной жизни.
Большая часть верующих за
последние десять лет не смогла получить
базовых знаний, на основании которых
строится религиозная жизнь. А некоторые
влиятельные христиане-
Конечно, существование двух календарей - государственного и церковного - создает некоторое неудобство верующим людям. Остроумный выход из этой ситуации нашли христиане Константинопольской Православной Церкви и некоторых этногреческих церквей. Они живут по так называемому новоюлианскому календарю. Этот календарь формально еще точнее юлианского, но в ближайшие 800 лет он совпадает с григорианским.