Предисловие 12
Глава 1. Введение в программирование 14
1.1. Программирование 14
Старт программы 14
1.1.1. Ввод, компиляция, запуск 16
1.1.2. Алгоритм 17
1.1.4. Язык С ++ 18
1.1.5. Контрольные вопросы 23
1.2. Основа программы 23
1.2.1. Комментарии 24
1.2.2. Команды 27
1.2.3. Блоки 27
1.3. Переменные 28
1.3.1. Объявление переменных 29
1.3.2. Область действия 30
1.3.3. Правила именования и синтаксис 32
1.3.4. Типы переменных 34
1.3.5. Синтаксис объявления переменных 46
1.3.6. Константы 47
1.4. Обработка 56
1.4.1. Присваивание 57
1.4.2. Мастер вычислений 58
1.4.3. Сокращения 59
1.4.4. Понятие <<функция>> на примере функции случайных чисел 62
1.4.5. Преобразовани е типа 64
1.5. Ввод и вывод 65
1.5.1. Потоковый вывод командой cout 66
1.5.2. Форматированный вывод 68
1.5.3. Потоковый ввод командой cin 68
1.6. Практические задания 69
Глава 2. Циклическое программное управление 70
2.1. Ветвление 71
2.1 1. По условию: if 71
2.1 2. Иначе: else 73
2.1.3. Вариант за вариантом:switch case 77
2.1 4. Короткая проверка с помощью символа вопросительного знака 82
2.2. Булевы выражения 83
2.2.1. Переменные и константы 84
2.2.2. Операторы 84
2.2.3. Объединение булевых выражений 87
2.3. Постоянные повторения: циклы 94
2.3.1. Цикл с предусловием: while 94
2.3.2. Цикл с постусловием: do-while 98
2.3.3. Шаг за шагом: for 99
2.3.4. Выходы из цикла: break и continue 102
2.3.5. Грубый скачок: goto 105
2.4. Примеры 106
2.4.1. Простые числа 106
2.4.2. Наибольший общий делитель 112
2.5. Упражнения 115
Глава 3. Типы данных и структур 116
3.1. Массив 116
3.1.1. Сортировка методом «пузырька» 121
3.1.2. Присваивание в массивах 125
3.1.3. Символьные последовательности языка С 127
3.1.4. Пример: определение числового значения введенного символа 128
3.1.5. Многомерный массив 131
3.1.6. Пример: игра «Бермуда» 132
3.2. Указатель и адрес 135
3.2.1. Косвенный доступ 139
3.2.2. Массивы и указатели 140
3.2.3. Арифметика для указателей 142
3.2.4. Константный указатель 144
3.2.5. Анонимный указатель 145
3.3. Объединение переменных: struct 146
3.3.1. Пример:игра «Бермуда» 150
3.4. Динамические структуры 152
3.4.1. Выделение и освобождение памяти 152
3.4.2. Создание массивов во время выполнения программы 154
3.4.3. Связанные списки 154
3.5. Объединение 157
3.6. Перечисляющий тип enum 158
3.7. Определение типов 160
Глава 4. Функции 161
4.1. Параметры 166
4.1.1. Прототипы 169
4.1 2. Указатель в качестве параметра 170
4.1.3. Массив в качестве параметра 172
4.1.4. Ссылочный параметр 174
4.1.5. Пример: стек 176
4.1.6. Предопределенные параметры 178
4.1.7. Параметры функции main 179
4.1.8. Переменное количество параметров 181
4.2. Перегрузка функций 183
4.3. Коротко и быстро: встроенные функции 183
4.4. Нисходящий метод 185
4.4.1. Пример: игра «Бермуда» 186
4.5. Область действия переменных 191
4.5.1. Глобальные переменные 191
4.5.2. Локальные переменные 192
4.5.3. Статические переменные 193
4.6. Рекурсивные функции 195
4.6.1. Область действия 197
4.6.2. Пример: бинарное дерево 198
4.6.3. Игра «Ханойская башня» 202
4.6.4. Пример: калькулятор 204
4.7. Указатель функции 211
Глава 5. Классы 213
5.1. Классы и структуры данных 214
5.1.1. Союз функции и структуры данных 215
5.1.2. Доступ к элементам класса 219
5.2. Создание и удаление объекта 220
5.2.1. Конструктор и деструктор 220
5.2 2. Конструктор и параметры 222
5.3. Доступная и скрытая области 225
5.3.1. private и public 225
5.3.2. Пример: стек 229
5.3.3. Друзья 232
5.4. Конструктор копирования 233
5.5. Перегрузка элементных функций 237
5.6. Выбор: перегрузка операторов 238
5.6.1. Сложение 240
5.6.2. Глобальные операторные функции 242
5.6.3. Инкремент и декремент 243
5.6.4. Оператор присваивания 245
5.6.5. Оператор сравнения 249
5.6.6. Оператор вывода 251
5.6.7 Оператор индекса 252
5.6.8. Оператор вызова () 254
5.6.9. Оператор конвертирования 255
5.7. Атрибуты 256
5.7.1. Статические переменные и функции в классах 256
5.7.2. Константы 258
5.8. Наследование 261
5.8.1. Доступ к предкам 265
5.8.2. Конструкторы и присваивание 269
5.8.3. Многократное наследование 271
5.8.4. Полиморфизм посредством виртуальных функций 272
5.9. Определение классов и синтаксический граф 283
Глава 6. Инструменты программирования 285
6.1. Компилятор С++ 285
6.1.1. Выз ов компилятора 285
6.1.2. Свойства компилятора 286
6.1 3. Сообщения об ошибках 287
6.2. Препроцессор 289
6.2.1. Связывание файлов: #include 290
6.2.2. Константы и макросы:#define 290
6.2.3. Опросы:#if 293
6.2.4. Предопределенные макросы 294
6.2.5. Другие препроцессорные команды 295
6.3. Разделение исходного кода 296
6.3.1. Пример:игра «Бермуда» 296
6.3.2. Распознавание файлов 299
6.3.3. Объявление и определение 300
6.3.4. Заголовочные файлы 301
6.3.5. Статические функции 303
6.3.6. Скрытая реализация 303
6.4. Компоновщик и библиотеки 305
6.4.1. Подключение статических библиотек 305
6.4.2. Динамические библиотеки 306
6.5. Программа make 309
6.5.1. Макросы в mаkе-файле 312
6.5.2. Несколько строк. 314
6.6. Отладка с помощью GNU Debugger 314
Глава 7. Другие элементы языка С ++ 317
7 1. Обобщенное программирование 317
7.1.1. Шаблонные фун кции 318
7.1.2. Шаблоны классов 321
7.1.3. Макропрограммирование с помощью команды #define 325
7.2. Пространство имен 327
7.2.1. Определение пространства имен 328
7.2.2. Доступ 329
7.2.3. Особые пространства имен 329
7.2.4. Анонимное пространство имен 330
7.2 5. Граф синтаксиса 331
7.3. Защита от сбоев при помощи ключевых слов try и саtch 332
7.3.1. Создание собственных исключительных ситуаций 333
7.3.2. Разработка классов ошибок 337
7.3.3. Исключения стандартных библиотек 341
7 4. Низкоуровневое программирование 347
7.4.1. Битов ые операторы 347
7.4.2. Операторы сдвига 350
7.4.3. Доступ по аппаратным адресам 351
7.4.4. Битовые структуры 352
Глава 8. Библиотеки 354
8.1. Символьные последовательности и строки 354
8.1.1. Стандартный класс string 355
8.1.2. Другие библиотеки строк 368
8.1.3. Классические функции языка С 369
8.2. Класс iostream для продвинутых 376
8.2.1. Ввод командой cin 376
8.2.2. Манипуляторы 378
8.3. Операции с файлами 381
8.3.1. Открытие и закрытие 382
8.3.2. Чтение и запись 384
8.3.3. Наблюдение состояния 390
8.3.4. Доступ к файлам в стандарте ANSI С 392
8.3.5. Команды файловой системы 395
8.3.6. Получение свойств файла 398
8.4. Математические функции 401
8.4.1. Стандартная математическая библиотека 401
8.4.2. Комплексные числа 404
8.5. Функции времени 405
8.5.1. Дата и время 405
8.5.2. Остановка времени 407
Глава 9. Стандартная библиотека шаблонов (STL) 410
9.1. Контейнер класса vector 410
9.1.1. Изменение размера 412
9.1.2. Итераторы 414
9.1.3. Другие функции 415
9.2. Контейнер класса deque 417
9.3. Контейнер класса list 420
9.3.1. Добавление и удаление элементов 421
9.3.2. Перемещение элементов:splice 423
9.3.3. Добавление отсортированного списка 424
9.3.4. Сортировка и последовательность 425
9.4. Контейнер классов set и multiset 427
9.4.1. Добавление и удаление 427
9.4.2. Поиск и сортировка 428
9.5. Контейнер классов map и multimap 430
9.6. Контейнер-адаптер 432
9.6.1. Контейнер-адаптер stack 433
9.6.2. Контейнер-адаптер queue 434
9.6.3. Контейнер-адаптер priority_ queue 435
9.7. Типы итераторов 436
9.8. Алгоритмы библиотеки STL 437
9.8.1. Поиск: find () 437
9.8.2. Сортировка 438
9.8.3. Двоичный поиск. 440
9.8.4. Копирование:сору () 440
9.8.5. Перестановка: reverse () 441
9.8.6. Заполнение: fill () 441
9.8.7. Функция equal () 442
9.8.8. Функция в качестве параметра: find if () 442
9.8.9. Функция for each 446
9.9. Класс шаблона bi tset 447
Приложение А. Язык С++ для тех, кто торопится 448
А.1 Программа 448
А.2. Условия и циклы 452
А.2.1. Условия и булевы выражения 453
А.2.2. Цикл while 455
А.2.3. Цикл for 456
А.3. Массивы 457
А.4. Функции 462
А.4 1 Разделение программ 462
А.4.2. Возвращаемое значение 465
А.4.3. Параметры 466
А.5. Классы 470
А.5.1 Конструктор 474
А.5.2. Наслед ование 479
А.5.3. Полиморфизм 481
А.6. Шаблоны 483
Приложение Б. Устройство компилятора 486
Б.1 KDevelop 486
Б 1 1 Новый проект 486
Б.1.2. Компиляция и старт 488
Б.2 Bloodshed Dev-C++ 489
Б 2 1 Установка 489
Б.2.2. Создание проекта 489
Б.2.3. Компиляция и старт 492
Б.З. Cygwin 493
Приложение В. Примеры решений задач 495
Контрольные вопросы 495
Функция ggt () 495
Программа НДС 496
Программа НДС с проверкой ввода 497
Сложный процент 498
Угадывание чисел 498
Отсортированные числа лото 499
Оптимизированная сортировка методом «пузырька» 501
Ввод дроби 502
Функция swap 503
Локальный стек. 504
Игра «Бермуда»: поиск кораблей 506
Поиск в бинарном дереве 507
Калькулятор для float 508
Вопрос к знаку минус 510
Буфер: FIF0 511
Пример стека в качестве списка 513
Функция atof () с десятичной запятой 515
Приложение Г. Глоссарий 517
Приложение Д. Литература 524
Предметный указатель 526