Войти
Информатика 18 лекций
Системы программирования
1
Лектор
Вылиток Алексей Александрович
#лекции
ВМК
IV семестр
Осень 2019

В курсе рассматриваются основные возможности современных систем программирования, методы построения трансляторов, основы объектно-ориентированного программирования.

Список всех тем лекций

Лекция 1. Введение в ООП, основы С++.
Содержание курса и литература Язык С++ Парадигмы программирования Иерархия Постулаты ООП Декомпозиция задачи Синтаксис класса в C++ Действия на объектами классов Абстрактный тип данных Некоторые отличия С++ от С Работа с динамической памятью Пространство имен Указатель this

Лекция 2. Специальные методы класса.
Конструктор Деструктор Примеры конструкторов Правила автоматической генерации специальных методов класса Неплоский класс Переопределение операции присваивания Композиция (строгая агрегация) объектов Ссылки Константные ссылки Временные объекты

Лекция 3. Перегрузка операций.
Порядок выполнения конструкторов и деструкторов Конструктор копирования Вызов деструктора Особенности инкапсуляции Друзья класса Свойства и преимущества друзей класса Перегрузка операций Замечания о перегрузки операций Перегрузка операции -> Перегрузка операции () и

Лекция 4. Перегрузка функций.
Алгоритм поиска и выбора функции перегрузки алгоритма поиска функции перегрузки Точное отождествление Отождествление при помощи расширений Отождествление с помощью стандартных преобразований Отождествление с помощью пользовательских преобразований Замечания к правилам отождествления Одиночное наследование Сокрытие имен (hiding) Видимость и доступность имен Вызов конструкторов базового и производного классов Пример динамического полиморфизма

Лекция 5. Виртуальные методы.
Использование классов student и student5 Виртуальные методы Виртуальные деструкторы Механизм виртуальных функций Абстрактный класс Интерфейсы Реализация виртуальных функций виртуальной функции виртуальной функции виртуальной функции

Лекция 6. Множественное наследование.
Одиночное наследование Множественное наследование О преобразовании указателей Ромбовидное наследование Правила выбора имен в производном классе Статические члены класса Особенности использования статических методов Обработка ошибок Обработка и перехват исключений Исключения, генерируемые в функциях

Лекция 7. Динамическая идентификация типа.
Механизм RTTI Операция dynamic_cast Операция typeid Стандартные исключения Иерархия стандартных исключений Шаблоны Шаблоны функций Неявное определение параметра-типа шаблона Алгоритм выбора оптимально отождествляемой функции с учетом шаблонов Шаблоны классов Виды отношений между классами Ассоциация Наследование Агрегация Использование и инстанцирование Стандартная библиотека шаблонов SML Контейнеры Состав контейнеров Типы, используемые в контейнерах Распределители памяти Класс allocator Итераторы Методы контейнеров для нахождения значений Операции над итераторами Категории итераторов

Лекция 8. Алгоритмы STL.
Категории итераторов Алгоритмы STL Группы алгоритмов Категории итераторов и алгоритмы typename Пример шаблонной функции для контейнеров STL Контейнер vector Некоторые функции класса vector Контейнер list Некоторые функции контейнера list Достоинства STL-подхода Введение в С++11 rvalue- ссылки Семантика переноса (move semantics) Обобщенные константные выражения Вывод типов

Лекция 9. Введение в стандарт С ++ 201. года.
For-цикл по коллекции Улучшение конструкторов объектов Явное замещение виртуальных функций и финальность Константа нулевого указателя Перечисления со строгой типизацией Sizeof для членов данных без создания объектов RAII Неспецифизированное поведение программы (specified behavior) Неопределенное поведение (undefined behavior) Выводы Системы программирования

Лекция 10. Системы программирования.
Создание ПП Каскадная и каскадно-возвратная модель Итерационная модель Основные компоненты системы программирования Дополнительные компоненты систем программирования Виды систем программирования Стратегии трансляции Общая схема функционирования основных компонентов СП Интегрированная среда разработки Состав продвинутой ИСР Текстовые редакторы Возможности текстового редактора (ИСР) Задачи отладчика в рамках ИСР Стратегии тестирования Редактор связей Типы библиотеки Библиотеки компонентов Динамические библиотеки Требования к стандартной библиотеке Требования по свойствам компонентов стандартной библиотеки Координатор GNU Make Некоторые дополнительные возможности создания Make-файлов Системы контроля версий Развитие систем контроля версий Классификация система контроля версий Приемы работы с системами контроля версий Популярные современные системы CASE - средства Некоторые дополнительные возможности современных систем

Лекция 11. Грамматики.
Трансляторы Система программирования интерпретирующего типа Схема функционирования компилятора Основные понятия формальных языков Способы описания языков Порождающая грамматика Эквивалентность грамматик Тип 1 Безконтекстные грамматики Тип 3 Классификация языков и их иерархия Иерархия классов и примеры

Лекция 12. Формальные языки.
Задача распознавания Дерево вывода Неоднозначный язык Приведенные КС-грамматики Алгоритм удаления бесплодных символов Устранение правил с пустой правой частью из КС-грамматики Основы трансляции Стратегии построения дерева вывода Регулярные языки Алгоритм построения НКА по праволинейной грамматике Алгоритм построения леволинейной автоматной грамматики по НКА

Лекция 13. Введение в трансляцию.
Детерминированный конечный автомат Алгоритм минимизации конечного автомата Алгоритм построения ДКА по НКА Алгоритм моделирования работы ДКА Пример разбора цепочки Недетерминированный разбор Конечные автоматы с действием Лексический анализ Лексический анализатор для М-языка Контекстные условия Проектирование структуры классов лексического анализатора М-языка Соглашение об используемых таблицах лексем Диаграмма состояний

Лекция 14. Метод рекурсивного спуска.
Задача разбора (синтаксический анализ) Условия некорректности анализатора Метод рекурсивного спуска (РС - метод) Применимость метода рекурсивного спуска Условия неприменимости РС- метода Множество follow Канонический вид для PC- метода Модификация метода для грамматик с итерациями Эквивалентные преобразования для КС-грамматик Задача разбора для неоднозначных грамматик

Лекция 15. Синтаксический анализатор.
Неприменимость метода рекурсивного спуска к некоторым грамматикам, пример Синтаксический анализатор для М-языка Класс Parser Семантический анализ Обработка описаний Контроль контекстных условий в выражении Контроль за типом операнда одноместной операции Контроль контекстных условий Внутреннее представление программы ПОЛИЗ (постфиксная запись)

Лекция 16. Работа с ПОЛИЗом.
Алгоритм Декстры Расширение набора операций ПОЛИЗА Расширение операций ПОЛИЗА Семантика оператора цикла в ПОЛИЗе Синтаксически управляемый перевод Формальный перевод Генератор внутреннего представления программы на M-языке Класс Poliz Добавление генерации в некоторые функции семантического анализа Действия для операторов присваивания

Лекция 17. Перевод конструкций в ПОЛИЗ.
Действия для условного оператора Оператор цикла while E do Грамматика с действиями в ПОЛИЗ операторов ввода и вывода Интерпретатор ПОЛИЗа для модельного языка Перевод других конструкций в ПОЛИЗ Оператор for в ПОЛИЗ Switch в ПОЛИЗ Duplicate в ПОЛИЗ Заключение

Лекция 18. Распределение памяти.
Распределение памяти Классы памяти Общие принципы генерации объектного кода Оптимизация программ Машинно-независимые оптимизирующие преобразования Машинно-зависимые оптимизирующие преобразования Обзор изученных ЯП Семантика указателей