Эллайн А. "C++. От ламера до программера" Питер, 2015 год, 480 стр.

Программирование на си.

Эллайн А. «C++. От ламера до программера» Питер, 2015 год, 480 стр.

Питер http://www.piter.com/

Хотите изучать объектно-ориентированное программирование и пройти путь от новичка до профессионала. Сделайте первый шаг с книгой «C++. От ламера до программера» осваивая методику и технику ООП. . Можете пользоваться книгой как учебным курсом для начинающих или как справочником, если вы уже имеете определенные навык создания приложений в С++, так как в ней содержится наиболее актуальная информация по многим разделам языка.

Автор книги Алекс Эллайн — профессионал в области разработки ПО на С++. Вдохновитель и создатель популярного сайта Cprogramming.com, которому уже исполнилось 17 лет. Он знакомит со своей методикой обучения программирования, которая прошла проверку временем и которая позволит вам приобщиться к лиге профессиональных разработчиков на C++. Более подробно с вопросами рассматриваемыми в книге и структуре учебного материала можно узнать из оглавления.
ISBN: 978-5-496-01189-1

Оглавление книги
Часть I. Погружение в с++

глава 1. введение и настройка среды разработки 20
Что такое язык программирования? 20
В чем различие между C и C++? 21
Обязательно ли знать C, чтобы выучить C++? 21
Нужно ли знать математику, чтобы стать программистом? 21
Терминология 22
Программирование 22
Исполняемый файл 22
Редактирование и компиляция файлов 22
О примерах исходного кода 23
Windows 23
Шаг 1. Загрузите Code::Blocks 23
Шаг 2. Установите Code::Blocks 24
Шаг 3. Работа в Code::Blocks 24
Устранение проблем 28
Что же такое Code::Blocks? 30
Macintosh 30
Xcode 30
Установка Xcode 3 31
Запуск Xcode 31
Создание первой программы на C++ в Xcode 31
Установка Xcode 4 35
Запуск Xcode 35
Создание первой программы на C++ в Xcode 35
Устранение проблем 39
Linux 40
Шаг 1. Установка g++ 41
Шаг 2. Запуск g++ 41
Шаг 3. Запуск программы 42
Устранение проблем 42
Шаг 4. Настройка текстового редактора 42
Настройка Nano 43
Использование Nano 43

глава 2. основы C++ 48
Введение в язык C++ 48
Простейшая программа на C++ 48
Почему работающая программа не видна? 52
Базовая структура программы на C++ 52
Комментарии в программах 53
Программистское мышление и создание повторно используемого кода 54
Несколько слов о радостях и трудностях практики 55

глава 3. взаимодействие с пользователем и работа с переменными 57
Знакомство с переменными 57
Объявление переменных в C++ 58
Использование переменных 58
Что делать, если программа сразу завершается? 59
Изменение, использование и сравнение переменных 60
Упрощенное прибавление и вычитание единицы 61
Правильное и неправильное использование переменных 63
Типичные ошибки при объявлениях переменных в C++ 63
Чувствительность к регистру 64
Присваивание имен переменным 64
Хранение строк 65
Как считывать не только строки, но и другие типы данных 67

глава 4. условные операторы 73
Базовый синтаксис оператора If 73
Выражения 75
Что такое истина? 75
Тип bool 76
Операторы else 77
Else.if 77
Сравнение строк 78
Несколько любопытных булевых операций 79
Логическое НЕ 80
Логическое И 80
Логическое ИЛИ 81
Комбинация выражений 81
Примеры логических выражений 83

глава 5. циклы 85
Циклы while 86
Типичная ошибка 86
Циклы for 87
Инициализация переменной 88
Условие цикла 88
Обновление переменной 88
Циклы do.while 90
Управление циклами 91
Вложенные циклы 93
Как выбрать подходящий цикл 94
Циклы for 94
Циклы while 94
Циклы do.while 95

