|
Begin
p:=(aa + bb + cc) / 2;
s:=sqrt (p * (p - aa) * (p - bb) * (p - cc))
End;
Begin
Readln (a, b, c, d, e, f);
Treug0(a, b, c, s1); treug0(a, d, e, s2);
Treug0(b, e, f, s3); treug0(c, f, d, s4);
write ('поверхность равна ', s1 + s2 + s3 + s4)
End.
В главной программе предусмотрены четыре обращения к процедуре treug0 (по числу граней пирамиды). Список её формальных параметров состоит из трёх входных параметров aa,bb, cc и одного выходного – s.
При первом обращении к процедуре в ячейку s будет записан адрес переменной s1, а в ячейки aa, bb и cc – значения переменных a, b и c. Результат выполнения процедуры (площадь треугольника со сторонами a, b и c) будет записан в ячейку s1.
Таким образом, главная программа получит доступ к результату, вычисленному в процедуре, и использует его в вычислении площади поверхности пирамиды. После выполнения процедуры значения переменных aa, bb и cc будут «забыты».
Остальные обращения к процедуре treug0 будут выполнены аналогично.
Функции
Функция, будучи аналогичной процедуре, отличается от нее тем, что результатом ее выполнения является только одно значение, которое возвращается в точку вызова. Второе отличие состоит в том, что имя функции может использоваться в выражении в качестве операнда.
Для возврата в главную программу вычисленного функцией значения в теле функции необходимо предусмотреть хотя бы один оператор присваивания, в котором слева от символа ’ :=’ ставится имя функции, а справа – выражение, вычисляющее её значение.
Тип значения, вычисляемого функцией, задаётся в её заголовке, имеющем вид
function имя функции (список форм. параметров): тип результата;,
Пример 5.4. Вычисление площади треугольника (см. пример 5.2) оформить в виде функции.
function treug1(aa, bb, cc: real): real;
Var
P: real;
Begin
p:=(aa + bb + cc) / 2;
treug1:=sqrt(p * (p - aa) * (p - bb) * (p - cc))
End;
Обращение к функции аналогично обращению к процедуре, но самостоятельным оператором не является. В качестве операторов вызова функции используют операторы, содержащие выражения, например, оператор присваивания, условный оператор или процедуру вывода. При этом обращение к функции должно входить в выражение в качестве его операнда.
Пример 5.5. Используя функцию treug1 (пример 5.4), решить задачу, приведённую в примере 5.3 (т.е. вычислить площадь поверхности пирамиды).
var a, b, c, d, e, f, s: real;
function treug1(aa, bb, cc: real):real;
var p: real;
Begin
p:=(aa + bb + cc) / 2;
treug1:=sqrt (p * (p - aa) * (p - bb) * (p - cc))
End;
Begin
Readln (a, b, c, d, e, f);
s:=treug1(a, b, c) + treug1(a, d, e) + treug1(b, e, f) + treug1(c, f, d);
writeln ('s= ', s:10:2)
End.
Оператором вызова служит оператор присваивания. Операндами его арифметического выражения являются четыре обращения к функции.
Приложение 1
Дата добавления: 2015-07-18; просмотров: 69 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Treug(1.2, 2.3, 1.5); | | | Стандартные функции PASCAL |