Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Delphi.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

7.2Функции

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

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

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

7.3Параметры и аргументы

Параметры являются элементами подпрограммы и используются при описании ее алгоритма. Аргументы указываются при вызове подпрограммы и замещают параметры при выполнении подпрограммы. Параметры могут быть любого типа, включая структурированный. Существуют следующие виды параметров [4]:

  • Значение

  • Константа

  • Переменная

  • Нетипизированная константа и переменная

Группа параметров, перед которыми в заголовке подпрограммы отсутствуют слова var или const и за которыми следует указание их типа, называются параметрами-значениями. В подпрограмме значения таких параметров можно изменять, но эти изменения не влияют на значение соответствующих им аргументов, которые были подставлены вместо фактических параметров-значений [4]. Например

Procedure Print(K:array of integer);

Заметим, что если в качестве параметра передается массив, то указывается только тип элементов, без указания размера.

Обратите внимание! Если в качестве параметра используется массив, то внутри подпрограммы нумерация его элементов всегда начинается с нуля, поэтому рекомендуется объявлять глобальный массив размерностью с нуля. Для передачи двумерного массива лучше объявить cпециальный тип и передавать в качестве параметра переменную созданного типа.

Type

MyType=array [0..Nmax,0..Nmax] of ….;

var

A:MyType;

Группа параметров, перед которыми в заголовке подпрограммы стоит слово const и за которыми следует описание их типа, называют параметрами-константами. В теле подпрограммы значение параметра-константы изменить нельзя [4].

Группа параметров, перед которыми в заголовке подпрограммы стоит слово var и за которыми следует описание их типа, называют параметрами-переменными. Они используются в тех случаях, когда значение должно быть передано из подпрограммы в вызывающий блок. В этом случае при вызове подпрограммы параметр-переменная замещается аргументом, и любые изменения формального параметра отражаются на аргументе [4]. Таким способом можно вернуть результаты из подпрограммы по окончанию ее работы. Например

function Tan(a:real;var d:boolean):real;

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

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

Пример 8.

Возведение вещественного числа в целую степень. (Использование функции)

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils;

Function Stepen(x:real;n:integer):Real;

begin

if x=0 then Result:=0

else

begin

result:=exp(n*ln(abs(x)));

if (x<0) and (n mod 2 <>0) then

Result:=Result*(-1);

end;

end;

var

x,y:real;

n:integer;

begin

Writeln('Vuchislenie stepeni');

Write('vvedite chislo ');

readln(x);

Write('vvedite stepen ');

readln(n);

y:=Stepen(x,n);

Write('Otvet ',y:5:5);

Readln;

end.