1996 |
Рассматриваются два алгоритмических языка: Beta и Psi
(описания языков прилагаются ниже). Требуется перевести
программу с языка Beta на язык Psi. Результирующая программа
на языке Psi должна реализовывать тот же самый алгоритм,
что и исходная программа на языке Beta.
Пример возможного перевода:
Программа на языке Beta |
Одна из соответствующих ей программ на языке Psi |
10 N=5
20 SUM=SUM+N
35 N=N-1
40 IF N > 0 THEN WALKTO
70 TYPE Sum
999 END
|
DEF N, Var, C;
START
Var := 0; c := 1;
WHILE c < 6 DO
IF c = 1 THEN N:= 5; c:=c+1; FI;
IF c = 2 THEN Var:=Var+N; c:=c+1; FI;
IF c = 3 THEN N:=N-1; c := c+1; FI;
IF c = 4 THEN
IF N > 0 THEN c := 1; FI;
c := c+1;
FI;
IF c = 5 THEN Print (Var);
c := c+1;
FI;
OD;
FINISH
|
Примечания
- Текст исходной программы состоит не более, чем из
100 строк, а каждая строка содержит не более 80 символов.
- Текст исходной программы не содержит синтаксических ошибок.
- Программы на языке Psi, содержащие синтаксические ошибки,
на соответствие исходной программе проверяться не будут.
- Задача оценивается из 40 баллов. Решения задачи для случая,
когда в исходной программе отсутствуют операторы WALKTO,
также будут оцениваться.
- Время тестирования программы ограничено.
Описание языка Beta
- Программа на языке Beta состоит из последовательности
операторов; каждый оператор располагается в отдельной строке
и ему всегда предшествует метка (натуральное число ≤ 10000).
- Все метки различны и упорядочены по возрастанию,
оператор отделяется от метки пробелами.
- Имя переменной состоит из одной или нескольких латинских
букв (не более 8 букв), большие и маленькие буквы
неразличимы. Имена переменных не могут совпадать с
ключевыми словами, из которых строятся операторы.
- Исполнение программы начинается с первого оператора.
- Последним в тексте программы всегда является оператор END.
- Значения переменных, константы и значения выражений в языке
являются целочисленными и находятся в диапазоне от -32768
до 32767.
- В начале работы программы значения всех переменных равны нулю.
- Программа может содержать лишние разделительные
пробелы. Имена переменных, имена операторов, метки
и константы записываются без пробелов.
- Текст программы не содержит пустых строк.
Ниже перечислены операторы языка Beta:
Название оператора |
Форма записи оператора |
Комментарии |
Оператор присваивания |
Переменная=Выражение |
Выражение - это арифметическое выражение,
содержащее переменные, целочисленные константы,
круглые скобки и знаки арифметических операций:
+, -, *. Оператор присваивает переменной из
левой части значение выражения. |
Оператор перехода |
WALKTO метка |
Оператор передает управление оператору,
начинающемуся с указанной метки. Метка задается
константой и не может содержать арифметических
операций. |
Условный оператор |
IF условие THEN оператор присваивания
или оператор перехода |
Условие - это два выражения, разделенные
одним из знаков сравнения: "=", "<", ">", "<>"
(не равно). Оператор проверяет условие, и, если
оно истинно, то выполняется оператор, следующий
за словом THEN в этой же строке. |
Оператор печати |
TYPE Выражение |
Оператор выводит с новой строки
значение выражения. |
Оператор завершения |
END |
Всегда записывается последним оператором
в программе и завершает ее исполнение. |
Описание языка Psi
- Программы на языке Psi состоит из описания
переменных и тела программы.
- Описание переменных начинается со слова DEF, за
которым следуют имена всех переменных, используемых
в программе. Переменные в списке разделяются запятыми
и не могут повторяться, после последней переменной
ставится символ ; (точка с запятой).
- Тело программы состоит из последовательности операторов,
заключенных между словами START и FINISH.
- Операторы разделяются символом ; (точка с запятой).
- Понятия переменной, константы, выражения и условия
совпадают с соответствующими понятиями в языке Beta.
- Программа может содержать пустые строки и
лишние разделительные пробелы.
- Имена переменных, имена операторов, метки и
константы записываются без пробелов. Имена
переменных не могут совпадать с ключевыми словами,
из которых строятся операторы.
- Переменные в начале работы программы принимают
случайные значения.
Ниже перечислены операторы языка Psi:
Название оператора |
Форма записи оператора |
Комментарии |
Оператор присваивания |
Переменная:=Выражение |
Оператор присваивает переменной из
левой части значение выражения. |
Условный оператор |
IF условие THEN оператор;...; оператор; FI |
Оператор проверяет условие, и, если
оно истинно, то выполняются операторы, находящиеся
между словами THEN и FI. Между THEN и FI может
находиться и один оператор. |
Оператор печати |
PRINT (выражение) |
Оператор выводит с новой строки
значение выражения. |
Оператор цикла |
WHILE Условие DO оператор;,...;оператор; OD |
Повторяет выполнение операторов,
находящихся между словами DO и OD, пока истинно
условие. Между DO и OD может находиться и один
оператор. |
|
|