Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Синтез комбинацонных схем і кінцевих автоматів, мережі Петри

РефератДопомога в написанніДізнатися вартістьмоєї роботи

У розділі показали приклад мінімізації (спрощення) кінцевого автомата з скороченням числа станів, і навіть приклад реалізації автомата на логічних елементах і елементах пам’яті. Ми вже переконалися у цьому, що кінцевий автомат є розширенням поняття комбінаційної схеми на випадок, коли щоб одержати вихідного сигналу в момент часу потрібно «пам'ятати» певна кількість попередніх значень вхідного… Читати ще >

Синтез комбинацонных схем і кінцевих автоматів, мережі Петри (реферат, курсова, диплом, контрольна)

Державного комітету Російської Федерації за найвищим образованию.

Кубанський державний технологічний университет.

Кафедра ???

ПОЯСНЮВАЛЬНА ЗАПИСКА.

до курсової роботу з предмета математичні основи теорії систем.

тема курсової работы:

" Синтез комбінаційних схем і кінцевих автоматів. Мережі Петрі «.

Выполнил: студент грн. ??-??-??

???

номер зачётной книжки ??-??-???

Керівник: ???

???

???

Державного комітету Російської Федерації за найвищим образованию.

Кубанський державний технологічний университет.

ЗАДАНИЕ.

На курсову работу Студенту гр.

По дисциплине Тема курсової работы Исходные данные.

1 Виконати расчёты:

1.1.

1.2.

1.3.

1.4.

2 Виконати графічні работы:

2.1.

2.2.

3 Виконати наукові і навчально-дослідні работы:

3.1.

3.2.

3.3.

3.4.

4 Оформити расчётно-пояснительную записку.

5 Основна литература Задание выдано Срок здачі работы Задание принял Руководитель Работа защищена С оценкой.

ЧЛЕНИ КОМИССИИ :

РЕФЕРАТ МИНИМИЗАЦИЯ БУЛЕВЫХ ФУНКЦІЙ, КОМБІНАЦІЙНА СХЕМА, МІНІМІЗАЦІЯ КІНЦЕВИХ АВТОМАТІВ, АВТОМАТ МИЛІ, МЕРЕЖА ПЕТРИ.

Перша частина курсової роботи присвячена мінімізації булевых функцій двома у різний спосіб, і навіть побудові комбінаційних схем в базисах, які перебувають лише з однієї функции.

Друга частина містить засадничі поняття та засобами визначення з теорії кінцевих автоматів, і навіть приклад їх спрямування конкретного автомата. Сюди входять мінімізація кінцевих автоматів за кількістю станів, мінімізація булевых функцій, що описують комбінаційну частину з наступної реалізацією отриманого автомата на логічних елементах з певного базису і елементах пам’яті - триггерах і задержках.

У третій частині розглянуті питання аналізу функціонування та програмного моделювання мереж Петрі. Різними способами досліджені поведінкові властивості заданої мережі Петрі. Складено найпростіша програма, моделююча все що у мережі ситуации.

Курсова робота містить 38 сторінок, 11 малюнків, 8 таблиц,.

4 джерела, 1 додаток .

Запровадження …6.

1 Синтез комбінаційних схем.

1.1 Постановка завдання … 7.

1.2 Теоретичні відомості …7.

1.3 Розрахунки й оприлюднювати отримані результати …9.

1.4 Висновки по разделу…13.

2 Синтез кінцевих автоматов.

2.1 Постановка завдання … 14.

2.2 Теоретичні відомості …14.

2.3 Розрахунки й оприлюднювати отримані результати … 16.

4. Висновки у розділі… 20.

3 Мережі Петри.

3.1 Постановка завдання … 21.

3.2 Теоретичні відомості … 21.

3.3 Розрахунки й оприлюднювати отримані результати … 26.

3.4 Висновки у розділі… 31.

Укладання … 32.

Література … 33.

Додаток, А … 34.

Робота присвячена синтезу дискретних пристроїв з «пам'яттю» (кінцевих автоматів) і «безпам'яті» (комбінаційних схем), і навіть аналізу реально які протікають процесів з допомогою мереж Петри.

У першій частині розглянута мінімізація булевых функцій, заданих в вигляді СДНФ, з допомогою двох різних способів: карт Карно і методу склеювання Квайна — МакКласки. Отримані як мінімізованих ДНФ функції було наведено до базисам, які перебувають лише з однієї функції: І - НЕ і АБО — НЕ, та був реалізовані як комбінаційних схем на відповідних логічних элементах.

В другій частині поставлене з умові в функціональному вигляді кінцевий автомат був мінімізований за кількістю станів. Для отриманого автомата був побудований граф станів. Потім, перейшовши до двоичному уявленню вхідних, вихідних сигналів і сигналів стану, в автоматі виділили елементи пам’яті і комбінаційна частина, які потім була мінімізовано за кількістю переменнных. Автомат реалізували в базисі І - АБО — НЕ з допомогою D — триггера і задержки.

У третій частині була проаналізовано задана мережу Петрі з допомогою двох способів: матричного і заснованого на побудові дерева покрываемости, і навіть написана програма його моделирования.

1 Синтез комбінаційних схем.

1. Постановка задачи.

Для двох булевых функцій, побудованих за прискореним варіантом завдання виде.

[pic] (1.1.1).

[pic], (1.1.2).

де gi, zi — десяткові числа з діапазону від 0 до 15 в двоичном вигляді, вчинити ось як: а) уявити F1 і F2 як СДНФ. б) мінімізувати (за кількістю змінних в ДНФ) F1 з допомогою карт Карно, F2 — методом Квайна-МакКласки. в) реалізовувати вигляді комбінаційної схеми на логічних елементах F1 — в базисі І - НЕ, F2 — в базисі АБО — НЕ, попередньо привівши F1 і F2 до відповідним базисам. gi і zi вираховуватимуть по выражениям:

[pic].

(1.1.3).

[pic].

(1.1.4).

при g0 = A, z0 = B. Параметр [pic] змінювати від 1 до того часу, доки отримають 9 різних значень gi і zi.

2. Теоретичні сведения.

Булевой алгеброю називається безліч P. S об'єктів A, B, З…, у якому визначено дві бінарні операції (роз'єднання — диз’юнкція (+) і логічне множення — та (?)) і жодна унарная операция (логическое отрицание ([pic])). Воно має такими властивостями: а) Для [pic] A, B, З [pic] S.

1) [pic], [pic] (замкнутость);

2) [pic] (комутативні законы);

3) [pic] (асоціативні законы);

4) [pic] (дистрибутивні законы);

