Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование 2 семестр 1 курс.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
523.82 Кб
Скачать

Функции

Общая структура функций совпадают со структурой процедур . Отличительная черта в синтаксисе–записи

Синтаксис записи .

Function «имя » ( «список формальных параметров »): «тип возвращенного значения »;

Label

Const

Type

Var

..

Begin

«тело функции»

End;

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

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

Синтаксис вызова функции

«Имя переменной »:= «имя функций » ( «фактические параметры »);

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

Пример – функция суммы элементов массива .

Type

Massiv_1=array [1..5] of byte;

Const

A:massiv_1=(1,2,3,4,5);

B:massiv_2 = (5,6,7,8,9);

Var

I:byte ;

Function sum_mas (p:massiv_1):longint;

Var

S:longint ;

Begin

S :=0;

For i:=1 to 5 do

Inc(s,p[i]);

Sum_mas:=s;

End;

Var

Sum :longint;

Begin

Sum :=sum_mas(a);

Write(‘Сумма ’,sum);

Write (‘Сумма ’, Sum_mas (b));

End.

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

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

Procedure P(k= record

I:char;

B:byte;

End; )

Правильный вариант

Type

Res=record

I:char ;

B:byte;

End;

………

Procedure p(k:res);

Обособленный вызов функций

Паскаль дает возможность вызывать функцию , не использовав при этом возвращающие ей значение .Чтобы этот вызов был возможном , используются директива компилятора {$X+} , которая устанавливается в начале программного кода . Обычно режим разрешения обособленного вызова функции устанавливается по умолчанию .

{$X-} – запрещение обособленного вызова функции

Пример

{$X+} {$X-}

Uses crt; Uses crt;

.. ……

Readkey; readkey;

End. End.

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