Главная страница   
Экстренная связь
Сейчас на сайте

Админов: 2 из 5
Исполнителей: 7 из 136
Клиентов: 39 из 3527

Вход
Логин  
Пароль  
На заказ
Разместить заявку
Программирование
Информатика
Базы данных
Разработка ПО
Бухгалтерский учёт
Экономика, Аудит
Финанс. менеджмент
Финансовый анализ
Эконом. теория
Эконом. предприятия
Финансы и кредит
Менеджмент
Маркетинг
Юриспруденция
Право
Психология
Психологическая консультация
Математика
Исследование операцй
Методы оптимизации
Физика
Радиотехника
Электроника
Схемотехника
Механика
Метрология
Перефразирование
История
Английский
Студентам ТУСУР-а
Другой предмет
Готовые работы
Найти готовую
Программирование
Экономика, Аудит
Бухгалтерский учёт
Финансы и кредит
Юриспруденция
Право
История
Психология
Механика
Информация
О сайте
Контакты
Соглашение
Наши гарантии
Способы оплаты
Вопросы и ответы
Отзывы клиентов
Бонусы и скидки
Заработок
Вакансии
Написать письмо
Мы работаем
ЕЖЕДНЕВНО
с 9:30 до 23:30 msk
Поиск по сайту
Разное
Архив заказов
Анекдоты
Облака тегов
Карточные игры
Преподы-монстры
Антиплагиат
Мысли вслух





Яндекс цитирования






Грызи гранит не портя зубы;)


Яндекс.Метрика








Класс!









Stats








(Напомнить)
Логин Пароль        

ВКонтактеFacebookНаш Instagram

Программа
Лингвистическое обеспечение информационных систем
в среде программирования C++ Builder

Выполненный в 2017-м году заказ


Если Вы считаете, что данная страница каким-либо образом нарушает Ваши авторские права, то Вам следует обратиться в администрацию нашего сайта по адресу info@kursovik.com либо через форму обратной связи

Среда программирования: C++ Builder

Название работы: Лингвистическое обеспечение информационных систем

Вид работы: Программа

Описание: ЗаказатьЛабораторная работа 1
Основные элементы компилятора. Выделение символов из входного потока
Цель работы: Ознакомиться с основными компонентами компилятора и основными операциями с файлами в языке Си, сформировать практические навыки в реализации простейшего текстового редактора. Ознакомиться с понятиями символов языка и приемами выделения их из входного потока литер..
Порядок выполнения работы
1. В соответствии с методическими указаниями напишите программу текстового редактора.
2. Измените программу, добавив панель кнопок (компонент Panel1) и разместите на ней девять компонентов типа TspeedButton(страница Additional палитры компонентов). Оснастите кнопки рисунками, для чего присвойте значения свойствам Glyph этих кнопок toolbar и "всплывающими" подсказками (Hint).
3. Измените программу, добавив для пунктов меню возможность их вызова с помощью "горячих клавиш" (ShortCut).
4. Изучите функции fopen(), fclose(), fgets(), gets(), fputs(), printf(), fprintf(), sprintf(), strcat(), fnsplit().
5. Измените программу, добавив имитацию работы головного модуля программы компилятора. Лексический блок осуществляет чтение исходного текста (файла с расширением .inp) и запись его копии в файл с расширением .lex. Синтаксический блок читает содержимое файла с расширением .lex и пишет его копию в файл с расширением .snt. Генератор кода читает содержимое файла с расширением .snt и пишет его копию в файл с расширением .gen. Для выполнения этих операций добавьте в меню новый элемент "Компилятор"(N4) с пунктами "Лексический блок"(N4_1), "Синтаксический блок"(N4_2), "Генератор кода"(N4_3), "Выполнить"(N4_4). Напишите программы обработки их вызовов с использованием функций из п4.
6. Измените программу для пункта "Лексический блок". В начале, после выбора имени исходного файла с расширением .inp, содержимое этого файла появляется в окне текстового редактора. Используя пример из методических указаний, сделайте, чтобы при выборе пункта "Лексический блок" результат разбиения на символы выводился бы в отдельном окне редактора и сохранялся в файле. Имя файла совпадает с именем входного файла, но имеет расширение .lex.
7. Перепишите программу для случая, когда в качестве сим-волов-разделителей могут быть: < > <= >= = <>.
8. Добавьте в программу возможность удаления комментариев, начинающихся с символов // и заканчивающихся в конце строки, на которой они появились.
9. Добавьте в программу возможность удаления комментариев, выделяемых символами /* и */. Рассмотрите варианты:
- комментарий начинается и заканчивается всегда на одной и той же строке;
- комментарий может начинаться и заканчиваться на разных строках. При реализации этого пункта задания необходимо учесть, что если обнаружили начало комментария, а его окончание в текущей строке не найдено, то необходимо об этом сообщить функции Lex. Для этой цели удобно использовать глобальную переменную типа int Fl=0. При обнаружении начала комментария устанавливаем значение Fl=1. При возврате в Lex, если Fl равно 1, то ищем конец комментария, а не разбираем строку по символам с помощью NextLex. При обнаружении конца комментария Fl устанавливаем в 0.