5) [pic] (властивості идемпотентности);

6) [pic] у тому лише тому випадку, если.

[pic] (властивість совместимости);

7) P. S містить елементи 1 і 0 такі, що з будь-якого елемента [pic].

[pic];

8) кожному за елемента A клас P. S містить елемент Р (доповнення елемента A, часто позначуване символами? чи 1- A) такий, что.

[pic], [pic].

У кожній булевой алгебре.

[pic] (закони поглощения),.

[pic] (закони склеивания),.

[pic] (двоїстість, закони де Моргана).

Якщо дано n булевых змінних X1, X2,…, Xn, кожна з яких може бути дорівнює кожному елементу булевой алгебри, то булевой функцією називається выражение.

[pic].

(1.2.1).

У кожній булевой алгебрі існує рівно [pic]различных булевых функцій n переменных.

Система булевых функцій називається повної (базисом), якщо будь-яка функція то, можливо представленій у вигляді суперпозиции функцій выбраной системы.

Під критерим мінімізації (спрощення) булевых функцій усвідомимо досягнення мінімуму літер на записи функции.

Введём поняття багатовимірного куба.

Будь-яку булеву функцію n змінних, задану в ДНФ чи СДНФ, можна отобразиь на n-мерном кубі, побудовану ортогональном базисі n булевых змінних. Кожне складова в ДНФ чи СДНФ представляється гиперплоскостью відповідної розмірності: коли вона є конъюнкцию n змінних — точка, n-1 змінних — пряма, n-2 змінних — площину, і т.д. Елементи n-мерного куба, мають p. s вимірів, назвемо s-кубами.

Комплекс K (y) кубів функції y=f (x1,x2,…, xn) є об'єднання Ks (y) множин всіх її кубів. Відсутні в конъюнкциях перемінні будемо позначати через x.

3. Розрахунки й оприлюднювати отримані результаты.

По варіанту завдання знаходимо gi і zi:

|і |gi |zi | |0 |5 |0 | |1 |1 |6 | |2 |8 |2 | |3 |5 |9 | |4 |13 |6 | |5 |11 |14 | |6 |4 |12 | |7 |3 |5 | |8 |13 |4 | |9 |13 |14 | |10 |8 |14 | |11 |9 |9 | |12 |5 |10 | |13 |7 |6 |.

Неповторювані значення gi: 5, 1, 8, 13, 11, 4, 3, 9, 7. Неповторювані значення zi: 0, 6, 2, 9, 14, 12, 5, 4, 10. Отже, для F1 отримуємо выражение.

[pic], (1.3.1).

для F2:

[pic]. (1.3.2).

Для мінімізації першої функції застосовуємо метод карт Карно.

Карта Карно — прямокутник з 2N клітинами, кожної у тому числі відповідає своя з'єднання з n змінних та його заперечень (дополнений).

Проставляючи одиниці у клітинах, вибираємо потім мінімальну з усіх можливих комбінацію покриттів. Застосуємо карту Карно до заданої функции:

x3x4.

00 01.

11 10.

00 1.

01 1 1.

x1x2.

11 1.

10 1 1.

Малюнок 1.2.1 — карта Карно.

З обраної комбінації покриттів виписуємо минимизированное вираз для функції F1:

[pic]. (1.3.3).

Для другий функції застосовуємо метод Квайна-МакКласки.

У першому кроці алгоритму виписуємо комплекс K0-кубов заданої функції, упорядкованих зі збільшення кількості единиц:

0 0 0 0 0 1 1 1 1.

0 0 1 1 1 0 0 1 1.

K0 = 0 1 0 0 1 0 1 0 1.

(1.3.4).

0 0 0 1 0 1 0 0 0 .

Другий етап грунтується для операцій склеювання. Кожен із кубів перевіряється на «склеиваемость» із іншими. Склеивающиеся куби повинні різнитися лише щодо одного розряді. Склеєний розряд в подальшому позначається як x. Куб, після участі в операції склеювання, відповідним чином позначається. Оскільки таких кубів мало, будемо відзначати які брали участі в операції склеювання куби. У результаті дістаємо комплекс K1-кубов, також упорядкований зі збільшення кількості одиниць на разрядах:

0 0 0×0 0 x x 1 1.

0 x x 0 1 1 1 1×1.

K1 = x 0 1 1 0×0 1 1 x.

(1.3.5).

0 0 0 0×0 0 0 0 0 .

Повторюємо вищеописану операцію для комплексу K1-кубов, після чого видаляємо з отриманого комплексу K2-кубов повторяющиеся:

0 0 x x x x 0 x x x x x x 1 1 x x 1.

K2 = x x 1 1 x x = x 1 x.

(1.3.6).

0 0 0 0 0 0 0 0 0.

Ті куби, які брали участь у операціях склеювання, називаються импликантами — це кандидати те що, щоб у підсумкову ДНФ. Їх складаємо таблицю покриттів K0-кубов. Импликанта вважається покриває K0- куб, якщо вони збігаються при x, приймаючому довільне значение.

| |0 |0 |0 |0 |0 |1 |1 |1 |1 | | |K0 |0 |0 |1 |1 |1 |0 |0 |1 |1 |Импликанты | | |0 |1 |0 |0 |1 |0 |1 |0 |1 | | |z |0 |0 |0 |1 |0 |1 |0 |0 |0 | | |1001 | | | | | |+ | | | |[pic] | |010x | | |+ |+ | | | | | |[pic] | |0xx0 |+ |+ |+ | |+ | | | | |[pic] | |xx10 | |+ | | |+ | |+ | |+ |[pic] | |x1x0 | | |+ | |+ | | |+ |+ |[pic] |.

Таблиця 1.3.1 — Покриття K0-кубов.

Істотною импликантой, чи экстремалью, називається така импликанта, що у однині покриває хоча один із K0- кубов.

З таблиці слід, що це импликанты є экстремалями. Отже, вони всі увійдуть до запис функції як сокращённой ДНФ:

[pic]. (1.3.7).

Комбінаційна схема — це дискретне пристрій, кожен із вихідних сигналів що його час tm визначається так:

yj™ = f (x1™, x2™,…, xn™) ,.

(1.3.8).

де [pic]. Очевидно, що вихідний сигнал в m-й час визначається лише комбінацією вхідних сигналів в момент і залежить від своїх попередніх значень. Тому комбінаційну схему можна реалізувати на логічних елементах, виконують операції з певного базису булевых функций.

Наведемо F1 до базису І - НЕ, а F2 — до базису АБО — НЕ: [pic] (1.3.9).

[pic][pic]. (1.3.10).

Отримавши висловлювання для функцій, приведених до відповідним базисам, накреслити комбінаційні схеми, реалізують цих функцій, на елементах жодного виду: перша функції це І - НЕелементи, для другий — АБО — НЕ :

Малюнок 1.3.1 — Схема на І - НЕ-элементах.

Малюнок 1.3.2 — Схема на АБО — НЕ-элементах.

1.4 Висновки по разделу.

У першій частині було розглянуто приклади мінімізації (спрощення) булевых функцій двома у різний спосіб. Була практично показано можливість приведення функцій двох аргументів до базису, що складається всього з однієї функції. Було побудовано комбінаційні схеми, що ілюструють отримані результати. Вигода розглянутих перетворень функцій очевидна за її практичної реалізації на стандартизованих електронних микросхемах.

2 Синтез кінцевих автоматов.

2.1 Постановка задачи.

Кінцевий автомат заданий своїми рівняннями переходів і выходов:

s (j+1) = [2?s (j) + x (j) + B] mod 8 ,.

y (j) = [ s (j) + x (j) + A] mod 2 ,.

[pic] .

Потрібна: а) побудувати таблиці переходів, виходів і загальну таблицю переходів автомата; б) мінімізувати автомат за кількістю станів з допомогою таблиць, раніше отриманих; в) побудувати граф минимизированного автомата і виписати йому матрицю переходів; р) переходячи до двоичному уявленню входу X, виходу Y і стану P. S, скласти таблицю входів і виходів комбінаційної схеми автомата і мінімізацію булевых функцій, відповідних виходам і станам автомата; буд) розробити логічний схему автомата в базисі І - НЕ, реалізуючи елементи пам’яті на триггерах і задержках.

2.2 Теоретичні сведения.

Кінцевим автоматом називається таке дискретне пристрій, вихідні сигнали що його певні моменти часу залежать тільки від останнього який прийшов вхідного сигналу, а й від певної кількості попередніх його значений.

Розрізняють синхронні і асинхронні автомати. У асинхронних зміна вихідних сигналів y (tj) може відбуватися лише в моменти зміни вхідних x (tj), у синхронних — в моменти часу, зумовлені додатковим синхронизирующим сигналом c (t) .

Визначимо безлічі, яким буде належати вхідні і вихідні сигнали (умовимося позначати tj як j):

[pic] - множетва вхідних і вихідних сигналов.

Тоді выражения.

[pic].

(2.2.1) визначають вхідний і вихідний алфавіти автомата.

Нехай [pic]. Тоді якщо y (j) = ?(x (j)), цей автомат є, очевидно, комбінаційної схемой.

Введём додаткову зміну у тому, щоб охарактеризувати стан автомата у кожний час j:

[pic].

(2.2.2).

У разі, якщо X, Y і P. S — кінцеві безлічі, те й сам автомат називають конечным.

У нинішньому вигляді рівнянь будь-який кінцевий автомат можна записати різними способами. Один із можливих форм записи:

[pic].

(2.2.3).

Записаний в такий спосіб автомат називається автоматом Мілі. Зрозуміло, що це — більш інформативна форма записи проти автоматом Мура:

[pic][pic].

(2.2.4).

Способи завдання автоматов.

У — перших, автомат може бути поставлене безпосередньо рівняннями виду (2.2.3) чи (2.2.4).

У — других, рівняння (2.2.3) і (2.2.4) можуть бути в табличній формі. Табличний аналог першого рівняння в (2.2.3) називається таблицею переходів, другого — таблицею выходов.

У — третіх, таблиці переходів і виходів можна поєднати до однієї. Вміст кожної клітини є дріб: над косою рисою вписується відповідне значення з таблиці переходів, під косою рисою — значення з таблиці виходів. Отримана в такий спосіб таблиця називається загальної таблицею переходів і виходів кінцевого автомата.

Граф автомата — це сигнальний граф, вершини якого позначають стану автомата, на дугах відбиті умови переходу із стану в стан і значення вихідних сигналів як дробу: над косою рисою — x (j), під нею — y (j).

Кінцевий автомат можна також ознайомитися описати з допомогою матриці переходів. Це аналог графа в табличній формі. Це квадратну матрицю розмірності число станів [pic] число станів, у якій відбиті умови переходу із стану до стану аналогічно изображённым на графе.

Загальне визначення кінцевого автомата:

M = (X, Y, P. S, ?, ?),.

(2.2.5).

де X — вхідний алфавіт, Y — вихідний алфавіт, P. S — безліч станів,? — функція переходів,? — функція выходов.

Нехай є два автомата: M і M'.

Якщо будь-якого [pic] існує у крайнього заходу одне [pic], еквівалентну йому, то кажуть, що M' покриває M: M'? M.

Якщо одночасно M'? M і M? M', то M ~ M'. Отримуємо еквівалентні автомати. І тут неможливо розрізнити M і M' з їхньої реакцію вхідні сигналы.

Існують дві основні становища визначення поняття еквівалентності станів: а) стану si і sj явно різні, якщо відповідні їм рядки в таблиці виходів різні; б) стану si і sj явно еквівалентні, якщо відповідні їм рядки у загальної таблиці переходів автомата однакові чи стають такими при заміні si на sj чи наоборот.

Мінімізація (спрощення) автоматів грунтується на понятті еквівалентних автоматів. Під мінімізацією автомата усвідомимо зменшення кількості його состояний.

2.3 Розрахунки й оприлюднювати отримані результаты.

Побудова таблиць переходів, виходів і загальної таблиці переходів і виходів з урахуванням заданих рівнянь автомата Мілі очевидно:

| |0 |1 |2 |3 | |x (j) | | | | | |s (j) | | | | | |0 |1 |0 |1 |0 | |1 |0 |1 |0 |1 | |2 |1 |0 |1 |0 | |3 |0 |1 |0 |1 | |4 |1 |0 |1 |0 | |5 |0 |1 |0 |1 | |6 |1 |0 |1 |0 | |7 |0 |1 |0 |1 |.

Таблиця 2.3.1 — Таблиця виходів автомата.

| |0 |1 |2 |3 | |x (j) | | | | | |s (j) | | | | | |0 |0 |1 |2 |3 | |1 |2 |3 |4 |5 | |2 |4 |5 |6 |7 | |3 |6 |7 |0 |1 | |4 |0 |1 |2 |3 | |5 |2 |3 |4 |5 | |6 |4 |5 |6 |7 | |7 |6 |7 |0 |1 |.

Таблиця 2.3.2 — Таблиця переходів автомата.

| |0 |1 |2 |3 | |x (j) | | | | | |s (j) | | | | | |0 |0/1 |1/0 |2/1 |3/0 | |1 |2/0 |3/1 |4/0 |5/1 | |2 |4/1 |5/0 |6/1 |7/0 | |3 |6/0 |7/1 |0/0 |1/1 | |4 |0/1 |1/0 |2/1 |3/0 | |5 |2/0 |3/1 |4/0 |5/1 | |6 |4/1 |5/0 |6/1 |7/0 | |7 |6/0 |7/1 |0/0 |1/1 |.

Таблиця 2.3.3 — Загальна таблиця переходів і виходів автомата.

Перейдём безпосередньо до мінімізації отриманого автомата за кількістю станів. І тому скористаємося алгоритмом, відомим у літературі як метод Гриса — Хопкрофта. Його гідність у цьому, що він дав гарантовано мінімальну форму автомата. Однак загалом випадку він є досить трудоёмким вживається, зазвичай, для автоматів з гаком кількістю станів. Він грунтується на властивості транзитивності эквивалентности.

(si ~ sj)? (sj ~ sk) [pic] (si ~ sk) (2.3.1).

Кілька еквівалентних станів переходить попри всі можливих значеннях входу парами також еквівалентних состояний.

Алгоритм складається з таких шагов.

Спочатку розбиваємо їхні капітали автомата на безлічі за ознакою збіги вихідних сигналів. У нашому випадку отримуємо 2 безлічі: S1 = {0, 2, 4, 6} і S2 = {1, 3, 5, 7}.

Щоб назвати кожен із отриманих класів новим станом, потрібно переконатися, що у кожен клас входять лише еквівалентні між собою стану. І тому складаємо таблицю пар еквівалентних станів. При цьому забуваємо у тому, що еквівалентними може бути стану, належать лише класу. У таблицю заносимо все ті пари, в які переходять при відповідних входах вихідні, мабуть еквівалентні, пары:

|пары |0 |1 |2 |3 | |0;2 |0;4 |1;5 |2;6 |3;7 | |0;4 |0;0 |1;1 |2;2 |3;3 | |0;6 |0;4 |1;5 |2;6 |3;7 | |2;4 |4;0 |5;1 |6;2 |3;7 | |2;6 |4;4 |5;5 |6;6 |7;7 | |4;6 |0;4 |1;5 |2;6 |3;7 | |1;3 |2;6 |3;7 |4;0 |5;1 | |1;5 |2;2 |3;3 |4;4 |5;5 | |1;7 |2;6 |3;7 |4;0 |5;1 | |3;5 |6;2 |7;3 |0;4 |1;5 | |3;7 |6;6 |7;7 |0;0 |1;1 | |5;7 |2;6 |3;7 |4;0 |5;1 |.

Таблиця 2.3.4 — Таблиця пар еквівалентних состояний.

Шукаємо в отриманої таблиці нееквівалентні пари — пари із різних множин. У таблиці таких немає, отже, остаточно отримуємо автомат з двома новими станами — позначимо їх 0 і 1.

Таким кроком оформляємо загальну таблицю переходів для мінімізовану форми автомата:

| |0 |1 |2 |3 | |x (j) | | | | | |s (j) | | | | | |0 |0/1 |1/0 |0/1 |1/0 | |1 |0/0 |1/1 |0/0 |1/1 |.

Таблиця 2.3.5 — Нова загальна таблиця переходов.

З отриманої загальної таблиці переходів і виходів можна намалювати граф минимизированного автомата з цими двома состояниями:

0/1U 2/1 1/0 U 3/0.

1/1U 3/1.

0 1.

0/0 U 2/0.

Малюнок 2.3.1 — Граф минимизированного автомата.

Для практичної реалізації отриманого автомата треба двоично закодувати все сигнали. Для кодування y і p. s досить одного двоичного розряду, x вимагає двох — x1 і x2:

|x |x1 |x2 | |0 |0 |0 | |1 |0 |1 | |2 |1 |0 | |3 |1 |1 |.

Таблиця 2.3.6 — Двоичная кодування x.

Складаємо таблицю істинності для комбінаційної частини схеми з урахуванням таблиці (2.3.5). Отримуємо дві функції трьох аргументов:

|x1(j) |0|0|0|0|1|1|1|1| |x2(j) |0|0|1|1|0|0|1|1| |s (j) |0|1|0|1|0|1|0|1| |y (j) |1|0|0|1|1|0|0|1| |s (j+1)|0|0|1|1|0|0|1|1|.

Таблиця 2.3.7 — Таблиця істинності комбінаційної части.

Отож кожну з функцій y (j) і s (j+1) мінімізуємо з допомогою карт Карно: y (j) s (j+1) x1(j)x2(j) x1(j)x2(j).

00 01 11 10.

00 01 11 10.

0 1 1.

0 1 1 s (j) s (j).

1 1 1.

1 1 1.

Малюнок 2.3.2 — Карти Карно для комбінаційної части.

З вибраних покриттів записуємо минимизированные висловлювання для функцій переходів і выходов:

[pic] (2.3.2).

[pic].

(2.3.3).

Реалізуємо отримані функції як комбінаційної схеми, додаючи до ній елементи пам’яті - D — тригер і затримку. Комбінаційну частина реалізуємо в базисі І - АБО — НЕ.

Малюнок 2.3.2 — Схема минимизированного автомата в базисі І - АБО — НЕ.

2.3.4 Висновки по разделу.

У розділі показали приклад мінімізації (спрощення) кінцевого автомата з скороченням числа станів, і навіть приклад реалізації автомата на логічних елементах і елементах пам’яті. Ми вже переконалися у цьому, що кінцевий автомат є розширенням поняття комбінаційної схеми на випадок, коли щоб одержати вихідного сигналу в момент часу потрібно «пам'ятати» певна кількість попередніх значень вхідного сигналу, Не тільки його поточне значення. При практичної реалізації автомата стало очевидним користь проведених операцій із спрощення вихідного автомата і приведення його комбінаційної частини до конкретного базису.

3 Мережі Петри.

3.1 Постановка задачи.

Для заданої мережі Петрі, яка описує розподіл ресурсів для випадку двох процесів, вчинити ось як: а) виписати матричне рівняння зміни маркировок; б) побудувати дерево і граф покрываемости маркировок; в) описати поведінкові властивості мережі з урахуванням графа покрываемости і матричних рівнянь; р) виписати безліч досяжних з ?0 маркировок; буд) розробити програму моделювання мережі Петри.

3.2 Теоретичні сведения.

