Тема №10. Подпрограммы-процедуры

Тема №10. Подпрограммы-процедуры

Для выполнения каких-либо действий (а не вычислений значений) существуют подпрограммы-процедуры. Они также могут принимать параметры, как и подпрограммыфункции. Давайте сразу проиллюстрируем работу процедуры на примере графической программы.

В стандартной графической библиотеке нет процедуры, рисующей треугольники. Давайте создадим такую процедуру и проверим ее работу.

Program UseProc;

Uses GraphABC;

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.

Как мы видим, процедура Trianlge имеет шесть целочисленных параметров и вызывает функции трижды функции Line для соединения точек. Создав такую процедуру, мы можем использовать ее столько раз, сколько нам надо в главной программе.

Задание 10

1. Создайте еще несколько новых графических процедур, которые бы расширили возможность стандартной библиотеки (ромб, параллелограмм, и т.п.) (по 3-4 балла за каждую)

- 29 -

Модули (Units)

Вы, наверное, обратили внимание на неудобство, связанное с тем, что все подпрограммы (как процедуры, так и функции) размещаются перед главной программой. Хотелось бы разместить их в отдельную библиотеку. Такая возможность есть, её предоставляют модули.

Поместим описание процедуры Triangle в модуль MyGraph.

Unit MyGraph;

// Заголовок модуля. Имя файла модуля должно совпадать

// с именем модуля! Т.е. в нашем случае оно должно быть

// MyGraph.pas, иначе главая программа его не найдет!

Uses GraphABC; // Модули могут использовать другие модули

Procedure Triangle(x1,y1,x2,y2,x3,y3:integer);

// Эта процедура находится в модуле MyGraph

begin

line(x1,y1,x2,y2);

line(x2,y2,x3,y3);

line(x3,y3,x1,y1);

end;

end. // Этот оператор – завершение модуля.

Теперь главная программа будет выглядеть так:

Program UseProc;

Uses GraphABC, MyGraph; // Использование стандартного и собственного модуля

begin

SetWindowSize(500,500); // Эта процедура описана в GraphABC

Triangle (100,200,400,300,250,150); // Эта процедура описана в MyGraph

Triangle(10,20,30,40,50,10);

end.

Модули могут содержать неограниченное число процедур, функций, а также описаний глобальных переменных, констант (об этом позже).

Задание 10

2. Сформируйте модуль с вашими собственными графическими процедурами (5 баллов)

- 30 -

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Тема №9. Подпрограммы-функции

Из книги автора

Тема №9. Подпрограммы-функции При решении сложных задач разумно разбить алгоритм на несколько более простых составляющих. В языке Pascal существуют специальные средства для этого – подпрограммы. Есть два вида подпрограмм: процедуры и функции. Функция получает информацию


3. Процедуры и функции (подпрограммы)

Из книги автора

3. Процедуры и функции (подпрограммы) Подпрограммы позволяют разбить одну сложную программу на несколько более простых и решать эти отдельные задачи самостоятельно, возможно даже, что делать это будут разные программисты и в разное время. Готовую подпрограмму,


ЛЕКЦИЯ № 4. Подпрограммы

Из книги автора

ЛЕКЦИЯ № 4. Подпрограммы 1. Параметры подпрограмм В описании процедуры или функции задается список формальных параметров. Каждый параметр, описанный в списке формальных параметров, является локальным по отношению к описываемой процедуре или функции, и в модуле,


Стандартные подпрограммы

Из книги автора

Стандартные подпрограммы Общие подпрограммы procedure Swap<T>(var a, b: T); Меняет местами значения двух переменных function Milliseconds: integer; Возвращает количество миллисекунд с момента начала работы программы function MillisecondsDelta: integer; Возвращает количество миллисекунд с


Общие подпрограммы

Из книги автора

Общие подпрограммы procedure Swap<T>(var a, b: T); Меняет местами значения двух переменных function Milliseconds: integer; Возвращает количество миллисекунд с момента начала работы программы function MillisecondsDelta: integer; Возвращает количество миллисекунд с момента начала работы


Подпрограммы для работы с пером

Из книги автора

Подпрограммы для работы с пером Рисование линий осуществляется текущим пером. Доступ к свойствам текущего пера можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.Процедуры и функции для доступа к свойствам пера сгруппированы парами: если Prop -


Подпрограммы для работы с кистью

Из книги автора

Подпрограммы для работы с кистью Рисование внутренностей замкнутых областей осуществляется текущей кистью. Доступ к свойствам текущей кисти можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.Процедуры и функции для доступа к свойствам кисти


Подпрограммы для работы со шрифтом

Из книги автора

Подпрограммы для работы со шрифтом Вывод текста осуществляется текущим шрифтом. Доступ к свойствам текущего шрифта можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.Процедуры и функции для доступа к свойствам шрифта сгруппированы парами:


Подпрограммы блокировки рисования

Из книги автора

Подпрограммы блокировки рисования procedure Redraw; Перерисовывает содержимое графического окна. Вызывается в паре с LockDrawing procedure LockDrawing; Блокирует рисование на графическом окне. Перерисовка графического окна выполняется с помощью Redraw procedure UnlockDrawing; Снимает


Подпрограммы

Из книги автора

Подпрограммы Классический подход к повторному использованию состоит в том, чтобы создавать библиотеки подпрограмм. Здесь термин подпрограмма (routine) означает программный элемент, который может быть вызван другими элементами для выполнения некоторого алгоритма,


Атрибуты и подпрограммы

Из книги автора

Атрибуты и подпрограммы Любой абстрактный тип данных и POINT в частности характеризуется набором функций, описывающих операции применимые к экземплярам АТД. В классе, реализующем АТД, функции становятся компонентами (features) - операциями, применимыми к экземплярам класса.В


ТЕМА НОМЕРА: Как родилась эта тема

Из книги автора

ТЕМА НОМЕРА: Как родилась эта тема Автор: Владимир ГуриевОбычно мы стараемся придумать на первое апреля что-нибудь веселое, но последние несколько лет редакции и без первого апреля живется все лучше и веселее, так что настроения шутить у нас не было, и в тематическом