Вербальные (словесные) тексты алгоритма
Промежуточные Питон-подобные формы записи алгоритма
ВТА: Вербальный текст алгоритма
ГИ: Горизонтальное исполнение
ШТА: Шаблон текста алгоиртма
A10 = Z3
A20 = Z8
A30 = Z6 – Z7
A40 = Z8 – Z2
A571 = Z2 – FA10 – FA20 – Z0 – JfA20 – Z2 –JFA10 – FA30 – FA40 – Z4 –JFA40 – JFA30
РТА: Рабочий текст алгоритма
alg A10( ): Zh3( );
alg A20( ): Zh8( );
alg A30( ): Zh6( ); Zh7( );
alg A40( ): Zh8( ); Zh2( );
alg A571( ): Zh2( ); Fork(A10( )); Fork(A20( )); Zh0( ); Join_&(A20( )); Zh2( );
Join_&(A10( )); Fork(A30( )); Fork(A40( )); Zh4( ); Join_&(A40( )); Join_&(A30( ));
ВИ: Вертикальное исполнение
|
ШТА: Шаблон текста алгоритма |
РТА: Рабочий текст алгоритма | |||
|
A10 = Z3 |
A10 = Z3
|
A10 = | Z3
|
A10 = | Z3
|
alg10: Zh3()
|
|
A20 = Z8 |
A20 = Z8
|
A20 = | Z8 |
A20 = | Z8 |
alg A20(): Zh8()
|
|
A30 = Z6 – Z7 |
A30 = Z6 – Z7
|
A30 = | Z6 – | Z7 -
|
A30 = | Z6 | Z7
|
alg30: Zh6() Zh7()
|
|
A40 = Z8 – Z2 |
A40 = Z8 – Z2 –
|
A40 = | Z8 – | Z2 –
|
A40 = | Z8 | Z2
|
alg A40(): Zh8() Zh2()
|
|
A571 = Z2 – FA10 – FA20 – Z0 – JFA20 – Z2 – JFA10 – FA30 – FA40 – Z4 – JFA40 – JFA30 |
A571 = Z2 – FA10 – FA20 – Z0 – JFA20 – Z2 – JFA10 – FA30 – FA40 – Z4 – JFA40 – JFA30 |
A571 = | Z2 – | FA10 – | FA20 – | Z0 – | JFA20 – | Z2 – | JFA10 – | FA30 – | FA40 – | Z4 – | JFA40 – | JFA30 |
A571 = | Z2 | FA10 | FA20 | Z0 | JFA20 | Z2 | JFA10 | FA30 | FA40 | Z4 | JFA40 | JFA30 |
alg A571(): Zh2() Fork(A10()) Fork(A20()) Zh0() Join_&(A20()) Zh2() Join_&(A10()) Fork(A30()) Fork(A40()) Zh4() Join_&(A40()) Join_&(A30()) |
1.4 Многопоточная программная реализация алгоритма Реализация компонент алгоритма
|
РТА: Рабочий текст алгоритма |
ИТП: Исходный текст подпрограмм |
|
alg10: Zh3()
|
def A10(ccrt, hCycles): hCycles.za10 = 0 # Переменная индикации окончания A10 hCycles.Zh(ccrt.techsys.head3) hCycles.za10 = 1 # Индикация окончания процесса A10 |
|
alg20: Zh8()
|
def A20(ccrt, hCycles): hCycles.za20 = 0 # Переменная индикации окончания A20 hCycles.Zh(ccrt.techsys.head8) hCycles.za20 = 1 # Индикация окончания процесса A20 |
|
alg30: Zh6() Zh7() |
def A30(ccrt, hCycles): hCycles.za30 = 0 # Переменная индикации окончания A30 hCycles.Zh(ccrt.techsys.head6) hCycles.Zh(ccrt.techsys.head7) hCycles.za30 = 1 # Индикация окончания процесса A30 |
|
alg A40(): Zh8() Zh2()
|
def A40(ccrt, hCycles): hCycles.za40 = 0 # Переменная индикации окончания A40 hCycles.Zh(ccrt.techsys.head8) hCycles.Zh(ccrt.techsys.head2) hCycles.za40 = 1 # Индикация окончания процесса A40 |
|
alg A571(): Zh2() Fork(A10()) Fork(A20()) Zh0() Join_&(A20()) Zh2() Join_&(A10()) Fork(A30()) Fork(A40()) Zh4() Join_&(A40()) Join_&(A30()) |
def eAxx1(ccrt, hCycles): hCycles.Zh(ccrt.techsys.head2) thread.start_new(expSub.A10,(ccrt,hCycles,)) thread.start_new(expSub.A20,(ccrt,hCycles,)) hCycles.Zh(ccrt.techsys.head0) while not hCycles.za20: time.sleep(0.1) hCycles.Zh(ccrt.techsys.head2) while not hCycles.za10: time.sleep(0.1) thread.start_new(expSub.A30,(ccrt,hCycles,)) thread.start_new(expSub.A40,(ccrt,hCycles,)) hCycles.Zh(ccrt.techsys.head4) while not hCycles.za40: time.sleep(0.1) while not hCycles.za30: time.sleep(0.1) |
