Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Расчетно-графическая работа №3.doc
Скачиваний:
9
Добавлен:
02.05.2014
Размер:
476.16 Кб
Скачать
          1. Автоматизация построений: Алгол (Паскаль)-подобный текст

Используется программа 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: Вербальный текст алгоритма

АлгПТ: Алгол-подобный текст ПасПТ: Паскаль-подобный текст

    1. ПрФ: Префиксная форма

          1. Исходные условия

Строится префиксная форма вербального (словесного) текста параллельного алгоритма (структура потока управления).

Первоначально рассматривается префиксная форма для алгол-подобного (паскаль-подобного) текста в горизонтальном исполнении, определяемая как подготовка оккам-подобного текста, который возможен только в вертикальном исполнении.

Префиксная форма оккам-подобного текста алгоритма определяется по аналогии с высокоуровневым языком параллельного программирования Оккам (Occam).

          1. Ги: Горизонтальное исполнение

АлгПТ: Алгол-подобный текст

ШТА 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

          1. Ви: Вертикальное исполнение

ОкПТ: Оккам-подобный текст

// 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)