Uploaded by miklhey

Lab 24 1

advertisement
МИНОБРНАУКИ РОССИИ
Тверской государственный технический университет
_________________________________________________________
КАФЕДРА
«ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ»
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ И КУРСОВОГО ПРОЕКТА
ПО ДИСЦИПЛИНЕ «ТЕОРИЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ»
СТУДЕНТАМИ
НАПРАВЛЕНИЕ ПОДГОТОВКИ – 09.03.04 ПРОГРАММНАЯ ИНЖЕНЕРИЯ
Тверь, 2023
УДК 681.3:658.1(075.8)
Изложены рекомендации по методике выполнения и требования,
предъявляемые к лабораторным работам и курсовому проекту по дисциплине
«Теория вычислительных процессов» по программе бакалавриата 09.03.04
Программная инженерия.
Обсуждены и рекомендованы к опубликованию кафедрой «Программное
обеспечение» (протокол № от
2023 г.).
Составители: А.Л. Калабин
ЛАБОРАТОРНЫЕ РАБОТЫ
ЛАБОРАТОРНАЯ РАБОТА №1. МОДЕРНИЗАЦИЯ ТРАНСЛЯТОРА
ЛАБОРАТОРНАЯ РАБОТА №2. МОДЕЛИРОВАНИЕ КОНЕЧНЫХ
АВТОМАТОВ
ЛАБОРАТОРНАЯ РАБОТА №3. МОДЕЛИРОВАНИЕ КОНЕЧНЫХ
АВТОМАТОВ ПОИСКА КОРРЕКТНЫХ АДРЕСОВ ЭЛЕКТРОННОЙ
ПОЧТЫ
ЛАБОРАТОРНАЯ РАБОТА №4. МОДЕЛИРОВАНИЕ АВТОМАТОВ С
МАГАЗИННОЙ ПАМЯТЬЮ
ЛАБОРАТОРНАЯ РАБОТА №5. МОДЕЛИРОВАНИЕ АВТОМАТОВ В
СРЕДЕ MS VS
ЛАБОРАТОРНАЯ РАБОТА №6. МОДЕЛИРОВАНИЕ МАШИНЫ
ТЬЮРИНГА
ЛАБОРАТОРНАЯ РАБОТА №7. МОДЕЛИРОВАНИЕ МАШИНЫ
ТЬЮРИНГА В СРЕДЕ MS VS
ЛАБОРАТОРНАЯ РАБОТА №8. МОДЕЛИРОВАНИЕ L-СИСТЕМ
ЛАБОРАТОРНАЯ РАБОТА №9. МОДЕЛИРОВАНИЕ РАСПОЗНАЮЩИХ
АБСТРАКТНЫХ УСТРОЙСТВ В СРЕДЕ MS VS
ЛАБОРАТОРНАЯ РАБОТА №1.
МОДЕРНИЗАЦИЯ ТРАНСЛЯТОРА
1. Порядок выполнения работы.
Дополнить Транслятор (курсовая работа по Теории языков
программирования и методы трансляции (ТЯПиМТ) следующими
функциями:
1.1.1. работа с многоразрядными целыми числами;
1.1.2. работа с многосимвольными идентификаторами;
1.1.3. вычисление в операторе присваивания с учетом приоритета операций;
1.1.4. работа со скобочными операторами присваивания.
1.1.5. добавить в Транслятор операторы из задания на Курсовую работу по
ТЯПиМТ (Ваш вариант + 1).
1.2. Составить контрольные примеры на реализуемом языке.
1.3. Запрограммировать и отладить разработанный программный модуль.
Выполнить тестирование на контрольных примерах без ошибок и
содержащие ошибки.
1.4. Оформить отчет.
1.1.
2. Содержание отчета.
2.1. Название работы и ее исполнители.
2.2. Цель работы.
2.3. Краткое (по 2-3 предложения) описание процедур (функций), из которых
состоит программа лексического анализа. Лучший вариант – включение
описаний в текст программы в виде комментариев.
2.4. Листинг программы.
2.5. Распечатки контрольных примеров и результатов их выполнения.
2.6. Выводы по проделанной работе.
ЛАБОРАТОРНАЯ РАБОТА №2.
МОДЕЛИРОВАНИЕ КОНЕЧНЫХ АВТОМАТОВ
1. Порядок выполнения работы.
Часть 1.
1.1. Ознакомиться с разделом 2.3 пособия [2].
1.2. Изучить инструментарий JFLAP.
1.3. Провести моделирование НКА, описанного в разделе 2.2 [2].
- перевести НКА в ДКА;
- минимизировать ДКА.
1.4. Провести моделирование НКА, описанного на лекции.
- перевести НКА в ДКА;
- минимизировать ДКА.
1.5. Создание регулярной грамматики из конечного автомата
1.6. Создание конечного автомата из регулярной грамматики
1.7 Разработать и отладить программу, производящую поиск подстроки в
строке. Выполнить тестирование на контрольных примерах.
1.
ccf
2. abg
3. aac
4. aaa
5. abb
6. acc
7. acb
8. acc
9. bbb
10. bac
11. ccc
12. cca
13.
14.
15.
16.
17.
18.
19.
20.
ccb
bcs
asd
dff
fdd
der
hhg
jjh
1.7.
Оформить отчет Части 1.
Часть 2.
2.1. Создать конечный автомат, распознающий язык L.
2.2. Разработать и отладить программу в JFLAP,.
Выполнить тестирование на контрольных примерах.
2.3. Оформить отчет.
3. Содержание отчета.
3.1. Название работы и ее исполнители.
3.2. Цель работы.
3.3. Краткое описание стадий моделирования.
3.4. Screenshot схем КА.
3.5. Screenshot контрольных примеров и результатов их выполнения
3.6. Выводы по проделанной работе.
№
варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Б.ПИН.РИС-20.06
Верёвка Александр Андреевич
Горяев Никита Владимирович
Демидов Станислав Алексеевич
Заикин Данила Юрьевич
Ильин Михаил Александрович
Казан Артём Игоревич
Комарова Алёна Александровна
Максимов Кирилл Максимович
Малов Андрей Владимирович
Ойинбо Олувасей Олувагбебеми
Пинигина Елизавета Сергеевна
Пряхин Лев Станиславович
Саенко Александр Сергеевич
Созонтов Михаил Константинович
Терещатов Кирилл Дмитриевич
Фадеев Даниил Алексеевич
Филатов Юрий Андреевич
Шаркалов Кирилл Алексеевич
Апана Даниэль Атига
Баранов Даниил Альбертович
Бельков Илья Александрович
Ежков Василий Александрович
Зарипова Анастасия Денисовна
Лисничук Арина Бахытжановна
Никифоров Савелий Андреевич
Соколов Никита Дмитриевич
27 Цуркан Данила Витальевич
ЛАБОРАТОРНАЯ РАБОТА №3.
МОДЕЛИРОВАНИЕ КОНЕЧНЫХ АВТОМАТОВ
ПОИСКА КОРРЕКТНЫХ АДРЕСОВ ЭЛЕКТРОННОЙ ПОЧТЫ
1. Порядок выполнения работы.
1.1. Ознакомиться с главой 1 пособия [2].
1.2. Запрограммировать и отладить программу, производящую поиск
корректных адресов электронной почты. Выполнить тестирование на
контрольных примерах.
1.3. Провести тестирование программы.
- выделить несколько адресов;
- выделить адреса с доменом более 4 символов;
1.4. Ознакомиться с главой 2 пособия [2] c. 38-43.
Провести моделирование НКА, поиска корректных адресов электронной почты.
- перевести НКА в ДКА;
- минимизировать ДКА.
1.5. Провести моделирование этого КА, на С#
1.6. Оформить отчет.
ЛАБОРАТОРНАЯ РАБОТА №4.
МОДЕЛИРОВАНИЕ АВТОМАТОВ С МАГАЗИННОЙ ПАМЯТЬЮ
1. Порядок выполнения работы.
1.1. Ознакомиться с разделом 6 пособия [2].
1.2. Изучить инструментарий JFLAP.
1.3. Провести моделирование МКА, описанного в разделе 6.2 [2].
1.4. Провести моделирование НКА, описанного на лекции.
1.5. Оформить отчет.
2. Содержание отчета.
2.1. Название работы и ее исполнители.
2.2. Цель работы.
2.3. Краткое описание стадий моделирования.
2.4. Screenshot схем МКА.
2.5. Screenshot контрольных примеров и результатов их выполнения
2.6. Выводы по проделанной работе.
ЛАБОРАТОРНАЯ РАБОТА №5.
МОДЕЛИРОВАНИЕ АВТОМАТОВ В СРЕДЕ MS VS
1. Порядок выполнения работы.
1.1. Ознакомиться с разделом, соответствующим варианту задания
ЛАБОРАТОРНАЯ РАБОТА №2..
1.2. Ознакомиться с программой Emulation_FA_MT.
1.3. Создать входной файл, соответствующий КА, по варианту задания.
1.4. Провести моделирование. Получить выходной файл и описать его.
1.5. Оформить отчет.
Работа ДКА
Детерминированный конечный автомат — это некая машина, которая имеет
конечное количество состояний с описанными правилами для каждого
состояния, которая может на по входной строке последовательно обрабатывая
каждый символ выдать ответ подходит эта строка символов или нет.
Состояние мы будем обозначать кругом с названием состояния в центре
Правила перехода между состояниями будем обозначать как однонаправленное
соединение между состояниями с пометкой по какому символу нужно
произвести переход.
Рисунок выше обозначает что если автомат в состоянии q0 и текущий
обрабатываемый символ ‘a’ то нужно перейти в состояний q1.
Для работы конечного автомата он должен иметь одно начальное состояние
(помечено желтым цветом или стрелкой из пустоты) и любое количество
конечных состояний (помечены двойным кружком)
Сама работа детерминированного автомата происходит по простому алгоритму:
Начинается работа в начальном состоянии и на первом символе входной строки.
Далее в соответствии с правилами перехода по текущему состоянию и по
текущему
символу
производится
переход
в
следующему символу в очереди.
Рассмотрим ДКА на простом примере:
ДКА принимает любое слово, начинающееся на ‘ab’
Q0 начальное состояние
следующее
состояние
и
Q1 автомат встретил ‘a’ в начале
Q2 автомат встретил ‘ab’ в начале и будет дожидаться конца строки
Q3 автомат не встретил ‘ab’в начале и будет дожидаться конца строки
Запуск
Чтобы запустить конечный автомат нужно:
1. Выбрать в меню
2. Загрузить
Например automate 3.txt
N
F
aababa
NaF
FaF
FbF
3.
4. A
Получить выходной файл
Проверяемое слово aababa
N a -> F
F a -> F
F b -> F
Слово распознано
5.
2. Содержание отчета.
2.1. Название работы и ее исполнители.
2.2. Цель работы.
2.3. Краткое описание задачи моделирования.
2.4. Краткое описание алгоритма и листинга.
2.5. Описание тестовых примеров и Screenshot результатов их выполнения.
2.6. Выводы по проделанной работе.
ЛАБОРАТОРНАЯ РАБОТА №6.
МОДЕЛИРОВАНИЕ МАШИНЫ ТЬЮРИНГА
1. Порядок выполнения работы.
1.1. Ознакомиться с разделом 10 пособия [2].
1.2. Изучить инструментарий JFLAP для моделирование машины
Тьюринга.
1.3. Провести моделирование машины Тьюринга, реализующие функции:
- распознавание регулярного языка a*b*, раздел 10.4;
- распознавание регулярного языка anbn;
- распознавание регулярного языка anbncn;
- определение разности целых чисел;
- определение суммы целых чисел;
- дублирование входной строки;
- сортировка данных.
1.4. Провести моделирование, реализующие вышеописанные функции.
- с переходом в допускающее состояние;
- с переходом в отвергающее состояние;
1.5. Оформить отчет.
2. Содержание отчета.
2.1. Название работы и ее исполнители.
2.2. Цель работы.
2.3. Описание алгоритма машины Тьюринга.
2.4. Граф машины Тьюринга.
2.5. Screenshot контрольных примеров и результатов их выполнения
2.6. Выводы по проделанной работе.
2.7. Файл реализации задачи в JFLAB.
ЛАБОРАТОРНАЯ РАБОТА №7.
МОДЕЛИРОВАНИЕ МАШИНЫ ТЬЮРИНГА В СРЕДЕ MS VS
1. Порядок выполнения работы.
1.1. Ознакомиться с разделом 10.6 пособия [2].
1.2. Набрать и отладить код программы.
1.3. Провести моделирование машины Тьюринга, реализующие функции,
описанные в работе № 5.
1.4. Оформить отчет.
2. Содержание отчета.
2.1. Название работы и ее исполнители.
2.2. Цель работы.
2.3. Краткое описание задачи моделирования.
2.4. Краткое описание алгоритма и листинга.
2.5. Описание тестовых примеров и Screenshot результатов их выполнения.
2.6. Выводы по проделанной работе.
ЛАБОРАТОРНАЯ РАБОТА №8.
МОДЕЛИРОВАНИЕ L-СИСТЕМ
1. Порядок выполнения работы.
1.1. Ознакомиться с разделом 9 пособия [2].
1.2. Изучить инструментарий JFLAP для моделирование L-систем.
1.3. Провести моделирование машины L-систем, реализующие функции:
- аксиома А; правило вывода A->g[+A][-A], раздел 9.3;
- аксиома X; правило вывода X->g[+X]g[-X]+X; g->gg;
- аксиома ++++g; правило вывода g->gg+[-g+g+g]+[+g-g+g] рис.9.6.;
- построить кривую Коха;
- построить треугольник Серпинского.
1.4. Оформить отчет.
2. Содержание отчета.
2.1. Название работы и ее исполнители.
2.2. Цель работы.
2.3. Описание моделирования машины L-систем.
2.4. Screenshot контрольных примеров и результатов их выполнения
2.5. Выводы по проделанной работе.
ЛАБОРАТОРНАЯ РАБОТА №9.
МОДЕЛИРОВАНИЕ РАСПОЗНАЮЩИХ АБСТРАКТНЫХ УСТРОЙСТВ В
СРЕДЕ MS VS
1. Порядок выполнения работы.
1.1. Ознакомиться с методическими указаниями к этой работе.
1.2. Запустить и освоить работу с программой Emulation_FA_MT_2.
1.3. Провести моделирование распознающих абстрактных устройств:
1.3.1. Построить модель НКА и проверить его работу
1.3.2. Детерминировать этот НКА и проверить его работу
1.3.1. Минимизировать полученный ДКА и проверить его работу
1.3.1. НКА
1.4. Построить модель МТ и проверить его работу
1.5. Оформить отчет.
2. Содержание отчета.
2.1. Название работы и ее исполнители.
2.2. Цель работы.
2.3. Краткое описание задачи моделирования.
2.4. Краткое описание алгоритма и листинга.
2.5. Описание тестовых примеров и Screenshot результатов их выполнения.
2.6. Выводы по проделанной работе.
ЛИТЕРАТУРА
1. И.Г. Кревский, М.Н. Селиверстов, К.В. Григорьева формальные языки,
грамматики и основы построения трансляторов /Учебное пособие (под
ред. д.т.н., профессора А.М. Бершадского) Пенза 2003
2. Мозговой М.В. Классика программирования: алгоритмы, языки,
автоматы, трансляторы Практический подход. — СПб.: Наука и Техника,
2006. — 320 с.: ил. Под редакцией М.В. Финкова
3. Стюарт Т. Теория вычислений для программистов / Пер. с анг. А. А.
Слипкин. - М.: ДМК Пресс, 2014. - 384 с.: ил.
4. Калайда В.Т., Романенко В.В. Теория вычислительных процессов:
методические указания по выполнению лабораторных работ. — Томск:
Факультет дистанционного обучения, ТУСУР, 2013. — 87 с.
5. Луис Фернандо Ареан. Существуют ли неразрешимые проблемы?
Математика, сложность и вычисление. / Пер. с исп. — М.: Де Агостини,
2014. — 144 С. Мир математики: в 45 т. Т. 43:
6.
Download