Metadata
Title
Список экзаменационных вопросов по курсуСИСТЕМЫ ПРОГРАММИРОВАНИЯ
Category
general
UUID
ec0b881e6537498f80851b163c16d2fc
Source URL
https://al.cs.msu.ru/static/classes/spbak2009.html
Parent URL
https://al.cs.msu.ru/classes.html
Crawl Time
2026-03-17T08:21:47+00:00
Rendered Raw Markdown
# Список экзаменационных вопросов по курсуСИСТЕМЫ
ПРОГРАММИРОВАНИЯ

**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. Чисто виртуальные функции. Абстрактные классы.