Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В список параметров включаются исходные данные для работы процедуры/функции (входные параметры) и, если надо, указания, куда поместить результаты работы процедуры (выходные параметры).
Существует два способа передачи данных через список параметров из вызывающей программы в процедуру. Первый способ заключается в том, что процедуре передается некоторое данное в виде его значения, например, если данное числового типа, передается само число. Второй способ заключается в том, что передается не значение данного, а адрес ячейки, где это данное находится (говорят, что передается имя переменной). Таким образом, параметры могут передаваться по значению и по имени. В каких случаях какой способ следует использовать? Обычно входные параметры передаются в процедуру по значению, а выходные – всегда по имени.
Есть некоторые особенности при передаче массивов (и других составных данных большого размера) в качестве фактических параметров. Даже если массив представляет собой входные данные и не меняется в процессе выполнения процедуры, его обычно передают по имени, так как это требует передачи только адреса начала массива, а не копии всего массива, как это потребовалось бы при передаче массива по значению. Кроме того, массив основной программы (фактический параметр) и массив в списке формальных параметров должны иметь один и тот же тип – т.е. должен использоваться один и тот же явный описатель.
Отметим, что когда параметры передаются по имени, они занимают в памяти по 4 байта. Подробнее об этом смотри лабораторную работу № 9.
Примеры написания списков формальных и фактических параметров:
..(A,B,C:real;VAR X1,X2:real;VAR N:integer); – формальные,
..(0.762,Alfa,C[3]-1.2,X,Y,Num); соответствующие фактические.
Для передачи массива в процедуру:
TYPE
Vect = array[1..10] of real;
Mas5x8 = array[1..5,1..8] of integer;
...
VAR
C1,C2: Vect;
A: Mas5x8;
Metod: Integer;
...
PROCEDURE GetMatr(M:integer; Var X,Y:Vect;
Var Z:Mas5x8;...);
VAR A1,C1:integer;
...
Begin
<Операторы тела процедуры >
End;
FUNCTION MinValueMatr(Var Z:Mas5x8; M,N:integer)
:Integer;
VAR MinZ, I, j:integer;
Begin
<Операторы тела функции >
MinValueMatr:= MinZ;
End;
BEGIN
<Операторы основной программы >
...
GetMatr(0, C2, C1, A,...); {обращение к процедуре}
...
If MinValueMatr(A,5,7) div 2 < 3 then {обращение к функции}
...
END.
Разбор контрольного варианта
Дата публикования: 2014-11-03; Прочитано: 497 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!