Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции программирование.doc
Скачиваний:
15
Добавлен:
01.03.2025
Размер:
1.01 Mб
Скачать

Вспомогательные алгоритмы

Если в нескольких местах программы встречаются участки с одинаковыми действиями, то можно вынести такой участок из раздела команд в раздел описаний и дать ему имя, а в тех местах, где он встречался в программе, оставить только вызов по имени. Такой, вынесенный отдельно, участок программы, имеющий имя, называется вспомогательным алгоритмом или подпрограммой. Подпрограмму можно вызывать не только из основной программы, но и из других подпрограмм, описанных ниже данной подпрограммы. Выносить в подпрограмму нужно не просто любую последовательность команд, а такой участок программы, который выполняет осмысленное действие. Название подпрограммы должно информировать об этом действии. Правила составления имён подпрограмм – такие же, как и для имён переменных.

Различают два вида подпрограмм: процедуры и функции. Процедура – это синоним слова «команда». Она вызывается по имени Имя функции нужно использовать в выражении, как переменную. Паскаль вместо имени функции подставляет результат её вычислений. Например: x:=2*gipotenuza(10,18)+y;

Чтобы уточнить, каким образом должна работать подпрограмма, нужно при вызове передать ей информацию. Для этого после имени подпрограммы в скобках перечисляют конкретные значения, которые нужно передать – фактические параметры. Например, если мы разработали процедуру, которая рисует домик, мы при вызове должны указать в качестве параметра базовые координаты и размеры домика: domik(100,400,150,180);

В предыдущем примере мы передавали через параметры катеты треугольника, а функция вычисляла по ним гипотенузу. Вместо чисел в качестве фактических параметров можно поместить переменные или выражения: domik(x,y,a,1.5*a); . Необходимо, чтобы к моменту вызова эти переменные уже были вычислены.

В описании подпрограммы в скобках после имени нужно описать переменные, в которые будут помещены данные, передаваемые при вызове, – формальные параметры.

Кроме параметров, в подпрограммах могут использоваться и другие переменные. Они создаются в момент вызова подпрограммы и уничтожаются при выходе из неё, поэтому в основной программе и в других подпрограммах они неизвестны (так же, как и параметры). Такие переменные называются локальными (местными). Их описание находится после заголовка подпрограммы. Те же переменные, которые объявлены в разделе var самой программы, называются глобальными. Они могут быть использованы как в любой подпрограмме, описанной ниже этого объявления, так и в основной программе. Если в подпрограмме имеется локальная переменная, чьё имя совпадает с именем глобальной переменной, то на время работы подпрограммы глобальная переменная будет забыта, и подпрограмма работает со своей локальной переменной.

Р

. . .

procedure flower(xc,yc,r: integer);

var

n,x,y:integer;

alf:real;

begin

setbrushcolor(clyellow);

circle(xc,yc,r div 2);

setbrushcolor(claqua);

for n:=1 to 6 do

begin

alf:=2*pi/6*n;

x:=round(xc+3*r/4*sin(alf));

y:=round(yc-3*r/4*cos(alf));

circle(x,y,r div 4);

end;

end;

. . .

ассмотрим два примера:

Процедура рисует цветок по заданным координатам и радиусу.

Функция получает два катета и вычисляет гипотенузу прямоугольного треугольника

. . .

function gipotenuza(a,b: real): real;

var

c: real;

begin

c:=sqrt(sqr(a)+sqr(b));

gipotenuza:=c;

end;

. . .

Обратите внимание на слово real, стоящее в конце заголовка функции. Таким способом указывается тип результата, возвращаемого функцией.

Кроме того, обратите внимание на имя функции gipotenuza, которому присваивается результат расчётов. Именно так указывают, какая именно величина возвращается в качестве результата работы функции.

Кстати, использование переменной c в данном примере излишне. Можно было сразу использовать имя функции:

gipotenuza:=sqrt(sqr(a)+sqr(b));

Если необходимо завершить процедуру, не дойдя до её конца, используется команда exit.