Подпрограммы.

Та методики практичної психології, к.пс.н. Л.Б. Наугольник

 

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

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

В общем случае программа будет иметь следующую структуру:

Program имя; // заголовок программы

 

Uses…; описательная часть

Const…;

Type…;

Var…;

Описание подпрограмм;

 

Begin

… основной блок программы

Вызовы подпрограмм;

End.

 

В Турбо Паскале используется два вида подпрограмм: процедуры и функции.

 

Процедура – это особым образом оформленный фрагмент программы, имеющий собственное имя.

Упоминание этого имени в тексте программы приводит к активизации процедуры и называется ее вызовом. В результате вызова процедуры всегда меняется значение каких-то переменных в программе.

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

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

Для обмена информацией между основной программой и подпрограммами используются параметры вызова (формальные параметры).

 

Описание процедуры имеет следующую структуру:

Procedure Имя (список формальных параметров.);

Var …;

Begin

…операторы процедуры …;

End;

Формальные параметры – это описание переменных, которые будут использованы в процедуре. Описание параметров аналогично описанию переменных в секции Var основной программы. Единственное отличие, что ключевое слово Var иногда может отсутствовать. Слово Var ставиться тогда, когда в переменной будет содержаться результат работы процедуры.

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

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

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

 

Вызов процедуры имеет следующий синтаксис:

Имя (список фактических параметров);

 

Обращение к процедуре происходит следующим образом:

1. В тексте основной программы встретился вызов процедуры;

2. Ищется процедура с данным именем;

3. Каждому формальному параметру в заголовке процедуры в порядке следования ставится в соответствие фактический параметр. Таким образом, фактические параметры как бы заменяют формальные, причем замена происходит не только в заголовке, но и в теле процедуры;

4. запускается процедура;

5. после завершения работы процедуры начинает выполняться оператор, следующий за оператором, вызвавшем данную процедуру.

 

Пример. Ввести числа a, b, c, ,d. Поменять значения переменных a и d, b и c. Вывести результат.

 

Program obmen; Var a,b,c,d :byte;   Procedure swap (var x,y:byte); Var t: byte; Begin t:=x; x:=y; y:=t; End;   Begin Writeln (‘Введите 4 числа:’); Readln (a,b,c,d); Writeln (‘Исходный порядок:’); Writeln(a,b,c,d); Writeln (‘Результат:’); Swap (a,d); //вызов для a, d Swap (b,c); //вызов для b, c Writeln(a,b,c,d); Readln; End.

1. Написать процедуру вывода на экран 10 случайных чисел.

2. Написать процедуру заполнения массива 10 случайными числами.

3. Написать процедуру вывода на экран массива.

4. Написать процедуру вывода на экран строки в обратном порядке.

5. Написать процедуру вывода на экран матрицы 5х5


Функции

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

 

Описание функции имеет следующую структуру:

function Имя (список формальных параметров.):Тип;

Var …;

Begin

…операторы процедуры …;

Имя:=<результат>;

End;

 

Описание функции имеет следующие особенности:

1.В заголовке вместо слова Procedure слово function.

2. В заголовке указан тип значения, возвращаемого функцией в качестве результата.

3.В теле функции результат работы подпрограммы должен быть присвоен имени функции. Тип результата должен соответствовать типу функции.

 

Пример 1.Вычислить тангенс чисел от 0 до 100. Написать функцию для нахождения тангенса заданного числа.

Program func_tg;

Var i:byte;

 

Function tg (var x : real) :real;

Begin

Tg:=sin(x)/cos(x);

End;

 

Begin

For i:= 1 to 100 do writeln(tg(i));

End.