Занятие 1
Введение
- Содержание семестра, организация занятий.
- Знакомство с Visual Studio.
- Написание первой программы.
- Структура программы.
- Алфавит и лексемы C++.
- Комментарии.
- Консольный ввод/вывод.
- Управляющие последовательности.
- Библиотека <iomanip>.
Занятие 2
Типы данных
- Переменные.
- Инициализация переменных, неинициализированные переменные, типы инициализации.
- Стандартные типы данных.
- Литералы.
- Уровни видимости переменных.
Занятие 3
Выражения и вычисления
- Понятие выражения.
- Унарные, бинарные и тернарный операторы.
- Префиксные и постфиксные операторы.
- Хранение вещественных и целочисленных типов данных.
- Приведение типов данных.
- Приоритеты операторов.
Занятие 4
Ветвления и цикл while
- Понятие ветвления.
- Синтаксис if.
- Вложенные ветвления.
- Логические операторы.
- Тернарный оператор.
- Синтаксис цикла while.
- Цикл do-while.
- Команды break и continue.
Занятие 5
Цикл for и команда switch
- Синтаксис цикла for.
- Вложенные циклы.
- Синтаксис команды switch.
- Fall-through.
Занятие 6
Массивы
- Понятие массива.
- Синтаксис объявления массива.
- Инициализация массива, список инициализации.
- Оператор sizeof.
Занятие 7
Указатели и C-style строки
- Понятие указателя.
- Специализированные операторы для работы с указателями.
- Типизация указателей.
- Арифметика указателей.
- Использование указателей для работы с массивами.
- C-style строки и их отличия от std::string.
- Нуль-терминатор.
- Строковые литералы.
- Работа с C-style строками как с массивами.
- Ввод и вывод C-style строк.
Занятие 8
Ссылки и библиотека <cstring>
- Понятие ссылки.
- Отличия ссылок от указателей.
- Специализированные функции для работы с C-style строками, их особенности, преимущества и недостатки.
- Поиск необходимой функции с помощью документации.
Занятие 9
Структуры и перечисления
- Синтаксис структур.
- Объявление переменных типа структура.
- Селекторы точка и стрелочка.
- Инициализация структуры.
- Значения по умолчанию.
- Функции и структуры.
- Понятие перечисления.
- Синтаксис перечислений.
- Ввод/вывод перечислений.
- Обработка перечислений с помощью конструкции switch.
- Перечисления с областью видимости.
Занятие 10
Функции
- Понятие функции.
- Синтаксис функций.
- Параметры и аргументы.
- Объявление, определение и вызов функций.
- Возвращаемое значение.
- Передача аргументов по адресу и по значению.
- Изменение аргументов внутри функции.
- Особенности массивов при передаче их в функцию.
- Параметры по умолчанию и перегрузка функций.
- Рекурсия.
Занятие 11
Базовая работа с файлами
- Запись в файл, использование библиотеки <iomanip>.
- Чтение из файла.
- Оператор извлечения, функция getline(), прочие способы чтения.
- Работа с несколькими файлами в параллель.
- Флаги открытия файлов.
Занятие 12
Продвинутая работа с файлами
- Произвольный доступ к файлу.
- Перемещение указателя.
- Побайтовое чтение и запись.
- Множество инструментов чтения, их преимущества, особенности и недостатки.
- Флаги текущего состояния потока.
- Удобные трюки для работы с файлами.
Занятие 13
Промежуточная аттестация
Занятие 14
Директивы препроцессора и форматированный ввод/вывод
- От исходного кода до исполняемого файла.
- Директива include.
- Директива define и множество подводных камней, связанных с ней.
- Директивы условной компиляции (if, elseif, else, endif).
- Гард (pragma once).
- Управление процессом компиляции.
- Перечисления.
- Форматированный ввод/вывод.
Занятие 15
Динамическая память
- Понятие динамической памяти.
- Специализированные операторы для работы с динамической памятью.
- Утечка памяти.
- Массивы и динамическая память.
- Массивы указателей — преимущества, особенности и недостатки.
- Изменение размера массива в ходе работы программы.
- Строковые литералы и функции.
Занятие 16
Динамические двумерные массивы
- Синтаксис динамических двумерных массивов.
- Разница между обычными двумерными массивами и динамическими — на уровне программиста и на уровне процессора.
- Массивы строк и массивы строковых литералов.
Занятие 17
Декомпозиция
- Понятие декомпозиции.
- Разбитие программы на модули.
- Синтаксис работы с модулями.
- Ключевые слова static и extern.
Занятие 18
Перегрузка функций и операторов.
- Понятие перегрузки функций.
- Синтаксис перегрузки функций.
- Понятие перегрузки операторов.
- Синтаксис перегрузки унарных и бинарных операторов.
- Синтаксис перегрузки префиксных и постфиксных операторов.
- Перегрузка операторов ввода и вывода.
Занятие 19
Шаблоны и пузырьковая сортировка
- Понятие шаблона (template).
- Синтаксис шаблона.
- Пузырьковая сортировка.
- Длинная арифметика.
Занятие 20
Объединения, побитовые операции, битовые поля, бинарный поиск
- Понятие объединения.
- Синтаксис объединения.
- Отличия объединений от структур.
- Понятие битовых полей.
- Синтаксис битовых полей.
- Побитовые операции, унарные и бинарные.
- Маски.
- Бинарный поиск.
Занятие 21
Знакомство с классами, get/set функции
- Парадигмы программирования, знакомство с парадигмой ООП.
- Понятия класса и объекта.
- Спецификаторы доступа, инкапсуляция.
- get/set функции.
- inline функции.
Занятие 22
Конструкторы, деструкторы, перегрузка операторов сравнения
- Понятие конструктора.
- Конструктор по умолчанию.
- Конструктор с параметрами.
- Перегрузка конструкторов.
- Понятие деструктора.
- Перегрузка операторов сравнения.
Занятие 23
Статические переменные и методы класса, конструктор копирования, перегрузка операторов присваивания
- Статические переменные и методы класса.
- Константные переменные и методы класса.
- Конструктор копирования.
- Указатель this.
- Перегрузка операторов присваивания.
Занятие 24
Наследование
- Понятие наследования.
- Типы наследования.
- Специфика вызова конструкторов при наследовании.
- Перегрузка функций при наследовании.
- Конструктор копирования, оператор присваивания и оператор сравнения при наследовании.
Занятие 25
Полиморфизм
- Понятие полиморфизма.
- Ключевое слово virtual.
- Виртуальный деструктор.
- Абстрактные классы.
Занятие 26
Экзамен