Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль_конс_лек.doc
Скачиваний:
10
Добавлен:
07.12.2018
Размер:
404.99 Кб
Скачать

Параметры

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

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

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

Формальные параметры можно разбить на категории:

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

  • параметры-переменные;

  • параметры-процедуры;

  • параметры-функции.

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

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

Формальные параметры перечисляются через «;» и задаются в виде:

<имя параметра>:<тип> для параметров-значений;

var <имя параметра>:<тип> для параметров-переменных.

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

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

  • по количеству;

  • по порядку следования;

  • по типу.

Пример использования процедур с параметрами:

Для массивов А(5) и В(6) найти разность между суммами элементов:

Сумму найти в подпрограмме-процедуре.

Код программы:

Program Pp;

Uses crt;

Const n=6;

Type

TMas=array[1..n] of real;

Var

a, b:TMas;

i:byte;

Sa, Sb, y:real;

Procedure Sum_Mas(c:Tmas; k:byte; var s:real);

begin

s:=0;

for i:=1 to k do

s:=s+c[i];

end;

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

clrscr;

for i:=1 to 5 do

begin

write('Введите а[', i, ']=');

readln(a[i])

end;

for i:=1 to 6 do

begin

write('Введите b[', i, ']=');

readln(b[i])

end;

Sum_Mas(a, 5, Sa);

Sum_Mas(b, 6, Sb);

y:=Sa-Sb;

writeln('Результат=', y:6:3);

readkey

end.

Результаты работы программы:

Введите а[1]=4.5

Введите а[2]=2.7

Введите а[3]=4.6

Введите а[4]=1.2

Введите а[5]=-7.5

Введите b[1]=3.6

Введите b[2]=8.4

Введите b[3]=-5.1

Введите b[4]=-5.8

Введите b[5]=3.5

Введите b[6]=9.4

Результат=-8.500

Подпрограмма-функция

Подпрограмма-функция предназначена для вычисления какого-либо значения.

Описание функции начинается с заголовка:

function имя [(список_формальных_параметров)]:тип_возвращаемого_результата;

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

Для вызова функции следует в выражении, где необходимо использовать значение функции, указать имя функции со списком фактических параметров:

имя_функции [(список_фактических_параметров)]

Пример использования процедур с параметрами:

Для массивов А(5) и В(6) найти разность между суммами элементов:

Сумму найти в подпрограмме-функции.

Код программы:

Program Pp;

Uses crt;

Const n=6;

Type

TMas=array[1..n] of real;

Var

a, b:TMas;

i:byte;

y:real;

Function Sum_Mas(c:Tmas; k:byte):real;

var

s:real;

begin

s:=0;

for i:=1 to k do

s:=s+c[i];

Sum_Mas:=s

end;

begin

clrscr;

for i:=1 to 5 do

begin

write('Введите а[', i, ']=');

readln(a[i])

end;

for i:=1 to 6 do

begin

write('Введите b[', i, ']=');

readln(b[i])

end;

y:=Sum_Mas(a, 5)-Sum_Mas(b, 6);

writeln('Результат=', y:6:3);

readkey

end.

Результаты работы программы:

Введите а[1]=3

Введите а[2]=6

Введите а[3]=7.3

Введите а[4]=5.7

Введите а[5]=2.4

Введите b[1]=6.7

Введите b[2]=4.5

Введите b[3]=1.8

Введите b[4]=-4.7

Введите b[5]=-3.7

Введите b[6]=5.2

Результат=14.600

23