При решении сложных задач разумно разбить алгоритм на несколько более простых составляющих. В языке Pascal существуют специальные средства для этого – подпрограммы. Есть два вида подпрограмм: процедуры и функции. Функция получает информацию от вызывающей программы через свои параметры. Параметры, описанные в заголовке функции, называются формальными параметрами. Параметры, указанные при вызове функции называют фактическими. Типы и число фактических параметров должны соответствовать типу и числу формальных параметров. Следующий пример иллюстрирует работу функций.
Program
Uses
// Описания функций, требующихся в программе
function
begin
cube:=x*x*x; // имени функции присваивается значение
end
function
begin
if
else if
else
end
// ==== Начало главной программы ==========
var a : real; // блок описания переменных
const a1 = -5.0; // блок описания констант (постоянных)
a2 = +5.0;
st = 0.5;
begin
a:=a1;
while
begin
writeln(a:4:1,cube (a):10:3,sign(a):3); // вызов функций
a:=a+st;
end
end
Обратите внимание, что внутри тела функции (заключенного в операторные скобки begin
… end) вы обязаны хотя бы один раз имени функции присвоить значение. В этой программе также используется новый материал, не связанный с функциями, – это константы. Значение констант задается через знак равенства (а не присваивания). Тип константы определяется из типа присваиваемого значения. Константы, в отличие от переменных, не могут менять свое значение.- 27 -
Рассмотрим еще один пример, в котором функция имеет два параметра разного типа.
Program
Uses
function
var i : integer; // локальные переменные r : real;
begin
r:=1.0;
for
power:=r; // результат присвоить имени функции
end
// ==== Начало главной программы ================
var i : integer; // блок описания переменных
begin
for
writeln(i:2,power (2.0,i):6:0);
end
В данном примере функция имеет два формальных параметра (типа real и типа integer), а также две локальных переменных. Имена локальных переменных действуют только внутри тела функции. Переменная i в главной программе, и переменная i внутри функции – это две разных переменных. При вызове функции первый фактический параметр соответствует первому формальному параметру. Второй параметр – второму.
Задание 9 1. Модифицируйте последний пример таким образом, чтобы функция power вычисляла правильно не только натуральные степени, но и отрицательные.
Напоминание:
x-n
= 1 / xn.Подсказка: следует использовать оператор if
, а также функцию abs(n), которая вычисляет модуль числа.(5 баллов)
2. Напишите функцию, вычисляющую факториал числа n! =1•2•3• ... •n.
Подсказка: ее несложно сделать, путем модификации функции power.
(5-8 баллов)
- 28 -
Тема №10. Подпрограммы-процедуры
Для выполнения каких-либо действий (а не вычислений значений) существуют подпрограммы-процедуры. Они также могут принимать параметры, как и подпрограммыфункции. Давайте сразу проиллюстрируем работу процедуры на примере графической программы.
В стандартной графической библиотеке нет процедуры, рисующей треугольники. Давайте создадим такую процедуру и проверим ее работу.
Program
Uses
Procedure Triangle(x1,y1,x2,y2,x3,y3:integer);
// Процедура рисует треугольник
begin
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x3,y3,x1,y1);
end
// Главная программа
begin
SetWindowSize(500,500);
Triangle(100,200,400,300,250,150);
Triangle(10,20,30,40,50,10);
end