Лабораторная работа № 8

ПОДПРОГРАММА-ФУНКЦИЯ

Цель работы – составление программ с использованием подпрограмм-функций; усвоение принципа локализации.

Постановка задачи: вычислить значение Y, написав для его вычисления удобные функции; необходимые для вычисления значения ввести из текстового файла.

Теоретические сведения

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

Структура описания функции имеет такой вид:

function <имя функции>[(<список формальных параметров>)]:<тип>;

[<раздел описания>]

Begin

<перечисление операторов и программных единиц>

End;

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

<имя функции>:= <выражение>;

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

В качестве примера рассмотрим применение подпрограммы-функции к задаче 1 из лабораторной работы № 7.

Program Min3;

{Описание переменных}

Var a,b,c, {исходные данные задачи}

{Описание функции}

Function Min (x,y: real): real; { min – результат функции }

Begin

If x < y then min:= x

else min:= y

End;

Begin

{Ввод исходных данных задачи}

Writeln(‘Введите три числа’);

Readln(a,b,c);

{Вычисление и вывод результата}

Writeln (‘Наименьшее из введенных чисел - ’, min(min(a,b),c);

End.

Как видно из примера, для рассматриваемой задачи использование подпрограммы-функции позволяет наиболее компактно записать алгоритм. Результат сравнения переменных a и b сразу используется как фактический параметр функции при сравнении его с переменной с. Результат второго сравнения сразу выводится на печать.

Пример:

при x = 3.5; z = 10-5; b =4.

Программа расчета:

program lab_8;

var x1, z1, b1: real; {исходные данные}

f: text;

{функция для вычисления степени p положительного числа a }

function pov(a, p:real): real;

begin

pov:=exp(p*ln(a))

end;

{функция для вычисления выражения задачи}

function y(x,z,b:real): real;

var

ch,zn,y:real; {числитель, знаменатель дроби, результат }

begin

ch:=exp(x)+pov(z,6)-4.5E2*sqrt(x); {числитель для Y}

zn:=pov(z,x)+pov(b,3.5); {знаменатель}

y:=ch/zn; {значение Y }

end;

BEGIN

{ввод исходных данных из файла}

Assign(f, ‘inp.txt’);

Reset(f);

Readln(f,x1,z1,b1);

Close(f);

{вычисление y и вывод результата на экран}

WriteLn(' Arithmetic expression: Y=',y(x1,z1,b1):8:4);

END.

Файл исходных данных Inp.txt:

3.5 1.0e-5 4

Результаты расчета:

Arithmetic expression: Y= -6.3184

Варианты заданий взять из лабораторной работы № 2.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: