
Даны основы программирования на С++ по стандартам С++17 и С++20, базовые структуры данных и методы работы с ними. С позиций разработки ПО рассмотрено программирование функций: обычных и рекурсивных, constexpr-функций, лямбда-выраженй и лямбда-функций, перегрузка и шаблоны функций. Раскрыты более сложные вопросы С++: указатели и динамическая память, структуры и классы, конструкторы и деструкторы, методы и перегрузка операций, работа с текстовыми файлами, устройство чисел и битовые операции.
Рассмотрены важные для начинающих темы: интегрированная среда Code::Blocks, русификация ввода и вывода, ошибки при написании кода, неопределенное поведение, тестирование и написание тестового кода. В книге 150 примеров программ и более 90 заданий для самостоятельной работы. Материал проверен на практике при обучении студентов и школьников и подготовке их к экзаменам.
Электронное приложение-архив на сайте издательства содержит исходные коды всех примеров.
Для начинающих программистов

Лаптев Валерий Викторович, кандидат технических наук, профессиональный программист и преподаватель, работает с компьютерами с 1971 года, программирует на С++ с 1989 года, преподает в вузе с 1993 года. За это время разработал большое количество программ на многих языках программирования. В вузе читал разнообразные курсы по программированию на С++, алгоритмам и структурам данных, системному программированию и операционным системам. Обучил и воспитал сотни учеников. Написал ряд книг по С++ для студентов вузов и колледжей. Его статьи публиковались в журналах “Программист” и “RSDN Magazine”, на портале программистов rsdn.org.
Книгу “C++. 20 уроков для начинающих” можно купить в нашем интенет-магазине.
Предисловие. 11
Что вы найдете в книге. 12
Используемое ПО.. 13
Благодарности. 14
Как связаться с автором. 14
ЧАСТЬ I. Знакомство с C++. 15
Урок 1. Начало. 16
Процесс создания программы. 17
Программы-инструменты. 19
Редактор кода. 19
Компилятор и линкер. 19
Консоль или терминал. 20
Интегрированная среда. 22
Онлайн-компиляторы. 23
Задачи и упражнения. 24
Урок 2. Здравствуй, С++. 25
Первая программа. 25
Директива #include. 26
Using-директива. 26
Функция main. 27
Заголовок функции. 27
Тело функции. 28
Оператор вывода. 28
Оператор return. 29
Пишем комментарии. 29
Копнем глубже. 31
Формат кода. 31
Директивы. 32
Алфавит и зарезервированные слова. 32
Модифицируем первую программу. 33
Специальные символы. 34
Необрабатываемые строковые литералы. 35
Снова рефакторинг. 36
Русские буквы в консоли. 37
Вывод по-русски в системе Windows 38
Немного арифметики. 38
Задачи и упражнения. 40
Урок 3. Погружаемся в С++. 42
Ввод данных. 42
Работаем со строками. 45
Снова таблица умножения. 49
Вычисления. 50
Вещественные числа. 50
Как писать вещественные константы. 51
Тестируем программу. 52
Вывод данных. 55
Манипуляторы. 55
Снова вычисляем. 56
Задачи и упражнения. 58
Урок 4. Встроенные типы данных. 60
Арифметические типы данных. 60
Вещественные типы. 60
Целые типы. 63
Операции, выражения и присваивания. 65
Арифметические операции. 66
Присваивание. 67
Инкремент и декремент. 68
Преобразование типов. 69
Объявление переменных и констант. 71
Объявления auto. 73
Синонимы стандартных целых типов. 73
Объявление синонимов. 74
Порешаем задачи. 75
Задача 1. Математика должна быть экономной. 75
Задача 2. Стоимость учебников. 76
Задача 3. Число-палиндром. 77
Задачи и упражнения. 78
Урок 5. Выбор есть всегда. 80
Логический тип. 80
Логические операции и выражения. 81
Проверяем входные данные. 83
Условная операция. 83
Операция запятая. 84
Решаем задачу. 85
Условный оператор. 85
Решаем задачи. 88
Задача 1. Решить уравнение ax + b = 0. 88
Задача 2. Високосный год. 89
Булевские, целые и условия. 91
Ныряем глубже. 92
Задача 3. Кирпич и отверстие. 92
Никогда так не делайте. 93
Снова про ввод данных. 94
Задачи и упражнения. 96
Урок 6. Повторение — мать учения. 97
Повторяем работу. 97
Операторы цикла. 99
Оператор while. 99
Опять таблица умножения. 101
Оператор do while. 103
Оператор for со счетчиком. 104
Решаем задачи. 105
Полная таблица умножения. 105
Возведение в степень. 106
Вариации на тему циклов. 108
Операторная область видимости. 110
Операторы break и continue. 111
Задачи и упражнения. 112
Урок 7. Функции. 114
Объявление и вызов функции. 115
Как написать функцию.. 116
Определение функции. 118
Осваиваем функции. 119
Математические функции с числом p. 120
Функция-предикат. 123
Список параметров и вызов функции. 124
Передача параметров по значению.. 125
Передача параметров по ссылке. 126
Константные параметры функций. 127
Область видимости и время жизни. 128
Сокрытие имен. 129
Статические переменные. 131
Автоматизация тестирования функций. 133
Стандартные средства тестирования. 134
Задачи и упражнения. 135
Урок 8. С пользой для дела. 137
Тренажер по таблице умножения. 137
Случайные числа. 138
Инициализация датчика случайных чисел. 138
Получение случайных чисел. 142
Разработка программы. 143
Оператор-переключатель. 146
Система обучения арифметике. 148
Пишем калькулятор. 149
Пишем еще один тренажер. 150
Задачи и упражнения. 152
ЧАСТЬ II. Работа с данными в C++. 153
Урок 9. Массивы.. 154
Зачем нужны массивы. 154
Встроенные массивы. 156
Объявление массивов. 156
Синонимы типов для массивов. 158
Доступ к элементам. 158
Размер массива. 159
Операции с массивами. 159
Новые массивы. 161
Размер и тип массива. 161
Новый цикл for 162
Массив array. 163
Объявление и инициализация. 163
Операции с массивом array. 164
Объекты типа initalizer_list 165
Решаем задачи. 165
Поиск минимума. 166
Подсчет максимумов. 167
Поиск заданного числа. 168
Задачи и упражнения. 170
Урок 10. Создаем новые типы.. 171
Структуры (классы) 171
Зачем нужны структуры (классы) 171
Определение структуры (класса) 172
Объявление и инициализация объектов. 174
Операции с объектами структурного типа. 176
Размеры структур. 177
Структуры, массивы, объекты и функции. 178
Массивы и структуры. 179
Структуры, объекты и функции. 180
Классы и структуры. 182
Конструкторы. 184
Методы. 186
Задачи и упражнения. 187
Урок 11. Знакомство с указателями. 188
Что такое указатели. 188
Две самые важные операции. 190
Объявление указателей. 191
Типизированные указатели. 192
Бестиповые указатели и преобразование типов. 193
nullptr 194
Константность. 195
Размеры указателей. 195
Указатели и ссылки. 196
Встроенные массивы и указатели. 196
Операции с указателями. 197
Указатели, итераторы и контейнеры. 200
Функция distance. 203
Итераторы ввода/вывода. 204
Задачи и упражнения. 205
Урок 12. Массивы и функции. 206
Массивы и функции. 206
Передача массива по ссылке. 207
Перегрузка функций. 209
Про массив array. 211
Шаблоны функций. 213
Стандартные алгоритмы. 216
Заполнение массива. 216
Заполнение случайными числами. 218
Поиск, подсчет, замена. 219
Числовые алгоритмы. 220
Задачи и упражнения. 220
Урок 13. Строки, строки, строки. 222
Строки как массивы символов. 222
Итераторы для строки. 223
Стандартные средства. 224
Строка — массив переменного размера. 224
Встроенные символьные массивы. 225
Размер встроенного символьного массива. 226
Обработка символьных массивов. 227
Универсальный параметр string_view. 229
Размеры строк STL. 230
Числа — прописью.. 231
Тестирование программы. 234
Длинные-длинные числа. 235
Символы — это числа. 235
Функция сложения. 236
Задачи и упражнения. 237
Урок 14. Снова о функциях. 238
Рекурсивные функции. 238
Осваиваем рекурсию.. 241
Формы рекурсивных функций. 243
Выполнение рекурсивных функций. 244
Рекурсивные функции и массивы. 245
Функции времени компиляции. 250
Задачи и упражнения. 253
Урок 15. Печальная действительность. 254
Проблемы с целыми числами. 254
На ноль делить нельзя. 257
Вещественные числа тоже не подарок. 258
0.1 + 0.2 != 0.3. 259
«Страшный зверь» по имени UB. 261
Как не наступать на «грабли». 263
Исключения. 263
Генерация исключений. 263
Перехват и обработка исключений. 266
Стандартные исключения. 268
Обработка «плавающих граблей». 269
Функции isnan, isinf, isfinite. 270
Задачи и упражнения. 270
ЧАСТЬ III. Вглубь C++. 271
Урок 16. Как все устроено. 272
Числа, числа и числа. 272
Числа как многочлены. 274
Перевод из десятичной в другую систему. 275
Перевод в десятичную систему. 277
Стандартные средства. 278
Перевод дробных чисел. 279
Битовое устройство беззнаковых целых. 281
Битовые операции. 282
Как писать двоичные литералы. 283
Исключающее ИЛИ.. 284
Сдвиги. 285
Битовое устройство целых со знаком. 286
Сдвиг вправо знакового целого числа. 288
Дополнительный код. 288
Задачи и упражнения. 289
Урок 17. Опять функции. 290
Параметры по умолчанию.. 290
Функции как параметры. 291
Функциональные объекты. 293
Указатель на функцию.. 293
Лямбды. 294
Лямбда-функции. 296
Захват. 298
Перегрузка операций. 299
Задачи и упражнения. 300
Урок 18. Снова указатели. 301
Память и объекты. 301
Динамическая память для встроенных типов. 302
Динамическая память для реализованных типов. 303
Деструктор. 304
Динамические массивы. 305
Размеры массивов. 307
Стандартный динамический массив vector 309
Объявление и инициализация вектора. 309
Размеры векторов. 310
Операции с вектором. 311
Снова длинные числа. 312
Многомерные массивы. 313
Динамические многомерные массивы. 316
Задачи и упражнения. 317
Урок 19. Учимся писать и читать. 318
Потоки. 318
Стандартные потоки. 319
Ввод встроенных типов. 319
Ввод строк с пробелами. 321
Пишем новый калькулятор. 322
Строковые потоки. 323
Файлы. 325
Файлы и потоки. 326
Читаем и пишем. 326
ЕГЭ и файлы. 329
Задачи и упражнения. 331
Урок 20. Большие программы.. 332
Проект «Арифметика». 333
Разделение на модули. 333
Вывод инструкции. 335
Первая сборка. 336
Межмодульное взаимодействие. 336
Связывание. 337
Пространства имен. 339
Добавим тренажеры. 339
Препроцессор и модули. 344
Задачи и упражнения. 345
Подведение итогов. 346
Приложения. 347
Приложение 1. Список литературы.. 348
Приложение 2. Перечень ресурсов Интернета. 349
Приложение 3. Установка Code::Blocks 350
Загрузка установщика в Windows 350
Установка Code::Blocks в Windows 352
Установка Code::Blocks в «Альт Образование». 355
Установка Code::Blocks в МОС. 355
Приложение 4. Интегрированная среда Code::Blocks 356
Запуск IDE и выход. 356
Выключение ненужных панелей инструментов. 357
Создание и сохранение исходного кода. 358
Создание файла. 358
Создание проекта. 360
Установка режимов компиляции. 362
Компиляция и сборка. 363
Сообщения об ошибках. 363
Выполнение программы. 364
Предметный указатель. 365
