Студопедия

КАТЕГОРИИ:


Архитектура-(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)

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




Void main(void)

Пример

Лабораторная работа 8. Файлы

 

1. Создать текстовый файл "a.txt". Подсчитать количество содержащихся в нем букв "а".

2. Создать текстовый файл "a.txt". Определить, каких в нем букв больше, гласных или согласных.

3. Предложить пользователю ввести с клавиатуры 5 строк. Создать текстовый файл "a.txt" и занести в него строки, длина которых меньше 10 символов.

4. Создать текстовый файл "a.txt". Изменить его таким образом, чтобы каждая строка была записана в обратном порядке.

5. Создать текстовый файл "a.txt". Исключить из него все цифры.

6. Предложить пользователю ввести с клавиатуры 5 строк. Создать текстовый файл "a.txt" и занести в него строки, заканчивающиеся на согласные буквы.

7. Создать текстовые файлы "a.txt" и "b.txt", записав в них равное количество строк. Создать третий файл "c.txt" таким образом, чтобы в нем чередовались строки файлов "a.txt" и "b.txt".

8. Создать текстовый файл "a.txt". Изменить его таким образом, чтобы строки были записаны в обратной последовательности, т.е. первая строка должна стать пятой, а пятая – первой, и т.д.

 

 

Предложить пользователю ввести с клавиатуры 5 строк. Создать текстовый файл "a.txt" и занести в него строки, не содержащие букв латинского алфавита.

 

# include <iostream.h>

# include <conio.h>

# include <string.h>

# include <stdio.h>

char str[80], lat[]={"qwertyuioplkjhgfdsazxcvbnm"};

int Test(void);

int Test(void)

{char *str1;

int j, flag;

flag=0;

str1=str;

while (*str1)

{for (j=0; j<=25; j++)

if (*str1==lat[j]) flag=1;

str1++;}

return flag;

}

{FILE *fp;

int i;

clrscr();

fp=fopen("a.txt","w");

for (i=0; i<=4; i++)

{ cout<<"Введите строку "<<i<<"\n";

gets(str);

if (!Test(void))

fputs(strcat(str,"\n"), fp);

}

fclose(fp);

}

 

 

Суть автоматного программирования состоит в том, что управляющая программа строится и функционирует как конечный автомат, который может находиться в каждый момент времени только в одном из 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;




Поделиться с друзьями:


Дата добавления: 2015-06-04; Просмотров: 345; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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