Пример 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;