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::