Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр_пас_3.doc
Скачиваний:
111
Добавлен:
04.11.2018
Размер:
13.31 Mб
Скачать

2.6.1. Функции

Подпрограмма - функция предназначена для вычисления одного результата. Описание функции состоит из заголовка, который начинается словом Function, за ним следует имя функции, далее в круглых скобках помещается список формальных параметров и затем через двоеточие указывается тип результата функции. Имя функции является носителем результата, т.е. в процессе выполнения ему будет присвоено значение результата. Список формальных параметров состоит из имен, за которыми через двоеточие следует указание типа параметра. Причем при задании типа формального параметра и типа результата функции можно использовать только имена типов.

За заголовком функции следует блок - разделы описаний, далее раздел операторов, составляющих тело функции, и завершается описание функции словом End.

Рассмотрим пример функции, вычисляющей значение факториала числа N. Назовем функцию Fact. У нее будет один целочисленный входной параметр.

Function Fact( n: integer ): integer;

Var i, k: integer;

Begin

k := 1;

For i:= 1 to n Do

k := k * i;

Fact := k

End;

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

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

Рассмотрим следующий пример.

Пусть надо подсчитать число сочетаний из m элементов по n, т.е.

Используя функцию подсчета факториала, это можно сделать одним выражением:

Cmn := Fact(m) / ( Fact(n) * Fact(m-n))

В этом выражении три обращения к функции Fact с разными параметрами.

2.6.2. Процедуры

Процедуры это подпрограммы, которые в отличие от функций могут иметь несколько результатов. Значения результатов передается через параметры. Иными словами среди параметров процедуры, есть входные и выходные параметры. В списке формальных параметров перед выходными параметрами должно стоять слово Var.

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

Пример заголовка процедуры:

Procedure ABC( x: real; y,z: integer; Var w: real; Var v: integer);

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