Основы автоматного программирования

Построение управляющей программы и ее функционирование как конечного автомата, находящегося в каждый момент времени в одном из N состояний. Вычисление логических условий в каждом цикле для текущего состояния, позволяющих изменить состояние программы.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 09.10.2016
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ОСНОВЫ АВТОМАТНОГО ПРОГРАММИРОВАНИЯ

Суть автоматного программирования состоит в том, что управляющая программа строится и функционирует как конечный автомат, который может находиться в каждый момент времени только в одном из N состояний. При этом в каждом цикле для текущего состояния (иначе, ШАГА программы) вычисляются логические условия, позволяющие изменить состояние программы.

Теоретиками автоматного программирования предложена следующая концепция идеальной программной реализации:

- вся логика программы строится на основе селектора (switch в языке Си);

- вспомогательно используется оператор условия if;

- обязательно наличие цикла, охватывающего код собственно реализации автомата.

Представим универсальный автоматный алгоритм в общем виде (рис. 1).

Рис. 1

Рамка имитирует цикловую природу реализации автомата. Вверху явно указан оператор "while(cycle)", где "cycle" - признак продолжения цикла, который перед передачей управления оператору while должен быть установлен в ненулевое значение.

Автоматная программа имеет несколько состояний Y. Обязательно наличие начального состояния Y=0.

Переходы между состояниями обозначаются стрелками и помечаются дробью: входное событие Х / выходное событие Z (действие на соответствующем переходе).

Пусть мы находимся в состоянии Y=i. Тогда при наступлении входного события Хij, за которым скрыто соответствующее логическое выражение, выполняется некоторая последовательность операторов Zij, подготавливающая функционирование автоматной программы в новом состоянии, и осуществляется переход в новое состояние (Y=j).

Разумеется, не обязательно должен быть возможен переход из любой вершины в любую. При его невозможности соответствующий Х равен нулю, и дуга отсутствует.

Входному событию взаимно однозначно соответствует переход из текущего состояния в другое. Если ни одно из вычисляемых в данном состоянии событий не наступило, то сохраняется текущее состояние, и этому соответствует логическое условие, отрицающее любое из входных событий - условий переходов в другие состояния (см. "петли" - дуги, исходящие и заходящие в одну и ту же вершину).

Отдельно, через запятую, указаны операторы вида "cycle = 0", что означает конец циклической обработки. При этом направление перехода всегда к начальной вершине, она же является и заключительной для обеспечения корректного повторного использования данной подпрограммы.

Приведем структуру программы на языке Си, реализующей представленный на рис. 1 алгоритм.

int X01, ..., ХN(N-1), Z01, ..., ZN(N-1), Y=0, cycle=1;

while(cycle)

{

switch(Y)

{

case 0:

if (X01) {Z01; Y=1;}

else

...

if (X0i) {Z0i; Y=i;}

else

...

if (X0N) {Z0N; Y=N;}

else Z00;

break;

case 1:

if (X10) {Z10; Y=0; cycle=0;}

else

...

if (X1i) {Z1i; Y=i;}

else

...

if (X1N) {Z1N; Y=N;}

else Z11;

break;

...

case i:

if (Xi0) {Zi0; Y=0; cycle=0;}

else

...

if (Xi(i-1)) {Zi(i-1); Y=i-1;}

else

if (Xi(i+1)) {Zi(i+1); Y=i+1;}

else

...

if (XiN) {ZiN; Y=N;}

else Zii;

break;

...

case N:

if (XN0) {ZN0; Y=0; cycle=0;}

else

...

if (XNi) {ZNi; Y=i;}

else

...

if (XN(N-1)) {ZN(N-1); Y=N-1;}

else ZNN;

break;

}

}

Рассмотрим пример реализации алгоритма управления и контроля трехпозиционным клапаном (Кл) с памятью с помощью трех кнопок без памяти. Наличие памяти в исполнительных механизмах объекта управления (клапана) позволяет снимать с них управляющие сигналы после того, как клапан откроется или закроется, сохраняя это положение.

Приведем словесное описание алгоритма управления клапаном [Шалыто А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998].

1. При нажатии кнопки "Откр." (Х1) клапан начинает открываться.

2. После его открытия срабатывает сигнализатор открытого положения, зажигается лампа "Откр." (Х4) и снимается управляющий сигнал с клапана (Z2).

