Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 377; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.