Мережі Петрі - найвдаліший з математичний апарат для моделювання, аналізу, синтезу і проектування найрізноманітніших дискретних систем з паралельно що перебігають процессами.

Визначення. Мережею Петрі називається четвірка элементов.

З = (P, T, I, O),.

(3.2.1) где.

P = { p1, p2,…, pn }, n > 0.

(3.2.2).

безліч позицій (конечное),.

T = { t1, t2,…, tm }, m > 0.

(3.2.3).

безліч переходів (конечное),.

I: T > P.

(3.2.4).

функція входів (відображення безлічі переходів у вхідні позиции),.

O: T > P.

(3.2.5).

функція виходів (відображення безлічі переходів у вихідні позиции).

Якщо pi [pic] I (tj), то pi — вхідні позиція j — го переходу, якщо pi [pic]I (tj), то pi — вихідна позиція j — го перехода.

Для наочного уявлення мереж Петрі використовуються графы.

Граф мережі Петрі є двочастковий орієнтований мультиграф.

G = (V,[pic]),.

(3.2.6).

де V = P U T, причому P? T = Ш.

З графічного уявлення мережі Петрі, їх можна знайти й так:

З = (P, T, A),.

(3.2.7).

де, А — матриця инцидентности графа сети.

Визначимо поняття маркірованої мережі Петрі - є ключовим для будь-який сети.

Маркування? мережі Петрі З = (P, T, I, O) є функция:

N = ?(P), N [pic] N,.

(3.2.8).

отображающая безліч позицій силою-силенною натуральних чисел. Маркірування можна також ознайомитися з’ясувати, як вектор:

? = {?1, ?2,…, ?n} ,.

(3.2.9).

где n = |P |, а ?і [pic] N. Між цими визначеннями є связь:

?і =? (pi).

(3.2.10).

На графі маркірування відображається ссответствующим числом точок у кожному позиції. Крапки називаються маркерами чи фішками. Якщо фішок багато (більше трьох), їх кількість відображається числом.

Отже, маркіроване мережу Петрі є п’ятірку элементов:

M = (P, T, I, O, ?).

(3.2.11).

Приклад найпростішої мережі Петри:

p1.

??? t1 p3.

p2 ?

Малюнок 3.2.1 — Приклад мережі Петри.

Правила роботи з мережами Петри.

Мережа Петрі виконується у вигляді запуску переходів. Перехід може бути запущено у тому випадку, що він разрешён. Перехід є разрешённым, якщо кожна гілка його вхідних позицій містить число фішок одна з, ніж число дуг з неї за даний переход.

Процедура запуску полягає у видаленні з кожної вхідний позиції переходу числа фішок, рівного числу дуг з неї, й у виставлянні у кожному вихідний позиції числа фішок, рівного числу дуг, що входить до неё.

Проілюструємо сказане з прикладу вже намальованої мережі Петрі. Запустимо у ній перехід t1 — якого є разрешённым:

p1.

? t1 p3.

p2 ?

Малюнок 3.2.2 — Приклад запуску переходу мережі Петри.

Простір станів і поведінкові властивості мереж Петри.

Нехай є маркіроване мережу Петри:

M = (P, T, I, O, ?).

(3.2.12).

У неї n позицій. У кожній позиції трохи більше N фішок. Тоді простір сотояний є чимало всіх можливих маркировок мережі. Визначимо? — функцію наступного состояния.

Якщо перехід tj разрешён при поточної маркуванню? , то наступна маркірування ?' визначиться так:

?' =? (?, tj).

(3.2.13).

Якщо перехід tj не разрешён, то? не определена.

Нехай {tj0, tj1,…, tjs} - послідовність запущених переходів. Тоді їй відповідатиме послідовність {?0, ?1,…,?s+1}, то есть.

?k+1 = ?(?k, tjk).

(3.2.14).

З останнього рівності можна визначити поняття безпосередньо досяжною маркування. Для мережі З = (P, T, I, O) маркірування ?' називається безпосередньо досяжною з? , якщо існує такий перехід tj [pic] T, при котором.

? «= ?(?, tj).

(3.2.15).

Можна поширити це поняття силою-силенною досяжних з цієї маркировок. Визначимо безліч досяжних з? маркировок R (C, ?) так: у — перших,? [pic] R (C, ?); у — других, якщо ?' [pic] R (C, ?), ?' = ?(?, tj) і ?'' = ?(?', tk), те й ?'' [pic] R (C, ?).

За підсумками введённых понять можна сформулювати ряд властивостей мережі Петрі, характеризуючих їх у процесі зміни маркировок — назвемо їх поведінковими властивостями мережі Петрі. Визначимо найважливіші з них.

1. Досяжність даної маркування. Нехай є деяка маркировка.

?, яка від початковій. Тоді виникає запитання досяжності: чи можна шляхом запуску певній поледовательности переходів перейти з початковій в задану маркировку.

2. Обмеженість. Мережа Петрі називається kобмеженою, якщо будь-який маркуванню кількість фішок у кожній із позицій вбирається у k. Зокрема, мережу називається безпечної, якщо k одно 1. З іншого боку, мережу називається однорідної, тоді як ній відсутні петлі і одинарної (простий), тоді як неї немає кратних дуг.

3. Активність. Мережа Петрі називається активної, якщо самостійно від дотигнутой з ?0 маркування існує послідовність запусків, яка веде запуску цього перехода.

Реально вводять поняття кількох рівнів активності для конкретних переходів. Перехід tj [pic] T називається: а) пасивним (L0- активним), коли він будь-коли то, можливо запущено; б) L1- активним, коли може бути запущено послідовністю переходів з ?0 хоча колись; в) L2- активним, для будь-якого числа K існує послідовність запусків переходів з ?0, коли він даний перехід може спрацювати K і більше разів; р) L3- активним, якщо він L2- активним при K > ?.

4. Оборотність. Мережа Петрі оборотна, для будь-який маркування ?

[pic] R (C, ?0) маркірування ?0 досяжним з ?.

5. Покрываемость. Маркування? покрываема, якщо є інша маркірування ?' [pic] R (C, ?0) така, що у кожній позиції ?' фішок незгірш від, ніж у позиціях маркування ?.

6. Стійкість. Мережа Петрі називається стійкою, для будь-яких двох дозволених переходів спрацьовування однієї з них призводить до забороні спрацьовування другого.

Існують дві основні методу аналізу мереж Петрі: матричні і засновані на побудові дерева покрываемости.

