НОД

Тело описанной выше процедуры НОД заключено в специальные скобки НАЧ (начало) и КОН (конец). В теле процедуры обязательно присутствие оператора, выполняющего присваивание результата (или результатов, если их несколько) их носителям, объявленным в заголовке. В данном случае таким оператором является оператор присваивания N:=X. В частном случае процедура может и не иметь параметров.

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

На месте фактических аргументов могут стоять произвольные арифметические выражения (в данном случае важно только чтобы их значениями были целые положительные числа). Круглые скобки в команде вызова присутствуют и тогда, когда вызывается процедура без параметров, например:

СОРТИРОВКА ( )

Описание процедур-функций в Рапире отличается от описания процедур заголовком: вместо слова ПРОЦ пишется ключевое слово ФУНК. В процедуре-функции список параметров всегда включает только аргументы, поэтому они не снабжаются стрелками. Значение функции в теле всегда присваивается специальной переменной с зарезервированным именем ЗНАЧ (значение).

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

Над литерными величинами в Рапире разрешены операции: конкатенация (склеивание), определение длины и вырезка. Конкатенация обозначается знаком +  Длина текста Т записывается как ДЛИН (Т) и имеет своим значением число, показывающее количество символов в Т (включая пробелы). С помощью операции вырезки можно вырезать участок текста, для которого указываются номера начального и конечного символа. Например, после выполнения команд

Р: = ПРОГРАММИРОВАНИЕ Q: = Р 4:8; R: = Р 7 : 9

значением текста Q будет слово ГРАММ, а текста R — слово МИР. Ниже приведено описание функции ОБРАЩЕНИЕ, использующей операции над литерными величинами.

Функция ОБРАЩЕНИЕ преобразует текст так, что его первый символ становится последним, второй — предпоследним и т. д.

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

М: = <11, НАТРИЙ, NA, 22.991>

переменная М станет иметь своим значением кортеж, причем М 1 =11, М 2 = НАТРИЙ, М 3 = NA, М 4 =22.991. Длина кортежа К обозначается ДЛИН (К). Кортеж, не содержащий ни одного элемента, называют пустым кортежем: < >; ДЛИН (< >)=0. Конкатенация (склеивание, сложение) кортежей аналогична конкатенации литерных величин. После выполнения команд

А: = <2, ФЕВРАЛЬ> В: = <3, МАРТ> С: = А + В

значением С будет кортеж <2, ФЕВРАЛЬ, 3, МАРТ>. К кортежам применима и операция вырезки. Возьмем, к примеру, только что полученный кортеж С; тогда С 2:3 будет иметь своим значением кортеж <ФЕВРАЛЬ, 3>, а С 4:4 — кортеж <МАРТ>, содержащий один элемент.

Очевидно, что кортежи, состоящие из элементов одного типа,— это аналоги одномерных массивов. Но элементами кортежей в Рапире могут быть, в свою очередь, кортежи. Это позволяет при необходимости конструировать массивы произвольной размерности.

Контрольные вопросы

1. В чем особенности конструирования имен в Рапире

2. Как записываются в Рапире команды ветвления и цикла

3. В чем заключается принцип локализации имен в процедурах

4. В чем суть новой структуры данных — кортежа Как с п мощью кортежей в Рапире можно создавать массивы нужной раз мерности

Метки: , ,

Записи по теме

Комментировать

Введите код