3. При нажатии кнопки "Закр." (X2) клапан начинает закрываться.

4. После его закрытия срабатывает сигнализатор закрытого положения, зажигается лампа "Закр." (X3) и снимается управляющий сигнал с клапана (Z1). программа состояние логический цикл

5. Если в течение трех секунд (T=3) клапан не откроется или не закроется, то управляющий сигнал с клапана снимается и зажигается лампа контроля "Неисправность" (Z3).

6. Сброс сигнала контроля осуществляется нажатием кнопки "Разблок." (Х5), после чего клапан принудительно закрывается.

7. Для фиксации события одновременного нажатия двух управляющих кнопок Х1 и Х2 включена лампа сигнализации "Ошибка" (Z4). Сброс сигнализации также осуществляется кнопкой Х5.

На рис. 2 приведена схема связей "источник информации - управляющий автомат - исполнительные механизмы", содержащая интерфейс автомата, краткие комментарии, поясняющие смысл используемых переменных и свойства органов управления, исполнительных механизмов и собственно объекта управления.

Рис. 2

По словесному описанию и приведенной схеме связей построим граф переходов автомата (рис. 3) в соответствии с концепцией, изложенной выше. Подробно методика разработки графа переходов излагается в курсе "Основы логического управления".

Рис. 3

Построенная схема связей и граф переходов автомата, входящего в эту схему, однозначно определяют техническое задание на разработку программного обеспечения.

Реализуем граф переходов с помощью программы, написанной на Си++.

# include <iostream.h>

# include <conio.h>

# include <dos.h>

void main(void)

{int X1, X2, X3, X4, X5, Z1=0, Z2=0, Z3=0, Z4=0, Y=0, cycle=1;

clrscr();

while (cycle)

{switch (Y)

{case 0:

cout<<"Закрыт \n";

cout<<"input X1X2 ";

cin>>X1>>X2;

if (X1&!X2) {Y=1;}

if (X1&X2) {Y=5; Z4=1;}

break;

case 1:

cout<<"Открывается...\n";

delay(3000);

cout<<"input X4 "; cin>>X4;

if (X4) {Y=2; Z2=1;}

else {Y=4; Z3=1;}

break;

case 2:

cout<<"Открыт \n";

cout<<"input X1X2 ";

cin>>X1>>X2;

if (!X1&X2) {Y=3;}

if (X1&X2) {Y=5; Z4=1;}

break;

case 3:

cout<<"Закрывается...\n";

delay(3000);

cout<<"input X3 "; cin>>X3;

if (X3) {Y=0; Z1=1; cycle=0;}

else {Y=4; Z3=1;}

break;

case 4:

cout<<"Неисправность! \n";

cout<<"input X5 ";cin>>X5;

if (X5) {Y=0; cycle=0;}

break;

case 5:

cout<<"Ошибка! \n";

cout<<"input X5 "; cin>>X5;

if (X5) {Y=0; cycle=0;}

break;

}

}

}

Реализованный алгоритм должен являться составной частью курсового проекта, выполняемого в рамках дисциплины "Программирование и основы алгоритмизации". Выбор объекта для реализации алгоритма управления и контроля осуществляется по согласованию с преподавателем.

Размещено на Allbest.ru

...