глава 6. функции 98
Синтаксис функций 98
Локальные и глобальные переменные 100
Локальные переменные 100
Глобальные переменные 102
Предупреждение по поводу глобальных переменных 103
Подготовка функций к использованию 104
Определения и объявления функций 105
Пример прототипа функции 106
Деление программы на функции 106
Когда код многократно повторяется 106
Когда код должен хорошо читаться 107
Именование и перегрузка функций 108
Кратко о функциях 109

глава 7. Переключатели и перечисления 111
Переключатель 111
Сравнение операторов switch и if.else 114
Создание простых типов данных с помощью перечислений 114

глава 8. добавляем в программу случайности 119
Получение случайных чисел в C++ 120
Случайные числа и отладка 123

глава 9. Что делать, когда не понятно, что делать? 126
Разделение задачи на части 127
Кратко об эффективности и безопасности 130
Что делать, если алгоритм неизвестен 132

Часть II. работа с данными

глава 10. массивы 136
Базовый синтаксис массивов 137
Примеры использования массивов 138
Массивы для хранения упорядоченных данных 138
Представление матриц многомерными массивами 138
Использование массивов 139
Массивы и циклы for 139
Передача массивов в функции 140
Запись в конец массива 142
Сортировка массивов 143

глава 11. структуры 151
Связывание значений 151
Синтаксис 152
Передача структур 154

глава 12. введение в указатели 158
Забудьте все, о чем вам говорили 158
Что такое указатели и зачем они нужны 58
Что такое память 159
Переменные и адреса 161
Структура памяти 162
Другие преимущества и недостатки указателей 164

глава 13. указатели 168
Синтаксис указателей 168
Объявление указателя 168
Определение адреса переменной 169
Использование указателя 170
Неинициализированные указатели и NULL 174
Указатели и функции 175
Ссылки 177
Сравнение ссылок и указателей 178

глава 14. динамическое выделение памяти 182
Выделение дополнительной памяти с помощью оператора new 182
Свободной памяти больше нет 183
Ссылки и динамическое выделение памяти 184
Указатели и массивы 184
Многомерные массивы 187
Арифметика указателей 188
Знакомство с двумерными массивами 189
Указатели на указатели 190
Указатели на указатели и двумерные массивы 192
Заключение об указателях 193

глава 15. введение в структуры данных с использованием связанных списков 197
Ценность сложных структур данных 197
Указатели и структуры 200
Создание связанного списка 201
Первый проход 202
Второй проход 203
Обход связанного списка 205
Выводы о связанных списках 206
Массивы или связанные списки? 206

глава 16. рекурсия 213
Как представить себе рекурсию 213
Рекурсия и структуры данных 216
Циклы и рекурсия 218
Стек 221
Достоинства стека 224
Недостатки рекурсии 224
Отладка переполнений стека 225
Производительность 227
Подводя итоги 227

глава 17. двоичные деревья 230
Для чего нужны двоичные деревья? 230
Что такое двоичное дерево? 231
Соглашение о терминах 233
Реализация двоичных деревьев 234
Вставка в дерево 234
Поиск в дереве 237
Уничтожение дерева 238
Удаление узлов из дерева 240
Двоичные деревья и реальный мир 248
Стоимость деревьев и словарей 250

глава 18. стандартная библиотека шаблонов 253
Вектор — массив переменного размера 54
Вызов методов векторов 255
Другие возможности векторов 256
Словари 257
Итераторы 258
Проверка существования значения в словаре 261
Заключение об STL 262
Дополнительная информация об STL 263

глава 19. еще о строках 266
Считывание строк 267
Длина строк и доступ к отдельным элементам 268
Поиск и подстроки 269
Передача по ссылке 271
Константы похожи на вирус 273
Константы и STL 274

