Харви Дейтел и Пол Дейтел
Книга рассчитана на широкий круг читателей, от начинающих осваивать азы программирования до опытных разработчиков.
От себя: в сети был скан в формате .pdf (114 Мб), затем кто-то перевёл в DjVu и добавил OCR
Table of contents :
Содержание ……Page 2
Предисловие ……Page 12
Об этой книге ……Page 13
Обзор книги ……Page 18
Глава 1. Введение в компьютеры и программирование на C++ ……Page 28
1.1. Введение ……Page 29
1.2. Что такое компьютер? ……Page 32
1.3. Организация компьютера ……Page 33
1.4. Эволюция операционных систем ……Page 34
1.6. Машинные языки, языки ассемблера и языки высокого уровня ……Page 35
1.7. История C++ ……Page 37
1.8. Библиотеки классов C++ и стандартная библиотека С ……Page 38
1.9. Параллельный C++ ……Page 39
1.11. Структурное программирование ……Page 40
1.12. Общее описание типичной среды программирования на C++ ……Page 41
1.13. Общие замечания о C++ и об этой книге ……Page 44
1.15. Простая программа: печать строки текста ……Page 45
1.16. Другая простая программа: сложение двух целых чисел ……Page 49
1.17. Концепции памяти ……Page 53
1.18. Арифметика ……Page 54
1.19. Принятие решений: операции проверки на равенство и отношения ……Page 58
1.20. Размышления об объектах ……Page 62
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по мобильности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 64
Глава 2. Управляющие структуры ……Page 84
2.3. Псевдокод ……Page 86
2.4. Управляющие структуры ……Page 87
2.5. Структура выбора if (ЕСЛИ) ……Page 90
2.6. Структура выбора if/else (ЕСЛИ-ИНАЧЕ) ……Page 91
2.7. Структура повторения while (ПОКА.) ……Page 96
2.8. Разработка алгоритмов: учебный пример 1 (повторение, управляемое счетчиком) ……Page 97
2.9. Нисходящая разработка алгоритмов с пошаговой детализацией: учебный пример 2 (повторение, управляемое меткой) ……Page 99
2.10. Нисходящая разработка алгоритмов с пошаговой детализацией: учебный пример 3 (вложенные управляющие структуры) ……Page 106
2.11. Операции присваивания ……Page 110
2.12. Операции инкремента и декремента ……Page 111
2.13. Основы повторения, управляемого счетчиком ……Page 113
2.14. Структура повторения for (ЦИКЛ) ……Page 116
2.15. Пример использования структуры for ……Page 119
2.16. Структура множественного выбора switch ……Page 124
2.17. Структура повторения do/while ……Page 130
2.18. Операторы break и continue ……Page 132
2.19. Логические операции ……Page 134
2.20. Ошибки случайной подмены операций проверки равенства (==) и присваивания (=) ……Page 136
2.21. Заключение по структурному программированию ……Page 138
2.22. Размышления об объектах: идентификация объектов задачи ……Page 144
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по мобильности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 146
Глава 3. Функции ……Page 174
3.1. Введение ……Page 175
3.2. Программные модули в C++ ……Page 176
3.3. Математические библиотечные функции ……Page 177
3.4. Функции ……Page 178
3.5. Определения функций ……Page 179
3.6. Прототипы функций ……Page 184
3.8. Генерация случайных чисел ……Page 186
3.9. Пример: азартная игра ……Page 192
3.10. Классы памяти ……Page 195
3.11. Правила, определяющие область действия ……Page 198
3.12. Рекурсия ……Page 202
3.13. Пример использования рекурсии: последовательность чисел Фибоначчи ……Page 205
3.14. Рекурсии или итерации ……Page 208
3.15. Функции с пустыми списками параметров ……Page 210
3.16. Встраиваемые функции ……Page 211
3.17. Ссылки и ссылочные параметры ……Page 213
3.18. Аргументы по умолчанию ……Page 216
3.19. Унарная операция разрешения области действия ……Page 218
3.20. Перегрузка функций ……Page 219
3.21. Шаблоны функции ……Page 221
3.22. Размышления об объектах: идентификация атрибутов объектов ……Page 223
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по мобильности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 225
Глава 4. Массивы ……Page 256
4.1. Введение ……Page 257
4.2. Массивы ……Page 258
4.4. Примеры использования массивов ……Page 260
4.5. Передача массивов в функции ……Page 273
4.6. Сортировка массивов ……Page 277
4.7. Учебный пример: вычисление среднего значения, медианы и моды с использованием массивов ……Page 279
4.8. Поиск в массивах: линейный поиск и двоичный поиск ……Page 282
4.9. Многомерные массивы ……Page 287
4.10. Размышления об объектах: идентификация поведений объектов ……Page 294
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по мобильности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения • Упражнения на рекурсию ……Page 295
Глава 5. Указатели и строки ……Page 317
5.1. Введение ……Page 318
5.2. Объявления и инициализация переменных указателей ……Page 319
5.3. Операции над указателями ……Page 320
5.4. Вызов функций по ссылке ……Page 322
5.5. Использование спецификатора const с указателями ……Page 326
5.6. Пузырьковая сортировка, использующая вызов по ссылке ……Page 332
5.7. Выражения и арифметические действия с указателями ……Page 336
5.8. Взаимосвязи между указателями и массивами ……Page 340
5.9. Массивы указателей ……Page 344
5.10. Учебный пример: моделирование тасования и раздачи карт ……Page 345
5.11. Указатели на функции ……Page 350
5.12. Введение в обработку символов и строк ……Page 354
5.13. Размышления об объектах: взаимодействие объектов ……Page 363
Резюме • Терминология • Типичные ошибки программирования • Хороший • стиль программирования • Советы по повышению эффективности • Замечания по мобильности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения • Специальный раздел: построение вашего собственного компьютера Дополнительные упражнения на указатели • Упражнения на работу со строками • Специальный раздел: упражнения повышенной сложности на работу со строками • Головоломный проект работы со строками ……Page 365
Глава 6. Классы и абстрагирование данных ……Page 400
6.1. Введение ……Page 401
6.3. Доступ к элементам структуры ……Page 403
6.4. Использование определенного пользователем типа Time с помощью Struct ……Page 404
6.5. Использование абстрактного типа данных Time с помощью класса ……Page 406
6.6. Область действия класс и доступ к элементам класса ……Page 413
6.7. Отделение интерфейса от реализации ……Page 414
6.8. Управление доступом к элементам ……Page 418
6.9. Функции доступа и обслуживающие функции-утилиты ……Page 421
6.11. Использование конструкторов с аргументами по умолчанию ……Page 424
6.13. Когда вызываются конструкторы и деструкторы ……Page 428
6.14. Использование данных-элементов и функций-элементов ……Page 431
6.15. Тонкий момент: возвращение ссылки на закрытые данные-элементы ……Page 436
6.16. Присваивание побитовым копированием по умолчанию ……Page 438
6.18. Размышления об объектах: программирование классов для моделирования лифта ……Page 440
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 441
Глава 7. Классы: часть II ……Page 454
7.1. Введение ……Page 455
7.2. Константные объекты и функции-элементы ……Page 456
7.3. Композиция: классы как элементы других классов ……Page 462
7.4. Дружественные функции и дружественные классы ……Page 466
7.5. Использование указателя this ……Page 469
7.6. Динамическое распределение памяти с помощью операций new и delete ……Page 474
7.7. Статические элементы класса ……Page 475
7.8. Абстракция данных и скрытие информации ……Page 480
7.10. Размышления об объектах: использование композиции и динамического управления объектом в модели лифта ……Page 484
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 485
Глава 8. Перегрузка операций ……Page 492
8.1. Введение ……Page 493
8.2. Основы перегрузки операций ……Page 494
8.3. Ограничения на перегрузку операции ……Page 496
8.4. Функции-операции как элементы класса и как дружественные функции ……Page 497
8.5. Перегрузка операций поместить в поток и взять из потока ……Page 499
8.6. Перегрузка унарных операций ……Page 501
8.7. Перегрузка бинарных операций ……Page 502
8.8. Учебный пример: класс массив ……Page 503
8.9. Преобразования типов ……Page 514
8.10. Учебный пример: класс строка ……Page 515
8.11. Перегрузка ++ и — ……Page 526
8.12. Учебный пример: класс дата ……Page 527
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы, по повышению эффективности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 532
Глава 9. Наследование ……Page 545
9.1. Введение ……Page 546
9.2. Базовые классы и производные классы ……Page 548
9.4. Приведение типов указателей базовых классов к указателям производных классов ……Page 550
9.6. Переопределение элементов базового класса в производном классе ……Page 556
9.7. Открытые, защищенные и закрытые базовые классы ……Page 560
9.9. Использование конструкторов и деструкторов в производных классах ……Page 562
9.10. Неявное преобразование объектов производных классов в объекты базовых классов ……Page 565
9.11. Проектирование программного обеспечения с помощью наследования ……Page 567
9.12. Композиция и наследование ……Page 568
9.14. Учебный пример: точка, круг, цилиндр ……Page 569
9.15. Множественное наследование ……Page 574
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 581
Глава 10. Виртуальные функции и полиморфизм ……Page 589
10.1. Введение ……Page 590
10.3. Виртуальные функции ……Page 591
10.4. Абстрактные базовые классы и конкретные классы ……Page 593
10.5. Полиморфизм ……Page 594
10.6. Учебный пример : система расчета заработной платы ……Page 596
10.7. Новые классы и динамическое связывание ……Page 606
10.8. Виртуальные деструкторы ……Page 607
10.9. Учебный пример : интерфейс наследования и его реализация ……Page 608
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 615
Глава 11. Потоки ввода-вывода в C++ ……Page 622
11.1. Введение ……Page 624
11.2. Потоки ……Page 625
11.3. Вывод потоков ……Page 628
11.4. Ввод потоков ……Page 632
11.5. Неформатированный ввод-вывод с использованием read, gcount и write ……Page 638
11.6. Манипуляторы потоков ……Page 639
11.7. Состояния формата потоков ……Page 643
11.8. Состояния ошибок потока ……Page 653
11.9. Ввод-вывод определенных пользователем типов данных ……Page 654
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 657
Глава 12. Шаблоны ……Page 675
12.1. Введение ……Page 676
12.2. Шаблоны функций ……Page 677
12.3. Перегрузка шаблонных функций ……Page 680
12.4. Шаблоны классов ……Page 681
12.5. Шаблоны классов и нетиповые параметры ……Page 686
12.7. Шаблоны и друзья ……Page 687
Резюме • Терминология • Типичные ошибки программирования • Советы по повышению эффективности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 688
Глава 13. Обработка исключений ……Page 695
13.1. Введение ……Page 696
13.3. Другие методы обработки ошибок ……Page 700
13.4. Основы обработки исключений в C++ ……Page 701
13.5. Простой пример обработки исключений: деление на нуль ……Page 702
13.7. Генерация исключений ……Page 705
13.8. Перехват исключений ……Page 706
13.9. Повторная генерация исключений ……Page 710
13.11. Спецификация исключений ……Page 711
13.12. Обработка непредусмотренных исключений ……Page 712
13.13. Конструкторы, деструкторы и обработка исключений ……Page 713
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по мобильности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 714
Глава 14. Обработка файлов и ввод-вывод потоков строк ……Page 728
14.1. Введение ……Page 729
14.2. Иерархия данных ……Page 730
14.3. Файлы и потоки ……Page 732
14.1. Создание файла последовательного доступа ……Page 733
14.5. Чтение данных из файла последовательного доступа ……Page 737
14.6. Обновление файлов последовательного достуна ……Page 741
14.7. Файлы произвольного доступа ……Page 742
14.8. Создание файла произвольного доступа ……Page 744
14.9. Произвольная запись данных в файл произвольного доступа ……Page 745
14.10. Последовательное чтение данных из файла произвольного доступа ……Page 747
14.11. Пример: программа обработки запросов ……Page 749
14.12. Обработка потоков строк ……Page 754
14.13. Ввод-вывод объектов ……Page 758
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 759
Глава 15. Структуры данных ……Page 771
15.1. Введение ……Page 772
15.2. Классы с самоадресацией ……Page 773
15.3. Динамическое выделение памяти ……Page 774
15.4. Связные списки ……Page 776
15.5. Стеки ……Page 789
15.6. Очереди ……Page 794
15.7. Деревья ……Page 797
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по мобильности • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения • Специальный раздел: создание вашего собственного компилятора ……Page 804
Глава 16. Биты, символы, строки и структуры ……Page 837
16.1. Введение ……Page 838
16.2. Описание структур ……Page 839
16.3. Инициализация структур ……Page 841
16.5. Создание синонимов ……Page 842
16.6. Пример: эффективное моделирование тасования и раздачи карт ……Page 843
16.7. Поразрядные операции ……Page 845
16.8. Битовые поля ……Page 853
16.9. Библиотека обработки символов ……Page 856
16.10. Функции преобразования строк ……Page 862
16.11. Функции поиска из библиотеки обработки строк ……Page 866
16.12. Функции работы с памятью из библиотеки обработки строк ……Page 871
16.13. Другие функции библиотеки обработки строк ……Page 874
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по мобильности • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 875
Глава 17. Препроцессор ……Page 892
17.1. Введение ……Page 893
17.3. Директива препроцессора #define: символические константы ……Page 894
17.4. Директива препроцессора #define: макросы ……Page 895
17.5. Условная компиляция ……Page 897
17.7. Операции # и ## ……Page 899
17.9. Предопределенные символические константы ……Page 900
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 901
Глава 18. Другие темы ……Page 907
18.1. Введение ……Page 908
18.2. Переназначение ввода-вывода в системах UNIX и DOS ……Page 909
18.3. Список параметров переменной длины ……Page 910
18.5. Замечания по компиляции программ, состоящих из нескольких исходных файлов ……Page 912
18.6. Завершение программы при помощи функций exit и atexit ……Page 915
18.7. Спецификатор типа volatile ……Page 916
18.9. Обработка сигналов ……Page 917
18.10. Динамическое выделение памяти: функции calloc и realloc ……Page 920
18.11. Безусловный переход: оператор goto ……Page 921
18.12. Объединения ……Page 922
18.13. Спецификации связывания ……Page 926
Резюме • Терминология • Типичные ошибки программирования • Советы по повышению эффективности • Замечания по мобильности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 927
Приложение А. Стандартная библиотека ……Page 936
Приложение Б. Таблица приоритета операций ……Page 975
Приложение В. Набор символов ASCII ……Page 976
Приложение Г. Системы счисления ……Page 977
Г. 1. Введение ……Page 978
Г. 2. Сокращенная запись двоичных чисел в восьмеричной и шестнадцатеричной системах счисления ……Page 981
Г. 4. Преобразование двоичных, восьмеричных и шестнадцатеричных чисел в десятичные ……Page 983
Г. 5. Преобразование десятичных чисел в двоичные, восьмеричные и шестнадцатеричные ……Page 984
Г. 6. Представление отрицательных двоичных чисел: дополнение до двух ……Page 985
Резюме • Терминология • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения ……Page 986
Предметный указатель ……Page 993
Reviews
There are no reviews yet.