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

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

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

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

begin

p:= (a+b+c)/2;

Str:= SQRT(p*(p-a)*(p-b)*(p-c));

end;

begin

write(’ введите стороны: a,b,c,d,e,f,k ’);

readln (a,b,c,d,e,f,k );

Sfig:= Str(a,b,c) + Str(b,d,e) + Str(c,f,k);

writeln (’ площадь фигуры : ’ , Sfig );

end.

Рис. C Схема алгоритма примера 4

При каждом обращении к функции Str вычисляется площадь одного из треугольников, составляющих многогранник, поэтому именно стороны этого треугольника перечисляются в скобках. При 1-м обращении происходит замена формальных параметров a,b,c на фактические a,b и c соответственно. Совпадение имен формальных и фактические параметров случайно. При 2-м обращении происходит замена формальных параметров a,b,c на фактические b,d и e соответственно; при 3-м обращении - на c,f и k соответственно. В подпрограмме используется локальная переменная p.