Программа курса
Разработка приложений на С++
Цели и задачи курса: Курс “ Разработка приложений на С++” предназначена для изучения языка программирования C++. В рамках курса студенты должны будут изучить основы языка C++, объектно-ориентированного программирования и библиотеки STL, научиться пользоваться средой разработки Microsoft Visual Studio (Microsoft Visual C++), включая её отладочные средства, выработать навыки решения широкого класса практических задач.
В данном курсе уделяется особое внимание не только теоретической подготовке студентов, но и практическому применению полученных знаний для решения задач максимально приближенных к реальным (с учётом уровня обучающихся).
В результате изучения дисциплины "Практический курс программирования на C++" слушатели должны уметь:
· применять полученные в рамках курса знания для решения практических задач.
· читать и модифицировать исходный код программ, написанный на языке программирования C++.
· пользоваться справочными материалами (книги, Интернет) для поиска информации, требуемой для решения поставленной задачи.
Краткое содержание курса
1. Основы C++
2. Классы в C++
3. Перегрузка
4. Наследование
5. Виртуальные функции
6. Пространства имен
7. Исключения
8. Приведения типов
9. Динамическая информация о типе
10. Шаблоны
11. STL
Содержание разделов курса
1. Основы C++
a. Фундаментальные типы данных
b. Основные конструкции
c. Одномерные массивы
d. Указатели
e. Ссылки
f. Многомерные массивы
g. Приведение типов в стиле C
2. Классы в С++
a. Введение в ООП
b. Объявление класса, модификаторы доступа public, private
c. Использование класса, указатель this
d. Конструкторы, деструкторы
e. Конкретные типы данных
f. Аргументы по умолчанию
g. Списки инициализации
h. Члены класса (ссылки и указатели)
i. Статические члены класса
j. Друзья
3. Перегрузка
a. Перегрузка функций
b. Перегрузка операторов
4. Наследование
a. Простое наследование
b. Конструкторы и деструкторы при наследовании
c. Множественное наследование
5. Виртуальные функции
a. Обоснование необходимости виртуальных функций
b. Виртуальные функции
c. Чисто-виртуальные функции и абстрактные базовые классы
6. Пространства имен
a. Обоснование
b. Определение пространства имен и использование, оператор разрешения области видимости
c. Вложенные пространства имен
d. Безымянные пространства имен
e. Псевдонимы пространств имен и директива using
7. Исключения
a. Старые способы обработки ошибок
b. Подход C++ к обработке ошибок
c. Операторы try, catch, throw, обработка всех исключений
d. Поиск обработчика
e. Необработанные исключения. Функции terminate, unexpected
f. Иерархия исключений
g. Идиома RAII
h. Исключения в конструкторах и деструкторах
i. Обработка нехватки памяти
j. Спецификация интерфейсов исключения
8. Приведения типов
a. Неявные преобразования типов
b. Явные преобразования. Операторы static_cast, const_cast, reinterpret_cast, dynamic_cast. Недостатки c-style cast.
c. Пользовательские операторы преобразования типов
9. Динамическая информация о типе
a. Введение
b. Оператор typeid
10. Шаблоны
a. Введение
b. Шаблоны функций
c. Инстанцирование шаблонов функций
d. Явное инстанцирование шаблонов
e. Шаблоны классов
f. Неполное инстанцирование
g. Полная специализация
h. Ключевое слово typename
i. Частичная специализация
j. Неполная специализация
k. Вложенные шаблоны
l. Функциональные объекты
m. Traits
11. STL
a. Обзор STL
b. Итераторы, категории итераторов
c. Функциональные типы, биндеры
d. Последовательные контейнеры
e. Ассоциативные контейнеры
f. Алгоритмы
Практические занятия и самостоятельные работы работы
Практические занятия
№ п/п | № раздела курса | Наименование |
1 | 2 | Группировка данных в структуры |
2 | 2 | Проектирование элементарных классов (контрольная работа) |
3 | 2 | Простые задачи для отработки навыков объектно-ориентированного программирования |
4 | 2 | Простые задачи для отработки навыков объектно-ориентированного программирования |
5 | 5 | Применение виртуальных функций в практических задачах |
6 | 7 | Применение исключений в практических задачах |
7 | 10 | Применение шаблонов функций в практических задачах |
8 | 10 | Применение шаблонов классов в практических задачах |
9 | 10 | Применение шаблонов классов для решения сложных практических задач |
10 | 11 | Применение последовательных контейнеров библиотеки STL в практических задачах |
11 | 11 | Применение ассоциативных контейнеров библиотеки STL в практических задачах |
12 | 11 | Применение ассоциативных контейнеров библиотеки STL в практических задачах |
13 | 11 | auto_ptr |
14 | 11 | Применение алгоритмов, реализованных в библиотеки STL, для решения практических задач |
15 | 11 | Применение алгоритмов, реализованных в библиотеки STL, для решения практических задач |
Самостоятельные работы
№ п/п | № раздела курса | Наименование |
1 | 1 | Задачи на закрепления материала (например, поиск корней квадратного уравнения) |
2 | 1 | Задачи на закрепления материала |
3 | 1 | Работа с одномерными массивами (в том числе сортировка) |
4 | 1 | Работа со строками в стиле C |
5 | 1 | Работа с многомерными массивами |
6 | 2 | Группировка данных в структуры |
7 | 2 | Проектирование элементарных классов |
Рекомендуемая литература
1. Язык программирования C++ (специальное издание). Невский Диалект, 2001 г.
2. Липпман программирования на С++. Вильямс, 2002 г.
3. Эффективное использование STL. Библиотека программиста. СПб, Питер, 2002 г.
4. С/С++. Программирование на языке высокого уровня. Учебник для ВУЗов. СПб, ПИТЕР, 2004 г.


