КАТЕГОРИИ: Архитектура-(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; Просмотров: 364; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |