Учебное пособие.

Павловская Т. А., Щупак Ю. А. «C/C++. Структурное и объектно-ориентированное программирование» Питер, 2011 год, 352 стр. (2,62 мб. pdf)

Практикум C++ предназначен для самостоятельного изучения теории и практики программирования на языке C++. Цель издания научить читателя самостоятельной разработке грамотных и функциональных программ. Практикум рассчитан на последовательное освоение всех функциональных возможностей языка начиная с азов и заканчивая практическими работающими приложениями. Книга разделена на две части: 1. структурное программирование — процедурная парадигма (стандартные типы данных, массивы, указатели, строки, алгоритмы и методы написания программ и др.); 2. методика объектно ориентированного программирования (наследование, шаблоны классов, введение в UML, паттерны проектирования, стандартная библиотеки и пр.). Каждая тема дополняется практическими заданиями, основной акцент сделан на отладку и тестирование работы приложений. Практикум C++ ориентирован на студентов обучающихся по направлению «Информатика и вычислительная техника», а также на всех кто самостоятельно изучает программирование но C++. ISBN 978-5-459-00613-1
Оглавление.

Часть I. Структурное программирование 13

Семинар 1. Линейные программы 14
Задача 1.1. Расчет по формуле 14
Вывод кириллицы 18
Отладка программы 18
Описание переменных 21
Задача 1.2. Временной интервал 22
Итоги 23
Задания 24

Семинар 2. Ветвления и циклы 26
Разветвляющиеся программы 26
Задача 2.1. Вычисление значения функции, заданной графически 26
Задача 2.2. Выстрел по мишени 29
Задача 2.3. Клавиши курсора 31
Циклы 32
Задача 2.4. Таблица значений функции 33
Задача 2.5. Вычисление суммы ряда 35
Итоги 37
Задания 37

Семинар 3. Одномерные массивы и указатели 40
Задача 3.1. Количество элементов между минимумом и максимумом 42
Задача 3.2. Сумма элементов правее последнего отрицательного 45
Задача 3.3. Быстрая сортировка массива 47
Итоги 50
Задания 50

Семинар 4. Двумерные массивы 55
Задача 4.1. Среднее арифметическое и количество положительных элементов массива 58
Задача 4.2. Номер столбца из положительных элементов 60
Задача 4.3. Упорядочивание строк матрицы 61
Итоги 64
Задания 64

Семинар 5. Строки и файлы 68
Описание строк 68
Операции со строками 71
Работа с символами 72
Задача 5.1. Поиск подстроки 73
Задача 5.2. Подсчет количества вхождений слова в текст 75
Задача 5.3. Вывод вопросительных предложений 78
Итоги 81
Задания 81

Семинар 6. Структуры 83
Задача 6.1. Поиск в простой базе (массив структур) 84
Задача 6.2. Сортировка массива структур 89
Задача 6.3. Структуры и бинарные файлы 90
Задача 6.4. Структуры в динамической памяти 92
Итоги 93
Задания 94

Семинар 7. Функции 99
Задача 7.1. Передача в функцию параметров стандартных типов 101
Задача 7.1-а. Передача в функцию имени функции 105
Задача 7.2. Передача массивов в функцию 107
Задача 7.3. Передача строк в функцию 108
Задача 7.4. Передача структур в функцию 109
Задача 7.5. Рекурсивные функции 111
Многофайловые проекты 113
Что и как следует размещать в заголовочном файле 113
Задача 7.6. Многофайловый проект — форматирование текста 115
Итоги 119
Задания 120
Функции и массивы 120
Функции, строки и файлы 120
Функции, структуры и бинарные файлы 120

Семинар 8. Перегрузка и шаблоны функций 121
Перегрузка функций 121
Задача 8.1. Перегрузка функций 122
Шаблоны функций 124
Задача 8.2. Шаблоны функций 125
Итоги 126
Задания 127

Семинар 9. Динамические структуры данных 128
Задача 9.1. Стек 128
Задача 9.2. Линейный список 131
Задача 9.3. Бинарное дерево 138
Итоги 150
Задания 151

Часть II. Объектно-ориентированное программирование 159

