Смекни!
smekni.com

Методические указания к курсовой работе санкт-петербург (стр. 4 из 7)

Для рабочего набора исходных данных 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. Результаты работы демонстрируются преподавателю и заносятся в пояснительную записку в виде двух графиков. На этом выполнение курсовой работы можно считать завершенным.

Приложение 1

Подпрограммы. Процедуры и функции

Подпрограмма – это программа, которая является частью другой программы и удовлетворяет всем требованиям, предъявляемым к структуре программы в используемом языке программирования.

В языке программирования Turbo Pascal имеется две разновидности подпрограмм – процедуры и функции. Любая пользовательская подпрограмма предполагает наличие в основной программе двух составляющих:

  • Описание подпрограммы в разделе деклараций основной программы. Описание состоит из заголовка подпрограммы и тела подпрограммы. Описание представляет собой некоторый «образец действий».
  • Вызов подпрограммы из основной программы. Вызов активизирует задекларированный «образец действий», после чего в программе выполняются входящие в описание подпрограммы операторы.

Подпрограмма должна быть описана до того, как она впервые будет использоваться в программе.

Глобальные и локальные параметры

Все параметры, которые использует подпрограмма, можно разбить на два вида:

  • локальные параметры;
  • глобальные параметры.

Локальные параметры объявляются внутри подпрограммы и доступны только самой подпрограмме. Для локальных параметров происходи динамическое выделение памяти в процессе решения задачи. Такой вид выделения памяти называется стеком. После выполнения подпрограммы память, выделенная под локальные параметры, освобождается.

Глобальные параметры объявляются вне подпрограммы в разделе деклараций основной программы и могут быть доступны как самой основной программе, так и всем ее подпрограммам. Для глобальных параметров происходит статическое выделение памяти на этапе компиляции. Глобальные параметры хранятся в сегменте данных. Глобальные параметры сохраняют свои значения в течение «всей жизни» программы.

ЗАМЕЧЕНИЯ:

  • Обмен информацией между основной программой и подпрограммой осуществляется только с помощью глобальных параметров. Для того чтобы подпрограмма могла использовать и изменять глобальные параметры, необходимо описать эти глобальные параметры до описания той подпрограммы, которая их будет использовать.
  • Все имена в пределах подпрограммы, в которой они объявлены, должны быть уникальными и не могут совпадать с именем самой подпрограммы.
  • Если внутри подпрограммы действуют локальные параметры, имена которых совпадают с именами глобальных параметров, то приоритет остается за локальными параметрами.

Глобальные временно приостанавливают свое действие, т.е. объект, описанный с помощью глобальных параметров, совпадающих с именами локальных параметров, становится недоступным из подпрограммы. Это возможно благодаря тому, что глобальные и локальные параметры хранятся в разных независимых областях памяти.

Процедура

Процедура предназначена для выполнения какой-либо законченной последовательности действий. Описание процедуры состоит из заголовка и тела. Заголовок процедуры обязателен.

Формат заголовка:

procedure <имя процедуры> [(список формальных параметров)]

procedure – служебное слово:

Список формальных параметров необязателен, о чем свидетельствуют квадратные скобки [].

Тело процедуры может включать такие же разделы, что и основная программа.

Процедура всегда заканчивается точкой с запятой в отличие от программы, которая всегда заканчивается точкой.

Операторы, образующие тело процедуры, компилируются только один раз и существуют в программе в единственном экземпляре, однако вызвать эту процедуру можно сколько угодно раз. Это позволяет сделать программу достаточно компактной. Но даже в случае, если процедура выполняется только один раз, использование ее позволяет расчленить задачу на ряд самостоятельных частей, т.е. процедура является средством структурирования программы.

Функция

Функция предназначена для вычисления какого-либо элементарного значения, поэтому функция может быть использована наравне с переменными в выражении соответствующего типа.

У функции с точки зрения синтаксиса есть два отличия от процедуры:

  • Разные заголовки.
  • В теле функции хотя бы один раз имени функции должно быть присвоено значение возвращаемого результата (имя функции должно стоять в левой части оператора присвоения).

Формат заголовка:

function <имя функции> [(список формальных параметров)] : <тип возвращаемого результата>

Заголовок функции состоит из служебного слова function, за которым следует имя функции, далее в круглых скобках описывается список формальных параметров, если он есть. Затем через двоеточие указывается тип возвращаемого результата.

Функция может возвращать значения следующих типов: порядковый, вещественный, стандартный тип – string (строковый).

Пример:

program ex_2;

uses CRT;

var

x: real:

Формальные и фактические параметры

При описании подпрограммы используются формальные параметры, которые по сути являются локальными переменными. Но они обеспечивают обмен значениями между основной программой и подпрограммами. При вызове подпрограммы из основной программы используются фактические параметры, которые подставляются на место формальных параметров. Именно эти фактические параметры при выполнении подпрограммы замещают все вхождения в подпрограмму необходим для настройки данной подпрограммы на конкретные фактические параметры.

Связь фактических и формальных параметров:

  • число формальных и фактических параметров должно быть одинаково;
  • соответствие параметров устанавливается слева направо;
  • соответствующие формальные и фактические параметры должны совпадать по типу;
  • при задании фактических параметров необходимо учитывать, как были описаны формальные параметры – как параметры-значения или как параметры-переменные (var-параметры).

Параметры-значения

Передаются основной программой в подпрограмму в виде копии (через стек) и, следовательно, в случае каких-либо действий любые изменения в подпрограмме произойдут с копией параметров и никак не отразятся на собственных параметрах программы.

Параметры-значения указываются в заголовке программы своим именем и, через двоеточие – типом. Тип может быть любым.

Если параметров-значений одного типа несколько, то их можно перечислить через запятую, а затем через двоеточие указать общий тип. Отдельные группы параметров отделяются друг от друга точкой с запятой.

Параметры-переменные (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 параметрами, ибо это затрудняет понимание и отладку программы.