Формальные и фактические параметры.




Тема: «СОЗДАНИЕ СОБСТВЕННЫХ ПРОЦЕДУР И ФУНКЦИЙ В DELPHI»

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

¨ процедуры;

¨ функции.

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

Все процедуры и функции языка Паскаль можно разделить на 2 класса:

· стандартные процедуры и функции языка Паскаль.

· процедуры и функции, определенные пользователем.

ПРОЦЕДУРЫ.

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

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

procedure < имя > (<список формальных параметров>);

Например:

procedure a17 (a:integer; b,c:real; var x1,x2:real; var k:integer);

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

Например:

procedure f (r:integer; var r1:integer);

var i:integer;

Begin

if r<=0 then

Begin

r1:=0;

exit;

end;

r1:=1;

for i:=2 to r do

r1:=r1*i;

end;

Формальные параметры нельзя описывать в разделе описаний процедуры. Для обращения к процедуре необходимо использовать оператор вызова процедуры. Он имеет следующий вид:

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

Например:

f (n,fn);

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

Пример:

……….

var r,r1,r2:real;

//--------------------------- описание процедуры ------------------------------

procedure f1 (x:real; var y:real; var c:real); //

Begin

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

c:=ln(x)/ln(10);

end;

//---------------------------------------------------------------------------------------

Begin

r:=StrToFloat(Edit_r.Text);

f1(r,r1,r2); //вызов процедуры

Edit_r1.Text:=FloatToStr(r1);

Edit_r2.Text:=FloatToStr(r2);

end;

………….

Формальные и фактические параметры.

Можно выделить 2 класса формальных параметров:

· параметры-значения;

· параметры-переменные;

Группа параметров, перед которыми отсутствует служебное слово var, называется параметрами-значениями. Группа параметров, перед которыми есть служебное слово var, называется параметрами-переменными.

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

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

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

Пример процедуры решения квадратного уравнения.

procedure korni (a,b,c:real;var x1,x2:real;var pr:integer);

var d:real;

Begin

d:=b*b-4*a*c;

if d>=0 then

Begin

pr:=1;

x1:=(-b+sqrt(d))/2/a; x2:=(-b-sqrt(d))/2/a;

End

else pr:=0

end;

Функции

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

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

Например:

function tan (x:real):real;

function max(x,y:real):real;

function a1(x:real; y:integer):real;

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

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

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

procedure Имя_процедуры(список формальных параметров);

 

Begin

Код процедуры;

end;

 

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

begin

Код функции;

Result:=результат; // или Имя_функции:= результат;

end;

Рассмотрим программу суммирования двух чисел.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: