Программирование на С++
Теоретические сведения
- Начинаем: Решение задачи.
Программа на языке C++. Директивы препроцессора. Немного о комментариях.
Первый взгляд на ввод/вывод.
- Краткий обзор С++: Встроенный тип
данных "массив". Динамическое выделение памяти и указатели. Объектный подход.
Объектно-ориентированный подход.
- Типы данных С++: Литералы. Переменные.
Указатели. Строковые типы. Спецификатор const. Ссылочный тип. Тип bool.
Перечисления. Тип "массив". Класс vector. Класс complex.
- Выражения: Что такое выражение?
Арифметические операции. Операции сравнения и логические операции. Операции
присваивания. Операции инкремента и декремента.
- Инструкции: Простые и составные
инструкции. Инструкции объявления. Инструкция if. Инструкция switch. Инструкция
цикла for. Инструкция while.
- Абстрактные контейнерные типы:
Система текстового поиска. Вектор или список? Как растет вектор? Как определить
последовательный контейнер? Итераторы.
- Функции: Введение. Прототип функции.
Передача аргументов. Возврат значения. Рекурсия. Встроенные функции. Директива
связывания extern "C". Функция main():
- Область видимости и время жизни:
Область видимости. Глобальные объекты и функции. Локальные объекты. Динамически
размещаемые объекты.
- Пространства имен
- Перегруженные функции: Объявления
перегруженных функций. Три шага разрешения перегрузки. Преобразования типов
аргументов.
- Шаблоны функций: Определение шаблона
функции. Конкретизация шаблона функции. Вывод аргументов шаблона. Явное
задание аргументов шаблона.
- Обработка исключений:
Возбуждение исключений. Try-блок. Перехват исключений. Спецификации исключений.
Исключения и вопросы проектирования.
- Обобщенные алгоритмы:
Краткий обзор. Использование обобщенных алгоритмов. Объекты-функции. Еще раз об итераторах. Обобщенные алгоритмы.
- Классы:
Определение класса. Объекты классов. Функции-члены класса. Неявный
указатель this. Статические члены класса. Указатель на член класса.
- Инициализация, присваивание и уничтожение класса:
Инициализация класса. Конструктор класса. Деструктор класса. Массивы и векторы объектов.
- Перегруженные операторы:
Перегрузка операторов. Друзья. Оператор =.Оператор взятия индекса.
- Определенные пользователем преобразования.
- Шаблоны классов: Определение шаблона класса. Конкретизация шаблона класса. Функции-члены шаблонов классов. Объявления друзей в шаблонах классов.
- Наследование и подтипизация классов:
Определение иерархии классов. Идентификация членов иерархии. Доступ к членам базового класса. Виртуальные функции.
- Множественное и виртуальное наследование: Готовим сцену
Множественное наследование.
Открытое, закрытое и защищенное наследование.
- Применение наследования в C++:
Идентификация типов во время выполнения.
Исключения и наследование.
Разрешение перегрузки и наследование A.
- Библиотека iostream: Оператор вывода <<.
Ввод. Дополнительные операторы ввода/вывода. Перегрузка оператора вывода. Перегрузка оператора ввода.
- Обобщенные алгоритмы в алфавитном порядке:
Алгоритм adjacent_difference() Алгоритм adjacent_find() Алгоритм binary_search()
Лабораторные работы
- Классы
- Наследование и виртуальные функции
- Перегрузка функций и операторов
- Динамическое выделение памяти, исключения
- Работа с файловыми потоками в С++. Текстовые файлы.
- Работа с файловыми потоками в С++. Двоичные файлы.
- Шаблоны
- Стандартная библиотека шаблонов STL
Порядок выполнения лабораторных работ
- На лабораторной работе набрать текст программы и отладить ее.
- Показать результат работы программы преподавателю на компьютере.
- Защитить лабораторную работу, ответив на вопросы преподавателя.
Отчет о выполнении лабораторной работы
- самый краткий конспект теоретической части;
- задание лабораторной работы;
- исходный код всех файлов вашего проекта;
- результаты выполнения программ.
Индивидуальные задания
Контроль
Дополнительное чтение