Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 10


Совет 1 (общий)

С целью структурирования программы, кроме ее главной части целесообразно выделить в отдельные функции следующие процедуры:

  • offset — определение количества дней, прошедших от 1.01.1900 г. до заданной даты (dd — день, mm — месяц, уу — год);

  • axis — построение осей для графика биоритмов с нанесением рисок по горизонтальной оси и числовых меток, упрощающих определение дня текущего месяца;

  • grafik — построение графика синусоиды с заданными периодом т и начальным смещением df 1, окрашенной в указанный цвет.

    Совет 2 (общий)

    Алгоритм процедуры offset может быть самым примитивным. Например, можно прибавлять к сумме по 365 дней за каждый полностью прошедший год и компенсировать добавочным днем каждый високосный. В начале работы в сумму заносим 365 — число дней в невисокосном 1900 году. В текущем году количество дней подсчитываем с помощью массива days, задающего количество дней в каждом месяце. Нужно только откорректировать число дней февраля (days [1] = 29), если текущий год является високосным.

    Совет 3 (общий)

    Для определения текущей даты можно воспользоваться одной из функций, предлагаемых соответствующей системой программирования — DATE$ (QBasic), getdate (Си), GetDate (Паскаль).

    Совет 4 (QBasic)

    Самым неудобным моментом в программе является подбор положения цифровых меток у графических штрихов на оси х. К сожалению, кроме метода проб и ошибок, мы не можем предложить ничего разумного. Дело в том, что оператор L0CATE позиционирует курсор в терминах строка-столбец, а графика оперирует с пикселами. Поэтому приходится слегка смещать либо положение рисунка, либо положение подписи.

    Совет 5 (Си)

    Для абсолютной идентичности результатов программ на Си и Паскале пришлось написать очень нехитрую функцию round, округляющую вещественный аргумент до ближайшего целого числа. К сожалению, воспользоваться напрямую одной из библиотечных функций floor или ceil нельзя.

    Совет 6 (Паскаль)

    0братите внимание на то, что в графическом режиме мы не пользуемся процедурами и функциями модуля Crt, ибо они конфликтуют с процедурами модуля Graph. В отличие от этого в Си, например, функция gotoxy прекрасно работает и в графическом режиме.




    Содержание  Назад  Вперед