Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Виды формальных параметров.



Виды формальных параметров.

1)параметры –значеения(с авторской версии),(входные)

(A,B,C:<тип1>;E,P:<тип2>;…)

2)праметры-переменные (с авторской версии),(выходные)

(Var A,B,C:<тип>;…)
3)параметры-const(с версии 7.0)

(Const A,B,C:<ТИП1>;…)

В качестве типа используется любой простой тип,string,file.

Если тип структуризованный-указывается имя типа,а сам тип объявляется в основной программе.

4)Безтиповые параметры(с версии 5.0)

(Var A,B,C;…)

5)Открытые параметры-масивы(с версии 7.0)(для одномерных)

(Var A:array of <тип элементов>;…)

6)Открытые строки(с версии 7.0)

(Var S:openstring;…)

7)Процедурные и функциональные пар.(с версии 5.0)

Синтаксис описания процедур

-Процедура:Может иметь несколько выходных параметров.

Описание

{заголовок}

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

(раздел описаний локальных объектв)

<описания меток,констант,типов,переменных,процедур и функций>

{раздел операторов}

Begin

<операторы>

End;

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

Размещаемого в разделе операторов и высказывающей программы:

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

Пример В массивах A(5.6) и B(3,8) найти сумму положительных элементов каждой строки.

Program P1;

Const m=8;n=5;

Type matr=array[1...n,1..m] of ral;vek=array[1..n] of real;

Var A,B:matr;VA,VB:vek;

Procedure wwod(Var C:matr;k,p:byte;);

Var I,j:byte;

Begin

Writeln(‘Введите матрицу’);

 

For i:=1 to k do

Begin

For j:=1 to p do

Read (C[I,j]);

Readin;

End;

End;

Procedure Sum(Var C:matr;k,p:byte;Var VC:Vek;);

Var I,j:byte; S:real;

Begin

For i:=1 to k do

Begin

S:=0;

For j:=1 to p do

If C[I,j]>0 Then S:=S+C[i,j];

VC[I]:=S;

End;

End;

Procedure Wiw (Var VC:vek; k:byte);

Var i:byte;

Begin

Writeln (‘Вектор результата’);

For i:=1 to k do Write (VC[i]);

End;

{основная или вызывающая программа }

Begin

Wwod(A,5,6);

Wwod(B,3,8);

Sum(A,5,6,VA);

Sum(B,3,8,VB);

Wiw(VA,5);

Wiw(VB,3);

End.

Передача параметров-значений и параметров-переменных

Механизм передачи в процедуру параметров-переменных и параметров значений принципально отличаются.

1)Если формальный параметр –параметр-переменная,то соответствующий ему фактический параметр-тоже переменная.Память отводится только под фактический параметр и процедуре предоставляется право работать с ним.При передаче параметров-переменных перед выполнением процедуры устанавливается ссылка на переменную-фактический параметр;иначе говоря,в процедуру передается передается адрес фактического параметра.Все действия процедуры,таким образом,выполняется над фактическим параметром.Если значение фактического параметра меняется,то это измененное значение доступно в программе после завершения работы процедуры.



Поэтому выходные параметры процедуры необходими специфицировать как параметры-переменные.

Следствие.Как var можно описывать входные массивы-параметры с целью экономии памяти(чтобы они не копировались во временную память) и времени на копирование.

2)Если формальный параметр –параметр-значение,то соответствующий ему фактический параметр может быть:

Const,переменной или выражением и при этом память выделяется и под формальный и под фактический параметры.В момент вызова процедуры значение фактического параметра –значения пресылаются в ячейку для соответствующего формального(локальную переменну) и на этом связь обрывается.Дальше процедура работает с этоц переменой.Можно сказать,что параметр –значение локализируется в теле процедуры.По завершении выполнения процедуры значение этой переменной недостурно.Соответсвующий фактический параметр не меняется.

Обычно входные параметры процедуры делают параметрами-значениями.

Program PP;

Var x,y,z:real;

Procedure P(var a:real;b:real;);

Var z:real;

Begin z:=a;a:=b:b:=z;end;

Procedure Q(var a:real;b:real;);

Begin z:=a;a:=b;b:=z;end;

{основная вызывающая прграмма }

Begin

X:=1,1;y:=2,2;z:=3,3;

P(x,y);writeln(x,y,z);

X:=1,1;y:=2,2;z:=3,3;

Q(x,y);writeln(x,y,z);

End.

-Функция Вычисляет единственное значение.

Описание

{заголовок}

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

{разднл описаний локальных объектов}

<описания меток,констант,типов,переменных,процедкр и функций>

{раздел операторов}

Begin

<операторы>

<имя функции>:=<значение>

End;

Здесь <тип результата>;;=<имя простого типа><имя указателя>

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

<указатель функции>;;=<имя функции>(<список фактических параметров>)

 

Function SPR(k,m:byte;Var P,Q:vek):Integer;

Var S:Integer; i:byte;

Begin

S:=0;

For i:=k to m do

S:=S+P[I]*Q[i];

SPR:=S;

End;

{Основная программа}

Begin

Wwod(x);

Wwod(x);

If SPR(1,15,X,Y)>0 Then u:=SPR(1,20.x.x)

Else u:=SPR(10,20,y,y);

Writeln(‘u:=’,u);

end.

Procedure P(var a,b:integer;);

Begin

If a <0 then a:=a+1;

b:=sqr(a);

End;

Procedure Q(a:integer;var b:integer;);

Begin

If a<0 then a:=a+1;

B:=sqr(a);

End;

A)m:=-1;P(m,n);n:=n+m;

B) m:=-1;Q(m,n);n:=n+m;

C) m:=1;P(m,n);n:=n+m;

D) m:=1;Q(m,n);n:=n+m;


Дата добавления: 2015-09-29; просмотров: 30 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Бесконтактные логические элементы. | Инструкция по входу в студенческую почту (используя Федерации).

mybiblioteka.su - 2015-2024 год. (0.014 сек.)