Перша група методів полягає в матричному поданні маркировок і послідовностей запуску переходів. І тому визначимо дві матриці розмірності кількість позицій [pic] кількість переходів, пов’язані з структурою мережі. Перша матриця називається матрицею входов:

D — [і, j] = # (pi, I (tj)),.

(3.2.16).

каждый її елемент дорівнює числу фішок, що йдуть з jі позиції під час запуску іго переходу. Друга матриця називається матрицею выходов:

D + [і, j] = # (pi, O (tj)),.

(3.2.17).

каждый її елемент дорівнює числу фішок, які у jю позицію під час запуску іго переходу. Визначимо одиничний вектор e[j] розмірності m, у якому нулі переважають у всіх позиціях крім тієї, що відповідає запускаемому в момент переходу. Вочевидь, що перехід разрешён, якщо? ? e[j]· D -. Тоді результат запуску jго переходу можна описати так:

?' =? + e[j]?D,.

(3.2.18).

где D = (D + - D -) — матриця змін. Тоді всі сформульовані раніше проблеми мережі Петрі легко інтерпретуються матричними рівняннями вида.

? = ?0 + ??D,.

(3.2.19).

где? — досліджувана маркірування,? — вектор, компоненти якого показують, скільки ж разів спрацьовує кожен переход.

Хоча даний метод досить простий, не не містить певних вад. Як-от, його застосування дає лише необхідні умови існування якогоабо властивості, інакше кажучи, може гарантувати лише його відсутність, йдеться про присутності зможемо спілкуватися з упевненістю, лише проаналізувавши дерево покрываемости (зміни) маркировок.

Дерево маркировок мережі - це пов’язаний граф, в вершинах якого перебувають маркування, що їх сягнули результаті послідовного запуску дозволених переходів, але в дугах, що з'єднують вершини — зпускаемые переходи. Шлях від кореня до кожної маркуванню відбиває послідовність запусків, яка призвела до неї. Коренем дерева є початкова маркірування. При необмеженому накапливании фішок в позиції на дереві утворюється петля, а маркуванню дома, відповідному зациклившейся позиції, ставиться? — символ нескінченно великого числа.

Зрозуміло, що це метод хоч і вимагає стомливого перебору всіх можливих маркировок мережі, зате за тим самим готовому дереву досить легко аналізувати проблеми досяжності, покрываемости, активності, оборотності сети.

Описав поведінкові властивості та художні засоби аналізу, можна перейти безпосередньо до аналізу конкретної мережі Петри.

3.3 Розрахунки й оприлюднювати отримані результаты.

Вихідна мережу вигляді графа:

p1 p6.

t1? p4 t4.

p2 p7.

t2? p5 t5.

p3 p8.

t3 t6.

Малюнок 3.3.1 — Вихідна мережу Петри.

Для матричного аналізу мережі знайдемо її матрицю изменений.

[pic] (3.3.1).

[pic] (3.3.2).

Матрицю змін знайдемо як різницю між (3.3.2) і (3.3.1):

[pic] (3.3.3).

Отже, отримавши матрицю змін, можна записати матричне рівняння зміни маркировок виду (3.2.19). Вектор початковій маркування визначимо так:

?0 = (10 011 100).

(3.3.4).

Складемо дерево покрываемости маркировок сети.

(10 011 100) ‘Новая'.

t1 t4.

‘Новая'.

‘Новая'.

(1 001 100) (10 010 010).

t2 t4 t1 t5.

(100 100) (1 000 010) (1 000 010) (10 000 001).

‘Нова' ‘Безвихідь' ‘Тупик'.

‘Нова' t3 t6.

(10 011 100) ‘Стара' (10 011 100) ‘Старая'.

Малюнок 3.3.1 — Дерево покрываемости маркировок.

Дерево покрываемости зручно оформити як графа. У цьому більш наочно видно зацикливающиеся переходи, тупикові маркування ніякими додатковими поясненнями постачати непотрібен — відсутність дуг, що виходять з даної маркування, свідчить сам за себе. При досягненні старої маркування її потрібно наново наносити на граф — досить з'єднати дугою попередню маркірування вже існуючу «старую».

Граф покрываемости мережі виглядає наступним образом:

?0 t3 t6.

100 100 t1 t4 10 000 001.

t2 t5.

1 001 100 10 010 010.

t4 t1.

Малюнок 3.3.2 — Граф покрываемости маркировок мережі Петри.

Проаналізуємо мережу двома методами — матричним і графічним і порівняємо отримані результаты.

Питання досяжності якийабо маркування найлегше вирішується, дивлячись на граф покрываемости. Справді, візьмемо приміром дві маркування: ?1 = (1 000 010) і ?2 = (100 010). Перша їх досяжним, і можливі двома способами приходу до неї: t1, t4 чи t4, t1. Але вони не єдині, перед другим запуском переходу можливо безліч разів запустити для першого випадку послідовність t2, t3, на другому випадку — t5, t6. Друга маркірування явно недосяжна, оскільки її немає на графе.

З допомогою матриць це запитання вирішується так. Складаємо рівняння виду (3.2.19), у якому замість? ставимо невідомий вектор x тієї ж розмірності, а замість? — цікаву для нас маркірування ?1. У результаті отримуємо систему з 8 рівнянь щодо 6 невідомих компонент вектора x.

[pic].

(3.3.5).

Проаналізувавши цю систему, бачимо, що п’яте рівняння є наслідком з третього і шостого, шосте — з сьомого і восьмого, перше — з другого і третього. З (1) і (4) слід, що x5 = 0, x6 = 0, з (7) слід, що x4 = 1. Перші три рівняння в (3.3.5) є лінійно залежними, тому за вільне невідоме приймемо x1. Тоді отримуємо рішення, у вигляді x1 = {y y-1 y-1 1 0 0}, де y — будь-яке ціла кількість. Отримане рішення говорить про досяжності маркування ?1 і вказує, які з переходів й скільки раз би мало бути при цьому запущены.

Порівнявши обидва способу розв’язання, відразу помітні недоліки другого. Уперших, рішення (3.3.5) не вказує, який саме послідовності мали бути зацікавленими запущені зазначені переходи. Удругих, коли бачиш матрицю змін, ми можемо бачити про наявність у мережі петель. З іншого боку, отримане матричне рішення не дає, власне кажучи, гарантій своєї можливості бути реалізованим — є лише необхідною умовою досяжності. Проте, не отримавши рішення, можна казати про недосяжність маркировки.

Справді, записавши (3.2.19) для ?2, отримуємо систему:

[pic].

(3.3.6).

