Лабораторная работа Тема: стиль программирования – автоматный

Общее задание: по неформальному описанию входного языка построить
  1. Формальное описание входного языка в виде регулярного выражения
  2. Конечный автомат в виде определения функции перехода:
· диаграмма переходов; · таблица переходов без действий; · таблица переходов с действиями;
  1. Программную реализацию конечного автомата с действиями, допускающего цепочку в соответствии с описанием языка и выполняющим определенные вычислительные действия с цепочкой (в соответствии с вариантом) в четырех версиях:
· (Рекурсия) состояния представлены функциями, переходы осуществляются посредством рекурсивного вызова; · (Цикл) состояния представлены перечислением, организован явный цикл с выбором следующего состояния; · (Функции) состояния представлены функциями, возвращающими следующие состояния; · (Метки) состояния представлены помеченными метками фрагментами программы, переходы – через оператор безусловного перехода.
  1. Отчет в Word (титульный лист, постановка задачи, формальное определение распознаваемого языка (регулярное выражение); определение автомата с графическим и табличным заданием функции перехода, примеры входных цепочек с результатами их обработки – не менее 10, тексты четырех версий программных реализаций с поясняющими комментариями); вывод о полученном результате.
 

Обратите внимание: в некоторых вариантах требуется пропускать пробелы!

№ вар. Неформальное описание языка Примеры допускаемых входных цепочек (здесь каждая цепочка – в отдельной строке) Вычисления, производимые действия
даты 12.12.1970 31.03.2500 29.02.1900 проверка корректности даты (по григорианскому каленарю)
е-mail адреса [email protected] x.x.x.files@ru проверка корректоности адреса (по стандартам адресации)
паскалевское вещественное число со знаком -3.1415E-012 1e54321 -1.0 вычисление значения или сообщение о невозможности вычисления
неравенства для неотрицательных целых 123> 321 0001 <1000 логическое значение
выражение с конкатенацией строк ‘abc’ +’de’ +’’ ‘abcde’ результат конкатенации
слова, разделяемые пробелами a bcd bdd bddd   длины самого длинного и самого короткого слов
сумма или разность двух целых чисел 10 +12 -4321+ 0 1-25 результат
инкремент переменной в С c++ ++count abc123++ верно/неверно
операции присваивания переменной натурального значения I = 1 abc= 123 s12 =12 присвоенное значение
вещественное число с целой и/или дробной частью в шестнадцатеричной системе счисления A01.BC .EEE F. десятичное значение
обыкновенная дробь 1/2 123/1000 9876543/0 значение (если возможно)
комплексное число с целыми вещ. и мнимой частями 1-2i -0+45i 3+0i   модуль комплексного числа
фамилия имя отчество иванов Иван Иванович Петров н никандрович ФИО без лишних пробелом с заглавными первыми буквами
вызов функции с одним параметром – натуральным числом sin(1) arctg(12345) neznayuangliyskiy10(10) значение параметра
сумма, разность целых неотрицательных чисел 1-23-456+7890 0-1-1-1-1-1-1-1-1-1 результат
слова, разделяемые разными знаками ab m, d. , klm abs,gtr-list; count+ длина самого длинного слова
целые числа через запятую 1,-2,300,400,-6543 наибольшее число
идентификаторы через запятую а,b ,abc, s13, x11,a,a b,b,b,b,b,b,b,b количество различных идентификаторов
целые неотрицательные числа через запятую, некоторые – в скобках 1,(2),3,1234 (2),2,(2) (65432) наибольшее число
произвольная строка aui -09., oo8%0129 ---------- количество девяток
доменное имя www.uni.udm.ru www.1tv.ru home.mark-itt.ru ussr.com количество доменов
IP-адрес 195.208.238.140 0.0.0.0 255.255.255.255 корректность адреса
цена 125р05к 0р99к 1р1234к цена, выраженная в рублях
слова и числа через пробелы ab cde f 12 ghijk n 11 m 22 n 33 m 44 количество слов
линейное уравнение с целыми коэффициентами 1x+2=6 -4x-0=0 -0x+65432=8 ответ
время в часах и минутах, возможно – в секундах 12:40 00:12:39 23:59:59 корректность времени
27* Эмулятор КА На входе – определение ДКА без действий, входная строка. Программа проверяет корректность определения и эмулирует работу ДКА.  
28* Генератор КА На входе – определение ДКА без действий. Программа проверяет корректность определения и генерирует программу на языке С/С++, реализующую ДКА.  

Наши рекомендации