Лекция: Параметры-переменные

Параметры-переменные в заголовке подпрограмм предваряются словом VAR, например,

Procedure PRIM (var x,y:real);

Здесь формальные параметры х и у – параметры-переменные.

В этом случае значение параметров возвращаются после выполнения процедуры основной программе. Или, говоря другими словами, являются выходными параметрами.

!!! Тип фактического параметра-переменной должен совпадать с типом формального параметра.

Возможна смешенная форма.

Procedure PRIM (var x,y:real; z: real);

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

 

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

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

Поясним это на примерах.

 

Пример

Необходимо в виде подпрограммы оформить вывод элементов одномерного массива на экран.

 

Рассуждения

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

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

 

Type

mas: array[1…100] of real;

….

procedure Vivod (A:mas, kol:byte);

{напомним, что здесь необходимо предварительное описание типа Массив}

Begin

for i:=1 to kol do

write(A[i]:5:2,’ ‘);

End;

Пример

Необходимо в виде подпрограммы оформить ввод элементов одномерного массива.

Рассуждения.

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

2. Параметрами процедуры будут имя массива и количество элементов массива. Количество элементов массива введем в основной программе, поэтому этот параметр необходимо подать на вход (передать) процедуре. Имя массива также необходимо передать процедуре. Однако, если количество элементов известно основной программе (так как ввод этого значения произведется в основном блоке), то значения элементов массива необходимо будет вернуть (передать) в основную программу процедуры. Следовательно, параметр – количество элементов массива – должен быть параметром-значением, а параметр – массив параметром-переменной.

 

Type

mas: array[1…100] of real;

….

procedure Vivod (A:mas; kol:byte);

{обратим внимание, здесь параметры различных типов в отличии от предыдущего примера разделены точкой с запятой}

Begin

for i:=1 to kol do

Begin

write(‘ Ведите‘, i, ‘элемент массива’ );

readln(A[i]:5:2,’ ‘);

End;

End;

……

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

……..

write(‘ Ведите количество элементов массива’ );

еще рефераты
Еще работы по информатике