Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Расчетно-графическая работа2.doc
Скачиваний:
10
Добавлен:
02.05.2014
Размер:
1.01 Mб
Скачать
          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.

          1. Построение временной диаграммы

а) Запустить программу MPSD:

файл AlgThreads.exe

Выводится графический интерфейс прогтаммы:

б) Включить кнопу "Загрузить" – загрузка кода:

Выводится диалоговое окно:

в) Открыть файл, в данном случае A143.fmth

Появляется СФА и заданные параметры длительности команд:

Исправить ошибку A142

г) Запустить программу (кнопка "Пуск")

Происходит потактовый вывод временной диаграммы:

ДИА: Диаграмма исполнения алгоритма – точечная (точечно-линейная)

д) Подбором масштаба получить подходящий вариант ДИА.

е) Наложение линий состояний и причинно-следственных связей.

ДИА: Диаграмма исполнения алгоритма – линейная

ДИА: Диаграмма исполнения алгоритма – сетевая

      1. Графический расчет длительности алгоритма

// общая длительность 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) – равенство выполняется.

Вывод: данные графического отсчета и расчета совпадают.

// Если данные не совпадают, то предпринимаются меры:

// поиск и устранение причин несоответствия.

      1. Аналитический расчет длительности алгоритма

      1. Вербальные тексты алгоритма

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

Формируются программоподобные вербальные тексты алгоритмов.

РМУ 4.21 1) Подобие вербальных текстов алгоритмов программным языкам определяется по некоторым ключевым концептуальным аспектам.

2) Это не означает их абсолютного тождества. Возможны дополнительные различия разных версий программных языков, фирменные особенности и т.п.

          1. Дополнительные функциональные обозначения

ООА: Общее обозначение алгоритма

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)

// Заданы стандартные обобщенные функциональные представления

// отдельных команд – на уровне обобщенных операторов присваивания

// Не указаны связи переменных разных команд

          1. КоФ: Комбинированная форма

ИнПрПоФ: Инфикно-префиксно-постфиксная форма

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

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

ШТА: Шаблон текста алгоритма

// ИнФ: Инфиксная форма

A143 = (((Z1&1Z2)V(Z3(Z4 & (Z51Z6))))Z3Z1)

A143 = (((Z1&1–Z2)V(Z3– (Z4& (Z51–Z6)))) –Z3–Z1)

// Явное введение знака неявной операции вилки

A143 = (((Z1&1Z2) #V(Z3(Z4 #& (Z51Z6))))Z3Z1)

A143 = (((Z1&1–Z2) #V(Z3– (Z4#& (Z51–Z6)))) –Z3–Z1)

// ИнПрПоФ: Инфиксно-префиксно-постфиксная форма

// инфиксная по операции , префиксная – по #, постфиксная – по &,V($)

= (# ((Z1&1Z2),(Z3(Z4,#& (Z51Z6))))VZ3Z1) =

= (# ((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,(Z51Z6))&))VZ3Z1)

// выделены тоном и подчеркнуты специальные пары знаков #( )& )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&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

)

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