Система є несовместной, оскільки після вирахування третього рівняння з шостого отримуємо рівняння, суперечить п’ятому. Тому можна дійти невтішного висновку про недосяжність ?2, співпадаючий з отриманими із графа покрываемости маркировок.

З графа (3.3.2), можна зрозуміти, що мережа є безпечної. Справді, в жодній з позицій на маркировках не накопичується більше однієї фішки. Це засвідчує тому, реальний процес, описуваний мережею, протікає без конфліктів. Однак про повної відсутності конфліктів зарано говорити. Цей висновок неможливо отримати гроші з матричного рівняння, оскільки якого є узагальненням, зробленою з урахуванням знання всіх можливих маркировок, які утворюються в сети.

Ця мережу є активної - у ній кожен перехід може спрацювати хоча колись. Проаналізуємо рівні активності окремих переходів. Переходи t1 і t4 є L1- активними, оскільки вони у щонайгіршому разі (тобто за отримання тупикової маркування) можуть спрацювати хоча б тільки раз. Переходи t2, t3, t5 і t6 є L2- активними, оскільки можуть спрацювати будь-яке наперед заданий число разів, і навіть больше.

Звідси можна дійти невтішного висновку у тому, що це мережу перестав бути безконфліктною — в неї тупиковий состояние.

Можна ще сказати, що мережа є оборотного. Такий висновок можна отримати й матричним шляхом — вирішивши уравнение.

x· D = 0.

(3.3.7).

Отримуємо систему.

[pic].

(3.3.8).

Ця система має 2 рішення: {y y y 0 0 0} і {0 0 0 y y y}, де y — будь-яке. Справді, запускаючи будь-яке число раз послідовності t1 t2 t3 чи t4 t5 t6, щоразу ми повертаємося до початкової маркировке.

З графа (3.3.2) слід, жодна з маркировок мережі не є покрываемой. Справді, ні на однієї маркування немає інший, на яку у кожному позиції прошкувати було би менше фішок, ніж у исходной.

Можна сміливо сказати, що це мережу перестав бути стійкою. У неї є глухий кут, та, крім того, безпосередньо перед переходом в тупиковий стан завжди існують два дозволених переходу. Запускаючи ‘неправильний' перехід, ми забороняємо обидва — і опиняємося у глухому куті. Таке властивість мережі свідчить про наявність потенційно можливих конфликтов.

Па підставі графа (3.3.2) можна виписати безліч досяжних з ?0 маркировок:

[pic].

(3.3.9).

Для моделювання мережі було написано програма мовою Turbo Pascal. Вона відбиває сучасний стан сіті й разрешённые у кожний момент переходи. Для вибору запускаемого переходу використовується мышь.

3.4 Висновки по разделу.

У розділі быа проаналізована й змодельована мережу Петрі, яка служить моделлю функціонування двох виробничих процесів, пов’язаних двома загальними ресурсами. Через війну можна дійти невтішного висновку про принциповому про наявність у системі безвиході, що виникає при спробі одночасного запуску обох процесів виконання. Щоб не виникало глухого кута, необхідно кожен із процесів доводити до завершення, і не запускати інший процес, доки закінчено все три циклу першого. Все вищесказане цілковито справджується написаної програмою, моделюючою все описані ситуації, що у сети.

ЗАКЛЮЧЕНИЕ

.

Діяльність було розглянуто питання спрощення і синтезу дискретних двійкових пристроїв з ‘пам'яттю' і неї, і навіть проаналізовано мережу Петрі, моделююча конкретний виробничий процес і відповідні висновки щодо самого процесса.

1. Сигорский В. П. Математичний апарат інженера.- Киев: Техника,.

1975. -538 с.

2. Г. Корн, Т. Корн Довідник з математики фінансування наукових працівників і інженерів.- М.: Наука, 1984. -831 с.

3. В. Брауэр Введення у теорію кінцевих автоматів.- М.: Радіо і связь,.

1987. -392 с.

4. Фаронов В. В. Турбо Паскаль 7.0: практика програмування. — М.:

Нолидж, 1997. -432 с.

Додаток А.

Програма моделювання мережі Петри.

Program Farewell_Pascal_Please_Forgive_Me; Uses graph, crt; Const m0=$ 9C; r0=$ 90; path= «cursor.dat »; mask: array[0.5] of byte = ($ 90,$ 48,$ 20,$ 0C,$ 12,$ 01); jump: array[0.5] of word = ($406 °F,$ 20B7,$ 98DF,$ 02F3,$ 01ED,$ 1CFE); Var i, j, counter, number: integer; flag_of_exit:boolean; ok: word; bm: integer; ScrMask: array[1.64] of byte; r, m, old_m, old_r:byte; f: file of byte; procedure Init_Graph_Mode; var.

Driver,.

Mode,.

ErrCode: Integer; begin.

Driver := Detect;

InitGraph (Driver, Mode, «»);

ErrCode := GraphResult; if ErrCode grOk then begin.

Writeln («Помилка графічного режиму: » ,.

GraphErrorMSG (ErrCode));

Halt (1); end; SetTextStyle (DefaultFont, HorizDir, 1); SetColor (15); SetLineStyle (0,0,1); SetFillStyle (1,0) end; function Init_Mouse:word; begin asm push ax mov ax, 00h int 33h mov @Result, ax pop ax end end; procedure Show_Mouse; begin asm push ax mov ax, 01h int 33h pop ax end end; procedure Hide_Mouse; begin asm push ax mov ax, 02h int 33h pop ax end end; procedure Set_Graph_Cursor (segm, ofst: word;x, y: integer); begin asm push ax push bx push cx push dx mov bx, x mov cx, y mov es, segm mov dx, ofst mov ax, 09h int 33h pop dx pop cx pop bx pop ax end end; procedure Get_Mouse_State (var bt, x, y:integer); begin asm push ax push bx push cx push dx mov ax, 03h int 33h lds di, bt mov [di], bx lds di, x mov [di], cx lds di, y mov [di], dx pop dx pop cx pop bx pop ax end end; procedure Get_Web_State; begin r := 0; for counter:= 0 to 5 do if (mask[counter] and m) = mask[counter] then r := r or ($ 80 shr counter) end; procedure Design_Kernel; begin.

OutTextXY (190,20, «Розподіл ресурсів для »);

OutTextXY (207,27, «випадку двох процесів »); for counter := 0 to 2 do.

Circle (150,counter*150+50,15); for counter := 0 to 2 do.

Circle (450,counter*150+50,15); for counter := 0 to 1 do.

Circle (300,counter*150+120,15); for counter := 0 to 2 do begin.

Line (140,counter*150+123,160,counter*150+123);

