В практике программирования часто встречаются ситуации, когда походу выполнения программы приходится производить одни и те же вычисления или действия. Чтобы исключить повторение одинаковых записей и сделать тем самым программу проще и понятнее, можно выделить эти повторяющиеся фрагменты в самостоятельную часть программы, которая может быть использована многократно по мере необходимости. Такая автономная часть программы, реализующая определённый алгоритм и допускающая обращение к ней из различных частей программы, называется подпрограммой.
Описание процедур без параметров.
Структура любой подпрограммы почти буквально повторяет структуру всей Pascal-программы, и выглядит следующим образом:
Var
<список переменных>: <тип >;
Procedure <имя процедуры>;
Uses <имена модулей>;
Label <имена меток>;
Const <имена констант>;
Type <имена типов пользователя>;
Var <имена локальных переменных>;
<раздел объявления подпрограмм>;
Begin
<операторы подпрограмм >;
End;
Begin
<операторы Pascal-программ >;
End.
Вызов процедур без параметров
Вызов процедуры без параметров осуществляется по имени данной процедуры в теле программы. Имя процедуры воспринимается как оператор. При выполнении этого оператора выполняется вся подпрограмма.
Пример использования процедур без параметров.
Программа, текст которой приведён ниже, выполняет рисование 15 прямоугольных треугольников расположенных горизонтально. Рисование прямоугольного треугольника оформлено в виде процедуры TRG. Треугольник рисуется от текущего указателя, который является правым нижним углом данного треугольника.
PROGRAM ex_25_1;USES Graph,Crt;VAR gd,gm,i: integer; procedure TRG; begin linerel(40,0); linerel(-40,-40); linerel(0,40); end;BEGIN gd:=vga; gm:=vgahi; Initgraph(gd,gm,''); if Graphresult=grok then begin MoveTo(10,200); for i:=1 to 15 do begin MoveRel(45,0); TRG; end; Repeat Until KeyPressed; end;END.Основная схема процедуры с параметром.Procedure<>(a1,a2,..an:);Var…Begin<>;End;Фактические переменные – это переменные, указывающие при обращении к ПП; значение фактических переменных автоматически передаются в переменные находящиеся на месте формальных параметров.Формальные параметры – это переменные, расположенные в ПП и определяющие как будут происходить обработка конкретных значений этих параметров.Глобальные переменные – это переменные, которые объявлены основной части.Локальные переменные – это переменные, которые объявлены в процедурах и функциях.Пример 1.PROGRAM EX_26_2;{Программа рисования 6-ти различных прямоугольников}USES Graph, Crt;LABEL Out;VAR Gd,Gm: integer; Procedure Sq(x, y, a, b: integer); {Sq - процедура рисования прямоугольника. Для её выполнения необходимы дополнительные данные, которые передаются в процедуру с помощью параметров-значений:x,y - координаты левого нижнего угла прямоугольника;a,b - высота и ширина прямоугольника.} Begin MoveTo(x,y); LineRel(a,0); LineRel(0,b); LineRel(-a,0); LineRel(0,-b); End;BEGIN Gd:=Detect; InitGraph(Gd,Gm,''); If GraphResult<>0 then Goto Out; Sq(10,60,110,120); Sq(120,70,120,130); Sq(130,80,130,140); Sq(40,90,140,150); Sq(150,100,150,160); Sq(60,110,130,140); Repeat Until Keypressed; CloseGraph; Out:END.
Задания для самостоятельного выполнения
Нарисуйте на экране свои инициалы, используя линии разного стиля, цвета и толщины. Изображение каждой буквы оформить с помощью отдельной процедуры 8.
Нарисовать на экране ромб из разноцветных заполненных ромбиков. Диагонали ромба = 10 ромбикам.