Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2008, 21:31   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию Конечный автомат на Delphi

Привет... Вот не знал куда написать и написал сюда... (предмет ТВП)
Вот задание:

Лабораторная работа 3
Дан конечный автомат. Проверить принимает ли автомат цепочку ω = 0011. Какие цепочки принимает автомат
М= ({p, q, r}, {0, 1}, δ, q, {r})
а какие отвергает.
Текстовый редактор+функционирующая структура
δ (p, 0) = {q}
δ (p, 1) = {p}
δ (q, 0) = {r}
δ (q, 1) = {p}
δ (r, 0) = {r}
δ (r, 1) = {r}

Я первый раз с этим сталкиваюсь. Нужно сделать эмуляцию на делфи.
Я не врубаюсь в это, не понимаю что сделать надо...
Подскажите, может у кого такое чтото было. Где про это почитать можно и тому подобное... Надо делать, а с чего начать не знаю. Точнее не знаю что это и как это реализовывать...
Дайте рекомендации и ссылочки может быть ну или ещё что....
Просто мненужно понять что это такое?

Заранее благодарен и извините за ОФФтоп.
Arkuz вне форума Ответить с цитированием
Старый 02.10.2008, 22:50   #2
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Для примера могу сказать, что конечные автоматы всегда используются в синтаксическом анализе языков программирования. Методом конечных автоматов, синтаксический анализатор выделяет ключевые слова, числа, символы, строки. Представте цепочку символов определенной длинны(пусть это будет текст программы), программа-конечный автомат, которая выполняет анализ этого текста, читает текст с лева направо, каждый следующий символ либо переводит автомат в новое состояние, либо оставляет в прежнем. Число состояний автомата ограничено! Можно составить диаграмму состояний автомата. Когда автомат видит число, он переходит в состояние "встретил число", если все последующие символы до разделителя оказываются числом, он так и остается в этом состоянии и когда ему встретится разделитель он возвращает результат - "прочитал число", если же ему в этом числе встретились текстовые знаки, он переходит в состояние, "встретил идентификатор" и вернет он уже не число а идентификатор и т.д.
Технически, весь автомат реализуется в виде цикла, в условии цикла, стоит проверка, не закончилась ли анализируемая цепочка. Внутри цикла как правило ветвящаяся структура из case, которая анализирует текущую позицию и переводит автомат в определенное состояние или оставляет в прежнем.

В вашем примере не могу точно сказать, не совсем всё понятно. Здесь видимо
(p, 0) = {q} p и 0 переводят автомат в состояние q
(p, 1) = {p} p и 1 оставляют автомат в состоянии p
(q, 0) = {r} q и 0 переводят автомат в состояние r
(q, 1) = {p} q и 1 переводят автомат в состояние p
(r, 0) = {r} r и 0 оставляют автомат в состоянии r
(r, 1) = {r} r и 1 оставляют автомат в состоянии r

А что дальше делать непонятно, пример бы какой-нибудь, как у вас это преподают... Теорию можно найти в интернете, но осилите ли вы её и подойдет ли она для вашего задания неизвестно...

Последний раз редактировалось Rik; 02.10.2008 в 22:53.
Rik вне форума Ответить с цитированием
Старый 02.10.2008, 23:30   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Спасибо, кое что понял... Но так же много непонятного...
Просто препод приезжий... Приезжает на 2-3 дня, начитывает 30-40 страниц, раздает лабы и уезжает. Вот так и живём...

Ну спасибо ещё раз, буду что то пытаться делать...
Arkuz вне форума Ответить с цитированием
Старый 02.10.2008, 23:35   #4
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Я в инете искал, но толком ничего не могу найти... Ссылочку не дадите?
Arkuz вне форума Ответить с цитированием
Старый 02.10.2008, 23:50   #5
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от Arkuz Посмотреть сообщение
Я в инете искал, но толком ничего не могу найти... Ссылочку не дадите?
К сожалению ссылки у меня не сохранились, если у вас записаны лекции, лучше по ним и разбираться, в инете лучше не будет... Для примера реализации конечного автомата, можете посмотреть в Delphi парсер, в модуле Classes есть класс TParser. Распознает числа, строки, символы. Основная функция, в которой реализован конечный автомат - TParser.NextToken. Он может принимать состояния:
toEOF = Char(0);
toSymbol = Char(1);
toString = Char(2);
toInteger = Char(3);
toFloat = Char(4);
toWString = Char(5);

Последний раз редактировалось Rik; 02.10.2008 в 23:55.
Rik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Клеточный автомат Noor Помощь студентам 4 29.11.2007 09:19
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27
Как устроен музыкальный автомат? DelphiKettle Свободное общение 0 26.07.2007 23:04