Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 Процедуры и функции.doc
Скачиваний:
4
Добавлен:
06.12.2018
Размер:
145.92 Кб
Скачать

2.5 Формальные параметры процедур и функций

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

- параметры-значения (передача параметров по значению);

- параметры-переменные (передача параметров по ссылке);

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

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

3 Примеры Pascal-программ использующих процедуры и функции

3.1 Постановка задачи 1

При известных значениях a, b, c и натуральных n, m вычислить значения функции

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

3.1.2 Программы

а) программа с процедурой “Procedure”

program prog1;

var a, b, c, y, y1, y2, y3:real;

n, m: byte; {глобальное описание данных}

procedure step (x:real; n:byte; var y:real); {процедура вычисления ;

x, n – параметры значения; y – параметр переменная}

var i:byte; {локальное описание данных}

begin {начало локального блока}

y:=1;

for i:=1 to n do;

y:=y*x;

end; {конец локального блока}

begin {начало глобального блока}

writeln (‘введите исходные данные a, b, c, n, m’);

readln (a, b, c, n, m);

step (a, n, y1); {1-е обращение к процедуре Step}

step (b, m+1, y2); {2-е обращение к процедуре Step}

step (c, 10, y3); {3-е обращение к процедуре Step}

y:= (y1+y2)/y3;

writeln (‘y=’, y);

end. {конец глобального блока}

б) программа с процедурой Function

program prog2;

var a, b, c, y, y1, y2, y3:real;

n, m: byte; {глобальное описание данных}

function step (x:real; n:byte; var y:real); {процедура вычисления ;

x, n – параметры значения; y – параметр переменная}

var p:real, i:byte; {локальное описание данных}

begin

p:=1;

for i:=1 to n do;

p:=p*x;

step:=p; {имени функции присваивается значение результата}

end; {конец локального блока}

begin {начало глобального блока}

writeln (‘введите исходные данные a, b, c, n, m’);

readln (a, b, c, n, m);

y:=(step(a,n)+step(b,m+1))/step(c, 10);

writeln (‘y=’, y);

end.

3.2 Постановка задачи 2

При известных значениях a, b, t, r вычислить значение функции:

3.2.1 Программа

program prog3;

var a, b, t, r, y:real;

n, m: byte;

function kv (c, d:real):real;

begin

kv:=sqr(c)+sqr(d); {kv:=c*c+d*d:}

end;

begin {начало глобального блока}

writeln (‘введите исходные данные a, b, t, r’);

readln (a, b, t, r);

y:=sqr(kv(a, b))*kv(2, r/5)/kv(1, 1-t);

writeln (‘y=’, y:12:5);

end.

3.3 Постановка задачи 3

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