- •3053.4339.12505
- •Часть 1
- •5033.4339.0000-Пз
- •Введение
- •Назначение методического руководства
- •Исходные условия Общие цели выполнения первой части работы
- •Исходные положения
- •Обобщенная концепция текстов алгоритмов
- •Общее содержание первой части расчетно-графической работы
- •Базовые структуры алгоритмов
- •Подготовка задания
- •Рабочие варианты формулы по текущему разделу
- •Исходные структурные формулы параллельных алгоритмов
- •Стандартная форма формулы алгоритма
- •Контроль результатов
- •Структурные схемы параллельных алгоритмов
- •Автоматизация построений основной схемы Вариант 1 структурной схемы. Автоматизация построений
- •Группирование элементов схемы – оболочковые схемы
- •Вложенность схемных оболочек
- •Повышение структурного соответствия формул и схем
- •Явная операция разделения потоков
- •Разделение парных операций
- •Временные диаграммы параллельных алгоритмов
- •Расчет длительности алгоритма
- •Ви: Вертикальное исполнение
- •Автоматизация построений: Алгол (Паскаль) – подобный текст
- •Ви: Вертикальное исполнение
- •Автоматизация построений (СиПт)
- •КоФ: Комбинированная форма вербального текста Автоматизация построений: Алгол (Паскаль) – подобный текст
- •Ациклические многополюсные структуры алгоритмов
- •Исходные условия
- •Комплект текстов алгоритмов (обобщенные тексты)
- •Стандартная полная форма структурной формулы
- •Стандартная форма формулы алгоритма
- •Структурная схема
- •Структурная схема алгоритма
- •Основная схема (без оболочек).Автоматизированные построения
- •Временная диаграмма исполнения алгоритма
- •Диа: Диаграмма исполнения. Автоматизированные построения
- •Краткая характеристика программы
- •Подготовка кодирования элементов алгоритма
- •Параметры кодирования модели
- •Кодирование элементов алгритма
- •Комплект файлов модели алгоритма
- •Состав файла кодировки структуры алгоритма
- •Заготовка кодировки
- •Запись кодировки структурной формулы для моделирования
- •Подготовка файлов
- •Построение временной диаграммы
- •Графический расчет длительности алгоритма
- •Аналитический расчет длительности алгоритма
Подготовка файлов
а) Подготовка файла кода:
1) Скопировать код алгоритма в отдельный файл – без лишних строк в начале в середине текста.
2) Сохранить файл с именем xxxx,напримерA143 в текстовом формате с расширением .txt,например:
A143.txt
3) Заменить расширение .txtфайлаxxxx,напримерA143 на расширение .fmth, или скопировать в новый файл,например:
A143.fmth
4) Разместить файл xxxx.fmth,напримерA143.fmth в папкуDataпрограммыMPSD.
д) Подготовка файлов вывода СФА:
1) Создать файл xxxx.docсо СФА,например:
A143,doc– файл содержит СФА,например:
A143 = (Z1&1Z2VZ3(Z4&Z51Z6))Z3Z1
2) На этой основе создать bmp-файл:
A143.bmp– файл содержит растровую картинку формулы для вывода СФА на панель графического интерфейса программы.
3) Разместить файлы в папку DataпрограммыMPSD.
Построение временной диаграммы
а) Запустить программу MPSD:
файл AlgThreads.exe
Выводится графический интерфейс прогтаммы:
б) Включить кнопу "Загрузить" – загрузка кода:
Выводится диалоговое окно:
в) Открыть файл, в данном случае A143.fmth
Появляется СФА и заданные параметры длительности команд:
Исправить ошибку A142
г) Запустить программу (кнопка "Пуск")
Происходит потактовый вывод временной диаграммы:
ДИА: Диаграмма исполнения алгоритма – точечная (точечно-линейная)
д) Подбором масштаба получить подходящий вариант ДИА.
е) Наложение линий состояний и причинно-следственных связей.
ДИА: Диаграмма исполнения алгоритма – линейная
ДИА: Диаграмма исполнения алгоритма – сетевая
Графический расчет длительности алгоритма
// общая длительность mai цикла исполнения алгоритмаAi
Обозначения:
mai': Длительность исполнения алгоритмаAi– замер по итоговой линииai
mai": Длительность исполнения алгоритмаAi– графический расчет
(выполняется далее)
Графическое определение длительности mai' иmai" алгоритма:
а) Непосредственный отсчет размера (длины) линии по графику
ma142' =ta142о–ta142н = 135 – 20 = 105
б) Графический расчет размера (длины) линии
// критический путь графа
ma142" = ((mz3 +mz5) +mz2) + (mz3 +mz1) =
= ((10 + 35) + 30) + (10 + 20) =
= (45 + 30) + 30 =
= 75 + 30 = 105
Проверка результатов mai' =?mai":
// данные совпадают (mai"' =mai") или не совпадают (mai"'mai") .
(ma140' = 105) = (ma140" = 105) – равенство выполняется.
Вывод: данные графического отсчета и расчета совпадают.
// Если данные не совпадают, то предпринимаются меры:
// поиск и устранение причин несоответствия.
Аналитический расчет длительности алгоритма
Вербальные тексты алгоритма
Исходные условия
Формируются программоподобные вербальные тексты алгоритмов.
РМУ 4.21 1) Подобие вербальных текстов алгоритмов программным языкам определяется по некоторым ключевым концептуальным аспектам.
2) Это не означает их абсолютного тождества. Возможны дополнительные различия разных версий программных языков, фирменные особенности и т.п.
Дополнительные функциональные обозначения
ООА: Общее обозначение алгоритма
alg A143: ya143 = Fa143(xa143)
СКА: Система команд алгоритма
Z1:yz1 :=Fz1(xz1)
Z2:yz2 :=Fz2(xz2)
Z3:yz3 :=Fz3(xz3)
Z4:yz4 :=Fz4(xz4)
Z5:yz5 :=Fz5(xz5)
Z6:yz6 :=Fz6(xz6)
// Заданы стандартные обобщенные функциональные представления
// отдельных команд – на уровне обобщенных операторов присваивания
// Не указаны связи переменных разных команд
КоФ: Комбинированная форма
ИнПрПоФ: Инфикно-префиксно-постфиксная форма
АлгПТ: Алгол-подобный текст / ПасПТ: Паскаль-подобный текст
ГИ: Горизонтальное исполнение
ШТА: Шаблон текста алгоритма
// ИнФ: Инфиксная форма
A143 = (((Z1&1Z2)V(Z3(Z4 & (Z51Z6))))Z3Z1)
A143 = (((Z1–&1–Z2)V(Z3– (Z4& (Z5–1–Z6)))) –Z3–Z1)
// Явное введение знака неявной операции вилки
A143 = (((Z1&1Z2) #V(Z3(Z4 #& (Z51Z6))))Z3Z1)
A143 = (((Z1–&1–Z2) #V(Z3– (Z4#& (Z5–1–Z6)))) –Z3–Z1)
// ИнПрПоФ: Инфиксно-префиксно-постфиксная форма
// инфиксная по операции , префиксная – по #, постфиксная – по &,V($)
= (# ((Z1&1Z2),(Z3(Z4,#& (Z51Z6))))VZ3Z1) =
= (# ((Z1&1Z2),(Z3# (Z4,(Z51Z6)) &))VZ3Z1)
Конечные результаты
A143 =
= ( #((Z1&1Z2),(Z3#(Z4,(Z51Z6))&))VZ3Z1)
A143 = (#((Z1&1Z2),(Z3#(Z4,(Z51Z6))&))VZ3Z1)
// выделены тоном и подчеркнуты специальные пары знаков #( )& )V
ТЗО: Таблица замены обозначений. Дополнительные элементы
Общие замены обозначений | ||
ШТА |
1 =(1) =(#, 1) =(#,L1) |
&1 =(&. 1) =(&.L1) |
РТА |
fork(L1) |
join(L1)_and = join(L1) |
РТА: Рабочий текст алгоритма // замены обозначений
АлгПТ: Алгол-подобный текст
alg A143: begin parbegin begin Z1; join(L1); Z2 end, begin Z3; parbegin Z4, begin Z5; fork(L1); Z6 end parend_and end parend_or; Z3; Z1 end
ПасПТ: Паскаль-подобный текст
alg A143: begin cobegin begin Z1; join(L1); Z2 end, begin Z3; cobegin Z4, begin Z5; fork(L1); Z6 end coend_and end coend_or; Z3; Z1 end
Допустимые сокращения:
АлгПТ: Алгол-подобный текст // parend_and=parend
alg A143 begin parbegin begin Z1; join(L1); Z2 end, begin Z3; parbegin Z4, begin Z5; fork(L1); Z6 end parend end parend_or; Z3; Z1 end
ПасПТ: Паскаль-подобный текст //coend_and=coend
alg A143 begin cobegin begin Z1; join(L1); Z2 end, begin Z3; cobegin Z4, begin Z5; fork(L1); Z6 end coend end coend_or; Z3; Z1 end
Примечание. 1) В разных языках и операционных системах существуют многочисленные варианты операторовforkиjoinс существенно разной семантикой (механизмов действия) разделения и соединения потоков, включая дополнительные сигнальные и другие функции.
2) В данном случае используется разновидность этих операторов для высокоуровневого описания нелинейных структурных связей – переходов (семантика ясна из структурной схемы):
это параллельные аналоги безусловных переходов типа goto.
ВИ: Вертикальное исполнение
// A143 = (#((Z1&1Z2),(Z3# (Z4,(Z51Z6)) &))VZ3Z1)
ШТА: Шаблон текста алгоритма |
РТА: Рабочий текст | |||
A143 = ( # ( ( Z1 &1 Z2 ) , ( Z3 # ( Z4 , ( Z5 1 Z6 |
) ) & ) ) V Z3 Z1 ) |
A143 = ( #( ( Z1 &1 Z2 ), ( Z3 #( Z4, ( Z5 1 Z6 ) )& ) )V Z3 Z1 )
|
A143 = ( | #( | | ( | | | Z1 | | | &1 | | | Z2 | | ), | | ( | | | Z3 | | | #( | | | | Z4, | | | | ( | | | | | Z5 | | | | | 1 | | | | | Z6 | | | | ) | | | )& | | ) | )V | Z3 | Z1 )
|
alg A143: begin parbegin // cobegin begin Z1; join(L1); Z2 end, begin Z3; parbegin // cobegin Z4, begin Z5; fork(L1); Z6 end parend_and // coend_and end parend_or; // coend_or Z3; Z1 end
|
Подстановка функций команд (операторы присваивания)
РТА: Рабочий текст алгоритма | |
alg A143: ya143 = Fa143(xa143): begin parbegin // cobegin begin Z1: yz1 := Fz1(xz1); join(L1); Z2: yz2 := Fz2(xz2) end, begin Z3: yz3 := Fz3(xz3); parbegin // cobegin Z4: yz4 := Fz4(xz4), begin Z5: yz5 := Fz5(xz5); fork(L1); Z6: yz6 := Fz6(xz6) end parend_and // coend_and end parend_or; // coend_or Z3: yz3 := Fz3(xz3); Z1: yz1 := Fz1(xz1) end |
alg A143: ya143 = Fa143(xa143) begin parbegin // cobegin begin yz1 := Fz1(xz1); join(L1); yz2 := Fz2(xz2) end, begin yz3 := Fz3(xz3); parbegin // cobegin yz4 := Fz4(xz4), begin yz5 := Fz5(xz5); fork(L1); yz6 := Fz6(xz6) end parend_and // coend_and end parend_or; // coend_or yz3 := Fz3(xz3); yz1 := Fz1(xz1) end |