Тематическое планирование

1. Повторение основных принципов структурного программирования. Структура программы в Си. Переменные и их типы. Организация потока управления (повторение). Проект «Арканоид» (постановка и разбор задачи). Каркасный код проекта. Простейшая реализация проекта.

2. Указатели на переменные. Указатели как параметры функции. Особенности и опасности работы с указателями. Макрос assert(). Макросы. Директивы условной компиляции.

3. Структуры и указатели на структуры. Доступ к полям структуры. Массивы структур.

4. Работа со свободной памятью (старый и новый способы). Массивы указателей на структуры. Аккуратность при работе со свободной памятью.

5. Работа с файлами. Файл как устройство последовательного доступа. Состояние файла. Сохранение и загрузка данных. Режимы работы с файлом.

6. Проект Arcanoid++. Постановка задачи. Классы. Определение класса. Данные и методы класса. Конструктор и деструктор. Защита данных. Ключевые моменты в проектировании класса.

7. Наследование. Приведение к базовому классу. Виртуальные функции. Виртуальный деструктор. Понятие полиморфизма.

8. Проект «Строковая библиотека». Указатели на массивы, указательная арифметика. Работа с таблицами.

9. Проект «Строковая библиотека на Си++». Шаблоны. Класс «Массив». Переопределение операторов в Си++. Ссылки и работа с ними. Понятие о Lvalue.

10. Особенности работы с ресурсами в Си++. Конструктор копирования и оператор присваивания.

11. Матричная библиотека на Си++. Реализация основных действий с матрицами (итоговый проект по первой части курса).

12. Проект «Многооконная библиотека». Понятие о событийной модели программирования. Постановка задачи.

13. Понятие о характеристиках и контексте окна. Отсечение графических примитивов. Реализация функций вывода в окно.

14. Реализация оконного менеджера. Проектирование иерархии классов оконной библиотеки.

15. Понятие о фокусе ввода. Ввод с клавиатуры. Реализация работы с клавиатурой. Ввод текстовой строки.

16. Проектирование элементов интерфейса. Окно приложения, окно сообщения, окно ввода, таблица, текстовый редактор.

17. Реакция системы на команды. Указатели на функции. Реализация командных кнопок. Указатели на членов класса. Статические методы класса.

18. Захват управления, модальные окна. Иерархия оконных менеджеров. Реализация диалогового окна.

19. Реализация меню. Одноуровневые меню. Реакция на «горячие клавиши». Представление об организации иерархических меню.

20. Понятие о многозадачности. Невытесняющая многозадачность. Библиотека задач. Множественное наследование. Виртуальные базовые классы. Динамическое приведение типов.

21. Обработка ошибок. Старые методы. Понятие об исключениях. Механизм обработки исключений в Си++.

22. Проблемы перерисовки и непрямоугольной области отсечения. Алгоритм отсечения по непрямоугольной области.

23. Алгоритмы обработки растровых изображений. Простейшие фильтры: негатив, размытие, контурная резкость, барельеф, контур, соляризация. Алгоритм эквализации яркостей.

24. Элементы машинной графики. Библиотека систем координат. Виды систем координат. Проекции. Порождение и визуализация геометрических объектов.