Квант
Разное

Заочная школа программирования

Звенигородский Г. А.

53

Заочная школа программирования

Урок 6: Описание и вызов процедур на Рапире

На этом уроке мы продолжаем наше изучение учебно-производственного языка программирования Рапира, начатое на пятом уроке («Квант», № 1).

Описание процедуры в Рапире определяется такой диаграммой:

Заголовка следующит операторы, разделяемые точками с запятой.

Вот пример описания процедуры на Рапире:

ПРОЦ ВЫБОР А В; А+В->С; А*В->Д;
ЕСЛИ С>Д ТО С->Д ИНАЧЕ Д->С ВСЕ;
КНЦ;

Для вызова процедуры в Рапире есть два способа. Применяя первый способ, следует написать в качестве очередного представления имя процедуры и после него поставить крулые скобки. Если у процедуры есть параметры, то их значения перечисляются через запятую внутри этих скобок, как и в Робике, например:

ВЫБОР (10,X+5);

Если параметров нет, скобки при этом способе вызова все равно обязаны:

СБРОС ( );

Если процедура имеет не более одного параметра, ее можно вызвать вторым способом: поставить перед именем процедуры точку. Значение параметра, если он есть, указывается перед точкой:

СБРОС; 5. КРУГ;

Описание начинается со слова ПРОЦ (вместо слов ЗАПОМНИТЬ ПРОЦЕДУРУ в Робике), после которого указывается имя процедуры. Затем перечисляются, если это необходимо, имена параметров. Отделяются они друг от друга пробелами; скобки и запятые, используемые в Робике, здесь не нужны.

Дальше может следовать стрелка =>, после которой указывается еще одно имя — так называемое имя-результат. На этом уроке мы будем рассматривать процедуры, в которых имя-результат не использовется. Поэтому разбор этой конструкции мы отложим до следующого урока.

Слово ПРОЦ, имя процедуры, параметры и имя-результат образуют так называемый заголовок процедуры. После

В Рапире предусмотрено большое число стандартных процедур, которые можно вызвать в любой программе. К их числу принадлежит, в частности, процедура ПЕЧАТЬ, у которой может быть любое число параметров. В результате использования этой процедуры значения всех параметров будут отпечатаны на новой строке, вплотную друг к другу (точно так же, как в предписании ОТПЕЧАТАТЬ языка Робик). Стандартными являются и все процедуры графической системы Шпага, описанной в статье А. Салиховой и Н. Соколовой в предыдущем номере журнала.

Рассмотрим некоторые примеры:

1°. Предположим, что нам нужно составить программу на Рапире, использ-

54

зуя процедуры системы Шпага, для изобранения вот такое робота:

ШИФР 211500000055 СМОГ 61М5 ЛИСТ 7
ДАТА 22.06.79 63 ВРЕМЯ 19.49.31

Можно, разумеется, сделать это при помощи одних только лучей и подводов. Однако в этом случае программа получится довольно-такки большой. Ее можно существенно сократить, если заменить, что на рисунке многократно повторяется одна и та же фигура — прямоугольник. Поэтому достаточно один раз описать процедур ПРЯМ, чтобы затем нарисовать любой нужный прямоугольник. У приведенной ниже процедуры четыре параметра: X, Y, B и Д, X и Y — это координаты левого нижнего угла, В — высота и Д — длина прямоугольника:

ПРОЦ ПРЯМ X Y В Д;
П(X;Y); Л(X+Д,Y); Л(X+Д; Y+B);
Л(X,Y+B); Л(X,Y); КНЦ;

Теперь программа, выполняющая рисунок, может быть записана очень просто:
Р(50,50); ПРЯМ(10,10,30,30);
ПРЯМ(20,15,5,10); ПРЯМ(23,23,4,4);
ПРЯМ(15,30,5,7); ПРЯМ(28,30,5,7);
ПРЯМ(17,31,3,3); ПРЯМ(30,31,3,3);
.КОНЕЦ;

2°. Следующая задача — заполнить размер 100 на 100 мм прямоугольной сеткой с шагом 5 мм по вертикали и по горизонтали (такая сетка может служить, например, координатной сеткой). Здесь удобно использовать цикл:
Р(100,100); 5—>A; ПОКА A=<100::
П(A,0); Л(A,100); П(0,A); Л(100,A),
A+5—>A ВСЕ; .КОНЕЦ;

3°. Другой пример использования цикла — печатание таблицы умножения:
2—>A; 2—>B;
ПЕЧАТЬ (‘ТАБЛИЦА УМНОЖЕНИЯ’),
ПОКА A=<10:: ПОКА B=<10::