«И» «ИЛИ»  
© Публичная Библиотека
 -  - 
Универсальная библиотека, портал создателей электронных книг. Только для некоммерческого использования!
Дейтел Харви

Харви Дейтел 368k

(Harvey Deitel)

()

◄ СМЕНИТЬ   РАЗВЕРНУТЬ ▼
▲ СВЕРНУТЬ    СМЕНИТЬ ►
Американский программист, бизнесмен, доктор наук. Харви Дейтел получил степени бакалавра и магистра электротехники в престижном Массачусетском технологическом институте. Он защитил докторские диссертации по философии и по математике в Бостонском университете. Совместно с сыном Дейтел основал компанию Deitel & Associates, Inc. До этого он 58 лет создавал программы по вычислительной технике. У автора большой опыт преподавания в колледже, в том числе опыт работы в качестве председателя кафедры вычислительной техники в Бостонском колледже.
Сегодня Харви Дейтел - председатель и главный директор по стратегии компании Deitel & Associates, Inc... Компания специализируется на популярных языках компьютерного программирования, разработке мобильных приложений и программного обеспечения. Харви Дейтел предлагает клиентам учебники и книги по программированию в печатном и электронном формате, видеокурсы, онлайн-семинары и интерактивные мультимедийные курсы. Публикации ведущих сотрудников компании получили международное признание: более 100 переводов книг опубликовано на японском, немецком, русском, испанском, французском, польском, итальянском, китайском, португальском, греческом, урду и турецком языках. Книги авторов решают проблемы, стоящие перед современными айтишниками, они позволяют каждому читателю познакомиться с революционными вычислительными технологиями и программированием на различных языках.




  • Дейтел Х.М... Как программировать на C. (C how то programm) [Djv-20.4M] [Pdf-22.8M] Научное издание. Авторы: Харви Дейтел, Пол Дейтел (Н.М. Deiftel, P.J. Deitel). Перевод с английского: В.В. Бреховских, B.M. Карташов, A.B. Козлов, В.И. Череховский. Редактор: В. Тимофеев.
    (Москва: ЗАО «Издательство БИНОМ», 2000)
    Скан: AAW, OCR, обработка, формат Djv, Pdf: pohorsky, 2022
    • СОДЕРЖАНИЕ:
      Предисловие (17).
      Об этой книге (18).
      Обзор книги (20).
      Глава 1. Принципы машинной обработки данных (29).
      1.1. Введение (30).
      1.2. Что такое компьютер? (32).
      1.3. Внутренняя организация компьютера (33).
      1.4. Пакетная обработка, мультипрограммирование и разделение времени (34).
      1.5. Персональные вычисления, распределенные вычисления и вычисления в модели клиент/сервер (34).
      1.6. Машинные языки, языки ассемблера и языки высокого уровня (35).
      1.7. История языка С (36).
      1.8. Стандартная библиотека С (37).
      1.9. Другие языки высокого уровня (38).
      1.10. Структурное программирование (38).
      1.11. Основные принципы среды С (39).
      1.12. Общие замечания о С и этой книге (41).
      1.13. Concurrent С (Параллельный С) (42).
      1.14. Объектно-ориентированное программирование и С++ (43).
      Резюме. Хороший стиль программирования. Советы по переносимости программ. Советы по повышению эффективности. Упражнения для самоконтроля. Ответы к упражнениям для самоконтроля. Упражнения. Рекомендуемая литература.
      Глава 2. Введение в программирование на С (53).
      2.1. Введение (54).
      2.2. Простая программа на С.: печать строки текста (54).
      2.3. Еще одна простая программа на С.: сложение двух целых чисел (58).
      2.4. Общие понятия о памяти компьютера (63).
      2.5. Арифметика в С (64).
      2.6. Принятие решений: операции равенства и отношения (67).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по переносимости программ. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 3. Структурная разработка программ (87).
      3.1. Введение (88).
      3.2. Алгоритмы (88).
      3.3. Псевдокод (89).
      3.4. Управляющие структуры (90).
      3.5. Структура выбора if (92).
      3.6. Структура выбора if/else (94).
      3.7. Структура повторения while (98).
      3.8. Формулирование алгоритмов: пример 1 (повторение, управляемое счетчиком) (99).
      3.9. Формулирование алгоритмов на основе нисходящего пошагового уточнения: пример 2 (повторение, управляемое контрольным значением) (102).
      3.10. Формулирование алгоритмов на основе нисходящего пошагового уточнения: пример 3 (вложенные управляющие структуры) (108).
      3.11. Операции присваивания (113).
      3.12. Операции инкремента и декремента (114).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы к упражнениям для самоконтроля. Упражнения.
      Глава 4. Управление программой (137).
      4.1. Введение (138).
      4.2. Основы структур повторения (139).
      4.3. Повторение, управляемое счетчиком (139).
      4.4. Структура повторения for (141).
      4.5. Структура for: замечания и рекомендации (144).
      4.6. Примеры структур for (145).
      4.7. Структура со множественным выбором switch (148).
      4.8. Структура повторения do/while (154).
      4.9. Операторы break и continue (156).
      4.10. Логические операции (158).
      4.11. Смешивание операций равенства (==) и присваивания (=) (161).
      4.12. Краткая сводка по структурному программированию (163).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Советы по переносимости программ. Общие методические замечания. Упражнения для самоконтроля. Ответы к упражнениям для самоконтроля. Упражнения
      Глава 5. Функции (185).
      5.1. Введение (186).
      5.2. Программные модули в С (187).
      5.3. Функции математической библиотеки (188).
      5.4. Функции (189).
      5.5. Определения функций (190).
      5.6. Прототипы функций (194).
      5.7. Заголовочные файлы (197).
      5.8. Вызов функций: вызов по значению и по ссылке (198).
      5.9. Генерация случайных чисел (199).
      5.10. Пример: стохастическая игра (203).
      5.11. Классы памяти (206).
      5.12. Правила области действия (209).
      5.13. Рекурсия (210).
      5.14. Пример применения рекурсии: числа Фибоначчи (215).
      5.15. Рекурсия в сравнении с итерацией (219).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по переносимости программ. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 6. Массивы (247).
      6.1. Введение (248).
      6.2. Массивы (249).
      6.3. Объявление массивов (251).
      6.4. Примеры работы с массивами (251).
      6.5. Передача массивов в функции (263).
      6.6. Сортировка массивов (267).
      6.7. Пример: вычисление среднего значения, медианы и наиболее вероятного значения с использованием массивов (269).
      6.8. Поиск в массивах (273).
      6.9. Многомерные массивы (277).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы к упражнениям для самоконтроля. Упражнения. Упражнения на рекурсию.
      Глава 7. Указатели (307).
      7.1. Введение (308).
      7.2. Объявление и инициализация переменной-указателя (309).
      7.3. Операции над указателями (310).
      7.4. Передача параметра по ссылке (312).
      7.5. Использование модификатора const с указателями (316).
      7.6. Программа пузырьковой сортировки, использующая вызов по ссылке (322).
      7.7. Выражения и арифметические операции с указателями (326).
      7.8. Связь между указателями и массивами (329).
      7.9. Массивы указателей (333).
      7.10. Пример: программа тасовки и сдачи колоды карт (334).
      7.11. Указатели на функции (339).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Советы по переносимости программ. Общие методические замечания. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения. Специальный раздел: как самому построить компьютер.
      Глава 8. Символы и строки (369).
      8.1. Введение (370).
      8.2. Строки и символы (370).
      8.3. Библиотека обработки символов (372).
      8.4. Функции преобразования строк (377).
      8.5. Функции стандартной библиотеки ввода/вывода (382).
      8.6. Функции операций над строками из библиотеки обработки строк (385).
      8.7. Функции сравнения из библиотеки обработки строк (388).
      8.8. Функции поиска из библиотеки обработки строк (390).
      8.9. Функции памяти библиотеки обработки строк (395).
      8.10. Другие функции из библиотеки обработки строк (399).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по переносимости программ. Упражнения для самоконтроля. Ответы к упражнениям для самоконтроля. Упражнения. Специальный раздел: более сложные упражнения по работе со строками.
      Глава 9. Форматированный ввод/вывод (419).
      9.1. Введение (420).
      9.2. Потоки (421).
      9.3. Форматированный вывод с применением printf (421).
      9.4. Печать целых чисел (422).
      9.5. Печать чисел с плавающей точкой (423).
      9.6. Печать строк и символов (425).
      9.7. Другие спецификаторы преобразования (426).
      9.8. Печать с заданием ширины поля и точности представления (428).
      9.9. Использование флагов в строке управления форматом printf (430).
      9.10. Печать литералов и Esc-последовательностей (433).
      9.11. Форматированный ввод с применением scanf (434).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по переносимости программ. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 10. Структуры, объединения, операции с битами и перечисления (451).
      10.1. Введение (452).
      10.2. Описания структур (453).
      10.3. Инициализация структур (455).
      10.4. Доступ к элементам структур (455).
      10.5. Использование структур с функциями (457).
      10.6. Typedef (458).
      10.7. Пример: моделирование высокоэффективной тасовки и раздачи карт (459).
      10.8. Объединения (461).
      10.9. Поразрядные операции (463).
      10.10. Битовые поля (471).
      10.11. Перечислимые константы (474).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по переносимости программ. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 11. Работа с файлами (489).
      11.1. Введение (490).
      11.2. Иерархия данных (490).
      11.3. Файлы и потоки (493).
      11.4. Создание файла последовательного доступа (493).
      11.5. Чтение данных из файла последовательного доступа (499).
      11.6. Файлы произвольного доступа (503).
      11.7. Создание файла произвольного доступа (504).
      11.8. Произвольная запись данных в файл произвольного доступа (506).
      11.9. Последовательное чтение данных из файла произвольного доступа (508).
      11.10. Пример: программа обработки транзакций (508).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по переносимости программ. Советы по повышению эффективности. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 12. Структуры данных (527).
      12.1. Введение (528).
      12.2. Структуры, ссылающиеся на себя (529).
      12.3. Динамическое распределение памяти (530).
      12.4. Связанные списки (531).
      12.5. Стек и (539).
      12.6. Очереди (545).
      12.7. Деревья (550).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Советы по переносимости программ. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 13. Препроцессор (587).
      13.1. Введение (588).
      13.2. Директива препроцессора #include (588).
      13.3. Директива препроцессора #define: символические константы (589).
      13.4. Директива препроцессора #define: макросы (590).
      13.5. Условная компиляция (592).
      13.6. Директивы препроцессора #error и #pragma (593).
      13.7. Операции # и (593).
      13.8. Нумерация строк (594).
      13.9. Предопределенные символические константы (594).
      13.10. Макрос подтверждения (594).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 14. Специальные вопросы (601).
      14.1. Введение (602).
      14.2. Переадресация ввода/вывода в системах UNIX и DOS (602).
      14.3. Списки аргументов переменной длины (603).
      14.4. Аргументы командной строки (606).
      14.5. Замечания относительно компиляции программ из нескольких исходных файлов (607).
      14.6. Выход из программы с помощью exit и atexit (609).
      14.7. Модификатор типа volatile (609).
      14.8. Суффиксы для целых констант и констант с плавающей точкой (610).
      14.9. Еще раз о файлах (611).
      14.10. Обработка сигналов (613).
      14.11. Динамическое выделение памяти: функции calloc и realloc (615).
      14.12. Безусловный переход: goto (616).
      Резюме. Распространенные ошибки программирования. Советы по переносимости программ. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 15. С++ как «улучшенный» С (625).
      15.1. Введение (626).
      15.2. Однострочные комментарии С++ (627).
      15.3. Потоковый ввод/вывод С++ (628).
      15.4. Объявления в С++ (630).
      15.5. Создание новых типов данных в С++ (630).
      15.6. Прототипы функций и контроль соответствия типов (631).
      15.7. Встроенные функции (633).
      15.8. Параметры-ссылки (637).
      15.9. Модификатор const (641).
      15.10. Динамическое распределение памяти с помощью new и delete (643).
      15.11. Параметры, используемые по умолчанию (644).
      15.12. Унарная операция разрешения области действия (646).
      15.13. Перегрузка функций (647).
      15.14. Спецификации внешней связи (649).
      15.15. Шаблоны функций (649).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по переносимости программ. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы к упражнениям для самоконтроля. Упражнения. Рекомендуемая литература. Приложение: ресурсы С++.
      Глава 16. Классы и абстракция данных (663).
      16.1. Введение (664).
      16.2. Определение структур (666).
      16.3. Доступ к элементам структур (667).
      16.4. Реализация пользовательского типа Time с помощью структуры (668).
      16.5. Реализация абстрактного типа данных Time с помощью класса (670).
      16.6. Область действия класса и доступ к элементам класса (676).
      16.7. Отделение интерфейса от реализации (677).
      16.8. Управление доступом к элементам класса (681).
      16.9. Функции доступа и сервисные функции (684).
      16.10. Инициализация объектов класса: конструкторы (687).
      16.11. Использование с конструкторами аргументов по умолчанию (688).
      16.12. Деструкторы (691).
      16.13. Когда вызываются конструкторы и деструкторы (691).
      16.14. Использование элементов данных и элементов-функций- (694).
      16.15. Скрытая ловушка: возвращение ссылки на закрытый элемент данных (699).
      16.16. Присваивание по умолчанию путем поэлементного копирования (701).
      16.17. Повторное использование программного обеспечения (701).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы к упражнениям для самоконтроля. Упражнения.
      Глава 17. Классы: часть II (715).
      17.1. Введение (716).
      17.2. Константные объекты и константные элементы-функции (717).
      17.3. Композиция: классы в качестве элементов других классов (723).
      17.4. Дружественные функции и дружественные классы (727).
      17.5. Указатель this (729).
      17.6. Динамическое распределение памяти с помощью операций new и delete (734).
      17.7. Статические элементы класса (735).
      17.8. Абстракция данных и сокрытие информации (739).
      17.9. Контейнерные классы и итераторы (743).
      17.10. Шаблоны классов (743).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Советы по переносимости программ. Общие методические замечания. Упражнения для самоконтроля. Ответы к упражнениям для самоконтроля. Упражнения.
      Глава 18. Перегрузка операций (755).
      18.1. Введение (756).
      18.2. Основные принципы перегрузки операций (757).
      18.3. Запреты на перегрузку операций (759).
      18.4. Функции-операции как элементы класса и как дружественные функции (760).
      18.5. Перегрузка операций передачи в поток и извлечения из потока (762).
      18.6. Перегрузка одноместных операций (764).
      18.7. Перегрузка двухместных операций (765).
      18.8. Пример: класс Array (765).
      18.9. Преобразование типов (776).
      18.10. Пример: класс String (777).
      18.11. Перегрузка ++ и (786).
      18.12. Пример: класс Date (788).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы к упражнениям для самоконтроля. Упражнения.
      Глава 19. Наследование (805).
      19.1. Введение (806).
      19.2. Базовые и производные классы (808).
      19.3. Защищенные элементы (810).
      19.4. Приведение указателей базового класса к указателям на производный класс (811).
      19.5. Применение функций-элементов (815).
      19.6. Переопределение элементов базового класса в производном классе (816).
      19.7. Открытые, защищенные и закрытые базовые классы (820).
      19.8. Непосредственные и косвенные базовые классы (820).
      19.9. Применение конструкторов и деструкторов в производном классе (821).
      19.10. Неявное преобразование объектов производного класса к базовому (824).
      19.11. Наследование в конструировании программного обеспечения (825).
      19.12. Композиция в сравнении с наследованием (827).
      19.13. Отношения «использует» и «знает» (828).
      19.14. Пример: Point, Circle, Cylinder (828).
      19.15. Сложное наследование (833).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Совет по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 20. Виртуальные функции и полиморфизм (847).
      20.1. Введение (848).
      20.2. Обработка различных типов данных при помощи операторов switch (849).
      20.3. Виртуальные функции (849).
      20.4. Абстрактные базовые классы и конкретные классы (850).
      20.5. Полиморфизм (851).
      20.6. Пример: программа начисления заработной платы, использующая возможности полиморфизма (853).
      20.7. Новые классы и динамическое связывание (862).
      20.8. Виртуальные деструкторы (864).
      20.9. Пример: наследование интерфейса и реализации (864).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Глава 21. Потоки ввода/вывода в С++ (877).
      21.1. Введение (879).
      21.2. Потоки (879).
      21.3. Потоковый вывод (882).
      21.4. Потоковый ввод (886).
      21.5. Функции неформатируемого ввода/вывода read, gcount и write (892).
      21.6. Манипуляторы потоков (893).
      21.7. Флаги форматирования потока (896).
      21.8. Состояния ошибки потоков (906).
      21.9. Ввод/вывод определяемых пользователем типов (907).
      21.10. Привязка потока вывода к потоку ввода (910).
      Резюме. Распространенные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Общие методические замечания. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
      Приложение А. Синтаксис С (929).
      Приложение Б. Стандартная библиотека (941).
      Приложение В. Таблица приоритета операций (978).
      Приложение Г. Набор символов ASCII (980).
      Приложение Д. Системы счисления (981).
      Д.1. Введение (982).
      Д.2. Запись двоичных чисел в виде восьмеричных и шестнадцатеричных (985).
      Д.3. Преобразование восьмеричных и шестнадцатеричных чисел в двоичные (987).
      Д.4. Преобразование числа из двоичной, восьмеричной или шестнадцатеричной форм в десятичную (987).
      Д.5. Преобразование десятичного числа в двоичное, восьмеричное или шестнадцатеричное (988).
      Д.6. Отрицательные двоичные числа: дополнение до двух (990).
      Резюме. Упражнения для самоконтроля. Ответы на упражнения для самоконтроля. Упражнения.
