Все подпрограммы разработаны в соответствии с принципом максимальной изоляции данных. Это значит, что любая из подпрограмм описана с использованием только формальных параметров и локальных переменных без ссылок на глобальные переменные, что позволяет сделать подпрограммы в некотором смысле универсальными, а также повысить их надежность за счет устранения их влияния друг на друга.
Процедура формирования массива входных отсчетов
Описание процедуры UIN1 смотри в тексте программы на рис.3.
Пояснения к тексту процедуры UIN1
После приведения входного сигнала Uвх(t) к аналитическому виду можно с помощью процедуры UIN1 сформировать массив входных отсчетов в заданных пользователем равноотстоящих точках диапазона наблюдения выходного сигнала.
Описание процедуры помещено в разделе деклараций основной программы. Это описание является «образцом действий», в соответствии с которым данная процедура будет выполняться каждый раз при вызове ее из основной программы. Имя процедуры - UIN1 задано в заголовке процедуры. В круглых скобках перечислен список формальных параметров. Шесть из них являются параметрами значениями, один – параметр – переменная, о чем свидетельствует стоящее перед ним зарезервированное слово var. Использование var-параметра в данном случае необходимо, так как в результате работы процедуры будет сформирован массив отсчетов входного сигнала, который в дальнейшем необходимо будет передать в процедуру формирования массива выходных отсчетов. Поэтому после выхода из процедуры UIN1 массив отсчетов входного сигнала должен быть сохранен, ибо без него невозможна дальнейшая работа других подпрограмм (см. прил. 1).
В разделе описаний локальных переменных var описаны текущее время t, два коэффициента «a» и «b», вычисляемые по выведенным выше формулам, шаг изменения временного интервала del, вычисляемый по формуле:
, i – счетчик цикла.Раздел описания переменных внутри процедуры является описанием локальных параметров. Эти параметры доступны только внутри той процедуры, где они описаны (в данном случае внутри процедуры UIN1).
Результат работы переменных UIN1 – сформированный массив отсчетов входного сигнала.
Процедура формирования массива выходного отсчетов
Описание процедуры UOUT1 смотри в тексте программы на рис. 3.
Пояснения к тексту процедуры UOUT1
Список формальных параметров процедуры UOUT1 содержит входные параметры значения n, kl, Uin2, uin, необходимые для расчета и формирования массива выходных отсчетов. По сути эти параметры являются локальными и не сохраняют свои значения после выхода из процедуры; uout – является выходным var-параметром, следовательно, этот параметр сохранит все свои значения и после выхода из процедуры и может быть использован как главной программой, так и другими процедурами.
Связь подпрограмм с «внешним миром» осуществляется только с помощью var-параметров (или глобальных параметров) (см. прил. 1).
Результат работы процедуры UOUT1 – сформированный массив отсчетов выходного сигнала.
Функция для нахождения максимального значения выходного сигнала
Описание функции MAXI смотри в тесте программы на рис. 3.
Пояснения к тексту функции MAXI
Обратите внимание на заголовок функции и его отличия от заголовка процедуры. Имя функции MAXI. Результат работы функции – единственное значение, представляющее максимальное значение выходного сигнала. Этот результат передается в точку вызова функции из основной программы с помощью имени самой функции MAXI, поэтому в заголовке функции, задан тип этого результата (в данном случае MAXI:real).
Список формальных параметров состоит из входных параметров n и uout. Эти параметры заданы как параметры-значения (отсутствует служебное слово var). После выхода из функции нам понадобиться только одно единственное значение – max значение выходного сигнала, которые мы должны были найти в соответствии с заданием, поэтому последним оператором внутри функции стоит оператор присваивания, с помощью которого вычисленное значение максимума выходного сигнала присваивается переменной с именем функции MAXI, значение которого и будет передано затем в точку вызова функции.
Процедура записи массивов входного и выходного сигналов в файлы с именами f1.prn и f2.prn
Описание процедур WRITEINFO смотри в тексте программы на рис. 3.
Пояснения к тексту процедуры WRITEINFO
Имя процедуры – WRITEINFO. Список формальных параметров-значений состоит из входных параметров n, uin, uout.
В разделе локальных переменных введены описания двух файлов переменных f1 и f2 типа text. В разделе операторов этим файловым переменным f1 и f2 ставятся в соответствие физические файлы на диске с именами «f1.prn» и «f2.prn» соответственно. Это выполняется с помощью специальной процедуры assign. Имена файлов могут быть любыми, но они должны иметь расширение prn, так как в дальнейшем предполагается использование математической системы MathCD, которая для записи и чтения векторов и матриц использует файлы именно с этим расширением.
После окончания записи в файлы их необходимо закрыть с помощью процедуры close.
Процедура вывода на экран результатов работы программы
Описание процедуры REZULT смотри в тексте программы на рис. 3.
Пояснения к тексту REZULT
Список формальных параметров процедуры состоит из входных параметров-значений n, kl, uin, uout. Процедура выводит по определенному признаку результат работы программы на экран монитора. Это может быть контрольный расчет, выполненный студентом, или решение задачи при рабочем наборе исходных данных.
ЗАМЕЧАНИЕ: Для проверки контрольного расчета студент может воспользоваться окном наблюдения WATCH при проведении пошаговой отладки программы (функциональная клавиша F8).
Главная программа
Мы разбили задачу на ряд более простых самостоятельных подзадач, каждую из которых решали независимо друг от друга, реализовав их с помощью набора подпрограмм. Завершает работу над задачей написание главной программы, которая организует совместную работу всех подпрограмм, вызывая их в необходимой последовательности.
Контрольный расчет
Методические указания по выполнению контрольного расчета приведены в прил. 7.
В рассматриваемом варианте необходимо выбрать контрольный набор значений исходных данных для следующих величин: N, tнач, tм, tкон, Uм, Uвх1.
Величины tнач, tкон могут быть выбраны из соображений удобства вычислений. Выберем tнач = 1с, tкон = 7с. Количество расчетных точек N рекомендуется брать не менее 4. Выберем N = 4, при этом вычисления величин Uвх(t) и Uвых(t) выполняются для моментов времени t1 = tнач = 1с, t2 = 3c, t3 = 5c, t4 = tкон = 7с. Для контроля правильности реализации разветвления в подпрограмме формирования массива Uвх следует проверить, что при этом в вычислениях величины Uвх(t) использовались хотя бы по одному разу все приведенные при переходе от графика к аналитическому выражению формулы. Из формул видно, что при t = tнач и t = tкон не проверяется правильность формул, так как образуются нулевые сомножители. Поэтому необходимо выбрать значения величины tм таким образом, чтобы вычисления для t = t2 выполнялась формула Uвх(t) = b(tкон – t). С этой целью выбираем tм = 4с. (см. рис. 4).
Рис. 4. Вычисленные значения входного и выходного сигнала для контрольного расчета
Аналогично проверяется подпрограмма формирования массива Uвых. Значение величины Uм, влияющее на амплитуду входного напряжения Uвх(t), выбирается так, чтобы среди отсчетов величины Uвх(t) были значения, меньше Uвх1 и не меньше Uвх1, с тем чтобы проверить расчетные формулы обеих ветвей выходного сигнала. Выберем Uм = 6В, Uвх1 = 3В. Результаты вычислений элементов массива Uвх и Uвых приведены в табл. 1.
В подпрограмме-функции определения Umax для поверки ветвей алгоритма необходимо, чтобы максимум функции Uвых(t) не находился на границах интервала [tнач, tкон]. Как видно из рис. 4 b в рассматриваемом варианте это требование выполняется. Из таблицы вычислений видно, что для контрольного расчета максимальное значение Uвых(I) равно Umax = 9В.
Таблица вычислений
Таблица 3
Назначение набора | Набор данных | Ручные вычисления | Вычисления на ЭВМ | |||||||||||
N | tнач | tкон | tм | Uм | Uвх1 | I | Uвх(I) | Uвых(I) | Umax | I | Uвх(I) | Uвых(I) | Umax | |
Контрольный | 4 | 1 | 7 | 4 | 6 | 3 | 1 2 3 4 | 0 4 4 0 | 4 9 9 4 | 9 | ||||
Рабочий | 0,5 | 6 | 2,5 | 20,5 | 3 |
Выполнение программы при рабочем наборе исходных данных