- •Элементы технологии обработки информации с помощью эвм. Модели решения функциональных и вычислительных задач.
- •Алгоритмический язык Pascal. Алфавит языка, лексика, структура программы.
- •Общая структура Pascal-программы
- •Выражения. Операции.
- •2. Описание двумерных массивов
- •5. Организация сложных циклов.
- •2. Процедуры и функции. Блочная структура программы. Параметры.
- •Организация связи основной программы с подпрограммой
- •1. Структура подпрограмм
- •2. Функция
- •2.1. Структура функции
- •2.2. Обращение к функции
- •2.3. Программирование с использованием функции
- •3. Локальные и глобальные переменные.
- •4. Параметры - массивы.
- •5. Процедуры
- •5.1. Структура процедуры
- •5.2. Обращение к процедуре
- •5.3. Параметры-переменные и параметры-значения
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.