Аннотация издательства: Книга предлагает читателю курс программирования, ориентированный на языки C / C++, и рассчитана как на начинающих, не владеющих никакими языками программирования, так и на опытных программистов, которые могут просто пропустить не интересующие их главы. Помимо достаточно полного и глубокого изложения языка С дается весьма серьезное введение в C++, одного из наиболее перспективных на настоящий момент языков; ему посвящена значительная часть книги. Особое внимание уделяется методикам структурного и объектно-ориентированного программирования больших программных систем. Примеры и многочисленные упражнения знакомят читателя с часто применяемыми алгоритмами и фундаментальными структурами данных, показывая технические приемы их реализации. Приводится также масса полезных советов.
Книга адресована широкому кругу читателей, от новичков до студентов, изучающих программирование в рамках своей специальности.
  • Дейтел Х.М... Как программировать на C++. (C++ how то programm) [Djv-19.4M] [Pdf-22.5M] Авторы: Харви Дейтел, Пол Дейтел (Н.М. Deiftel, P.J. Deitel). Перевод с английского: А.Я. Архангельский, B.B. Бочкарева, B.H. Ильин, O.A. Капустин, A.B. Козлов. Редактор: А.Я. Архангельский.
    (Москва: ЗАО «Издательство БИНОМ», 1999)
    Скан: AAW, OCR, обработка, формат Djv, Pdf: pohorsky, 2022
    • СОДЕРЖАНИЕ:
      Предисловие (15).
      Введение в объектное ориентирование начинается с главы 1! (16).
      Об этой книге (16).
      Обзор книги (21).
      Глава 1. Введение в компьютеры и программирование на С++ (31).
      1.1. Введение (32).
      1.2. Что такое компьютер? (35).
      1.3. Организация компьютера (36).
      1.4. Эволюция операционных систем (37).
      1.5. Персональные вычисления, распределенные вычисления и вычисления на платформе клиент/сервер (38).
      1.6. Машинные языки, языки ассемблера и языки высокого уровня (38).
      1.7. История С++ (40).
      1.8. Библиотеки классов С++ и стандартная библиотека С (41).
      1.9. Параллельный С++ (42).
      1.10. Другие языки высокого уровня (43).
      1.11. Структурное программирование (43).
      1.12. Общее описание типичной среды программирования на С++ (44).
      1.13. Общие замечания о С++ и об этой книге (47).
      1.14. Введение в программирование на С++ (48).
      1.15. Простая программа: печать строки текста (48).
      1.16. Другая простая программа: сложение двух целых чисел (52).
      1.17. Концепции памяти (56).
      1.18. Арифметика (57).
      1.19. Принятие решений: операции проверки на равенство и отношения (61).
      1.20. Размышления об объектах (65).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по мобильности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 2. Управляющие структуры (87).
      2.1. Введение (89).
      2.2. Алгоритмы (89).
      2.3. Псевдокод (89).
      2.4. Управляющие структуры (90).
      2.5. Структура выбора if (ЕСЛЙ) (93).
      2.6. Структура выбора if/else (ЕСЛИ-ИНАЧЕ) (95).
      2.7. Структура повторения while (ПОКА) (99).
      2.8. Разработка алгоритмов: учебный пример 1 (повторение, управляемое счетчиком) (100).
      2.9. Нисходящая разработка алгоритмов с пошаговой детализацией: учебный пример 2 (повторение, управляемое меткой) (102).
      2.10. Нисходящая разработка алгоритмов с пошаговой детализацией: учебный пример 3 (вложенные управляющие структуры) * (109).
      2.11. Операции присваивания (114).
      2.12. Операции инкремента и декремента (115).
      2.13. Основы повторения, управляемого счетчиком (117).
      2.14. Структура повторения for (ЦИКЛ) (120).
      2.15. Пример использования структуры for (124).
      2.16. Структура множественного выбора switch (128).
      2.17. Структура повторения do/while (134).
      2.18. Операторы break и continue (136).
      2.19. Логические операции (138).
      2.20. Ошибки случайной подмены операций проверки равенства (==) и присваивания (=) (140).
      2.21. Заключение по структурному программированию (143).
      2.22. Размышления об объектах: идентификация объектов задачи (148).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по мобильности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 3. Функции (177).
      3.1. Введение (178).
      3.2. Программные модули в С++ (179).
      3.3. Математические библиотечные функции (180).
      3.4. Функции (181).
      3.5. Определения функций (182).
      3.6. Прототипы функций (187).
      3.7. Заголовочные файлы (189).
      3.8. Генерация случайных чисел (189).
      3.9. Пример: азартная игра (195).
      3.10. Классы памяти (198).
      3.11. Правила, определяющие область действия (201).
      3.12. Рекурсия (205).
      3.13. Пример использования рекурсии: последовательность чисел Фибоначчи (208).
      3.14. Рекурсии или итерации (211).
      3.15. Функции с пустыми списками параметров (213).
      3.16. Встраиваемые функции (214).
      3.17. Ссылки и ссылочные параметры (216).
      3.18. Аргументы по умолчанию (219).
      3.19. Унарная операция разрешения области действия (221).
      3.20. Перегрузка функций (222).
      3.21. Шаблоны функции (223).
      3.22. Размышления об объектах: идентификация атрибутов объектов (226).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по мобильности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 4. Массивы (259).
      4.1. Введение (260).
      4.2. Массивы (261).
      4.3. Объявление массивов (263).
      4.4. Примеры использования массивов (263).
      4.5. Передача массивов в функции (276).
      4.6. Сортировка массивов (280).
      4.7. Учебный пример: вычисление среднего значения, медианы и моды с использованием массивов (282).
      4.8. Поиск в массивах: линейный поиск и двоичный поиск (285).
      4.9. Многомерные массивы (290).
      4.10. Размышления об объектах: идентификация поведений объектов (297).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по мобильности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения. Упражнения на рекурсию.
      Глава 5. Указатели и строки (321).
      5.1. Введение (322).
      5.2. Объявления и инициализация переменных указателей (323).
      5.3. Операции над указателями (324).
      5.4. Вызов функций по ссылке (326).
      5.5. Использование спецификатора const с указателями (330).
      5.6. Пузырьковая сортировка, использующая вызов по ссылке (336).
      5.7. Выражения и арифметические действия с указателями (340).
      5.8. Взаимосвязи между указателями и массивами (344).
      5.9. Массивы указателей (348).
      5.10. Учебный пример: моделирование тасования и раздачи карт (349).
      5.11. Указатели на функции (354).
      5.12. Введение в обработку символов и строк (358).
      5.13. Размышления об объектах: взаимодействие объектов (367).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по мобильности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения. Специальный раздел: построение вашего собственного компьютера. Дополнительные упражнения на указатели. Упражнения на работу со строками. Специальный раздел: упражнения повышенной сложности на работу со строками. Головоломный проект работы со строками.
      Глава 6. Классы и абстрагирование данных (405).
      6.1. Введение (406).
      6.2. Определения структур (408).
      6.3. Доступ к элементам структуры (408).
      6.4. Использование определенного пользователем типа Time с помощью Struct (409).
      6.5. Использование абстрактного типа данных Time с помощью класса (411).
      6.6. Область действия класс и доступ к элементам класса (418).
      6.7. Отделение интерфейса от реализации (419).
      6.8. Управление доступом к элементам (423).
      6.9. Функции доступа и обслуживающие функции-утилиты (426).
      6.10. Инициализация объектов класса: конструкторы (429).
      6.11. Использование конструкторов с аргументами по умолчанию (429).
      6.12. Использование деструкторов (433).
      6.13. Когда вызываются конструкторы и деструкторы (433).
      6.14. Использование данных-элементов и функций-элементов (436).
      6.15. Тонкий момент: возвращение ссылки на закрытые данные-элементы (441).
      6.16. Присваивание побитовым копированием по умолчанию (443).
      6.17. Повторное использование программного обеспечения (445).
      6.18. Размышления об объектах: программирование классов для моделирования лифта (445).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 7. Классы: часть II (459).
      7.1. Введение (460).
      7.2. Константные объекты и функции-элементы (461).
      7.3. Композиция: классы как элементы других классов (467).
      7.4. Дружественные функции и дружественные классы (471).
      7.5. Использование указателя this (474).
      7.6. Динамическое распределение памяти с помощью операций new и delete (479).
      7.7. Статические элементы класса (480).
      7.8. Абстракция данных и скрытие информации (485).
      7.9. Классы контейнеры и итераторы (489).
      7.10. Размышления об объектах: использование композиции и динамического управления объектом в модели лифта (489).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 8. Перегрузка операций (497).
      8.1. Введение (498).
      8.2. Основы перегрузки операций (499).
      8.3. Ограничения на перегрузку операции (501).
      8.4. Функции-операции как элементы класса и как дружественные функции (502).
      8.5. Перегрузка операций поместить в поток и взять из потока (504).
      8.6. Перегрузка унарных операций (506).
      8.7. Перегрузка бинарных операций (507).
      8.8. Учебный пример: класс массив (508).
      8.9. Преобразования типов (519).
      8.10. Учебный пример: класс строка (520).
      8.11. Перегрузка ++ и (531).
      8.12. Учебный пример: класс дата (532).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 9. Наследование (551).
      9.1. Введение (552).
      9.2. Базовые классы и производные классы (554).
      9.3. Защищенные элементы (556).
      9.4. Приведение типов указателей базовых классов к указателям производных классов (556).
      9.5. Использование функций-элементов (562).
      9.6. Переопределение элементов базового класса в производном классе (562).
      9.7. Открытые, защищенные и закрытые базовые классы (566).
      9.8. Прямые и косвенные базовые классы (568).
      9.9. Использование конструкторов и деструкторов в производных классах (568).
      9.10. Неявное преобразование объектов производных классов в объекты базовых классов (571).
      9.11. Проектирование программного обеспечения с помощью наследования (573).
      9.12. Композиция и наследование (574).
      9.13. Отношения «использует А» и «знает А» (575).
      9.14. Учебный пример: точка, круг, цилиндр (575).
      9.15. Множественное наследование (582).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 10. Виртуальные функции и полиморфизм (595).
      10.1. Введение (596).
      10.2. Поля типов и операторы switch (597).
      10.3. Виртуальные функции (597).
      10.4. Абстрактные базовые классы и конкретные классы (599).
      10.5. Полиморфизм (600).
      10.6. Учебный пример: система расчета заработной платы (602).
      10.7. Новые классы и динамическое связывание (612).
      10.8. Виртуальные деструкторы (613).
      10.9. Учебный пример: интерфейс наследования и его реализация (614).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 11. Потоки ввода-вывода в С++ (629).
      11.1. Введение (631).
      11.2. Потоки (632).
      11.3. Вывод потоков (635).
      11.4. Ввод потоков (639).
      11.5. Неформатированный ввод-вывод с использованием read, gcount и write (645).
      11.6. Манипуляторы потоков (646).
      11.7. Состояния формата потоков (651).
      11.8. Состояния ошибок потока (660).
      11.9. Ввод-вывод определенных пользователем типов данных (662).
      11.10. Связывание выходного потока с входным (664).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 12. Шаблоны (683).
      12.1. Введение (684).
      12.2. Шаблоны функций (685).
      12.3. Перегрузка шаблонных функций (688).
      12.4. Шаблоны классов (689).
      12.5. Шаблоны классов и нетиповые параметры (694).
      12.6. Шаблоны и наследование (695).
      12.7. Шаблоны и друзья (695).
      12.8. Шаблоны и статические элементы (696).
      Резюме. Терминология. Типичные ошибки программирования. Советы по повышению эффективности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 13. Обработка исключений (703).
      13.1. Введение (704).
      13.2. Когда должна использоваться обработка исключений (708).
      13.3. Другие методы обработки ошибок (708).
      13.4. Основы обработки исключений в С++ (709).
      13.5. Простой пример обработки исключений: деление на нуль (710).
      13.6. Блоки try (713).
      13.7. Генерация исключений (713).
      13.8. Перехват исключений (714).
      13.9. Повторная генерация исключений (718).
      13.10. Создание условного выражения (719).
      13.11. Спецификация исключений (719).
      13.12. Обработка непредусмотренных исключений (720).
      13.13. Конструкторы, деструкторы и обработка исключений (721).
      13.14. Исключения и наследование (722).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по мобильности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 14. Обработка файлов и ввод-вывод потоков строк (737).
      14.1. Введение (738).
      14.2. Иерархия данных (739).
      14.3. Файлы и потоки (741).
      14.1. Создание файла последовательного доступа (742).
      14.5. Чтение данных из файла последовательного доступа (746).
      14.6. Обновление файлов последовательного доступа (750).
      14.7. Файлы произвольного доступа (751).
      14.8. Создание файла произвольного доступа (753).
      14.9. Произвольная запись данных в файл произвольного доступа (754).
      14.10. Последовательное чтение данных из файла произвольного доступа (756).
      14.11. Пример: программа обработки запросов (758).
      14.12. Обработка потоков строк (763).
      14.13. Ввод-вывод объектов (767).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 15. Структуры данных (781).
      15.1. Введение (782).
      15.2. Классы с самоадресацией (783).
      15.3. Динамическое выделение памяти (784).
      15.4. Связные списки (786).
      15.5. Стеки (799).
      15.6. Очереди (804).
      15.7. Деревья (807).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по мобильности. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения. Специальный раздел: создание вашего собственного компилятора.
      Глава 16. Биты, символы, строки и структуры (847).
      16.1. Введение (848).
      16.2. Описание структур (849).
      16.3. Инициализация структур (851).
      16.4. Использование структур в функциях (852).
      16.5. Создание синонимов (852).
      16.6. Пример: эффективное моделирование тасования и раздачи карт (853).
      16.7. Поразрядные операции (855).
      16.8. Битовые поля (863).
      16.9. Библиотека обработки символов (866).
      16.10. Функции преобразования строк (872).
      16.11. Функции поиска из библиотеки обработки строк (876).
      16.12. Функции работы с памятью из библиотеки обработки строк (881).
      16.13. Другие функции библиотеки обработки строк (884).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Замечания по мобильности. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 17. Препроцессор (903).
      17.1. Введение (904).
      17.2. Директива препроцессора #include (905).
      17.3. Директива препроцессора #define: символические константы (905).
      17.4. Директива препроцессора #define: макросы (906).
      17.5. Условная компиляция (908).
      17.6. Директивы препроцессора #error и #pragma (910).
      17.7. Операции # и ## (910).
      17.8. Нумерация строк (911).
      17.9. Предопределенные символические константы (911).
      17.10. Макрос assert (912).
      Резюме. Терминология. Типичные ошибки программирования. Хороший стиль программирования. Советы по повышению эффективности. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Глава 18. Другие темы (919).
      18.1. Введение (920).
      18.2. Переназначение ввода-вывода в системах UNIX и DOS (921).
      18.3. Список параметров переменной длины (922).
      18.4. Использование аргументов командной строки (924).
      18.5. Замечания по компиляции программ, состоящих из нескольких исходных файлов (924).
      18.6. Завершение программы при помощи функций exit и atexit (927).
      18.7. Спецификатор типа volatile (928).
      18.8. Суффиксы целочисленных и вещественных констант (929).
      18.9. Обработка сигналов (929).
      18.10. Динамическое выделение памяти: функции calloc и realloc (932).
      18.11. Безусловный переход: оператор goto (933).
      18.12. Объединения (934).
      18.13. Спецификации связывания (938).
      18.14. Заключительные замечания (939).
      Резюме. Терминология. Типичные ошибки программирования. Советы по повышению эффективности. Замечания по мобильности. Замечания по технике программирования. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Приложение А. Стандартная библиотека (949).
      Приложение Б. Таблица приоритета операций (988).
      Приложение В. Набор символов ASCII (989).
      Приложение Г. Системы счисления (991).
      Г.1. Введение (992).
      Г.2. Сокращенная запись двоичных чисел в восьмеричной и шестнадцатеричной системах счисления (995).
      Г.3. Преобразование восьмеричных и шестнадцатеричных чисел в двоичные (997).
      Г.4. Преобразование двоичных, восьмеричных и шестнадцатеричных чисел в десятичные (997).
      Г.5. Преобразование десятичных чисел в двоичные, восьмеричные и шестнадцатеричные (998).
      Г.6. Представление отрицательных двоичных чисел: дополнение до двух (999).
      Резюме. Терминология. Упражнения для самопроверки. Ответы на упражнения для самопроверки. Упражнения.
      Предметный указатель (1007).
Аннотация издательства: Книга предлагает полный курс изучения наиболее популярного и перспективного языка программирования - С++ и рассчитана как на начинающих, не владеющих никаким языком программирования, так и на опытных пользователей. Для начинающих - это полноценный курс, в котором изучается все, начиная с устройства компьютера и кончая новейшими достижениями С++: шаблонами функций и классов, обработкой исключений и т.п. Опытный программист может пропустить часть известного ему материала, но получит множество полезных сведений в остальных частях книги. Особое внимание авторы уделяют современным методикам разработки программного обеспечения: наследованию, полиморфизму, объектно-ориентированному проектированию и объектно-ориентированному программированию, не забывая и о классическом структурном программировании. Приведено множество полезных советов.
Книга рассчитана на широкий круг читателей, от начинающих осваивать азы программирования до опытных разработчиков.