КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Спецификация структуры
Как уже упоминалось и было продемонстрировано на нескольких примерах, одним из главных достоинств автоматного программирования является представление логики поведения системы в наиболее понятном и наглядном виде – с использованием графической нотации графов (или диаграмм) переходов. Однако не только логика поведения требует наглядного преставления. Спецификация структуры системы является, наряду со спецификацией поведения, одним из двух основных результатов процесса проектирования и также требует подходящей нотации. В примерах, приводимых до сих пор, структура системы (объекты управления, автоматы и связи между ними) описывалась словесно. Как могли убедиться читатели, такое описание громоздко и не обладает свойством наглядности. В программировании с явным выделением состояний для описания структуры системы используется графическая нотация схем связей автоматов. Схема связей строится отдельно для каждого автомата системы. На ней в виде прямоугольника изображается сам автомат (рис. 2.20). Слева от него изображаются источники информации (в событийных системах их также называют поставщиками событий) – сущности из системы или внешней среды, которые формируют входные воздействия автомата. Для каждого события, входной переменной или предиката с номером состояния между автоматом и источником информации проводится линия, помеченная идентификатором и словесным описанием этого события (переменной, предиката). Таким образом, схема связей служит, в частности, для расшифровки сокращенных идентификаторов событий и переменных, используемых на диаграмме переходов. Справа от автомата изображаются его объекты управления и подчиненные (вложенные или вызываемые) автоматы. Для каждой выходной переменной между автоматом и соответствующим объектом управления проводится линия, помеченная идентификатором и описанием переменной. Если вызываемому автомату передается одно или несколько событий, то для каждого из этих событий также проводится линия с пометками. Если объекты управления являются также и источниками информации – формируют часть входных переменных автомата – то они изображаются справа, а линии, соответствующие входным переменным изображаются в виде обратных связей.
Программная реализация часов с будильником на языке С
const int h = 1; const int m = 2; const int a = 3; int e; // Текущее событие int y; // Текущее управляющее состояние // Реализация объекта управления int hrs; int mins; int alarmHrs; int alarmMins;
void z1() { hrs = (hrs + 1) % 24; }
void z2() { mins = (mins + 1) % 60; }
void z3() { alarmHrs = (alarmHrs + 1) % 24; }
void z4() { alarmMins = (alarmMins + 1) % 60; }
// Реализация управляющего автомата void A1 () { switch (y) { case 1: // Будильник выключен if (e == h) { z1(); } else if (e == m) { z2(); } else if (e == a) { y = 2; } break; case 2: // Установка времени будильника if (e == h) { z3(); } else if (e == m) { z4(); } else if (e == a) { y = 3; } break; case 3: // Будильник включен if (e == h) { z1(); } else if (e == m) { z2(); } else if (e == a) { y = 1; } break; } }
Дата добавления: 2015-05-26; Просмотров: 407; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |