# Список экзаменационных вопросов по курсуСИСТЕМЫ
ПРОГРАММИРОВАНИЯ
**Source**: https://al.cs.msu.ru/static/classes/spbak2009.html
**Parent**: https://al.cs.msu.ru/classes.html
# Список экзаменационных вопросов по курсу **СИСТЕМЫ ПРОГРАММИРОВАНИЯ**
Бакалавриат, гр. 231, 232. 2009 год
Лекторы А.В.Столяров, И.Н.Полякова
## Программное обеспечение систем программирования
1. Жизненный цикл и цикл разработки программного продукта
2. Понятие и состав системы программирования, её роль и место в составе
вычислительной системы
3. Требования к редактору текстов, предназначенному для
программирования. Пример: редактор vim.
4. Понятия интерпретатора и компилятора, схемы их работы.
Основные возможности компилятора gcc
5. Объектный код, объектные модули и редактор связей. Библиотеки.
6. Программное обеспечение для поддержки отладки программ. Примеры.
7. Основные возможности отладчика gdb. Три режима запуска gdb.
8. Назначение и принципы работы систем автоматизированной сборки. Основные возможности программы GNU make.
9. Автоматическое отслеживание зависимостей от включаемых файлов с помощью GNU make и компилятора gcc
10. Назначение и принципы функционирования систем контроля версий.
Основные возможности системы CVS.
## Элементы теории формальных языков и теории трансляции
1. Основные понятия и определения теории формальных языков. Примеры.
2. Классификация формальных грамматик и языков по Хомскому. Примеры.
3. Соотношения между типами грамматик, соотношения между типами языков.
Эквивалентные и почти эквивалентные грамматики.
4. Бесплодные и недостижимые символы. Приведенные грамматики. Алгоритм
приведения грамматики.
5. Вывод. Дерево вывода. Примеры.
6. Понятие неоднозначности грамматики и языка. Примеры.
7. Деревья вывода при разборе по регулярным грамматикам.
8. Регулярные грамматики и конечные автоматы. Алгоритмы построения
грамматики по автомату и автомата по леворегулярной грамматике.
9. Детерминированные и недетерминированные конечные автоматы. Алгоритм
преобразования НКА в ДКА.
10. Синтаксический анализ. Метод рекурсивного спуска.
11. Модификация метода рекурсивного спуска для грамматик с итерациями
и для грамматик, содержащих epsilon-правила. Применимость метода к таким
грамматикам.
12. Пути преобразования грамматик, не удовлетворяющих условиям
применимости метода рекурсивного спуска.
13. Генерация кода и синтаксически управляемый перевод.
примеры.
14. Польская инверсная запись (ПОЛИЗ) арифметических выражений.
Интерпретация ПОЛИЗа. Алгоритм Дейкстры для перевода выражений в ПОЛИЗ.
15. Расширение ПОЛИЗа для представления произвольных программ; ПОЛИЗ
как язык внутреннего представления программ.
## Язык C++
1. Объектно-ориентированное программирование (ООП) -- новая технология (парадигма) программирования. ООП-анализ.
2. Пространства имен в языке Си++.
3. Основные свойства языка, поддерживающего ООП.
4. Понятие класса и объекта. Описание класса.
5. Управление доступом к членам класса -- public, private, protected.
6. Операции . и ->, символ ::, указатель this.
7. Объявления и описания функций-членов класса; эффект inline.
8. Специальные функции -- конструкторы и деструктор.
9. Конструктор копирования.
10. Конструктор копирования и операция присваивания: содержательная связь и различие.
11. Ссылки и указатели в Си++.
12. Операторы new и delete.
13. Друзья класса, "законы" дружбы. Сравнение функции-члена и функции-друга: описание, вызов.
14. Обработка исключений в C++. Преобразование типов в обработчиках исключений.
15. Перегрузка функций. Перегрузка и неоднозначность.
16. Функции с параметрами по умолчанию.
17. Алгоритм поиска оптимально отождествляемой (best-matching) функции (1-3 шаги - стандартные преобразования).
18. Алгоритм поиска оптимально отождествляемой (best-matching) функции (4-5 шаги - пользовательские преобразования).
19. Перегрузка операторов. Перегрузка с помощью функции-члена и функции-друга.
20. Перегрузка бинарных операций в С++.
21. Перегрузка унарных операций в С++.
22. Особенности перегрузки операций ++ и --, операции индексации в С++.
23. Особенности перегрузки операции присваивания.
24. Статические члены класса.
25. Константные функции-члены.
26. Одиночное наследование. Правила наследования. Видимость при наследовании.
27. Конструкторы и деструкторы при наследовании.
28. Указатели на базовый и производный классы, преобразование указателей.
29. Динамический полиморфизм. Виртуальные функции.
30. Чисто виртуальные функции. Абстрактные классы.