Оглавление Предисловие 1 
 Введение 3 
 Составные части компьютера 4 
 Логическое строение памяти компьютера 5 
 Машинные команды 6 
 Поколения языков программирования 7 
 Алгоритмические языки 9 
 Функциональные языки 10 
 Логические языки 10 
 Языки низкого и высокого уровня 11 
 Компилируемые и интерпретируемые языки 11 
 Глава 1. Алгоритмы и их запись 15 
 Понятие алгоритма 16 
 Массовость 17 
 Конечность 18 
 Однозначность 18 
 Исполнитель алгоритма 18 
 Алгоритм Евклида 19 
 Определение алгоритма 20 
 Способы записи алгоритма 20 
 Псевдокод 22 
 Блок-схема 24 
 Контрольный вопрос 25 
 Применение блок-схем 25 
 Алгоритмические языки 26 
 Структурные части алгоритма 27 
 Линейный алгоритм 27 
 Разветвление 29 
 Циклы 30 
 Упражнения 32 
 Стандартные алгоритмы 32 
 Действия с целыми числами 33 
 Упражнения 35 
 Суммирование и умножение 35 
 Упражнения 38 
 Вычисление многочлена по схеме Горнера 38 
 Работа с текстом 39 
 Упражнения 42 
 Перевод десятичного числа в двоичную форму 42 
 Упражнение 43 
 Упражнение 44 
 Контрольные вопросы 44 
 Глава 2. Простые типы данных 47 
 Числовые типы данных 48 
 Целые типы 48 
 Вещественные типы 50 
 Символьный тип 51 
 Шестнадцатеричная система счисления 52 
 Упражнения 53 
 Стандартные кодировки символов 53 
 Упражнения 60 
 Unicode 60 
 Упражнение 60 
 Символьный тип в языке С 60 
 Константы 61 
 Целые константы 61 
 Упражнение 61 
 Вещественные константы 62 
 Символы 62 
 Упражнения 63 
 Строковые константы 63 
 Имена объектов 64 
 Определение переменных 64 
 Операции 66 
 Арифметические операции 66 
 Приведение типов 67 
 Сравнения 69 
 Логические операции 69 
 Побитовые операции 70 
 Сдвиги 71 
 Операции присваивания 72 
 Условная операция 73 
 Операция "запятая" 73 
 Выражения 73 
 Приоритет операций 74 
 Упражнения 75 
 Контрольные вопросы 75 
 Глава 3. Основные структуры управления 77 
 Операторы 77 
 Блок 78 
 Операторы присваивания 79 
 Условный оператор 79 
 Упражнения 84 
 Первая программа на языке С 85 
 Функция вывода printf() 87 
 Упражнения 90 
 Функция ввода scanf() 90 
 Упражнение 91 
 Нахождение корней квадратного уравнения 91 
 Операторы цикла 93 
 Упражнения 96 
 Упражнения 99 
 Оператор continue 99 
 Оператор break 100 
 Оператор варианта switch 100 
 Оператор перехода goto 102 
 Упражнения 103 
 Контрольные вопросы 103 
 Глава 4. Массивы и указатели 105 
 Массивы 106 
 Упражнения 108 
 Многомерные массивы 108 
 Упражнения 110 
 Указатели 111 
 Адресная арифметика 113 
 Связь массивов и указателей 115 
 Работа со строками 118 
 Упражнения 120 
 Функции обработки строк 121 
 Работа с отдельными символами 123 
 Динамическое выделение памяти 124 
 Бинарный поиск в массиве 125 
 Упражнения 127 
 Методы сортировки массива 127 
 Сортировка вставкой 128 
 Сортировка выбором 130 
 Сортировка методом "пузырька" 130 
 Метод просеивания 133 
 Метод Шелла 134 
 Обзор методов сортировки 135 
 Контрольные вопросы 136 
 Глава 5. Процедурное программирование 137 
 Парадигмы программирования 137 
 Функции языка С 140 
 Оператор return 141 
 Передача аргументов функции 143 
 Упражнения 145 
 Передача массивов в функцию 145 
 Упражнения 146 
 Аргументы функции main() 147 
 Функции преобразования строк в числа 148 
 Процедуры 149 
 Указатели на функцию 150 
 Упражнения 152 
 Локальные и внешние переменные 152 
 Прототипы функций 156 
 Рекурсия 157 
 Быстрая сортировка 158 
 Контрольные вопросы 160 
 Глава 6. Работа с файлами 161 
 Функции буферизованного ввода-вывода 162 
 Упражнения 166 
 Потоки ввода-вывода 167 
 Форматированный ввод-вывод 168 
 Прочие функции ввода-вывода 169 
 Упражнения 174 
 Интерактивный ввод-вывод 174 
 Работа с каталогом 175 
 Контрольные вопросы 176 
 Глава 7. Типы данных, определяемые пользователем 177 
 Перечислимые типы 177 
 Упражнения 180 
 Структуры 180 
 Структуры как аргументы и возвращаемые значения функций 185 
 Упражнения 188 
 Объединения 189 
 Упражнения 191 
 Битовые поля 191 
 Упражнения 193 
 Контрольные вопросы 193 
 Глава 8. Препроцессор 195 
 Включение файла директивой #include 196 
 Подстановка #define и #undef 196 
 Макросы 197 
 Переменные препроцессора 198 
 Условная компиляция #ifdef 199 
 Нумерация строк #line 201 
 Сообщение #error 201 
 Прагма #pragma 201 
 Упражнения 202 
 Контрольные вопросы 202 
 Глава 9. Расширения языка С в языке С++ 203 
 Комментарии 203 
 Строгая типизация 204 
 Логический тип 204 
 Объявление переменных внутри блока 205 
 Операция разрешения видимости :: 206 
 Определение констант 206 
 Ссылки 208 
 Упражнение 210 
 Прототипы функций 210 
 Функции с переменным числом аргументов 211 
 Встраиваемые функции 212 
 Явное приведение типов 212 
 Типы перечислений, структур, объединений 213 
 Операции выделения памяти 213 
 Упражнение 214 
 Перегрузка функций 214 
 Шаблоны функций 215 
 Перегрузка операций 217 
 Упражнения 221 
 Контрольные вопросы 222 
 Глава 10. Принципы ООП 223 
 Принципы объектно-ориентированного программирования 224 
 Абстракция 224 
 Иерархия 232 
 Полиморфизм 235 
 Ответственность 236 
 Модульность и инкапсуляция 237 
 Принцип KISS 240 
 Наследование или вложение 241 
 Упражнения 243 
 Контрольные вопросы 243 
 Глава 11. Реализация ООП в языке С++ 245 
 Описание класса 253 
 Упражнение 253 
 Указатель на себя this 254 
 Описание полей класса 254 
 Упражнение 254 
 Описание методов класса 255 
 Упражнение 256 
 Пример класса 256 
 Упражнение 258 
 Класс комплексных чисел 258 
 Упражнение 263 
 Класс с деструктором 263 
 Упражнение 267 
 Наследование классов 267 
 Инициализация полей классов 270 
 Конструкторы, деструкторы и наследование 271 
 Обращение к переопределенному методу суперкласса 272 
 Доступ к членам суперкласса 272 
 Реализация полиморфизма 273 
 Абстрактные классы 275 
 Множественное наследование 277 
 Друзья класса 280 
 Пространства имен 282 
 Уточнение имени 282 
 Директива using namespace 283 
 Вложение пространств имен 283 
 Объявление using 284 
 Неименованное пространство имен 284 
 Псевдонимы пространства имен 285 
 Упражнения 285 
 Контрольные вопросы 285 
 Глава 12. Обработка исключительных ситуаций 287 
 Блоки перехвата исключения 289 
 Часть throw заголовка функции 293 
 Оператор throw 296 
 Порядок обработки исключений 296 
 Создание собственных исключений 298 
 Упражнения 299 
 Контрольные вопросы 299 
 Глава 13. Дополнительные конструкции языка С++ 301 
 Шаблоны классов 301 
 Упражнения 305 
 Друзья шаблона 306 
 Члены класса — реализации шаблонов 307 
 Наследование шаблонов 308 
 Упражнение 310 
 Специализированные версии шаблона 310 
 Упражнение 311 
 Информация о типе на этапе выполнения 311 
 Контрольные вопросы 313 
 Глава 14. Динамические структуры данных 315 
 Стек 315 
 Упражнения 328 
 Дек 328 
 Упражнения 329 
 Очередь 329 
 Упражнения 330 
 Кольцо 330 
 Упражнение 331 
 Линейный список 331 
 Двунаправленный список 335 
 Упражнение 336 
 Бинарное дерево 336 
 Обход бинарного дерева 341 
 Упражнение 343 
 B-дерево 343 
 Упражнения 345 
 Контейнеры и итераторы 345 
 Контрольные вопросы 347 
 Глава 15. Работа со строками 349 
 Типы отдельных символов 350 
 Шаблон класса basic_string 351 
 Классы string и wstring 352 
 Как создать строку 352 
 Сцепление строк 354 
 Действия со строками 354 
 Как узнать длину строки 354 
 Как выбрать символы из строки 355 
 Как просмотреть строку 356 
 Как выбрать подстроку 356 
 Как сравнить строки 357 
 Как найти символ или подстроку в строке 358 
 Как заменить подстроку 360 
 Как заменить символ 360 
 Как добавить подстроку 360 
 Как вставить подстроку 361 
 Как удалить подстроку 362 
 Как удалить символ 363 
 Как переставить строки 363 
 Ввод и вывод строк 363 
 Упражнения 363 
 Контрольные вопросы 364 
 Глава 16. Потоки ввода-вывода 365 
 Консольный ввод-вывод 368 
 Особенности ввода 369 
 Перегрузка операций >> и