Автор24

Информация о работе

Подробнее о работе

Страница работы

Теория языков программирования и методы трансляции 3шт

  • 41 страниц
  • 2023 год
  • 0 просмотров
  • 0 покупок
Автор работы

user3166365

Автор, испытывающий себя на данной платформе.

1500 ₽

Работа будет доступна в твоём личном кабинете после покупки

Гарантия сервиса Автор24

Уникальность не ниже 50%

Фрагменты работ

2. ОПИСАНИЕ ВХОДНЫХ ДАННЫХ ПРОГРАММЫ И ЕЁ РЕЗУЛЬТАТОВ

Входные данные программы состоят из описания КС-грамматики (нетерминальные символы, терминальные символы, целевой символ, правила вывода) и диапазона длин выводимых цепочек (минимальная длина, максимальная длина). Дополнительно может быть введён символ пустой цепочки. По умолчанию, в качестве символа пустой цепочки установлен символ ‘*’.

Терминальные и нетерминальные символы вводятся в поля программы, отделяя отдельные символы друг от друга запятыми. Правила вывода вводятся в отдельном окне программы. При этом программа в левой части правила допускает только ввод нетерминальных символов, а в правой части правила – нетерминальных и терминальных символов, а также символа пустой цепочки.

Результат работы программы представлен на экране в виде упорядоченного в лексикографическом порядке списка выведенных цепочек языка в заданном диапазоне длин.



break;
case '2':return 1;
}
}
}

// Функция ищет символ Symb в массиве M и возвращает его индекс, ес-ли символ не найден, функция вернет размер массива
int SymbolSearch(char M[][MAX_SYMB_LENGHT], int Size, char *Symb)
{
int i = 0;
while (i< Size)
{
if (strcmp(M[i], Symb) == 0) break;
i++;
}
return i;
}

// Функция вводит символы разделенные запятыми из строки Str в мас-сив M, возвращает количество веденных символов
int EnterScores(char M[][MAX_SYMB_LENGHT], int max)
{
char Str[MAX_STR_LENGHT];
char *pNextToken = NULL;
int i = 0;
printf("Введите через запятую множество:\n>> ");
gets_s(Str, MAX_STR_LENGHT-1);
char * pToken = strtok_s(Str, ", ", &pNextToken;);
while (pToken)
{
strcpy_s(M[i], pToken);
i++;
if(i == max) break;
pToken = strtok_s('\0', ", ", &pNextToken;);
}
return i;
}

// Ввод множества конечных состояний

Генерация цепочек языка

Пусть язык задан контекстно-свободной грамматикой (теоретический материал разделов 1.1–1.4). Написать программу, которая по заданной грамматике будет генерировать ВСЕ цепочки языка в некотором диапазоне длин. Использовать только левосторонний или правосторонний вывод! Диапазон длин генерируемых цепочек должен задаваться пользователем при запуске программы.

Предусмотреть возможность выбора пользователю – использовать заданную в программе грамматику или вводить свою с клавиатуры.

На вход программы подаётся КС-грамматика (терминальный и нетерминальный алфавиты, целевой символ, правила вывода), задаётся диапазон длин цепочек, указывается тип вывода (левосторонний или правосторонний).

Рекомендуется для ввода исходных данных использовать соответствующую форму. При вводе правил грамматики не рекомендуется предоставлять пользователю излишнюю свободу действий, например, удобнее запретить ввод в левой части правил более чем одного нетерминального символа, чем проверять введённые правила на соответствие контекстно-свободному типу.

На выходе должен быть список построенных цепочек. Все цепочки в списке должны быть различны. При получении одинаковых цепочек (разными способами) их следует сохранять в списке выводимых цепочек только в случае выполнения дополнительного задания.

Проверить программу на примерах из лекционного курса и на заданиях из контрольных вопросов к теоретической части.
1. Постановка задачи
Пусть регулярный язык задаётся конечным автоматом – ДКА. Написать про-грамму, которая будет проверять по заданному автомату вводимую цепочку и де-лать вывод о том, принадлежит ли она рассматриваемому регулярному языку. В случае отрицательного ответа необходимо давать пояснение, по какой причине цепочка не принадлежит языку – например, “в цепочке присутствуют посторонние символы”, “после прочтения цепочки автомат не пришёл в конечное состояние” и т.п. Исходный автомат вводить с клавиатуры в соответствии с определённым форматом. Ввод цепочек также производить с клавиатуры.
2. Описание входных данных программы и её результатов
На вход программы подаётся ДКА (множество состояний, алфавит языка, начальное состояние, множество заключительных состояний, функция переходов в виде таблицы) и проверяемая цепочка символов (может вводиться многократно, т.е. возможно проверить любое количество цепочек). При этом в проверяемую цепочку могут входить и символы, не принадлежащие алфавиту языка; цепочка может быть и пустой.
Программа должна предоставлять пользователю возможность изменять начальное и конечные состояния с сохранением введённой функции переходов для заданного автомата.
Выход – отображение на экране процесса проверки цепочки в виде последо-вательной смены конфигураций и вывод результата – сообщения, принадлежит ли цепочка языку.
Проверить работу программы на примерах из лекций и задачах из контроль-ных вопросов.