глава 20. отладка в Code::Blocks 278
Настройка 280
Прерывание программы 281
Отладка аварийных завершений программы 288
Прерывание зависшей программы 291
Изменение переменных 295
Заключение 296
Задача 1. Проблемы с экспонентой 296
Задача 2. Проблема добавления чисел 297
Задача 3. Ошибка в числах Фибоначчи 297
Задача 4. Некорректное чтение и вывод списка 298

Часть III. большие Программы

глава 21. разбиение программ на части 301
Процесс сборки в C++ 301
Предварительная обработка 302
Компиляция 304
Компоновка 304
Зачем разделять компиляцию и компоновку 305
Как разделить программу на файлы 305
Шаг 1. Разделите объявления и определения функций 306
Шаг 2. Определите, какие функции будут общими 306
Шаг 3. Переместите общие функции в новые файлы 307
Другие правила работы с заголовочными файлами 311
Работа с несколькими файлами 311

глава 22. введение в проектирование программ 317
Избыточный код 317
Как хранятся данные 318
Проектирование и комментарии 321

глава 23. скрытие представления структурированных данных 323
Скрытие формата структуры с помощью функций 324
Объявление методов и синтаксис их вызова 326

глава 24. Классы 330
Скрытие данных 331
Объявление экземпляра класса 333
Обязанности класса 333
В чем истинный смысл закрытых членов класса? 335
Заключение 335

глава 25. жизненный цикл класса 337
Создание объекта 338
Что произойдет, если не создать конструктор 341
Инициализация членов класса 341
Использование списка инициализации для константных полей 343
Уничтожение объекта 343
Уничтожение объекта оператором delete 346
Уничтожение объекта при его выходе из области видимости 346
Уничтожение объекта другим деструктором 347
Копирование классов 348
Оператор присваивания 349
Конструктор копирования 352
Полный список методов, генерируемых компилятором 354
Как избежать полного копирования объекта 354

глава 26. наследование и полиморфизм 358
Наследование в C++ 360
Другие преимущества и недостатки наследования 364
Наследование, создание и уничтожение объектов 365
Полиморфизм и уничтожение объектов 367
Проблема срезки 369
Совместное использование кода с подклассами 370
Защищенные данные 371
Общие данные класса 372
Как реализован полиморфизм? 373

глава 27. Пространства имен 379
Использование пространств имен 379
Когда следует использовать оператор using namespace 382
Когда следует создавать пространство имен 383

глава 28. файловый ввод.вывод 385
Основы файлового ввода-вывода 385
Чтение из файлов 386
Форматы файлов 388
Конец файла 389
Запись в файлы 391
Создание новых файлов 392
Позиция в файле 393
Прием командно.строковых аргументов 397
Работа с численными командно.строковыми аргументами 399
Ввод.вывод в двоичные файлы 399
Работа с двоичными файлами 401
Преобразование в char* 402
Пример двоичного ввода.вывода 403
Хранение классов в файле 404
Чтение из файла 406

глава 29. шаблоны в C++ 414
Шаблонные функции 415
Вывод типа данных 416
Утиная типизация 416
Шаблонные классы 418
Рекомендации по работе с шаблонами 420
Шаблоны и заголовочные файлы 422
Заключение о шаблонах 422
Диагностика сообщений об ошибках в шаблонах 423

Часть IV. доПолнительная информация

глава 30. форматирование выводимых данных с помощью iomanip 430
Работа в ограниченном пространстве 430
Управление шириной с помощью метода setw 430
Изменение символа.заполнителя 432
Изменение глобальных настроек 432
Обобщим информацию о iomanip 433
Вывод чисел 435
Точность вывода чисел задается в методе setprecision 435
Что делать с денежными величинами? 436
Вывод значений в различных системах счисления 436

глава 31. исключения и отчеты об ошибках 438
Освобождение ресурсов при исключениях 440
Очистка ресурсов вручную в блоке catch 441
Создание исключений 442
Спецификация исключений 443
Преимущества исключений 444
Неправильное использование исключений 445
Коротко об исключениях 446

глава 32. Заключение 448
ответы к разделам «Проверьте себя» 450

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