Скачиваний:
53
Добавлен:
10.02.2014
Размер:
117.25 Кб
Скачать

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

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

  • Параметры-значения;

  • Параметры-переменные.

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

procedure S1(M:real);

function S2(c: real; x:integer): real;

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

Пример:

program primer8;

var A,B:real;

procedure Sum(x,y:real);

begin

x:=x*x;

y:=y*y;

writeln('Сумма квадратов=',x+y);

end;

begin

A:=1.5;

B:=3.4;

Sum(A,B);

end.

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

procedure S1(var M,N: integer; var Y: real);

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

Пример:

program primer9;

var A,B:real;

SumAB,SubAB:real;

procedure Sum_Sub(x,y:real; var Sum,Sub:real);

begin

Sum:=x*x+y*y;

Sub:=x*x-y*y;

end;

begin

A:=1.5;

B:=3.4;

Sum_Sub(A,B,SumAB,SubAB);

writeln('Сумма квадратов =',SumAB);

writeln('Разность квадратов =',SubAB);

end.

Пример. Найдите суммы элементов массивов A(5) и B(7).

program primer1;

type mas=array [1..100] of integer;

var sumA,sumB,y:integer;

a,b:mas;

procedure VVOD(n:byte; var x:mas);

var i:integer;

begin

writeln('Введите ',n,' чисел);

for i:=1 to n do read(x[i]);

end;

procedure Summa(n:byte; x:mas; var sum: integer);

var i,S:integer;

begin

S:=0;

for i:=1 to n do S:=S+x[i];

Sum:=S;

end;

begin

VVOD(5,a);

VVOD(7,b);

Summa(5,a,sumA);

Summa(7,b,sumB);

writeln('Sa= ',sumA);

writeln('Sb= ',sumB);

end.

Пример. Вычислить суммы всех элементов матриц А(n,n), B(m,m).

program primer2;

uses crt;

var T: array [1..10,1..10] of integer;

n,m: byte;

s: integer;

procedure VV(l: byte);

var i,j: byte;

begin

writeln('Vvedite massiv ',l,'x',l);

for i:=1 to l do

for j:=1 to l do read(T[i,j]);

end;

procedure Summa(l: byte; var s: integer);

var i,j: byte;

begin

S:=0;

for i:=1 to l do

for j:=1 to l do S:=S+T[i,j];

writeln('S= ',S);

end;

begin

clrscr;

writeln(Введите n,m');

readln(n,m);

VV(n);

VV(m);

Summa(n,s);

Summa(m,s);

end.

Соседние файлы в папке методические указания для лабораторных работ