Для рабочего набора исходных данных tнач = 0,5с; tм = 2,5с; tкон = 6с; Uм = 20,5В; Uвх1 = 3В берутся из таблицы вычислений. Остается выбрать величину n. Рекомендуется выбрать начальное значение n, совпадающее со значением n, взятым при контрольном расчете. В нашем случае n = 4. Далее выполняя расчеты для реального необходимого количества точек.
ЗАМЕЧАНИЕ: После успешного завершения работы над программой отсчеты массивов входного и выходного сигналов помещены в файлы f1.prn и f2.prn. На этом работа в системе Turbo Pascal (Borland Pascal) считается оконченной. Студенты запускают систему MathCAD и работают в ней над построением графиков входного и выходного сигналов в полном соответствии с рекомендациями, помещенными в приложении 3. Результаты работы демонстрируются преподавателю и заносятся в пояснительную записку в виде двух графиков. На этом выполнение курсовой работы можно считать завершенным.
Подпрограммы. Процедуры и функции
Подпрограмма – это программа, которая является частью другой программы и удовлетворяет всем требованиям, предъявляемым к структуре программы в используемом языке программирования.
В языке программирования Turbo Pascal имеется две разновидности подпрограмм – процедуры и функции. Любая пользовательская подпрограмма предполагает наличие в основной программе двух составляющих:
Подпрограмма должна быть описана до того, как она впервые будет использоваться в программе.
Глобальные и локальные параметры
Все параметры, которые использует подпрограмма, можно разбить на два вида:
Локальные параметры объявляются внутри подпрограммы и доступны только самой подпрограмме. Для локальных параметров происходи динамическое выделение памяти в процессе решения задачи. Такой вид выделения памяти называется стеком. После выполнения подпрограммы память, выделенная под локальные параметры, освобождается.
Глобальные параметры объявляются вне подпрограммы в разделе деклараций основной программы и могут быть доступны как самой основной программе, так и всем ее подпрограммам. Для глобальных параметров происходит статическое выделение памяти на этапе компиляции. Глобальные параметры хранятся в сегменте данных. Глобальные параметры сохраняют свои значения в течение «всей жизни» программы.
ЗАМЕЧЕНИЯ:
Глобальные временно приостанавливают свое действие, т.е. объект, описанный с помощью глобальных параметров, совпадающих с именами локальных параметров, становится недоступным из подпрограммы. Это возможно благодаря тому, что глобальные и локальные параметры хранятся в разных независимых областях памяти.
Процедура
Процедура предназначена для выполнения какой-либо законченной последовательности действий. Описание процедуры состоит из заголовка и тела. Заголовок процедуры обязателен.
Формат заголовка:
procedure <имя процедуры> [(список формальных параметров)]
procedure – служебное слово:
Список формальных параметров необязателен, о чем свидетельствуют квадратные скобки [].
Тело процедуры может включать такие же разделы, что и основная программа.
Процедура всегда заканчивается точкой с запятой в отличие от программы, которая всегда заканчивается точкой.
Операторы, образующие тело процедуры, компилируются только один раз и существуют в программе в единственном экземпляре, однако вызвать эту процедуру можно сколько угодно раз. Это позволяет сделать программу достаточно компактной. Но даже в случае, если процедура выполняется только один раз, использование ее позволяет расчленить задачу на ряд самостоятельных частей, т.е. процедура является средством структурирования программы.
Функция
Функция предназначена для вычисления какого-либо элементарного значения, поэтому функция может быть использована наравне с переменными в выражении соответствующего типа.
У функции с точки зрения синтаксиса есть два отличия от процедуры:
Формат заголовка:
function <имя функции> [(список формальных параметров)] : <тип возвращаемого результата>
Заголовок функции состоит из служебного слова function, за которым следует имя функции, далее в круглых скобках описывается список формальных параметров, если он есть. Затем через двоеточие указывается тип возвращаемого результата.
Функция может возвращать значения следующих типов: порядковый, вещественный, стандартный тип – string (строковый).
Пример:
program ex_2;
uses CRT;
var
x: real:
Формальные и фактические параметры
При описании подпрограммы используются формальные параметры, которые по сути являются локальными переменными. Но они обеспечивают обмен значениями между основной программой и подпрограммами. При вызове подпрограммы из основной программы используются фактические параметры, которые подставляются на место формальных параметров. Именно эти фактические параметры при выполнении подпрограммы замещают все вхождения в подпрограмму необходим для настройки данной подпрограммы на конкретные фактические параметры.
Связь фактических и формальных параметров:
Параметры-значения
Передаются основной программой в подпрограмму в виде копии (через стек) и, следовательно, в случае каких-либо действий любые изменения в подпрограмме произойдут с копией параметров и никак не отразятся на собственных параметрах программы.
Параметры-значения указываются в заголовке программы своим именем и, через двоеточие – типом. Тип может быть любым.
Если параметров-значений одного типа несколько, то их можно перечислить через запятую, а затем через двоеточие указать общий тип. Отдельные группы параметров отделяются друг от друга точкой с запятой.
Параметры-переменные (var-параметры)
При передаче параметров-переменных в подпрограмме фактически через стек передаются не сами значения, а адреса, по которым эти значения хранятся. Следовательно, подпрограмма имеет прямой доступ к этим переменным и может их изменить (подпрограмма в этом случае работает непосредственно с сегментом данных).
Параметр-переменная указывается в заголовке программы аналогично параметру-значению, но перед именем параметра записывается служебное слова var. Действие слово var распространяется до ближайшей точки с запятой.
ЗАМЕЧАНИЕ: Особенности var-параметров: фактические параметры при вызове должны быть обязательно переменными. Нельзя использовать константы или выражения.
Пример:
{--------------------------------}
BEGIN
writeln(`введите исходные числа`);
readln(x,y);
writeln(`исходные: `,x:5,y:5);
С клавиатуры вводится два целых числа 10 и 20. Далее эти числа передаются процедуре Dec1, где они уменьшаются на 5 единиц каждое. Один из параметров передается как параметр-переменная, другой – как параметр-значение. Результаты выводятся на экран.
исходные: 10 20
уменьшенные 5 15
результирующие 5 20
Уменьшение параметра «у» внутри процедуры не вызвало изменения параметра «у» в основной программе, так как этот параметр описан в заголовке процедуры как параметр-значение. Изменение параметра «х» внутри процедуры привело к изменению параметра «х» в основной программе, так как этот параметр описан в заголовке процедуры как параметр-переменная.
ЗАМЕЧАНИЕ: Именно поэтому var-параметры используются для связи подпрограмм с внешним миром. Подпрограмма с помощью var-параметров передает результаты своей работы вызывающей ее основной программе. В распоряжении программиста есть еще один способ связи подпрограммы с основной программой – через глобальные переменные, однако такой способ может привести к многочисленным ошибкам. При использовании var параметров по вызову процедуры сразу видно, какую именно переменную изменяет процедура. Однако не следует злоупотреблять использованием как глобальными переменными, так и var параметрами, ибо это затрудняет понимание и отладку программы.