Контрольные вопросы
1. Что такое компилятор?
2. Основные блоки компилятора и их характеристика?
3. Перечислите основные инструменты интегрированной среды C++Builder.
4. Что такое свойства, методы и события?
5. Перечислите основные компоненты вкладки Standard па-литры компонент C++ Builder.
6. Что такое администратор проекта C++ Builder?
7. Как добавить к проекту новую форму?
8. Почему некоторые компоненты называют невидимыми?
9. Основные функции языка C++ Builder для работы с файла-ми, каталогами и со строками.
10. Что такое литеры и символы?
11. Какие проблемы могут возникать при формировании сим-волов?
12. Почему компиляторы "работают" с кодами символов, а не с ними самими?
13. В языке Фортран можно опускать все пробелы при написании операторов, какие проблемы могут возникать из-за этого у компилятора при разбиении входной строки на символы?
14. Что компилятор делает с комментариями?
15. Какие проблемы возникают в случаях, когда и начало и конец комментария определяются одинаковыми последовательностями символов?

Лабораторная работа 2
ОРГАНИЗАЦИЯ ТАБЛИЦ, КОНЕЧНЫЕ АВТОМАТЫ
Цель работы: Ознакомиться с методами организации таблиц имен и констант в компиляторах, с понятиями конечных авто-матов и способами их программной реализации.
Порядок выполнения работы
1. Создайте новый проект, основанный на форме вида

Рис.5. Форма для работы с таблицей идентификаторов

Кнопка "Сброс" должна обеспечивать инициализацию таблицы идентификаторов. Кнопка "Проверка" проверяет, является ли введенная последовательность литер (Edit1) идентификатором, если ДА, то она заносится в таблицу и выводится сообщение "Это идентификатор с кодом …" (Edit2), если есть ошибочные сообщения, то они выводятся в Edit3.
Составьте функцию поиска в таблице символов записи с за-данным значением имени идентификатора, прототип функции struct tbl *FndIdName(char *). При нажатии кнопки "Поиск" вы-водится форма Form2 вида

Рис. 6. Форма для поиска в таблице идентификаторов

При нажатии на кнопку "Найти" в таблице идентификаторов ищется запись с именем, введенным в Edit1. Результат поиска с указанием кода найденного идентификатора выводится в Edit2. В Unit2.cpp (Form2) необходимо добавить описания
extern struct tbl{
int code;
char name[9];
int type;
int dcl;
char inival[16];
} TBL [31];
int IdRecogn(char *);
struct tbl *FndIdName (char *s);
2. Дополните проект функциями для формирования и заполнения таблицы констант целых чисел с длиной не более 15 разрядов. Описание таблицы имеет вид:
#define BEGLIT 60 /* начальное значение кода константы */
#define ENDLIT 99 /* конечное значение кода константы */
struct lit {
int code; /* код константы */
char val[16]; /* значение константы */
} LIT[41];
Описание прототипа функции поиска в таблице констант записи с заданной величиной константы. имеет вид: struct lit *FndLitVal(char *).
3. Измените программу заполнения таблицы символов с использованием динамического распределения памяти (используй-те функцию malloc и оператор new).
4. Дополните проект программами проверки с помощью конечного автомата наличия в задаваемой по запросу строке таких понятий как:
а) константа в виде числа без знака с фиксированной точкой;
б) константа в виде числа без знака в экспоненциальной форме;
в) служебные слова языка: BEGIN, END, FIXED, REAL;
г) разделители: знаки операций, знаки пунктуации.
5. Используя эти программы и проект из лабораторной работы 1, составьте программу, читающую данные из заданного файла, распознающую их на принадлежность к служебным словам, раз-делителям, идентификаторам и константам языка и записывающую в выходной файл эти данные в виде кодов. Константы заносить в таблицы, входной файл имеет расширение .inp, а выход-ной - .lex. Коды имеют диапазон значений от 0 до 99.

Контрольные вопросы

1. Назначение таблиц символов?
2. Чем обуславливается в реальных компиляторах ограничение на максимальное число объявленных имен?
3. Какая информация должна хранится в таблицах символов?
4. Почему в реальных компиляторах очень большое внимание уделяется вопросам организации быстрого поиска в таблицах?
5. Что такое динамическое распределение памяти?
6. Что такое конечный автомат?
7. Какие типы грамматик можно реализовать с помощью конечного автомата?
8. Что такое множество допускающих состояний конечного автомата?
9. Как строится таблица переходов конечного автомата?
10. Можно ли применять конечные автоматы для проверки синтаксиса?

Лабораторная работа 3
МЕТОД РЕКУРСИВНОГО СПУСКА. СИНТАКСИЧЕСКИЙ РАЗБОР ВЫРАЖЕНИЙ

Цель работы: ознакомиться с вопросами реализации одного из наиболее распространенных методов детерминированного нисходящего разбора , а также с алгоритмом преобразования выражения в обратную польскую запись..
Методические указания к выполнению работы

Порядок выполнения работы

