Практикум на ЭВМ. Материалы для 212 группы.

Ю.С. Корухова

Дополнительные источники информации

http://cmcmsu.no-ip.info/2course/

Практические задания

  • --------------------------------------
  • Задание 1. _15_/02/2011

    Реализация АТД на С++. Демонстрация работы с объектами нового типа данных.
    Вариант 1.Очередь для хранения вещественных чисел. В классе должны быть функции добавления элемента в конец очереди (put), чтение первого элемента из очереди (get) , проверка очереди на пустоту (empty), проверка, что очередь целиком заполнена (full). Максимальный допустимый размер очереди указывается при создании каждого объекта.
    Вариант 2. Дерево поиска. Деревом поиска (деревом сравнений) называется двоичное дерево, которое либо пустое, либо состоит из одной вершины, либо для каждой из его вершин в левом поддереве содержатся только вершины с меньшими элементами, а в правом поддереве – только с большими элементами. Для объектов класса должны быть предусмотрены операции добавления, удаления и поиска элемента. В вершинах дерева хранятся числа типа int.
    Вариант 3. Банковский счет. Необходимые члены-данные: дата создания счета, сумма денег, которая на нем хранится, владелец счета (объект класса person, у которого есть фамилия и имя), информация о последних 10 операциях, проведенных со счетом. Операция,проводимая со счетом – объект, содержащий дату операции, вид операции (добавить/снять деньги) и сумму операции. У класса банковский счет должны быть методы: пополнить счет, снять деньги (если указана недопустимая сумма – должно печататься сообщение об ошибке, сумма на счете при этом не меняется), распечатать информацию о последних 10 операциях, распечатать доступную сумму денег на счете.
    Вариант 4. Зоопарк. Необходимые члены-данные: количество зверей, массив, содержащий информацию о зверях (имя, номер клетки, название любимой еды), часы работы зоопарка адрес зоопарка, фамилия сторожа. В классе нужно определить методы, позволяющие «накормить» зверя (изменить значение соответствующего поля), поменять сторожа зоопарка (записать другую фамилию сторожа в соответствующее поле).
  • --------------------------------------
  • Задание 2. _01_/03/2011

    Перегрузка операций (самостоятельная работа)
    Привести описание класса ... и, если необходимо, дополнительные функции, чтобы заданная функция main работала в соответствии со своим описанием, приведенным в комментариях, и выдавала на печать текст ... (текст будет указан в условии задания). В текст функции main изменения не вносить, написанный класс не должен содержать открытых нестатических полей-данных.
  • --------------------------------------
  • Задание 3. _15_/03/2011

    Разработка иерархии классов.
    Выбрать предметную область, в которой можно выделить объекты как минимум трёх типов, связанные между собой иерархическими отношениями. Используя наследование, описать классы для работы такими объектами.
    Дополнительные условия:
    1. Базовым должен являться абстрактный класс. Среди его членов-данных должен присутствовать указатель.
    2. В программе должны присутствовать операции, перегруженные как члены класса и операции, перегруженные с помощью функций, не являющихся членами класса.
    3. В программе должны создаваться объекты разработанных классов, они должны взаимодействовать, используя описанные методы и перегруженные операции.
    4. В описании классов должны быть описаны как минимум две виртуальные функции, работа которых также должна быть продемонстрирована в программе.
  • --------------------------------------
  • Задание 4 (большое).

    Использование алгоритмов и методов трансляции. Язык выполнения любого из вариантов задания - С++. Выполнение каждого из вариантов состоит из нескольких этапов. Этапы задания сдаются последовательно. Ориентировочное время на выполнение каждого этапа 1 - 2 недели.
    Вариант 1. Интерпретатор модельного языка программирования.
    Формулировка задания (270.7 Kb). Студентам, выбравшим данное задание, необходимо на семинаре уточнить подмножество входного языка интерпретатора.
    Этапы выполнения задания
    1. Уточнение входного языка. Проектирование системы.
    2. Лексический анализ.
    3. Синтаксический анализ.
    4. Семантический анализ (контроль контекстных условий).
    5. Генерация внутреннего представления программы.
    6. Интерпретация внутреннего представления.
    NB: 2-4 могут быть сданы как отдельно, так и одновременно. Выполнение остальных этапов необходимо продемонстрировать отдельно.
    Вариант 2. Модельный SQL интерпретатор.
    Формулировка задания (364.4 Kb).
    Этапы выполнения задания
    1. Проектирование системы. Реализация взаимодействия клиент-сервер в сети.
    2. Реализация функций работы с таблицами. Пример (6.85 Kb).
    3. Разбор SQL запросов (лексический, синтаксический, семантический анализ. Возможна генерация внутреннего представления).
    4. Реализация выполнения запросов.
    Вариант 3.
    Система автоматического перевода текстов.

    Входными данными программы является текст на некотором языке (например, французском). Результатом работы программы перевод этого текста на другой язык (например, английский). В задании реализуется синтаксически управляемый перевод. Выбор языков необходимо согласовать на семинаре до начала выполнения задания.
    Этапы выполнения задания
    1. Описание используемого подмножества языка в виде грамматики. (Достаточно рассматривать тексты, состоящие их простых предложений, повествовательных и вопросительных). Проектирование системы.
    2. Проектирование и реализация словаря. Продумать и реализовать эффективный алгоритм поиска перевода слова в словаре. Лексический анализ текста.
    3. Синтаксический анализ
    4. Контроль контекстных условий
    5. Синтаксически управляемый перевод
  • --------------------------------------
  • Задание 5 (дополнительное).

    Работа с автоматическими построителями анализаторов LEX и YACC.
    Вариант 1 (простой).
    Калькулятор.
    Реализовать калькулятор, вычисляющий значения выражений, содержащих операции + - * / и унарный минус. Выражения могут содержать скобки. Операндами являются целые числа.
    Вариант 2 (более сложный).
    Форматирование текстов программ.

    На вход программе-анализатору подается текст на языке Pascal. Оформить этот текст в соответствии с требованиями структурного программирования. Результатом работы должен быть текст, в котором расставлены необходимые отступы, переходы на новую строку.



...Страница находится в процессе разработки...