Программирование с использованием функции

Пример 2

PROGRAM AL;

VAR A,B,C:REAL;

FUNCTION FI (X :REAL):REAL;

BEGIN

F:=X*X-2*X+1.5;

END;

BEGIN

READ (A,B,C);

Z:=(F(A)+F(B))/F(C);

WRITE (Z);

END.

 

В программе описана функция с именем F, вещественного типа (REAL). В качестве формального параметра использована переменная X , вещественного типа. Обращения к функции F(A),F(B) и F(C) выполнены в операторе присваивания, здесь A,B,C -фактические параметры. В результате выполнения этого оператора переменной Z будет присвоено численное значение выражения:

A2-2A+1,5+B2-2В+1,5

C2-2C+1,5

При выполнении происходит замещение формальных параметров фактическими значениями

 

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

 

Пример 3.Вычислить значение функции Z = ak - bm

при а= 7,8; k=5; b=5,7; m=8.

Вычисление степени xn оформим в виде функции.

Анализ задачи показывает, что в ней нужно два раза выполнить одинаковые по структуре вычисления - расчет степени вещественного числа с разными показателями степени. Поэтому здесь для упрощения решения задачи можно использовать вычислительный процесс с применением подпрограммы. Окончательное вычисление функции Z осуществляется в основной программе. В подпрограмму вынесем участок вычисление степени, обозначим его ST, а используемые в ней аргументы, т.е. формальные параметры, обозначим X и N. Известно, вычисление значения y=xn (у= x*x*x*...*x) осуществляется в цикле и по сути есть накопление произведения. Для организации расчета наряду с формальным параметром понадобятся вспомогательные (локальные) переменные I и Y.

Локальными (местными) называются вспомогательные переменные, используемые внутри только подпрограммы. Подробнее о них поговорим ниже (п.5).

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

Рис.A Схема алгоритма к примеру 3

Программа может выглядеть след. образом:

 

PROGRAM STUD;

VAR Z,A,B: REAL;

K,M: INTEGER;

FUNCTION ST(X:REAL; N: INTEGER): REAL;

VAR Y: REAL;

I: INTEGER;

BEGIN

Y:=1;

FOR I:=1 to N do

Y:=Y*X;

ST:=Y;

END;

BEGIN

READ (A,B,K,M);

Z:= ST(A,K) - ST(B,M);

WRITELN(Z);

END.

 

В программе STUD дважды вызывается функция ST из описательной части. В теле функции произойдет замена формальных параметров X и N на фактические A и K при первом вызове и на B и M при втором. Затем, выполняется совокупность действий, предусмотренных операторами функции, и в программу будет возвращен результат. В подпрограмме наряду с формальными параметрами X и N использованы локальные переменные Y и I.

 

Пример 4. Вычислить площадь фигуры, состоящей из 3-х треугольников (см. рис. 2), стороны которых известны.

 

 

Площадь треугольника стороны которого a, b и c, а полупериметр p можно вычислить по формуле Герона:

Sтр =

Рис.B. Многогранник

Для вычисления площади многогранника, изображенного на рис.2, надо либо 3 раза использовать формулу Герона, либо оформить вычисление площади в виде процедуры или функции и обращаться к ней 3 раза. Схему алгоритма см. на рис.3; программа, в которой формула Герона оформлена как функция Str, приведена ниже.

Program pl;

var a,b,c,d,e,f,k,Sfig : real;

Function Str(a,b,c : real) : real;

var p : real;