Параметры-переменные.
При передаче параметров-переменных в подпрограмму передаются их адреса в порядке, объявленном в заголовке подпрограммы, поэтому подпрограмма может влиять на значения параметров и изменять их.
Параметры-переменные в заголовке подпрограммы записываются так же, как параметры-значения, но перед именем параметра записывается слово VAR.
Если параметров несколько, то действие слова VAR распространяется на переменные после этого слова до ближайшей точки с запятой.
Например: Ввести вектор А. Сформировать на его базе вектор В, каждый элемент которого равен элементу а[i] возведенному в степень i/10 и вывести его на печать.
Program Primer;
Uses Crt, printer;
Const max =100;
Type vector: array [1..max] of real;
Var
a, b:vector;
j,n:integer;
FUNCTION X_V_ST_Y(x,y:real):real;
BEGIN
X_V_ST_Y=exp(y*ln(x));
END;
FUNCTION ASK_YN:boolean;
Var
ch:char;
BEGIN
ASK_YN:=false;
Write(‘ (Y / N) ‘);
REPEAT ch:= read key;
until up case (ch) in [‘Y’, ‘N’];
if ((ch=’Y’) or (ch=’y’) then ASK_YN:= TRUE;
END;
FUNCTION ASK_PRINTER:boolean;
BEGIN
ASK_PRINTER:=False;
Write(‘Хотели бы вы вывести данные на принтер’);
If (ASK_YN=True) then ASK_PRINTER:=True;
END;
РROCEDURE WOD_VECT( Var v:vector; Var n:byte);
Var
i:byte;
BEGIN
CLRSCR;
Writeln (‘Введите значение n<100’);
Readln(n);
for i:=1 to n do
BEGIN
Write (‘Введите’, i:3, ‘-й элемент‘);
Readln(v[i]);
END;
END;
PROCEDURE OUT_VECT( V:vector;Var n:byte);
Var
i:byte;
file_out:txt;
BEGIN
if (ASK_PRINTER) then
Asiggn(file_out, ‘prn’0 else
Asiggn( fl - out, ‘can’);
for i:=1 to n do
BEGIN
if (i mod 10) =0 then
Writeln(fl -out, v[i]:8:5)
else Write (fl-out,v[i]:8:5)
END;
END;
BEGIN
WOD_VECTOR(A,N);
for j:=1 to n do
BEGIN
B[j]:=X_V_ST_Y(a[j]), j /10.0);
OUT_VECT(B,N);
END;
END.
Дата добавления: 2015-01-13; просмотров: 659;