
Лабораторные работы_2 / Спецификации / Упражнение № 6
.docУпражнение № 6
Вариант 10.
Захаров Антон
группа А–13–08
Условие задачи.
Привести схему распределения памяти для выражения ((l-p)/r)*(k+f)
Способ 1. Статический тип. Запись с вариантами (рекурсивное описание типа данных).
type expression = record
op : operator;
opd1, opd2 : term;
end;
term = record
case t : Boolean of
true : (id : alfa);
false : (subex: expression);
end;
* |
|||
true |
/ |
||
true |
– |
||
true |
l |
||
false |
p |
||
false |
r |
||
false |
+ |
||
true |
k |
||
false |
f |
Способ 2a. Динамический тип. Запись с вариантами. Неоднородное дерево.
type expression = record
op : operator;
opd1, opd2 : ^term;
end;
term = record
case t : Boolean of
true : (id : alfa);
false : (subex: ^expression);
end;
Способ 2б. Динамический тип с использование nil. Однородное дерево.
type node = record
op : char;
left, right : ^node;
end;
Способ 3. на базе вектора. Статический тип.
var t : array [1..8] of
record
op : char;
left, right : integer;
end;
* |
|
|
/ |
|
|
+ |
|
|
– |
|
|
l |
|
|
p |
|
|
r |
|
|
k |
|
|
f |
|
|
Три формы бесскобочной записи.
Задание. Перевести в бесскобочную запись ((l-p)/r)*(k+f)
№ |
Способ обхода |
Схема |
Форма записи |
Итог |
1 |
Сверху вниз |
RAB |
префиксная |
|
2 |
Слева направо |
ARB |
инфиксная |
|
3 |
Снизу вверх |
ABR |
постфиксная |
|