1. Постановка задачи
Пусть контекстно-свободный язык задаётся детерминированным автоматом с магазинной памятью – ДМПА. Написать программу, которая будет проверять для вводимой цепочки, принадлежит ли она заданному КС-языку. В случае отри-цательного ответа необходимо давать пояснение, по какой причине цепочка не принадлежит языку (аналогично лаб. раб №2) Исходный автомат вводить с клави-атуры в соответствии с определённым форматом. Ввод цепочек также производить с клавиатуры, выполняя его до тех пор, пока не возникнет желание закончить ра-боту.
Проверить работу программы на примерах из лекций и задачах из контроль-ных вопросов.
2. Описание входных данных программы и её результатов
На вход программы подаётся ДМПА (множество состояний, алфавит языка, алфавит магазина, начальное состояние, начальное содержимое стека, множество заключительных состояний, функция переходов в виде списка правил) и проверя-емая цепочка символов (может вводиться многократно, т.е. возможно проверить любое количество цепочек). При этом в проверяемую цепочку могут входить и символы, не принадлежащие алфавиту языка; цепочка может быть и пустой.
Рекомендуется для ввода исходных данных использовать соответствующую форму с полями выбора. При вводе функции переходов не рекомендуется предо-ставлять пользователю излишнюю свободу действий.
Выход – отображение на экране процесса проверки цепочки в виде последо-вательной смены конфигураций и вывод результата – сообщения, принадлежит ли цепочка языку.

7. Ответы на контрольные вопросы
1. Обязательно ли должна быть задана функция переходов для всех возмож-ных сочетаний “состояние, входной символ, символ стека”? Как поведёт се-бя автомат, если при проверке цепочки встретит неизвестную комбинацию?
Нет. Функция переходов задается правилами для отдельных сочетаний “со-стояние, входной символ, символ стека”.

Форма заказа новой работы

Не подошла эта работа?

Закажи новую работу, сделанную по твоим требованиям

Согласен с условиями политики конфиденциальности и  пользовательского соглашения

Фрагменты работ

2. ОПИСАНИЕ ВХОДНЫХ ДАННЫХ ПРОГРАММЫ И ЕЁ РЕЗУЛЬТАТОВ

Входные данные программы состоят из описания КС-грамматики (нетерминальные символы, терминальные символы, целевой символ, правила вывода) и диапазона длин выводимых цепочек (минимальная длина, максимальная длина). Дополнительно может быть введён символ пустой цепочки. По умолчанию, в качестве символа пустой цепочки установлен символ ‘*’.

Терминальные и нетерминальные символы вводятся в поля программы, отделяя отдельные символы друг от друга запятыми. Правила вывода вводятся в отдельном окне программы. При этом программа в левой части правила допускает только ввод нетерминальных символов, а в правой части правила – нетерминальных и терминальных символов, а также символа пустой цепочки.

Результат работы программы представлен на экране в виде упорядоченного в лексикографическом порядке списка выведенных цепочек языка в заданном диапазоне длин.



break;
case '2':return 1;
}
}
}

// Функция ищет символ Symb в массиве M и возвращает его индекс, ес-ли символ не найден, функция вернет размер массива
int SymbolSearch(char M[][MAX_SYMB_LENGHT], int Size, char *Symb)
{
int i = 0;
while (i< Size)
{
if (strcmp(M[i], Symb) == 0) break;
i++;
}
return i;
}

// Функция вводит символы разделенные запятыми из строки Str в мас-сив M, возвращает количество веденных символов
int EnterScores(char M[][MAX_SYMB_LENGHT], int max)
{
char Str[MAX_STR_LENGHT];
char *pNextToken = NULL;
int i = 0;
printf("Введите через запятую множество:\n>> ");
gets_s(Str, MAX_STR_LENGHT-1);
char * pToken = strtok_s(Str, ", ", &pNextToken;);
while (pToken)
{
strcpy_s(M[i], pToken);
i++;
if(i == max) break;
pToken = strtok_s('\0', ", ", &pNextToken;);
}
return i;
}

