Министерство науки и высшего образования Российской Федерации ФГБОУ ВО «Кубанский государственный технологический университет» (ФГБОУ ВО «КубГТУ») Многоотраслевой институт подготовки и переподготовки специалистов Кафедра информационных систем и программирования Направление подготовки 09.03.04 «Программная инженерия» Профиль «Беспрофильный» КУРСОВАЯ РАБОТА по дисциплине Теория автоматов и формальных языков на тему: «Автоматы с магазинной памятью. Автоматизированный практикум» Выполнил студент группы 18-ЗКБс-ПР1 Допущен к защите С.В. Подлужный 18.01.2021 года Руководитель (нормоконтролер) работы: Защищена 22.01.2021 года ст. преп. Н.В.Кушнир Оценка хорошо канд.техн.наук, ст. преп. К.Е. Тотухов ст. преп. Ю.С. Носова Краснодар 2021 ФГБОУ ВО «Кубанский государственный технологический университет» (ФГБОУ ВО «КубГТУ») Многоотраслевой институт подготовки и переподготовки специалистов Кафедра информационных систем и программирования Направление подготовки 09.03.04 «Программная инженерия» Профиль «Беспрофильный» УТВЕРЖДАЮ Заведующая кафедрой ИСП М.В.Янаева «08» сентября 2020 г. ЗАДАНИЕ на курсовую работу Студенту С.В. Подлужному группы 18-ЗКБс-ПР1 3 курса направления 09.03.04 Программная инженерия Тема работы: «Автоматы с магазинной памятью. Автоматизированный практикум» План работы: 1.Общие понятия МП-автоматов. 2.Устройство и работа магазина МП-автомата. Объем работы: 21 с. а) пояснительная записка к проекту; б) программа в среде разработки Visual Studio 2019 C# Рекомендуемая литература: Ключко В.И., Власенко А.В., Кушнир Н.В. Теория автоматов и формальных языков: учеб. пособие/Кубан. гос. технол. ун-т.- Краснодар: Изд. ФГБОУ ВПО «КубГТУ», 2012.- 151 с. Срок выполнения работы: Срок защиты: Дата выдачи задания: Дата сдачи работы на кафедру: с «08» сентября 2020 г. по «22» января 2021 г. «22» января 2021 г. «08» сентября 2020 г. «18» января 2021 г. Руководитель (нормоконтролер) работы: ст. преподаватель Н.В. Кушнир Задание принял студент ____________________________ С.В. Подлужный Реферат Пояснительная записка к курсовой работе содержит 21 с., 6 рис., 1 формула, 2 приложения. Целью данной курсовой работы является разработка программного обеспечения для демонстрации работы автоматов с магазинной памятью. Основными моментами проведенного исследования были изучение понятий: идеальные и реальные автоматы с магазинной памятью, их работа в цифровых вычислительных машинах, особенности и технические решения для создания и использования магазинной памяти. Это позволило сделать вывод о том, что для создания программы необходимо иметь представления об алгоритмах обработки автоматов с магазинной памятью. 3 Содержание Содержание .............................................................................................................. 4 Введение ................................................................................................................... 5 1 Нормативные ссылки ........................................................................................... 6 2 Общие понятия МП-автоматов ........................................................................... 7 2 Устройство и работа магазина МП-автомата .................................................... 9 3 Практическая часть (Программа) ..................................................................... 12 Заключение ............................................................................................................ 15 Список используемой литературы ............ Ошибка! Закладка не определена. Основная....................................................... Ошибка! Закладка не определена. Приложение А - «Автомат с магазинной памятью» в среде разработки Visual Studio C# 2019 ........................................................................................................ 17 Приложение Б – Скриншот проверки курсовой работы в системе Antiplagiat.ru........................................................................................................... 21 4 Введение Современный мир нельзя представить без компьютера. Это изобретение стало научно-техническим прорывом и применяется во всех отраслях и сферах жизни человека. С ростом популярности появляются новые идеи и концепции, как в аппаратной, так и в программной части компьютерной индустрии. Огромные и дорогие вычислительные блоки, похожие на шкафы 20 лет назад уступают в производительности дешевых смартфонов на сегодняшний день. Это говорит о серьезном развитии аппаратных средств. Уменьшались размеры, росла производительность. Наиболее сложным и трудоемким процессом является создание микропроцессоров. Они выполняют арифметические и логические операции. Однако, есть автоматы, в которых просто не требуется иметь сложную логику и большой вычислительный потенциал. Это, как правило, простые устройства. Например, автоматическое включение света в ночное время суток или новогодняя микроконтроллерах, гирлянда. имеют Все ограниченное устройства, аппаратное работающие решение. на Для повышения функционала таких автоматических устройств создаются новые способы обработки информации, которые находят свое применение не только в низко-производительных системах. Такие системы, оснащенные новым аппаратным комплексом, способны выполнять функции сложных ЭВМ, имея при этом очень низкую стоимость. Среди таких аппаратных комплексов – появление стековой памяти. Стек – это временная память, которая представляет собой ячейки. Логика работы этой памяти очень проста. Существует два вида стеков – очередь (FIFO) и магазин (LIFO). Автоматы, собранные по принципу работы магазинного стека называют автоматами с магазинной памятью. Об этих автоматах и пойдет речь в данной курсовой работе. 5 1 Нормативные ссылки В данной курсовой работе использованы ссылки на следующие нормативные документы: ГОСТ 2.105-95 Общие требования к текстовым документам ГОСТ 7.32-2001 СИБИД. Отчет о НИР. Структура и правила оформления ГОСТ 7.80-2000 Библиографическая запись. Заголовок. Общие требования и правила составления ГОСТ 19.701-90 (ИСО 5807-85) ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения ГОСТ 34.601-90 Информационная технология. Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Стадии создания ГОСТ Р 50739-95 Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования ГОСТ Р 1.5-2004 Стандарты национальные Российской Федерации. Правила построения, изложения, оформления и обозначения ГОСТ Р 7.05-2008 СИБИД. Библиографическая ссылка. Общие требования и правила составления. 6 2 Общие понятия МП-автоматов Автоматы с магазинной памятью, или магазинные автоматы (сокращенно — МП-автоматы), образуют класс распознающих моделей для КС-языков точно так же, как конечные автоматы являются распознающими моделями в классе регулярных языков. Понятие МП-автомата является частным случаем общего интуитивного понятия автомата. Как и всякий автомат, МП-автомат — это устройство, имеющее блок управления, входную ленту, головку и блок внутренней памяти в виде магазина МП-автомата (или стека). Устройство магазинного автомата показано на рисунке 1. Блок управления в каждый момент времени находится в одном из конечного множества Q состояний. Входная лента предполагается "полубесконечной", т.е. она имеет начало ("левый край"), но не имеет конца. Лента разделена на ячейки, пронумерованные от крайней левой ячейки натуральными числами, начиная с единицы; в каждой ячейке может быть записан символ алфавита V, называемого входным алфавитом МП-автомата. В каждый момент времени читающая головка обозревает (или читает) некоторую ячейку входной ленты. Если в этой ячейке записан некоторый входной символ, т.е. символ входного алфавита, то его называют обозреваемым входным символом. Рисунок 1 – Устройство магазинного автомата Предполагается, что если на ленте записана некоторая непустая цепочка x=x(1)x(2)…x(k) во входном 7 алфавите, то ее символы последовательно записаны в ячейках от первой до k-й, без пропусков, так, что символ x(i) записан в i-й ячейке, как показано на рисунке 2. Рисунок 2 – Последовательность записи в ячейки входной ленты МП-автомат может читать цепочку x, продвигая головку только в одном направлении, слева направо, по шагам, причем за каждый шаг головка переходит от обозреваемой ячейки к следующей. Если в какой-то момент времени обозревается символ x(i), 1⩽i⩽k , записанной на ленте цепочки x , то непрочитанной частью входной цепочки x будет подцепочка x(i+1)…x(k), что показано на рисунке 3 . В частности, при i=k непрочитанная часть совпадает с пустой цепочкой, и тогда говорят, что цепочка x полностью прочитана МП-автоматом. Рисунок 3 – Последовательность прочтения ячеек магазинного автомата 8 2 Устройство и работа магазина МП-автомата Магазин МП-автомата устроен и работает следующим образом. Как и входная лента, магазин является полубесконечным и разделенным на пронумерованные ячейки, в каждой из которых может быть записан символ алфавита Γ, называемого магазинным алфавитом МП-автомата. Входной и магазинный алфавиты МП-автомата могут пересекаться и даже совпадать друг с другом. Символы алфавита Γ называют магазинными символами. Первую ячейку магазина называют его верхней ячейкой. Символ, в данный момент записанный в верхней ячейке магазина, называют верхним символом магазина. Единственная операция, которую МП-автомат может реализовать с магазином, состоит в следующем: верхний символ Z магазина заменяется некоторой цепочкой γ магазинных символов. При этом если цепочка γ непустая, то она записывается в первых m ячейках, где m=|γ|, так, что ее первый символ становится верхним символом магазина. Если до замены Z цепочкой γ под верхней ячейкой была записана какая-то цепочка «а», то после замены она сдвигается "в глубь" магазина и оказывается записанной уже в ячейках, начиная с (m+1)-й. Сдвиг цепочки показан на рисунке 4. Если же верхний символ Z заменяется пустой цепочкой λ, то после такой замены верхним символом магазина становится первый символ цепочки α (записанной под верхней ячейкой магазина), т.е. цепочка α "поднимается" на одну ячейку. 9 Рисунок 4 – Сдвиг цепочки В случае, когда α — пустая цепочка, замена верхнего символа магазина пустой цепочкой γ приводит к опустошению магазина (ни в одной из ячеек магазина не записан магазинный символ). Заметим, что, по определению, с пустым магазином МП-автомат не может производить никаких операций. Описанная выше операция с магазином составляет основу поведения МПавтомата, его, образно говоря, "динамику". Эта "динамика" определяется системой команд МП-автомата, которая, аналогично системе команд конечного автомата, определяется как qaZ → rγ (1) конечное множество δ команд, каждая из которых записывается в виде где q и r — состояния из множества Q; a — входной символ или пустая цепочка; Z — магазинный символ; γ — цепочка магазинных символов. Если в системе команд δ МП-автомата M есть команда (1), то M может в данный момент времени выполнить эту команду, если и только если в данный момент времени его блок управления находится в состоянии q, головка обозревает входной символ a, при условии, что a≠λ, а верхним символом магазина является символ Z. Выполнение команды состоит в 10 замене верхнего символа магазина цепочкой γ, переходе блока управления в состояние r и в продвижении головки на одну ячейку вправо. Если же в команде a=λ , то такую команду МП-автомат может выполнить всякий раз, когда его блок управления окажется в состоянии q , а верхним символом магазина будет символ Z . В этом случае выполнение команды никак не зависит от содержимого входной ленты, а после ее выполнения головка остается на прежнем месте. На практике автоматы с магазинной памятью могут называться трансляторами, если при распознавании они порождают выходную цепочку. Для того чтобы такой автомат выполнил это, управляющее устройство должно помимо операции над состоянием, входом и магазином производить операции над выходом. Например, необходимо преобразовать цепочку 010011→111000. Один способ такого перевода заключается в том, чтобы выдавать единицы сразу при их появлении на входе, а при появлении нулей помещать их в магазин. Автоматы с магазинной памятью, рассмотренные выше, обладают широкими возможностями по обработке нерегулярных цепочек, к которым относятся и программы языков программирования высокого уровня. Это обусловливает их применение при синтаксическом анализе программ, реализуемом в синтаксическом блоке. 11 3 Практическая часть (Программа) Программная часть содержит демонстрацию работы автоматов с магазинной памятью. Как было сказано выше, магазинная память является стеком LIFO. Далее представлена программа для демонстрации работы такого типа автоматов. Рисунок 5 – Внешний вид программы Автоматы с магазинной памятью представляют собой стек в глубину не ограниченный в глубину, то есть количество данных помещенных в стек равняется бесконечности. Однако реальные автоматы обладают лимитом. Этот лимит может быть установлен программой или техническим оснащением. В приведенной программе лимит на записанные данные в стек равен десяти единицам. На рисунке 5 изображен внешний вид программы. В левое окно вписываются данные, помещаемые в стек. Этими данными может сообщение, число, адрес операции и другие данные. В реальных машинах эти данные имеют размерность. То есть запись в одну ячейку осуществляется только определенное количество бит информации. Если информация, записываемая в ячейку меньше размера памяти ячейки, то информация записывается, начиная с младших разрядов, а старшие заполняются нулями. Разработка оборудования стека ведется для конкретной вычислительной машины, 12 поэтому информация, записываемая в стек, никогда не бывает больше размера ячейки этого стека. Однако, если составить программу управления неправильно, то ячейка может быть переполнена, но тогда старшие разряды информации просто не занесутся в память, что приведет к неправильному функционированию МП автомата. В приведенной программе ячейка данных не имеет конечного размера, поэтому в нее можно заносить как малые, так и очень большие значения. Любые входные данные имеют строковый тип, чего вполне хватит для демонстрации работы автоматов с магазинной памятью. Левое окно программы заблокировано для редактирования. В этом окне программа самостоятельно отображает содержимое стека LIFO в той последовательности, как хранят данные реальные автоматы с магазинной памятью. В левой части программы четыре управляющие кнопки. Эти кнопки имитируют процедуру работы со МП автоматом. Конкретно в демонстрационном примере видно, какие функции может выполнять этот МП автомат. Кнопка «Добавить» - заносит в верхнюю ячейку МП автомата значение из поля данных. Кнопка «Изъять» - перемещает из магазинной памяти верхнее значение в поле данных. «Заменить» - выполняет такую же операцию, схожую с операцией кнопки «Добавить», но не сдвигает все текущие значения вниз, а просто заменяет в верхней ячейке памяти значение на то, что было введено пользователем в поле данных. Кнопка «Удалить» полностью отчищает всю память в МП автомате. 13 Рисунок 6 – Демонстрация работы программы Пример работы программы. Возьмем и запишем несколько значений в двоичной системе счисления начиная с 0000. Для этого пишем первое значение в поле данных. Так мы имитируем поступающие данные на вход. Далее, нажимаем на кнопку «Добавить». Так мы имитируем сигнал для МП автомата. Этот сигнал в реальном автомате может представлять из себя набор нулей и единиц. Для кодирования 4-х операций потребуется 2 разряда. Например, «Добавить» кодируется двумя единицами, «Удалить» - двумя нулями. Команды «Изъять» и «Заменить» комбинацией «01» и «10 соответственно». Эти команды отправляет процессор в МП автомат по четко заданной программе. Эмуляция этих команд осуществляется в графическом режиме, и пользователь выступает в виде процессора, который управляет магазинной памятью. После того как первое число было занесено в память, поле данных очищается, а в левом окне можно наблюдать какое значение хранит МП автомат. Далее повторим процедуру, но введем значение 0001. Как видно на рисунке 6, текущее значение сместилось вниз, а новое значение заняло верхнюю позицию в памяти. Это значит, что программа работает корректно. 14 Заключение В первой части данной курсовой работы мной подготовлена общая информация об автоматах с магазинной памятью. Она включает в себя определения и математические модели МП автоматов. Во второй части я изучил принципы работы реальных и абстрактных автоматов с магазинной памятью, привел пример работы таких автоматов. В третьей части мной разработано программное обеспечение, демонстрирующее работу автоматов с магазинной памятью. Программа протестирована и полностью работоспособна. Также написано руководство по программе с примером работы. В приложении А представлен исходный код программы. В приложении Б представлен скриншот проверки курсовой работы в системе Antiplagiat.ru 15 Список используемой литературы Основная 1. Введение в программирование на языке Visual C#: учеб. пособие / С. Р. Гуриков. - М. : ФОРУМ : ИНФРА-М, 2018. – 447 с. – (Высшее образование: Бакалавриат). http://znanium.com/bookread2.php?book=404441 (по паролю). 2. Теория автоматов и формальных языков: методический указания по выполнению курсовой работы для студентов всех форм обучения направления подготовки: 09.03.04 Программная инженерия / Сост.: Н.В. Кушнир; Кубан. гос. технол. ун-т. Каф. информационных систем и программирования. – Краснодар: 2020. – 27 с. Режим доступа: http://moodle.kubstu.ru (по паролю). 3. Теория автоматов и формальных языков: методические указания по выполнению лабораторных работ для студентов всех форм обучения направления подготовки: 09.03.04 Программная инженерия / Сост.: Н.В. Кушнир; Кубан. гос. технол. ун-т. Каф. информационных систем и программирования. – Краснодар: 2020. – 44 с. Режим доступа: http://moodle.kubstu.ru (по паролю). Дополнительная 4. Ключко В.И., Власенко А.В., Кушнир Н.В. Теория автоматов и формальных языков: учеб. пособие / Кубан. гос. технол. ун-т.- Краснодар: Изд. ФГБОУ ВПО «КубГТУ», 2012.- 151 с. Интернет ресурсы 5. Сайт «Википедия» - https://ru.wikipedia.org/wiki/Заглавная_страница 6. Сайт «Mathhelpplanet» http://mathhelpplanet.com/static.php?p=magazinnyye-avtomaty 16 Приложение А - «Автомат с магазинной памятью» в среде разработки Visual Studio C# 2019 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp12 { public partial class Form1 : Form { int N = 0; bool ad = false; string[] Stek = new string[10]; public Form1() { InitializeComponent(); } private void Replace_Click(object sender, EventArgs e) 17 { N--; Stek[N] = Data.Text; Memory.Text = ""; for (int i = N; i >= 0; i--) { Memory.Text += (Stek[i]) + Environment.NewLine; } Data.Text = ""; N++; ad = true; } private void DelStek_Click(object sender, EventArgs e) { if (N > 0) N--; Data.Text = Stek[N]; Memory.Text = ""; for (int i = N - 1; i >= 0; i--) { Memory.Text += (Stek[i]) + Environment.NewLine; } ad = false; } 18 private void RemoveStek_Click(object sender, EventArgs e) { if (N > 0) { N--; Stek[N] = Data.Text; Memory.Text = ""; for (int i = N; i >= 0; i--) { Memory.Text += (Stek[i]) + Environment.NewLine; } Data.Text = ""; N++; } } private void AddStek_Click(object sender, EventArgs e) { if (N < 10) { Stek[N] = Data.Text; Memory.Text = ""; for (int i = N; i >= 0; i--) { 19 Memory.Text += (Stek[i]) + Environment.NewLine; } Data.Text = ""; N++; ad = true; } } private void Form1_Load(object sender, EventArgs e) { } } } 20 Приложение Б – Скриншот проверки курсовой работы в системе Antiplagiat.ru 21