Подобные документы

  • Построение праволинейной грамматики, автоматной грамматики по полученным результатам. Построение недетерминированного конечного автомата. Сведение недетерминированного конечного автомата к детерминированному. Описание программы и контрольного примера.

    курсовая работа [674,9 K], добавлен 13.06.2012

  • Построение математической модели программы, одноленточного автомата над алфавитом, допускающего различные множества слов. Алфавит терминальных символов, множество состояний и переходов. Определение начального и конечного состояний. Понятие сети Петри.

    контрольная работа [294,8 K], добавлен 17.09.2013

  • Разработка на языке программирования С++ программы анализа логических дисков. Интерфейс, диалог с пользователем. Определение текущего диска, его размера, занятого и свободного места, информации о кластерах. Организация программы с использованием меню.

    курсовая работа [182,1 K], добавлен 22.10.2012

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

    курсовая работа [210,8 K], добавлен 05.12.2013

  • Составление формальной грамматики, недетерминированный конечный автомат. Построение конечного автомата, программное моделирование работы конечного автомата. Граф детерминированного автомата, Синтаксическая диаграмма. Блок-схемы, примеры разбора строк.

    курсовая работа [486,2 K], добавлен 19.11.2010

  • Разработка управляющего автомата, ориентированного на выполнение заданной микрооперации. Разработка алгоритма работы управляющего автомата. Листинг программы. Выбор оптимального варианта кодирования состояний автомата. Синтез функции возбуждения.

    курсовая работа [506,9 K], добавлен 26.12.2012

  • Изучение методов построения конечного автомата, распознающего заданный язык, и принципы его программной реализации. Проектирование комбинационной и принципиальной схем распознающего конечного автомата с использованием библиотеки интегральных микросхем.

    дипломная работа [1,8 M], добавлен 18.08.2013

  • Создание модели с использованием шаблона, предложенного программой по умолчанию. Создание твердотельной модели. Построение траектории обработки и получение управляющей программы. Построение траектории обработки профиля. Отображение удаленного материала.

    курсовая работа [1,3 M], добавлен 25.07.2012

  • Этапы процедуры принятия решений. Разработка математического алгоритма. Блок-схема алгоритма работы программы. Разработка программы на языке программирования С++ в среде разработки MFC. Текст программы определения технического состояния станка с ЧПУ.

    курсовая работа [823,0 K], добавлен 18.12.2011

  • Программирование логических игр с помощью подходов СИИ. Методы работы с Windows Forms в языке С#, алгоритм поиска в пространстве состояний. Формализация дерева состояний. Описание использованных алгоритмов. Иерархическая схема и блок-схемы программы.

    курсовая работа [1,7 M], добавлен 01.12.2015

  • Устройство управления и синхронизации в структуре микропроцессора. Порядок синтеза конечного автомата (КА) для устройства управления ЭВМ. Алгоритм функционирования КА, заданный с помощью графа, функции переходов. Состояние триггеров в микросхеме.

    методичка [1019,0 K], добавлен 28.04.2009

  • Синтез автомата для преобразования двоично-десятичного кода. Кодировка алфавитов и состояний. Построение булевых функций, минимизация. Разметка вход-выходных слов для автомата Мили и автомата Мура. Реализация на элементах малой степени интеграции.

    контрольная работа [141,5 K], добавлен 14.10.2012

  • Понятие машинного и реального времени, дискретизация времени. Реализация временных задержек в программе. Вычисление значения многочлена методом Горнера. Разработка схем алгоритмов, основной программы и подпрограмм. Построение графика временной функции.

    курсовая работа [40,7 K], добавлен 18.04.2012

  • Сведение недетерминированного конечного автомата к детерминированному. Построение минимального детерминированного автомата из праволинейной грамматики двумя различными способами: с помощью сетей Петри и с помощью таблиц. Описание контрольного примера.

    курсовая работа [903,9 K], добавлен 14.07.2012

  • Составление треугольной таблицы. Нахождение списка максимальных классов совместимости, минимального замкнутого покрытия. Получение логических функций выходов автомата. Синтез конечного автомата и функциональной схемы. Принципиальная электрическая схема.

    контрольная работа [215,8 K], добавлен 22.06.2012

  • Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.

    курсовая работа [333,5 K], добавлен 21.01.2013

  • Особенности объектно-ориентированного программирования. Основные возможности языка программирования Java, классификация платформ. Создание программы, обеспечивающей вычисление арифметических выражений. Руководство пользователя и характеристика функций.

    курсовая работа [1,2 M], добавлен 07.07.2012

  • Принципы и понятия автоматного программирования. Виды конечных автоматов, их применение при построении лексических и синтаксических анализаторов. Описание конечных автоматов Миля и Мура, их различий в зависимости от способа формирования функций выхода.

    курсовая работа [430,9 K], добавлен 26.05.2015

  • Технология программирования задач для операторных и функциональных языков программирования, разработка алгоритма и отладка программы. Трансляция исходного текста, компоновка программы, ее выполнение с целью определения логических ошибок и тестирование.

    курсовая работа [336,6 K], добавлен 24.04.2010

  • Исследование арифметических, логических и вспомогательных операций, выполняемых микропроцессором. Построение блок-схемы инициализации резидентной программы и тела резидента. Характеристика основных особенностей написания программы на языке ассемблера.

    лабораторная работа [67,8 K], добавлен 20.11.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.