C++: структуры данных и процессов
Специальный курс
ВВЕДЕНИЕ
Простая С++программа. Подготовка программы к исполнению компьютером. Технологическая среда исполнения программы. Библиотеки. Понятия модуля и функции. Стэковый фрейм функции. Структура С++программы. Области действия объектов программы. Организация памяти, двоичные коды и понятие типа. Авторские типы. Алфавит С++.ОБЗОР С++.
Процедурное программирование. Переменная. Арифметика. Оценка состояний: если, то, иначе; до тех пор, пока не; все время пока. Циклические вычисления. Указатели и ссылки. Массивы. Модульное программирование. Раздельная компиляция. Обработка исключений. Абстракция данных. Модули определения типов. Конкретные и абстрактные типы. Виртуальные функции. Объектно-ориентированное программирование. Иерархия классов.ОБЗОР СТАНДАРТНОЙ БИБЛИОТЕКИ.
Пространство имен. Строки. Ввод. Контейнеры. Алгоритмы. Применение итераторов. Типы итераторов. Итераторы и ввод-вывод. Проход с выполнением и предикаты. Алгоритмы стандартной библиотеки. Математические вычисления. Комплексные числа. Векторная арифметика. Средства стандартной библиотеки.ГРАММАТИЧЕСКИЕ КОНСТРУКЦИИ.
Типы и объявления: фундаментальные, символьные, целые. Типы с плавающей точкой. Декларации и дефиниции. Имена, область видимости, инициализация. Объекты r-value и l-value. Указатели и ссылки, массивы и структуры. Эквивалентность типов. Выражения и инструкции. Калькуляция. Обзор операторов, приоритеты. Инкремент, декремент. Свободная память. Явное преобразование типов. Функции. Декларация и дефиниция. Передача аргументов. Возвращение. Перегруженные имена функции. Аргументы по умолчанию. Пространства имен и исключения. Разбиение на модули и интерфейсы. Исходные файлы и программы.КЛАССЫ.
Классы. Типы, определяемые пользователем. Объекты. Конструирование и уничтожение. Локальные переменные. Свободная память. Объекты в качестве членов. Массивы. Локальная статическая память. Временные объекты. Перегрузка операторов. Производные классы. Абстрактные классы. Проектирование иерархий классов. Шаблоны. Простой шаблон строк. Шаблоны функций. Специализация. Члены-шаблоны. Организация исходного кода. Обработка исключений. Иерархии классов Стандартные библиотеки контейнеры. Строки.ПОТОКИ.
Вывод встроенных и авторских типов. Ввод. Связывание потоков. Форматирование. Файловые и строковые потоки. Буферизация.РАЗРАБОТКА И ПРОЕКТИРОВАНИЕ ПРОГРАММНЫХ ИЗДЕЛИЙ.
Цикл разработки. Этапы проектирования: выявление классов, определение операций, определение взаимозависимостей, определение интерфейсов, реорганизация иерархии классов. Тестирование. Классы. Иерархии классов и внутрииерархические зависимости. Отношения включения. Включение и наследование. Отношение использования. Программируемые отношения. Отношения внутри класса. Инварианты, предусловия и постусловия, Инкапсуляция. Компоненты. Роли классов.СТРУКТУРЫ ДАННЫХ.
Векторы, матрицы. Стеки, возвратность. Очереди, списки. Деревья. Сортировка, поиск.ГРАФЫ И ИХ ПРИЛОЖЕНИЯ.
Представление графов в памяти С++машины. Транзитивное замыкание. Алгоритм Уоршала. Алгоритмы синтеза кратчайшего пути. Деревья. Обходы бинарных деревьев. Задачи принятия решений. Базы данных. Деревья сортировки. Кратчайший остов. Алгоритм Краскала. Циклы. Независимость и покрытия. Раскраски. Потоковые алгоритмы.ПОЛЕЗНЫЕ ДОПОЛНЕНИЯ.
Синтаксис языка С++. Совместимость С/С++. Аспекты реализации. Технические подробности.Литература
- Телло Э. Объектно-ориентированное программирование в среде WINDOWS. 1993.
- Марченко А. Л. С++. Бархатный путь. 2000.
- Страуструп Б. Язык программирования С++. 1999.
- Бен-Ари М. Языки программирования. Практический сравнительный анализ. 2000.
- Daconta M. C++ pointers and dynamic memory management. 1995.
- Rudd A. C++ complete. 1994.
- Мейерс С. Эффективное использование С++. 2000.
- Элджер Д. С++. 2000.
- Ammeraal I. C++ for programmers. 1995.
- Tenenbaum A. Data structures using C. 1994.