Семинар 10. Классы 160
Появление объектно-ориентированного программирования 160
Критерии качества декомпозиции проекта 161
Что принесло с собой ООП 162
От структуры — к классу 163
Задача 10.1. Поиск в простой базе (массив объектов) 163
Конструктор по умолчанию 170
Инициализаторы конструктора 170
Конструктор копирования 171
Перегрузка операций 172
Перегрузка операций инкремента 173
Перегрузка операции присваивания 174
Статические элементы класса 175
Задача 10.2. Реализация класса треугольников 175
Этап 1 177
Этап 2 182
Этап 3 184
Этап 4 187
Итоги 189
Задания 189

Семинар 11. Наследование 194
Наследование классов 194
Замещение функций базового класса 195
Конструкторы и деструкторы в производном классе 196
Устранение неоднозначности при множественном наследовании 196
Доступ к объектам иерархии 197
Виртуальные методы 198
Абстрактные классы. Чисто виртуальные методы 199
Отношения между классами. Диаграммы классов на языке UML 199
Ассоциация 200
Наследование 201
Агрегация 201
Зависимость 202
Паттерны проектирования 202
Паттерн Стратегия (Strategy) 204
Проектирование программы с учетом будущих изменений 205
Задача 11.1. Функциональный калькулятор 207
Задача 11.2. Продвинутый функциональный калькулятор 215
Задача 11.3. Работа с объектами символьных и шестнадцатеричных строк 221
Итоги 231
Задания 232
Общая часть заданий для вариантов 1–20232
Варианты 1–10232
Варианты 11–20 234

Семинар 12. Шаблоны классов. Обработка исключительных ситуаций 235
Шаблоны классов 235
Определение шаблона класса 235
Использование шаблона класса 236
Организация исходного кода 237
Параметры шаблонов 238
Специализация 238
Использование функциональных объектов для настройки шаблонных классов 239
Разработка шаблонного класса для представления разреженных массивов 241
Задача 12.1. Шаблонный класс для разреженных массивов 241
Обработка исключительных ситуаций 246
Определение исключений 247
Перехват исключений 248
Неперехваченные исключения 249
Классы исключений. Иерархии исключений 250
Спецификации исключений 251
Исключения в конструкторах 252
Исключения в деструкторах 254
Задача 12.2. Шаблонный класс векторов 255
Итоги 263
Задания 264

Семинар 13. Стандартные потоки 266
Потоковые классы 266
Классы стандартных потоков 267
Заголовочные файлы библиотеки ввода-вывода C++ 267
Объекты и методы стандартных потоков ввода-вывода 267
Обработка ошибок потоков 269
Перегрузка операций извлечения и вставки для типов, определенных программистом 270
Задача 13.1. Первичный ввод и поиск информации в базе данных 271
Итоги 276
Задания 276

Семинар 14. Файловые и строковые потоки. Строки класса string 283
Файловые потоки 283
Строковые потоки 286
Строки класса string 287
Задача 14.1. Подсчет количества вхождений слова в текст 290
Задача 14.2. Вывод вопросительных предложений 291
Итоги 293
Задания 293

Семинар 15. Стандартная библиотека шаблонов 294
Основные концепции стандартной библиотеки 294
Контейнеры 294
Итераторы 295
Общие свойства контейнеров 297
Алгоритмы 298
Использование последовательных контейнеров 299
Задача 15.1. Сортировка вектора 301
Шаблонная функция print для вывода содержимого контейнера 302
Адаптеры контейнеров 303
Стек 303
Очередь 304
Очередь с приоритетами 304
Использование алгоритмов 305
Алгоритмы count и find305
Алгоритмы count_if и find_if306
Алгоритм for_each306
Алгоритм search306
Алгоритм sort 307
Функциональные объекты 308
Обратные итераторы 309
Итераторы вставки и алгоритм copy309
Алгоритм merge 310
Использование ассоциативных контейнеров 311
Множества 311
Словари 313
Задача 15.2. Формирование частотного словаря 313
Задача 15.3. Морской бой 315
Итоги 326
Задания 326

Приложение. Основные приемы работы в Microsoft Visual C++.NET 2005 332
Запуск интегрированной среды.Создание пустого проекта 332
Добавление файлов к проекту 333
Многофайловые проекты 334
Редактирование текста программы 334
Сохранение проекта и программы, завершение работы 335
Продолжение работы над проектом 335
Компиляция и компоновка программы 335
Выполнение и отладка программы 336
Работа со справочной системой 337
Техническая литература 339
Алфавитный указатель 341

Скачать книгу бесплатно2,62 мб. pdf

Похожая литература