// Ввод множества конечных состояний

Генерация цепочек языка

Пусть язык задан контекстно-свободной грамматикой (теоретический материал разделов 1.1–1.4). Написать программу, которая по заданной грамматике будет генерировать ВСЕ цепочки языка в некотором диапазоне длин. Использовать только левосторонний или правосторонний вывод! Диапазон длин генерируемых цепочек должен задаваться пользователем при запуске программы.

Предусмотреть возможность выбора пользователю – использовать заданную в программе грамматику или вводить свою с клавиатуры.

На вход программы подаётся КС-грамматика (терминальный и нетерминальный алфавиты, целевой символ, правила вывода), задаётся диапазон длин цепочек, указывается тип вывода (левосторонний или правосторонний).

Рекомендуется для ввода исходных данных использовать соответствующую форму. При вводе правил грамматики не рекомендуется предоставлять пользователю излишнюю свободу действий, например, удобнее запретить ввод в левой части правил более чем одного нетерминального символа, чем проверять введённые правила на соответствие контекстно-свободному типу.

На выходе должен быть список построенных цепочек. Все цепочки в списке должны быть различны. При получении одинаковых цепочек (разными способами) их следует сохранять в списке выводимых цепочек только в случае выполнения дополнительного задания.

Проверить программу на примерах из лекционного курса и на заданиях из контрольных вопросов к теоретической части.
1. Постановка задачи
Пусть регулярный язык задаётся конечным автоматом – ДКА. Написать про-грамму, которая будет проверять по заданному автомату вводимую цепочку и де-лать вывод о том, принадлежит ли она рассматриваемому регулярному языку. В случае отрицательного ответа необходимо давать пояснение, по какой причине цепочка не принадлежит языку – например, “в цепочке присутствуют посторонние символы”, “после прочтения цепочки автомат не пришёл в конечное состояние” и т.п. Исходный автомат вводить с клавиатуры в соответствии с определённым форматом. Ввод цепочек также производить с клавиатуры.
2. Описание входных данных программы и её результатов
На вход программы подаётся ДКА (множество состояний, алфавит языка, начальное состояние, множество заключительных состояний, функция переходов в виде таблицы) и проверяемая цепочка символов (может вводиться многократно, т.е. возможно проверить любое количество цепочек). При этом в проверяемую цепочку могут входить и символы, не принадлежащие алфавиту языка; цепочка может быть и пустой.
Программа должна предоставлять пользователю возможность изменять начальное и конечные состояния с сохранением введённой функции переходов для заданного автомата.
Выход – отображение на экране процесса проверки цепочки в виде последо-вательной смены конфигураций и вывод результата – сообщения, принадлежит ли цепочка языку.
Проверить работу программы на примерах из лекций и задачах из контроль-ных вопросов.

1. Постановка задачи
Пусть контекстно-свободный язык задаётся детерминированным автоматом с магазинной памятью – ДМПА. Написать программу, которая будет проверять для вводимой цепочки, принадлежит ли она заданному КС-языку. В случае отри-цательного ответа необходимо давать пояснение, по какой причине цепочка не принадлежит языку (аналогично лаб. раб №2) Исходный автомат вводить с клави-атуры в соответствии с определённым форматом. Ввод цепочек также производить с клавиатуры, выполняя его до тех пор, пока не возникнет желание закончить ра-боту.
Проверить работу программы на примерах из лекций и задачах из контроль-ных вопросов.
2. Описание входных данных программы и её результатов
На вход программы подаётся ДМПА (множество состояний, алфавит языка, алфавит магазина, начальное состояние, начальное содержимое стека, множество заключительных состояний, функция переходов в виде списка правил) и проверя-емая цепочка символов (может вводиться многократно, т.е. возможно проверить любое количество цепочек). При этом в проверяемую цепочку могут входить и символы, не принадлежащие алфавиту языка; цепочка может быть и пустой.
Рекомендуется для ввода исходных данных использовать соответствующую форму с полями выбора. При вводе функции переходов не рекомендуется предо-ставлять пользователю излишнюю свободу действий.
Выход – отображение на экране процесса проверки цепочки в виде последо-вательной смены конфигураций и вывод результата – сообщения, принадлежит ли цепочка языку.