1. Рассмотрите вариант реализации функции NextSymb(), когда информация не сразу считывается из файла, а предварительно помещается в окно текстового редактора (компонент TMemo).
2. Составьте программу проверки с помощью метода рекурсивного спуска понятия "программа" описываемого правилами:
P={
<программа> TITLE <описания><операторы>END
<описания> <список имен> : <тип>;<описания>
<описания> <список имен> : <тип>;
<тип> INT
<тип> REAL
<список имен> <идентификатор>, <список имен>
<список имен> <идентификатор>
<операторы> <оператор ввода> <операторы>
<операторы> <оператор ввода>
<операторы> <оператор вывода> <операторы>
<операторы> <оператор вывода>
<операторы> <оператор присваивания> <операторы>
<операторы> <оператор присваивания>
<оператор ввода> INPUT(<список ввода-вывода>);
<оператор вывода> OUTPUT(<список ввода-вывода>);
<список ввода-вывода> <элемент>,<список ввода-вывода>
<список ввода-вывода> <элемент>
<элемент> <идентификатор>
<оператор присваивания> <идентификатор> = <выражение>;
}
Реализацию программы выполнить на базе проекта из лабораторной работы 1, входной тест вводится в виде кодов в соответствии с грамматикой в файле с расщирением .lex. Вся проверка должна быть реализована при выборе пункта "Синтаксический блок".
Результаты проверки вывести в отдельный файл (с расширением .snt) с указанием последовательности правильно распознанных конструкций, ошибочные сообщения для нераспознанных конструкций вывести в отдельном компоненте TMemo. Если ошибок нет, то этот компонент должен быть невидимым.
3.Дополните программу разбором нетерминального символа <выражение>. В выражении можно использовать только операции возведения в степень, умножения, деления, сложения, вычитания и скобки. Последовательность выполнения операций слева направо, кроме возведения в степень и унарного минуса (справа налево).
4. Добавьте в программу синтаксического разбор логического выражения с логическими операциями AND , OR , NOT и операциями отношения < > <= >= = <>. В выражении могут быть скобки, последовательность выполнения всех операций, кроме NOT, слева направо, возможна рекурсия. Также в выражении могут быть функции одно- и двух- переменных.

Контрольные вопросы

1. В чем заключается идея метода рекурсивного спуска?
2. Достоинства и недостатки метода рекурсивного спуска?
3. Приведите примеры грамматик, которые нельзя разбирать методом рекурсивного спуска.
4. Какие типы грамматик можно разбирать методом рекурсивного спуска?
5. Какие еще методы синтаксического разбора вы знаете?
6. Какие способы записи выражений Вы знаете?
7. В чем преимущества польских форм записи?
8. Поясните на примерах алгоритм преобразования выражения из инфиксной в постфиксную форму.
9. Что такое символы действия, включаемые в грамматику и их роль?
10. Как реализовать в грамматике последовательность выполнения операций:
а) слева направо?
б) справа налево?

Лабораторная работа 4
ГЕНЕРАЦИЯ КОДА

Цель работы: ознакомиться с функциями блока генератора кода и методами разбора выражения в виде обратной польской записи.
Порядок выполнения работы

1. Напишите программу генерации действий для выражения в форме обратной польской записи по следующему алгоритму.
Задано выражение вида, например, ab+c-, получаем цепочку действий:
СЛОЖИТЬ(a,b,R)
ВЫЧЕСТЬ(R,c,R)
Выражение может содержать все возможные знаки арифметических операций. Для ввода исходного выражения используйте компоненты TEdit, для выводов результатов преобразования используйте компоненты TMemo.
2. Напишите программы реализации функций, так называемого, pичного блока для выполнения операций умножить (pmul), разделить (pdiv), сложить (padd), вычесть (psub). Предусмотреть возможность задания p в пределах от 2 до 16. Для ввода входных данных и результатов выполнения используйте компонент TEdit.

Контрольные вопросы
1. Какие функции выполняет генератор кода?
2. Почему, как правило, при работе генератора кода не возникает ошибочных ситуаций?
3. На каком языке обычно генерируют программы генераторы кода в реальных компиляторах?
4. Каким образом используются таблицы символов при гене-рации кода?
5. Что такое оптимизация кода?

Год выполнения: 2017

Данный заказ (программа) выполнялся нашим сайтом в 2017-м году, в рамках этого заказа была разработана программа в среде программирования C++ Builder. Если у Вас похожее задание на программу, которую нужно написать на C++ Builder, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2017-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".


Форма заказа
*Имя:
*E-Mail:
Моб.телефон:
Skype:
Icq:
Страна:
 
ВУЗ:
Город ВУЗа:
Специальность:
 
*Введите код с картинки:
код
(сменить)

Я принимаю Пользовательское соглашение



ВНИМАНИЕ ! Сотрудники сайта KURSOVIK.COM в своей работе осуществляют сбор, обработку и обобщение информации по предложенным клиентам темам. Результатом данной работы является информационная подборка, которая НЕ ЯВЛЯЕТСЯ готовой НАУЧНОЙ РАБОТОЙ, она лишь служит основой для её написания самим клиентом.
Данный сайт НЕ ЯВЛЯЕТСЯ средством массовой информации.
© 2001-2017 kursovik.com