Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
61
Добавлен:
04.06.2015
Размер:
7.62 Mб
Скачать

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

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

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

Как и все программы в Паскале, функция состоит из заголовка, блока описаний и блока операторов:

Function Geron(x, y, z : Real):Real; заголовок функции

Var p : Real; описание локальных переменных

Begin начало блока операторов

p := (x + y + z)/2.0;

Geron := Sqrt(p*(px)*(py)*(pz)); вычисленное значение присваивается имени функции

End;

Внимание!После оператораEndставится точка с запятой.

Эта функция вычисляет площадь треугольника по формуле Герона – по трем его сторонам.

Заголовок функции

Function Geron(x, y, z : Real):Real;

начинается со слова Function, за которым следует ее имя, в данном случаеGeron. После имени функции в скобках перечисляются имена и типы аргументов функции – входных данных илиформальных параметров. В данном случае этоx, y, zтипаReal. Если имеются формальные параметры нескольких типов, то они группируются по типам, а между типами ставятся точки с запятой. Заголовок заканчивается указанием типа самой функции, то есть типа результата, вычисляемого этой функцией. В данном случае этоReal.

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

s := Geron(3.0, 4.0, 5.0);

В данном случае формальныепараметрыx, y, zфункцииGeronзаменяются соответственнофактическимиаргументами3.0, 4.0, 5.0 , для которых и вычисляется значение функции. Вычисленное значение присваивается имени самой функцииGeronи далее - переменнойs. В этом примереs = 6.0.

Вся программа, использующая функциюGeron, может иметь следующий вид:

Program Primer;

Uses CRT;

Var a, b, c, s : Real; описание фактических (глобальных) параметров

Function Geron(x, y, z : Real):Real; заголовок функции

Var p : Real;

Begin

p := (x + y + z)/2.0;

Geron := Sqrt(p*(px)*(py)*(pz));

End; конец функции

Begin начало основной (головной) программы

ClrScr;

a := 3.0; инициализация фактических параметров

b := 4.0;

c := 5.0;

s := Geron(a, b, c); обращение к функции с фактическими параметрами a, b, c

WriteLn(‘Площадь треугольника равна ’, s:6:2);

ReadLn;

End.

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

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

Структура функции, как и структура всех программ Паскаля, включает следующие разделы:

описание меток Label,

определение констант Const

определения типов Type

описание переменных Var

описание процедур и функций Function, Procedure

операторы функции BeginEnd;

Построение и использование функций подчиняется следующим правилам:

1.имяфункции не должно совпадать со служебными словами, именами стандартных функций, именем основной (головной) программы или именами переменных в ней,

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

3.формальные и фактические параметры должны совпадать по порядку следования, количеству и типам,

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

5.формальные параметры не должны совпадать по имени:

Function Err(x, y: Word; a, b, y: Real): Real; ошибка!

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

Function Summa(x, y: Real): Real;