7. Ответы на контрольные вопросы
1. Обязательно ли должна быть задана функция переходов для всех возмож-ных сочетаний “состояние, входной символ, символ стека”? Как поведёт се-бя автомат, если при проверке цепочки встретит неизвестную комбинацию?
Нет. Функция переходов задается правилами для отдельных сочетаний “со-стояние, входной символ, символ стека”.

Купить эту работу

Теория языков программирования и методы трансляции 3шт

1500 ₽

или заказать новую

Лучшие эксперты сервиса ждут твоего задания

от 200 ₽

Гарантии Автор24

Изображения работ

Страница работы
Страница работы
Страница работы

Понравилась эта работа?

или

15 апреля 2023 заказчик разместил работу

Выбранный эксперт:

Автор работы
user3166365
4.5
Автор, испытывающий себя на данной платформе.
Купить эту работу vs Заказать новую
0 раз Куплено Выполняется индивидуально
Не менее 40%
Исполнитель, загружая работу в «Банк готовых работ» подтверждает, что уровень оригинальности работы составляет не менее 40%
Уникальность Выполняется индивидуально
Сразу в личном кабинете Доступность Срок 1—4 дня
1500 ₽ Цена от 200 ₽

5 Похожих работ

Лабораторная работа

Лабораторные работы из учебника "Сборник лабораторных работ" П. Чистов и А. Мальгинова

Уникальность: от 40%
Доступность: сразу
1500 ₽
Лабораторная работа

Использование одномерных и двумерных массивов

Уникальность: от 40%
Доступность: сразу
100 ₽
Лабораторная работа

Дискретная математика. Системы счисления.

Уникальность: от 40%
Доступность: сразу
100 ₽
Лабораторная работа

Дискретная математика. Множества и работа с ними.

Уникальность: от 40%
Доступность: сразу
100 ₽
Лабораторная работа

Дискретная математика. Графы. Основные понятия.

Уникальность: от 40%
Доступность: сразу
100 ₽

Отзывы студентов

Отзыв pocya об авторе user3166365 2016-10-09
Лабораторная работа

Автор очень ответственно и профессионально подходит к выполнению заказов. Большое спасибо!

Общая оценка 5
Отзыв Алексей Ерасов об авторе user3166365 2016-11-13
Лабораторная работа

Автор помог в сжатые сроки, а также прокомментировал все свои действия

Общая оценка 5
Отзыв Aleksandr2772 об авторе user3166365 2018-12-27
Лабораторная работа

Все верно и в срок

Общая оценка 5
Отзыв style2off1988 об авторе user3166365 2016-01-02
Лабораторная работа

Все отлично. Автора рекомендую.

Общая оценка 5

другие учебные работы по предмету

Готовая работа

Основные понятия и проблемы технологии программирования

Уникальность: от 40%
Доступность: сразу
250 ₽
Готовая работа

Доклад по дисциплине "Программирование", тема "Сортировка Пузырьком"

Уникальность: от 40%
Доступность: сразу
100 ₽
Готовая работа

Доклад по дисциплине "Программирование", тема "Сортировка Шелла"

Уникальность: от 40%
Доступность: сразу
150 ₽
Готовая работа

Доклад по дисциплине "Программирование", тема "Сортировка слиянием"

Уникальность: от 40%
Доступность: сразу
150 ₽
Готовая работа

Доклад по дисциплине "Программирование", тема "Сортировка выбором"

Уникальность: от 40%
Доступность: сразу
150 ₽
Готовая работа

Доклад по дисциплине "Программирование", тема "Пирамидальная сортировка"

Уникальность: от 40%
Доступность: сразу
150 ₽
Готовая работа

Доклад по дисциплине "Программирование", тема "Быстрая сортировка"

Уникальность: от 40%
Доступность: сразу
100 ₽
Готовая работа

Доклад по дисциплине "Программирование", тема "Гномья сортировка"

Уникальность: от 40%
Доступность: сразу
150 ₽
Готовая работа

Инструментальные средства разработки информационных систем

Уникальность: от 40%
Доступность: сразу
300 ₽
Готовая работа

Среда разработки программного обеспечения

Уникальность: от 40%
Доступность: сразу
100 ₽
Готовая работа

Принципы работы нейросетей. Виды и принципы работы нейросетей

Уникальность: от 40%
Доступность: сразу
300 ₽
Готовая работа

Рисунок нарисованный в Visual Studio на C++ MFC-приложение

Уникальность: от 40%
Доступность: сразу
200 ₽