С++ как второй язык в обучении приемам и технологиям программирования: учебное пособие: 2-е изд.

Год издания: 2025
Автор: Демяненко Я.М., Чердынцева М.И.
Язык: Русский
Формат: PDF
Издательский макет
Количество страниц: 423
Описание:
В учебном пособии внимание уделяется языку С++ и использованию объектно-ориентированного подхода. Пособие состоит из десяти глав. Излагаемый материал рассматривается на большом количестве подробно разобранных примеров. Пособие адресовано студентам первого и второго курсов, обучающимися по бакалаврским программам по направлениям «Прикладная математика и информатика» и «Фундаментальная информатика и информационные технологии».
dumpz.ws

Год издания: 2025
Автор: Демяненко Я.М., Чердынцева М.И.
Язык: Русский
Формат: PDF
Издательский макет
Количество страниц: 423
СОДЕРЖАНИЕ .....................................................................................................................3
ПРЕДИСЛОВИЕ ....................................................................................................................6
ВВЕДЕНИЕ ..........................................................................................................................7
ИСПОЛЬЗУЕМАЯ ТЕРМИНОЛОГИЯ .........................................................................................10
ГЛАВА 1. БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА С++...........................................................................12
1.1.Немного об истории языка C++ ......................................................................................12
1.2.Особенности языка С++ и его синтаксиса .......................................................................13
1.3.Первые шаги .................................................................................................................15
1.4.Функции как блоки программы .......................................................................................20
1.5.Параметры (аргументы) функции по умолчанию ..............................................................28
1.6.Выражения и операции ..................................................................................................31
1.7.Управляющие конструкции (операторы) ..........................................................................36
1.8.Многофайловые проекты ................................................................................................39
1.9.Заголовочные файлы и библиотеки в С++ .......................................................................46
1.10.Способы обработки ошибок............................................................................................52
1.11.Рекурсивные функции ..................................................................................................60
ГЛАВА 2. ВСТРОЕННЫЕ ТИПЫ ДАННЫХ ..................................................................................65
2.1.Целочисленные типы данных ..........................................................................................66
2.2.Поразрядные операции над целочисленными типами ........................................................68
2.3.Вещественные типы данных ............................................................................................73
2.4.Указатели .......................................................................................................................78
2.5.Указатели на функции ......................................................................................................83
ГЛАВА 3. МАССИВЫ И СТРОКИ ................................................................................................88
3.1.Одномерные массивы .......................................................................................................88
3.2.Массивы в динамической памяти ....................................................................................91
3.3.Связь массивов и указателей ...........................................................................................93
3.4.Массивы и рекурсия..........................................................................................................96
3.5.Статическое определение двумерных массивов ............................................................99
3.6.Двумерные массивы в динамической памяти ..............................................................102
3.7.Алгоритмы сортировок для массивов ...........................................................................108
3.8.Сложные объявления ......................................................................................................117
3.9.Описание и инициализация строк .................................................................................118
3.10.Обработка строк в стиле языка C ................................................................................125
3.11.Обработка строк в стиле языка C++ ........................................................................... 134
ГЛАВА 4. ПАРАМЕТРЫ И ТИПЫ ........................................................................................... 140
4.1.Параметры функционального типа ............................................................................... 140
4.2.Массивы указателей на функции .................................................................................. 144
4.3.Шаблоны функций ......................................................................................................... 145
4.4.Приведение типов данных ............................................................................................. 151
4.5.Структуры ....................................................................................................................... 153
ГЛАВА 5. ФАЙЛЫ И СПИСКИ ................................................................................................. 159
5.1.Ввод/вывод и работа с файлами .................................................................................... 159
5.2.Работа с текстовыми файлами в стиле С++ ................................................................. 160
5.3.Работа с бинарными файлами в стиле С++ .................................................................. 172
5.4.Работа с текстовыми файлами в стиле языка С ........................................................... 179
5.5.Работа с бинарными файлами в стиле языка С ........................................................... 185
5.6.Динамические структуры данных. Односвязные списки ........................................... 188
5.7.Двусвязные списки ......................................................................................................... 195
5.8.Бинарные деревья ........................................................................................................... 199
ГЛАВА 6. КЛАССЫ И ОБЪЕКТЫ ............................................................................................ 212
6.1.Основы создания классов .............................................................................................. 212
6.2.Конструкторы и деструкторы ....................................................................................... 217
6.3.Дружественные функции ............................................................................................... 222
6.4.Перегрузка операций ...................................................................................................... 232
6.5.Перегрузка операции присваивания ............................................................................. 234
6.6.Перегрузка операции индексирования. ........................................................................ 238
6.7.Перегрузка операций ввода/вывода .............................................................................. 240
6.8.Перегрузка операций инкремента и декремента ......................................................... 241
6.9.Реализация преобразования типов ................................................................................ 246
6.10.Обработка исключений ................................................................................................ 254
6.11.Статические члены класса ........................................................................................... 260
6.12.Автоматически создаваемые члены класса ............................................................... 262
6.13.Семантика перемещения .............................................................................................. 265
ГЛАВА 7. ОТНОШЕНИЯ МЕЖДУ КЛАССАМИ ............................................................................. 271
7.1.Наследование классов .................................................................................................... 271
7.2.Открытое наследование ................................................................................................. 272
7.3.Отношение включения ................................................................................................... 286
7.4.Позднее связывание и виртуальные функции ..............................................................290
7.5.Абстрактные классы .......................................................................................................297
7.6.Цена виртуальности и система RTTI ............................................................................302
7.7.Отношение подобия ........................................................................................................304
7.8.Коллекции и итераторы ..................................................................................................309
7.9.Реализация итератора для двусвязного списка ............................................................320
7.10.Классы для рекурсивных типов данных .....................................................................328
ГЛАВА 8. ОБОБЩЁННЫЙ ПОДХОД ......................................................................................334
8.1.Шаблоны классов ............................................................................................................334
8.2.Шаблоны коллекций .......................................................................................................342
ГЛАВА 9. СТАНДАРТНАЯ БИБЛИОТЕКА ШАБЛОНОВ ...............................................................354
9.1.Общая характеристика библиотеки ...............................................................................354
9.2.Контейнеры ......................................................................................................................356
9.3.Последовательные контейнеры .....................................................................................360
9.4.Ассоциативные контейнеры ..........................................................................................368
9.5.Итераторы ........................................................................................................................376
9.6.Адаптеры итераторов ......................................................................................................384
9.7.Категории алгоритмов ....................................................................................................389
9.8.Алгоритмы с функциональными параметрами ...................................................................391
9.9.Лямбда-выражения .........................................................................................................397
9.10.Обобщённые численные алгоритмы ...........................................................................401
ГЛАВА 10. УМНЫЕ УКАЗАТЕЛИ ............................................................................................407
10.1.Семантика умных указателей ......................................................................................407
10.2.Стратегия одного владельца ........................................................................................408
10.3.Стратегия совместного доступа к ресурсу .................................................................411
10.4.Указатель, не владеющий объектом ............................................................................414
ЛИТЕРАТУРА .......................................................................................................................419
ПРЕДИСЛОВИЕ ....................................................................................................................6
ВВЕДЕНИЕ ..........................................................................................................................7
ИСПОЛЬЗУЕМАЯ ТЕРМИНОЛОГИЯ .........................................................................................10
ГЛАВА 1. БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА С++...........................................................................12
1.1.Немного об истории языка C++ ......................................................................................12
1.2.Особенности языка С++ и его синтаксиса .......................................................................13
1.3.Первые шаги .................................................................................................................15
1.4.Функции как блоки программы .......................................................................................20
1.5.Параметры (аргументы) функции по умолчанию ..............................................................28
1.6.Выражения и операции ..................................................................................................31
1.7.Управляющие конструкции (операторы) ..........................................................................36
1.8.Многофайловые проекты ................................................................................................39
1.9.Заголовочные файлы и библиотеки в С++ .......................................................................46
1.10.Способы обработки ошибок............................................................................................52
1.11.Рекурсивные функции ..................................................................................................60
ГЛАВА 2. ВСТРОЕННЫЕ ТИПЫ ДАННЫХ ..................................................................................65
2.1.Целочисленные типы данных ..........................................................................................66
2.2.Поразрядные операции над целочисленными типами ........................................................68
2.3.Вещественные типы данных ............................................................................................73
2.4.Указатели .......................................................................................................................78
2.5.Указатели на функции ......................................................................................................83
ГЛАВА 3. МАССИВЫ И СТРОКИ ................................................................................................88
3.1.Одномерные массивы .......................................................................................................88
3.2.Массивы в динамической памяти ....................................................................................91
3.3.Связь массивов и указателей ...........................................................................................93
3.4.Массивы и рекурсия..........................................................................................................96
3.5.Статическое определение двумерных массивов ............................................................99
3.6.Двумерные массивы в динамической памяти ..............................................................102
3.7.Алгоритмы сортировок для массивов ...........................................................................108
3.8.Сложные объявления ......................................................................................................117
3.9.Описание и инициализация строк .................................................................................118
3.10.Обработка строк в стиле языка C ................................................................................125
3.11.Обработка строк в стиле языка C++ ........................................................................... 134
ГЛАВА 4. ПАРАМЕТРЫ И ТИПЫ ........................................................................................... 140
4.1.Параметры функционального типа ............................................................................... 140
4.2.Массивы указателей на функции .................................................................................. 144
4.3.Шаблоны функций ......................................................................................................... 145
4.4.Приведение типов данных ............................................................................................. 151
4.5.Структуры ....................................................................................................................... 153
ГЛАВА 5. ФАЙЛЫ И СПИСКИ ................................................................................................. 159
5.1.Ввод/вывод и работа с файлами .................................................................................... 159
5.2.Работа с текстовыми файлами в стиле С++ ................................................................. 160
5.3.Работа с бинарными файлами в стиле С++ .................................................................. 172
5.4.Работа с текстовыми файлами в стиле языка С ........................................................... 179
5.5.Работа с бинарными файлами в стиле языка С ........................................................... 185
5.6.Динамические структуры данных. Односвязные списки ........................................... 188
5.7.Двусвязные списки ......................................................................................................... 195
5.8.Бинарные деревья ........................................................................................................... 199
ГЛАВА 6. КЛАССЫ И ОБЪЕКТЫ ............................................................................................ 212
6.1.Основы создания классов .............................................................................................. 212
6.2.Конструкторы и деструкторы ....................................................................................... 217
6.3.Дружественные функции ............................................................................................... 222
6.4.Перегрузка операций ...................................................................................................... 232
6.5.Перегрузка операции присваивания ............................................................................. 234
6.6.Перегрузка операции индексирования. ........................................................................ 238
6.7.Перегрузка операций ввода/вывода .............................................................................. 240
6.8.Перегрузка операций инкремента и декремента ......................................................... 241
6.9.Реализация преобразования типов ................................................................................ 246
6.10.Обработка исключений ................................................................................................ 254
6.11.Статические члены класса ........................................................................................... 260
6.12.Автоматически создаваемые члены класса ............................................................... 262
6.13.Семантика перемещения .............................................................................................. 265
ГЛАВА 7. ОТНОШЕНИЯ МЕЖДУ КЛАССАМИ ............................................................................. 271
7.1.Наследование классов .................................................................................................... 271
7.2.Открытое наследование ................................................................................................. 272
7.3.Отношение включения ................................................................................................... 286
7.4.Позднее связывание и виртуальные функции ..............................................................290
7.5.Абстрактные классы .......................................................................................................297
7.6.Цена виртуальности и система RTTI ............................................................................302
7.7.Отношение подобия ........................................................................................................304
7.8.Коллекции и итераторы ..................................................................................................309
7.9.Реализация итератора для двусвязного списка ............................................................320
7.10.Классы для рекурсивных типов данных .....................................................................328
ГЛАВА 8. ОБОБЩЁННЫЙ ПОДХОД ......................................................................................334
8.1.Шаблоны классов ............................................................................................................334
8.2.Шаблоны коллекций .......................................................................................................342
ГЛАВА 9. СТАНДАРТНАЯ БИБЛИОТЕКА ШАБЛОНОВ ...............................................................354
9.1.Общая характеристика библиотеки ...............................................................................354
9.2.Контейнеры ......................................................................................................................356
9.3.Последовательные контейнеры .....................................................................................360
9.4.Ассоциативные контейнеры ..........................................................................................368
9.5.Итераторы ........................................................................................................................376
9.6.Адаптеры итераторов ......................................................................................................384
9.7.Категории алгоритмов ....................................................................................................389
9.8.Алгоритмы с функциональными параметрами ...................................................................391
9.9.Лямбда-выражения .........................................................................................................397
9.10.Обобщённые численные алгоритмы ...........................................................................401
ГЛАВА 10. УМНЫЕ УКАЗАТЕЛИ ............................................................................................407
10.1.Семантика умных указателей ......................................................................................407
10.2.Стратегия одного владельца ........................................................................................408
10.3.Стратегия совместного доступа к ресурсу .................................................................411
10.4.Указатель, не владеющий объектом ............................................................................414
ЛИТЕРАТУРА .......................................................................................................................419
В учебном пособии внимание уделяется языку С++ и использованию объектно-ориентированного подхода. Пособие состоит из десяти глав. Излагаемый материал рассматривается на большом количестве подробно разобранных примеров. Пособие адресовано студентам первого и второго курсов, обучающимися по бакалаврским программам по направлениям «Прикладная математика и информатика» и «Фундаментальная информатика и информационные технологии».
Скрытое содержимое могут видеть только пользователи групп(ы): Premium, Местный, Свои