- •Ргр: Расчетно-графическая работа
- •Ви: Вертикальное исполнение
- •Автоматизация построений
- •НИнФ: Неявная инфиксная форма вербального текста
- •Исходные условия
- •Ги: Горизонтальное исполнение
- •Ви: Вертикальное исполнение
- •Автоматизация построений: си-подобный текст
- •КоФ: Комбинированная форма вербального текста: ИнПрПоФ
- •Ги: Горизонтальное исполнение
- •Ви: Вертикальное исполнение
- •Автоматизация построений: Алгол (Паскаль)-подобный текст
- •ПрФ: Префиксная форма
- •Исходные условия
- •Ги: Горизонтальное исполнение
- •Ви: Вертикальное исполнение
- •Автоматизация построений
Автоматизация построений: Алгол (Паскаль)-подобный текст
Используется программа TEXTPRAL.
СФА 4.3: Структурная формула алгоритма / ИнФ: Инфиксная форма
А582 = (Z7 (Z1 & (Z6 (Z0&(Z3 Z6))))V(Z7 (Z4 &Z5)Z7))
А582 = (Z7 - (Z1 & (Z6 - (Z0 & (Z3 -Z6)))) $ (Z7 - (Z4 &Z5) -Z7))
Выполняются построения для АлгПТ: Алгол-подобного текста алгоритма.
Для ПасПТ: Паскаль-подобного текста – в данном случае все аналогично.
Набор формулы
ГИ: Горизонтальное исполнение
Настройки: ИнФ / АлгПТ / ГИ
ВТА 4.11: Вербальный текст алгоритма
Начало
Окончание
ВИ: Вертикальное исполнение
Настройки: ИнФ / АлгПТ / ВИ
ВТА 4.12: Вербальный текст алгоритма
АлгПТ: Алгол-подобный текст ПасПТ: Паскаль-подобный текст
ПрФ: Префиксная форма
Исходные условия
Строится префиксная форма вербального (словесного) текста параллельного алгоритма (структура потока управления).
Первоначально рассматривается префиксная форма для алгол-подобного (паскаль-подобного) текста в горизонтальном исполнении, определяемая как подготовка оккам-подобного текста, который возможен только в вертикальном исполнении.
Префиксная форма оккам-подобного текста алгоритма определяется по аналогии с высокоуровневым языком параллельного программирования Оккам (Occam).
Ги: Горизонтальное исполнение
АлгПТ: Алгол-подобный текст
ШТА 4.5: Шаблон текста алгоритма
Исходная ИнФ: Инфиксная форма
А582 = (Z7 (Z1 & (Z6 (Z0&(Z3 Z6))))V(Z7 (Z4 &Z5)Z7)) =
Явное введение знака неявной операции разделения потоков
= (Z7 (Z1 #& (Z6 (Z0 #& (Z3 Z6))))#V(Z7 (Z4 #&Z5)Z7)) =
= (Z7 (Z1 #& (Z6 (Z0 #& (Z3 Z6)))) #V(Z7 (Z4 #&Z5)Z7)) =
ПрФ: Префиксная форма
// все операции (поэтапно) выносятся в префикс
= (Z7 , (Z1 #&(Z6 , (Z0 #&(Z3 ,Z6)))) #V(Z7 , (Z4 #&Z5) ,Z7)) =
= (Z7 , #&(Z1 ,(Z6 , #&(Z0 ,(Z3 ,Z6)))) #V(Z7 , #&(Z4 ,Z5) ,Z7)) =
= #V(Z7, #&(Z1,(Z6, #&(Z0,(Z3 ,Z6)))),(Z7, #&(Z4 ,Z5),Z7)) =
ТЗО4.4: Таблица замены обозначений
Общие замены обозначений | ||||||||||||
Компоненты ШТА |
Ai |
Zi |
= |
( |
) |
|
# |
& |
V
| |||
Компоненты РТА: |
alg Ai |
Zi |
: |
begin ( |
end ) |
seq |
par |
and |
or | |||
Специальные замены обозначений (для специальных пар знаков) | ||||||||||||
Компоненты ШТА |
#& |
#V |
| |||||||||
Компоненты РТА |
par_and = par |
par_or |
|
РТА 4.4: Рабочий текст алгоритма
вариант 1
alg A582: seq par_or(Z7, par_and(Z1, seq(Z6, par_and(Z0, seq(Z3 , Z6)))), seq(Z7, par_and(Z4 , Z5), Z7))
вариант 2
alg A582: seq par_or begin Z7, par_and begin Z1, seq begin Z6, par_and begin Z0, seq begin Z3 , Z6 end end end end, seq begin Z7, par_and begin Z4 , Z5 end, Z7 end end
Допустимые упрощения: par_and=par
alg A582: seq par_or begin Z7, par begin Z1, seq begin Z6, par begin Z0, seq begin Z3 , Z6 end end end end, seq begin Z7, par begin Z4 , Z5 end, Z7 end end
Ви: Вертикальное исполнение
ОкПТ: Оккам-подобный текст
// A582 =#V(Z7, #&(Z1,(Z6, #&(Z0,(Z3 ,Z6)))),(Z7, #&(Z4 ,Z5),Z7)) и далее
ВТА4.13: Вербальный текст алгоритма
ШТА: Шаблон текста алгоритма |
РТА: Рабочий текст |
| ||
1 |
2 |
3 |
4 | |
A582 = #V ( Z7, #& ( Z1, ( Z6, #& ( Z0, ( Z3, Z6 ) ) ) ), ( Z7, #& ( Z4, Z5 ), Z7 ) ) |
A582 = #V ( Z7, #& ( Z1, ( Z6, #& ( Z0, ( Z3, Z6 ) ) ) ), ( Z7, #& ( Z4, Z5 ), Z7 ) )
|
A582 = #V Z7 #& Z1 Z6 #& Z0 Z3 Z6 Z7 #& Z4 Z5 Z7
// Удаление // всех // запятых и // зачеркнутых // строк |
A582 = seq par_or Z7 Par_and Z1 seq Z6 Par_and Z0 seq Z3 Z6 seq Z7 Par_and Z4 Z5 Z7 |
ВТА 4.14: Вербальный текст алгоритма // Дополнение к ВТА 4 .13
Подстановка функций команд (операторы присваивания)
РТА: Рабочий текст алгоритма | |
5 |
6 |
alg A582: ya582 = Fa582(xa582): seq par_or Z7: yz7 := Fz7(xz7) Par_and Z1: yz1 := Fz1(xz1) seq Z6: yz6 := Fz6(xz6) Par_and Z0: yz0 := Fz0(xz0) seq Z3: yz3 := Fz3(xz3) Z6: yz6 := Fz6(xz6) seq Z7: yz7 := Fz7(xz7) Par_and Z4: yz4 := Fz4(xz4) Z5: yz5 := Fz5(xz5) Z7: yz7 := Fz7(xz7) |
alg A582: ya582 = Fa582(xa582): seq par_or yz7 := Fz7(xz7) Par_and yz1 := Fz1(xz1) seq yz6 := Fz6(xz6) Par_and yz0 := Fz0(xz0) seq yz3 := Fz3(xz3) yz6 := Fz6(xz6) seq yz7 := Fz7(xz7) Par_and yz4 := Fz4(xz4) yz5 := Fz5(xz5) yz7 := Fz7(xz7) |