Список экзаменационных вопросов по курсу "Системы программирования" в бакалавриате (гр. 231), 2009/10 учебный год |
Список экзаменационных вопросов по курсу
СИСТЕМЫ ПРОГРАММИРОВАНИЯ Бакалавриат, гр. 231. 2010 год
СИСТЕМЫ ПРОГРАММИРОВАНИЯ Бакалавриат, гр. 231. 2010 год
Лекторы А.В.Столяров, И.Н.Полякова
Программное обеспечение систем программирования
- Жизненный цикл и цикл разработки программного продукта
- Понятие и состав системы программирования, её роль и место в составе вычислительной системы
- Требования к редактору текстов, предназначенному для программирования. Пример: редактор vim.
- Понятия интерпретатора и компилятора, схемы их работы. Основные возможности компилятора gcc
- Объектный код, объектные модули и редактор связей. Библиотеки.
- Программное обеспечение для поддержки отладки программ. Примеры.
- Основные возможности отладчика gdb. Три режима запуска gdb.
- Назначение и принципы работы систем автоматизированной сборки. Основные возможности программы GNU make.
- Автоматическое отслеживание зависимостей от включаемых файлов с помощью GNU make и компилятора gcc
- Назначение и принципы функционирования систем контроля версий. Основные возможности системы CVS.
Элементы теории формальных языков и теории трансляции
- Основные понятия и определения теории формальных языков. Примеры.
- Классификация формальных грамматик и языков по Хомскому. Примеры.
- Соотношения между типами грамматик, соотношения между типами языков. Эквивалентные и почти эквивалентные грамматики.
- Бесплодные и недостижимые символы. Приведенные грамматики. Алгоритм приведения грамматики.
- Вывод. Дерево вывода. Примеры.
- Понятие неоднозначности грамматики и языка. Примеры.
- Деревья вывода при разборе по регулярным грамматикам.
- Регулярные грамматики и конечные автоматы. Алгоритмы построения грамматики по автомату и автомата по леворегулярной грамматике.
- Детерминированные и недетерминированные конечные автоматы. Алгоритм преобразования НКА в ДКА.
- Синтаксический анализ. Метод рекурсивного спуска.
- Модификация метода рекурсивного спуска для грамматик с итерациями и для грамматик, содержащих epsilon-правила. Применимость метода к таким грамматикам.
- Пути преобразования грамматик, не удовлетворяющих условиям применимости метода рекурсивного спуска.
- Генерация кода и синтаксически управляемый перевод. примеры.
- Польская инверсная запись (ПОЛИЗ) арифметических выражений. Интерпретация ПОЛИЗа. Алгоритм Дейкстры для перевода выражений в ПОЛИЗ.
- Расширение ПОЛИЗа для представления произвольных программ; ПОЛИЗ как язык внутреннего представления программ.
Язык C++
- Объектно-ориентированное программирование (ООП) -- новая технология (парадигма) программирования. ООП-анализ.
- Пространства имен в языке Си++.
- Основные свойства языка, поддерживающего ООП.
- Понятие класса и объекта. Описание класса.
- Управление доступом к членам класса -- public, private, protected.
- Операции . и ->, символ ::, указатель this.
- Объявления и описания функций-членов класса; эффект inline.
- Специальные функции -- конструкторы и деструктор.
- Конструктор копирования.
- Конструктор копирования и операция присваивания: содержательная связь и различие.
- Ссылки и указатели в Си++.
- Операторы new и delete.
- Друзья класса, "законы" дружбы. Сравнение функции-члена и функции-друга: описание, вызов.
- Обработка исключений в C++. Преобразование типов в обработчиках исключений.
- Перегрузка функций. Перегрузка и неоднозначность.
- Функции с параметрами по умолчанию.
- Алгоритм поиска оптимально отождествляемой (best-matching) функции (1-3 шаги - стандартные преобразования).
- Алгоритм поиска оптимально отождествляемой (best-matching) функции (4-5 шаги - пользовательские преобразования).
- Перегрузка операторов. Перегрузка с помощью функции-члена и функции-друга.
- Перегрузка бинарных операций в С++.
- Перегрузка унарных операций в С++.
- Особенности перегрузки операций ++ и --, операции индексации в С++.
- Особенности перегрузки операции присваивания.
- Статические члены класса.
- Константные функции-члены.
- Одиночное наследование. Правила наследования. Видимость при наследовании.
- Конструкторы и деструкторы при наследовании.
- Указатели на базовый и производный классы, преобразование указателей.
- Динамический полиморфизм. Виртуальные функции.
- Чисто виртуальные функции. Абстрактные классы.