Создан заказ №1233138
24 мая 2016
Создать калькулятор через бинарное дерево на языке C#
Как заказчик описал требования к работе:
Домашнее задание по дисциплине «Теоретические основы информатики»
Работайте процедуры синтаксического разбора и интерпретации выражений, используя в качестве примера приведённые в методических указаниях по теме описания грамматики языка выражений и тексты процедур разбора и интерпретации.
Этап 1.
Разработайте (или переработайте, используя приведённые примеры) описание грамматики выражений.
Приведите описание разработанной грамматики (включая правила записи операндов (чисел и переменных)) с использованием БНФ (РБНФ), а также диаграмм Вирта.
Приведите примеры правильно записанных выражений (их можно будет использовать как тесты) и постройте для них деревья синтаксического разбора. Приведите примеры записи выражений, содержащих синтаксические ошибки.
Этап 2.
Разработайте (или переработайте, используя приведённые примеры) процедуры синтаксического анализа арифметических выражений, расширив возможности приведённых в материалах курса и в исходном коде на языке Pascal процедур в соответствии с разработанными на этапе 1правилами. Доработайте процедуры обработки ошибок (в случае обнаружения ошибки разбор должен быть прекращен, на экран должно быть выведено сообщение об ошибке с указанием причины ошибки, рекомендацией по её исправлению (возможна нейтрализация ошибок с продолжением анализа)).
Обратите внимание на фрагмент кода процедуры EXPRESSION, выделенный в тексте лекции зелёным цветом: всегда ли сообщения об ошибке будут выводиться только в случае возникновения ошибки? Приведите пример неверного вывода сообщения об ошибке, если такая ситуация возможна. Исправьте код, если это необходимо. При разработке процедуры NEXTSYMBOL перехода к следующему символу в строке необходимо предусмотреть ситуацию, когда анализируемая строка «неожиданно» заканчивается (запись выражения «обрывается», например, в ситуации, когда не закрыта скобка, отсутствует операнд после операции и т.п.). Как предотвратить ошибку при выполнении процедур разбора в этом случае (процедуры разбора можно преобразовать в функции, которые в качестве результата возвращают код возврата, который можно анализировать, чтобы распознать необходимость и возможность продолжения разбора)?
Приведите описания алгоритмов синтаксического разбора в виде блок-схем и структурограмм.
Приведите описания тестов для разработанных процедур разбора выражений в соответствии с описанными правилами.
Оформите программный код в соответствии с правилами структурного программирования (программа должна быть структурированной, самодокументированной (код комментируется, используются мнемоничные имена)).
Этап 3.
Внесите изменения в тексты процедур синтаксического разбора для построения:
а) дерева, представляющего синтаксически правильное выражение в форме, пригодной для интерпретации (узлы дерева – операции или операнды (листовые вершины представляют переменные или константы));
б) обратной польской записи в форме, пригодной для интерпретации (элементы – записи, представляющие операции или операнды) – выполняется факультативно (см. примечания) **.
В случае обнаружения ошибки структуры данных, используемые для построения дерева или ОПЗ, должны быть очищены, интерпретация не должна запускаться.
Этап 4.
Разработайте «Калькулятор» – интерпретатор, вычисляющий значение синтаксически правильного выражения, используя:
а) построенное дерево;
б) обратную польскую запись – выполняется факультативно (см. примечания)**.
Обязательные требования к выполнению задания:
1. Выявление и локализация синтаксических ошибок в выражении, вывод сообщений об ошибке с указанием типа ошибки, ошибочного символа и контекста.
2. Контроль ввода и выполнения арифметических операций и обработка исключений, связанных с неправильным вводом данных, несоответствием типов, ошибками при выполнении операций (переполнение, деление на ноль и т.п.).
3. Возможность повторного вычисления значения выражения с другими исходными данными,вводимыми пользователем, при использовании в выражении переменных.
В файле программа в консоли, нужно сделать 2 вида Widnows Forms, чтобы они просто отличались и отчёт ( в описании, указано, что
подробнее
Заказчик
заплатил
заплатил
200 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
25 мая 2016
Заказ завершен, заказчик получил финальный файл с работой
5
Создать калькулятор через бинарное дерево на языке C#.docx
2018-03-21 03:58
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Спасибо автору за работу! Работа была выполнена великолепно! Всем рекомендую данного автора!