Приклади програм. Обчислення дня тижня.
При оформленні програм я прагнув використовувати хороший стиль написання програм, тобто таку їх форму, яка дає найбільш повне уявлення про структуру програми в цілому і її окремих частин. Не існує будь-якого стандарту, що визначає хороший стиль програми. Зазвичай це інтуїтивне поняття включає спосіб розташування операторів і описів по рядках (не рекомендується розміщувати більше одного оператора на кожному рядку), а також виділення відступами тіла складових і умовних операторів.
Якщо Ви всерйоз мають намір програмувати на Турбо Паскалі, має сенс скласти власне уявлення про хороше стилі і далі неухильно дотримуватися його - дуже скоро деякі додаткові витрати на підготовку програм з лишком окупляться їх "читабельністю", а це допоможе Вам згадати всі деталі реалізації програми, яка була написана кілька місяців тому.
Обчислення дня тижня
Чи траплялося Вам болісно згадувати, який саме день тижня припадав на ту чи іншу кількість рік або два назад, або обчислювати, на який день тижня в цьому році припадає Ваш день народження? Якщо так, то Вас, думаю, зацікавить проста програма, що дозволяє за заданою датою миттєво обчислити відповідний день тижня. В її основі лежить така формула:
- X = abs (trunc (2.6 * m-0.2) + d + y / 4 + y + c / 4-2 * c);
- m - номер місяця (див. нижче);
- d - число (день місяця);
- с - номер століття (див. нижче);
- у - номер року в столітті.
Приступимо до розробки програми.
Перш за все, припустимо, що програма вже створена і Ви здійснюєте її прогін. Яка форма взаємодії з програмою здається Вам найбільш підходящою? Навряд чи Вас задовольнить одноразове її виконання (введення деякої дати і висновок на екран відповідного дня тижня). Швидше за все Ви захочете повторити роботу програми для декількох дат, наприклад, поцікавитися, в який день тижня Ви народилися, потім, на який день тижня припадає в цьому році Ваш день народження, дні народження близьких, друзів; може бути, визначити, в який день народилися відомі Вам історичні діячі, і т.д.
Таким чином, в програмі слід передбачити багаторазове виконання дій <ввод даты> - <вычисление дня недели>, причому число циклів обчислення заздалегідь не відомо. Відразу ж виникає нове запитання: як повідомити програмі, що Ви завершуєте роботу з нею? Для цього можна домовитися, що введення деякої заздалегідь обумовленої або неприпустимою дати повинен інтерпретуватися програмою, як вказівку на припинення роботи.