Line (140,counter*150+127,160,counter*150+127);

Line (140,counter*150+123,140,counter*150+127);

Line (160,counter*150+123,160,counter*150+127) end; for counter := 0 to 2 do begin.

Line (440,counter*150+123,460,counter*150+123);

Line (440,counter*150+127,460,counter*150+127);

Line (440,counter*150+123,440,counter*150+127);

Line (460,counter*150+123,460,counter*150+127) end; for counter := 0 to 1 do begin.

Line (counter*300+150,65,counter*300+150,123);

Line (counter*300+150,127,counter*300+150,185);

Line (counter*300+150,215,counter*300+150,273);

Line (counter*300+150,277,counter*300+150,335);

Line (counter*300+150,365,counter*300+150,423);

Line (counter*300+150,123,counter*300+148,114);

Line (counter*300+150,123,counter*300+152,114);

Line (counter*300+150,185,counter*300+148,176);

Line (counter*300+150,185,counter*300+152,176);

Line (counter*300+150,273,counter*300+148,264);

Line (counter*300+150,273,counter*300+152,264);

Line (counter*300+150,335,counter*300+148,326);

Line (counter*300+150,335,counter*300+152,326);

Line (counter*300+150,423,counter*300+148,414);

Line (counter*300+150,423,counter*300+152,414) end;

Arc (120,427,180,360,25);Arc (480,427,180,360,25);

Arc (122,35,0,180,27);Arc (478,35,0,180,27);

Line (95,35,95,425);Line (505,35,505,425);

Line (293,134,163,431);Arc (159,427,180,330,5);

Line (290,281,170,436);Arc (162,427,180,320,12);

Line (307,134,436,431);Arc (440,427,210,360,5);

Line (310,281,429,436);Arc (438,427,220,360,12);

Line (283,117,169,106);Arc (171,121,80,180,15);

Line (312,129,439,262);Arc (429,273,0,45,15);

Line (283,267,169,256);Arc (171,271,80,180,15);

Line (311,257,426,110);Arc (432,121,0,160,12);

Line (150,35,145,26);Line (150,35,150,26);

Line (450,35,455,26);Line (450,35,450,26);

Line (155,123,156,114);Line (155,123,159,115);

Line (155,273,156,264);Line (155,273,159,265);

Line (445,123,444,114);Line (445,123,440,115);

Line (445,123,444,114);Line (445,123,441,116);

Line (445,273,444,264);Line (445,273,440,265);

Line (293,135,287,142);Line (293,135,291,143);

Line (307,135,309,143);Line (307,135,312,142);

Line (290,282,282,288);Line (290,282,285,290);

Line (311,282,315,290);Line (311,282,317,288);

SetFillStyle (1,8); for counter := 0 to 1 do begin.

Line (540,counter*70+150,600,counter*70+150);

Line (540,counter*70+170,600,counter*70+170);

Line (600,counter*70+150,600,counter*70+170);

Line (540,counter*70+150,540,counter*70+170);

FloodFill (570,counter*70+160,15) end;

SetFillStyle (1,15);

OutTextXY (543,159, «Restore »);

OutTextXY (555,229, «Exit »); end; procedure Design_Mark_and_Jumps; begin.

SetColor (15);

SetLineStyle (0,0,3);

SetFillStyle (1,15);

Hide_Mouse; for counter := 0 to 2 do if ((m shr (7 — counter)) and 1) = 1 then begin.

SetColor (15);

SetFillStyle (1,15);

FillEllipse (150,counter*150+50,1,1) end else begin.

SetColor (0);

SetFillStyle (1,0);

FillEllipse (150,counter*150+50,1,1) end; for counter := 3 to 4 do if ((m shr (7 — counter)) and 1) = 1 then begin.

SetColor (15);

SetFillStyle (1,15);

FillEllipse (300,(counter-3)*150+120,1,1) end else begin.

SetColor (0);

SetFillStyle (1,0);

FillEllipse (300,(counter-3)*150+120,1,1) end; for counter := 5 to 7 do if ((m shr (7 — counter)) and 1) = 1 then begin.

SetColor (15);

SetFillStyle (1,15);

FillEllipse (450,(counter-5)*150+50,1,1) end else begin.

SetColor (0);

SetFillStyle (1,0);

FillEllipse (450,(counter-5)*150+50,1,1) end; for counter := 0 to 2 do if ((r shr (7 — counter)) and 1) = 1 then begin.

SetFillStyle (1,10);

FloodFill (150,counter*150+125,15) end else begin.

SetFillStyle (1,12);

FloodFill (150,counter*150+125,15) end; for counter := 3 to 5 do if ((r shr (7 — counter)) and 1) = 1 then begin.

SetFillStyle (1,10);

FloodFill (450,(counter-3)*150+125,15) end else begin.

SetFillStyle (1,12);

FloodFill (450,(counter-3)*150+125,15) end;

SetColor (15);

SetFillStyle (1,15);

Show_Mouse end; Begin.

Init_Graph_Mode; ok := Init_Mouse; flag_of_exit := false; m := m0; r := r0; old_m := 0; old_r := 0; if ok = $FFFF then begin {$I-} assign (f, path); reset (f); ok := filesize (f); {$I+} if (IOResult = 0) and (ok = 64) then begin for і := 0 to 63 do read (f, ScrMask[i]);

Set_Graph_Cursor (seg (ScrMask), ofs (ScrMask), 2,2) end;

Design_Kernel;

Show_Mouse; repeat.

Get_Mouse_State (bm, i, j); if (m old_m) or (r old_r) then begin.

Get_Web_State;

Design_Mark_and_Jumps; old_m := m; old_r := r end; if bm = 1 then begin number := 6; for counter := 0 to 2 do if (і < 165) and (і > 135) and.

(j < counter*150+130) and (j > counter*150+120) then number := counter; for counter := 3 to 5 do if (і < 465) and (і > 435) and.

(j < (counter-3)*150+130) and (j > (counter-3)*150+120) then number := counter; if (number < 6) and (((1 shl (7-number)) and r) 0) then begin m := m and (jump[number] and $FF); m := m or (jump[number] shr 8) end; if (і < 600) and (і > 540) and (j < 170) and (j > 150) then m := m0; if (і < 600) and (і > 540) and (j < 240) and (j > 220) then flag_of_exit := true end; until flag_of_exit;

Hide_Mouse;

CloseGraph end else begin.

CloseGraph;

WriteLn («Помилка миші: Device or driver not found. ») end End. ———————————- [pic].

[pic].

[pic].

Показати весь текст
Заповнити форму поточною роботою