Как программировать на C++

Free Download

Authors:

Edition: 3

ISBN: 5-7989-0229-3

Size: 144 MB (151317033 bytes)

Pages: 1152/1152

File format:

Language:

Publishing Year:

Category: Tags: , ,

Харви Дейтел, Пол Дейтел5-7989-0229-3

Книга является руководством по программированию на языке С++. Это – одно из наиболееполных описаний последней версии С++, предназначенное как для начинающих программистов, так и для опытных пользователей, высокооценивших предыдущее издание этой книги. В книге описаны две парадигмы программирования: процедурное программирование (поскольку С++ включает язык С) и объектно-ориентированное программирование. Авторы избрали стратегию представления С-подобного материала, включающего базисные типы данных, управляющие структуры, функции, массивы, указатели, строки и структуры, представили объектно-ориентированное программирование, посвятили самую большую главу стандартной библиотеке шаблонов (STL), шаблонным контейнерам, контейнерам последовательностей, ассоциативным контейнерам, адаптерам контейнеров, итераторам для прохождения шаблонных контейнеров. Основной особенностью нового издания является полностью реализованные практические примеры объектно-ориентированного проектирования с применением унифицированного языка моделирования – Unifed Modeling Language (UML).
Книга написана в виде учебника (с большим количеством методических приемов) и может быть использована в этом качестве и преподавателями, и студентами.

Table of contents :
Содержание……Page 5
Предисловие 15……Page 15
Глава 1. Введение в компьютеры и программирование на C++ 41……Page 41
1.1. Введение 42……Page 42
1.2. Что такое компьютер? 45……Page 45
1.4. Эволюция операционных систем 46……Page 46
1.5. Вычисления на персональном компьютере, распределенные
вычисления и вычисления на платформе клиент/сервер 47……Page 47
1.6. Машинные языки, языки ассемблера и языки высокого уровня 48……Page 48
1.7. История С и C++ 49……Page 49
1.9. Java и Java How to Program 51……Page 51
1.10. Другие языки высокого уровня 52……Page 52
1.12. Ключевые тенденции в программном обеспечении:
объектная технология 53……Page 53
1.13. Общее описание типичной среды программирования на C++ 56……Page 56
1.14. Тенденции развития аппаратных средств 58……Page 58
1.15. История Internet 59……Page 59
1.16. История World Wide Web 60……Page 60
1.17. Общие замечания о C++и об этой книге 61……Page 61
1.19. Простая программа: печать строки текста 62……Page 62
1.20. Другая простая программа: сложение двух целых чисел 66……Page 66
1.21. Концепции памяти 70……Page 70
1.22. Арифметика 71……Page 71
1.23. Принятие решений: операции проверки на равенство и отношения 75……Page 75
1.24. Размышления об объектах 79……Page 79
Глава 2. Управляющие структуры 99……Page 99
2.1. Введение 100……Page 100
2.3. Псевдокод 101……Page 101
2.4. Управляющие структуры 102……Page 102
2.5. Структура выбора if (ЕСЛИ) 104……Page 104
2.6. Структура выбора if/else (ЕСЛИ—ИНАЧЕ) 106……Page 106
2.7. Структура повторения while (ПОКА) 110……Page 110
2.8. Разработка алгоритмов: учебный пример 1
(повторение, управляемое счетчиком) 112……Page 112
2.9. Нисходящая разработка алгоритмов с пошаговой детализацией: учебный пример 2 (повторение, управляемое меткой) 115……Page 115
2.10. Нисходящая разработка алгоритмов с пошаговой
детализацией: учебный пример-3
(вложенные управляющие структуры) 122……Page 122
2.11. Операции присваивания 126……Page 126
2.12. Операции инкремента и декремента 127……Page 127
2.13. Основы повторения, управляемого счетчиком 129……Page 129
2.14. Структура повторения for (ЦИКЛ) 132……Page 132
2.15. Пример использования структуры for 136……Page 136
2.16. Структура множественного выбора switch 141……Page 141
2.17. Структура повторения do/while 147……Page 147
2.18. Операторы break и continue 149……Page 149
2.19. Логические операции 151……Page 151
2.20. Ошибки случайной подмены операций
проверки равенства (==) и присваивания (=) 154……Page 154
2.21. Заключение по структурному программированию 156……Page 156
2.22. Размышления об объектах: идентификация классов задачи 161……Page 161
Глава 3. функции 195……Page 195
3.1. Введение 196……Page 196
3.2. Программные компоненты в C++ 197……Page 197
3.3. Математические библиотечные функции 198……Page 198
3.4. Функции 199……Page 199
3.5. Определения функций 200……Page 200
3.6. Прототипы функций 204……Page 204
3.7. Заголовочные файлы 207……Page 207
3.8. Генерация случайных чисел 209……Page 209
3.9. Пример: азартная игра 214……Page 214
3.10. Классы памяти 217……Page 217
3.11. Правила, определяющие область действия 220……Page 220
3.12. Рекурсия 224……Page 224
3.13. Пример использования рекурсии:
последовательность чисел Фибоначчи 227……Page 227
3.14. Рекурсии или итерации 230……Page 230
3.15. Функции без параметров 232……Page 232
3.16. Встраиваемые функции 234……Page 234
3.17. Ссылки и ссылочные параметры 235……Page 235
3.18. Аргументы по умолчанию 239……Page 239
3.19. Унарная операция разрешения области действия 241……Page 241
3.20. Перегрузка функций 242……Page 242
3.21. Шаблоны функции 244……Page 244
3.22. Размышления об объектах: идентификация атрибутов класса 247……Page 247
Глава 4. Массивы 277……Page 277
4.2. Массивы 278……Page 278
4.3. Объявление массивов 280……Page 280
4.4. Примеры использования массивов 281……Page 281
4.5. Передача массивов в функции 295……Page 295
4.6. Сортировка массивов 300……Page 300
4.7. Учебный пример; вычисление среднего значения,
медианы и моды с использованием массивов 302……Page 302
4.8. Поиск в массивах: последовательный поиск и бинарный поиск 306……Page 306
4.9. Многомерные массивы 311……Page 311
4.10. Размышления об объектах: идентификация операций класса 317……Page 317
Глава 5. Указатели и строки 341……Page 341
5.1. Введение 342……Page 342
5.2. Объявления и инициализация переменных-указателей 343……Page 343
5.3. Операции над указателями 344……Page 344
5.4. Вызов функций по ссылке 347……Page 347
5.5. Использование спецификатора const с указателями 349……Page 349
5.6. Пузырьковая сортировка, использующая вызов по ссылке 357……Page 357
5.7. Выражения и арифметические действия с указателями 363……Page 363
5.8. Взаимосвязи между указателями и массивами 365……Page 365
5.10. Учебный пример: моделирование тасования и раздачи карт 370……Page 370
5.11. Указатели на функции 375……Page 375
5.12.1. Основы теории символов и строк 380……Page 380
5.12.2. Функции работы со строками из библиотеки обработки строк 382……Page 382
5.13. Размышления об объектах: взаимодействие между объектами 389……Page 389
Глава 6. Классы и абстрагирование данных 423……Page 423
6.1. Введение 424……Page 424
6.2. Определения структур 425……Page 425
6.3. Доступ к элементам структуры 426……Page 426
6.4. Реализация определенного пользователем типа Time
с помощью struct 427……Page 427
6.5. Реализация абстрактного типа данных Time с помощью class 429……Page 429
6.6. Область действия класса и доступ к членам класса 436……Page 436
6.7. Отделение интерфейса от реализации 437……Page 437
6.8. Управление доступом к членам класса 441……Page 441
6.9. Функции доступа и обслуживающие функции-утилиты 444……Page 444
6.10. Инициализация объектов класса: конструкторы 447……Page 447
6.11. Использование конструкторов с аргументами по умолчанию 448……Page 448
6.12. Использование деструкторов 452……Page 452
6.13. Когда вызываются конструкторы и деструкторы 453……Page 453
6.14. Использование данных-членов и функций-членов 456……Page 456
6.15. Возвращение ссылки на закрытые данные-члены 461……Page 461
6.16. Присваивание побитовым копированием по умолчанию 463……Page 463
6.18. Размышления об объектах: программирование классов
для модели лифта 465……Page 465
Глава 7. Классы; часть II 487……Page 487
7.2. Константные объекты и функции-члены 488……Page 488
7.3. Композиция: объекты как члены классов 497……Page 497
7.4. Дружественные функции и дружественные классы 502……Page 502
7.5. Использование указателя this 505……Page 505
7.6. Динамическое распределение памяти с помощью
операций new и delete 510……Page 510
7.7. Статические члены класса 511……Page 511
7.8. Абстракция данных и скрытие информации 516……Page 516
7.9. Классы-контейнеры и классы-итераторы 519……Page 519
7.10. Proxy-классы 520……Page 520
7.11. Размышления об объектах; программирование классов
для модели лифта 522……Page 522
Глава 8. Перегрузка операций 555……Page 555
8.1. Введение 556……Page 556
8.2. Основы перегрузки операций 557……Page 557
8.3. Ограничения на перегрузку операций 558……Page 558
8.4. Функции-операции как члены класса
и как дружественные функции 560……Page 560
8.5. Перегрузка операций «поместить в поток» и «взять из потока» 561……Page 561
8.6. Перегрузка унарных операций 564……Page 564
8.8. Учебный пример: класс Array 565……Page 565
8.9. Преобразования типов 576……Page 576
8.10. Учебный пример: класс String 577……Page 577
8.11. Перегрузка++и— 588……Page 588
8.12. Учебный пример; класс Date 590……Page 590
Глава 9. Наследование 605……Page 605
9.1. Введение 606……Page 606
9.2. Наследование: базовые классы и производные классы 608……Page 608
9.4. Приведение типов указателей базовых классов
к указателям производных классов 610……Page 610
9.6. Переопределение членов базового класса
в производном классе 616……Page 616
9.7. Открытые, защищенные и закрытые базовые классы 620……Page 620
9.8. Прямые и косвенные базовые классы 621……Page 621
9.9. Использование конструкторов и деструкторов
в производных классах 622……Page 622
9.10. Неявное преобразование объектов производных классов
в объекты базовых классов 625……Page 625
9.11. Проектирование программного обеспечения с помощью наследования 627……Page 627
9.12. Композиция и наследование : 628……Page 628
9.14. Учебный пример: точка, круг, цилиндр 629……Page 629
9.15. Множественное наследование 636……Page 636
9.16. Размышления об объектах: включение наследования
в модель лифта 641……Page 641
Глава 10. Виртуальные функции и полиморфизм 653……Page 653
10.2. Поля типов и операторы switch 654……Page 654
10.3. Виртуальные функции 655……Page 655
10.4. Абстрактные базовые классы и конкретные классы 656……Page 656
10.5. Полиморфизм 657……Page 657
10.6. Учебный пример: система расчета заработной платы 659……Page 659
10.8. Виртуальные деструкторы 670……Page 670
10.9. Учебный пример: наследование интерфейса и реализации 671……Page 671
10.10. Внутренняя реализация полиморфизма, виртуальных функций и динамического связывания в C++ 679……Page 679
Глава 11. Потоки ввода-вывода в C++ 687……Page 687
11.1. Введение 689……Page 689
11.2. Потоки 690……Page 690
11.3. Вывод потоков 692……Page 692
11.4. Ввод потоков 697……Page 697
11.5. Неформатированный ввод-вывод с использованием
read, gcount и write 703……Page 703
11.6. Манипуляторы потоков 704……Page 704
11.7. Состояния формата потоков 708……Page 708
11.8. Состояния ошибок потока 719……Page 719
11.9. Связывание выходного потока с входным потоком 721……Page 721
Глава 12. Шаблоны 733……Page 733
12.1. Введение ‘734……Page 734
12.2. Шаблоны функций 735……Page 735
12.3. Перегрузка шаблонных функций 738……Page 738
12.4. Шаблоны классов 739……Page 739
12.5. Шаблоны классов и нетиповые параметры 744……Page 744
12.7. Шаблоны и друзья 745……Page 745
12.8. Шаблоны и статические члены 746……Page 746
Глава 13. Обработка исключений 751……Page 751
13.1. Введение 752……Page 752
13.3. Другие методы обработки ошибок 755……Page 755
13.4. Основы обработки исключений в C++ 756……Page 756
13.5. Простой пример обработки исключений: деление на нуль 757……Page 757
13.6. Генерация исключений 759……Page 759
13.7. Перехватывание исключений 761……Page 761
13.8. Повторная генерация исключений 765……Page 765
13.9. Спецификации исключений 766……Page 766
13.11. «Раскручивание* стека 767……Page 767
13.12. Конструкторы, деструкторы и обработка исключений 769……Page 769
13.14. Обработка неуспешного выполнения new 770……Page 770
13.15. Класс auto_ptr и динамическое выделение памяти 774……Page 774
13.16. Иерархия исключений стандартной библиотеки 776……Page 776
Глава 14. Обработка файлов 787……Page 787
14.2. Иерархия данных 788……Page 788
14.3. Файлы и потоки 790……Page 790
14.4. Создание файла последовательного доступа 791……Page 791
14.5. Чтение данных из файла последовательного доступа 795……Page 795
14.6. Обновление файлов последовательного доступа 801……Page 801
14.7. Файлы произвольного доступа 802……Page 802
14.8. Создание файла произвольного доступа 803……Page 803
14.9. Произвольная запись данных в файл произвольного доступа 805……Page 805
14.10. Последовательное чтение данных из файла
произвольного доступа 807……Page 807
14.11. Пример: программа обработки запросов 809……Page 809
14.12. Ввод-вывод объектов 814……Page 814
Глава 15. Структуры данных 823……Page 823
15.1. Введение 824……Page 824
15.2. Классы с самоадресацией 825……Page 825
15.3. Динамическое выделение памяти 826……Page 826
15.4. Связные списки 827……Page 827
15.5. Стеки 840……Page 840
15.6. Очереди : 844……Page 844
15.7. Деревья 847……Page 847
Глава 16. Биты, символы, строки и структуры 879……Page 879
16.2. Описание структур 880……Page 880
16.5. typedef 883……Page 883
16.6. Пример: эффективное моделирование
тасования и раздачи карт 884……Page 884
16.7. Поразрядные операции 887……Page 887
16.8. Битовые поля 896……Page 896
16.9. Библиотека обработки символов 899……Page 899
16.10. Функции преобразования строк 905……Page 905
16.11. Функции поиска из библиотеки обработки строк 909……Page 909
16.12. Функции работы с памятью из библиотеки обработки строк 914……Page 914
16.13. Другие функции библиотеки обработки строк 918……Page 918
Глава 17. Препроцессор 931……Page 931
17.2. Директива препроцессора#include 932……Page 932
17.3. Директива препроцессора #define: символические константы 933……Page 933
17.4. Директива препроцессора #define: макросы 934……Page 934
17.5. Условная компиляция 936……Page 936
17.6. Директивы препроцессора #error и #pragma 937……Page 937
17.9. Предопределенные символические константы 938……Page 938
17.10. Макрос assert 939……Page 939
Глава 18. Темы, относящиеся к коду, унаследованному из С 945……Page 945
18.2. Переназначение ввода-вывода в системах UNIX и DOS 946……Page 946
18.3. Список параметров переменной длины 947……Page 947
18.4. Использование аргументов командной строки 949……Page 949
18.5. Замечания по компиляции программ,
состоящих из нескольких исходных файлов 951……Page 951
18.6. Завершение программы при помощи функций exit и atexit 953……Page 953
18.9. Обработка сигналов 955……Page 955
18.11. Безусловный переход: оператор goto 958……Page 958
18.12. Объединения 960……Page 960
18.13. Спецификации связывания 963……Page 963
Глава 19. Класс string и потоковая обработка строк 971……Page 971
19.1. Введение 972……Page 972
19.2. Присваивание и конкатенация строк 973……Page 973
19.3. Сравнение строк 976……Page 976
19.4. Подстроки 978……Page 978
19.5. Перестановка строк 979……Page 979
19.6. String’-xapaKTepncTHKH, 980……Page 980
19.7. Поиск символов в строке 982……Page 982
19.8. Замена символов в строке 984……Page 984
19.9. Вставка символов в строку 986……Page 986
19.10. Преобразование в строки char * стиля С 987……Page 987
19.11. Итераторы 989……Page 989
19.12. Потоковая обработка строк 990……Page 990
Глава 20. Стандартная библиотека шаблонов (STL) 999……Page 999
20.1. Введение в стандартную библиотеку шаблонов 1001……Page 1001
20.2. Контейнеры последовательностей 1014……Page 1014
20.3. Ассоциативные контейнеры 1028……Page 1028
20.4. Адаптеры контейнеров 1037……Page 1037
20.5. Алгоритмы 1042……Page 1042
20.6. Класс bitset 1076……Page 1076
20.7. Объекты-функции 1079……Page 1079
Глава 21. Дополнения к стандартному языку C++ 1093……Page 1093
21.2. Тип данных bool 1094……Page 1094
21.3. Оператор static_cast 1096……Page 1096
21.4. Оператор const_cast 1098……Page 1098
21.5. Оператор reinterpret^cast 1099……Page 1099
21.6. Пространства имен 1100……Page 1100
21.7. Информация о типе во время выполнения (RTTI) 1104……Page 1104
21.8. Ключевые слова-операторы 1108……Page 1108
21.9. Конструктор explicit 1109……Page 1109
21.10. mutable-члены класса 1114……Page 1114
21.11. Указатели на члены класса (.* и —>*) 1116……Page 1116
21.12. Множественное наследование и виртуальные базовые классы. 1118……Page 1118
21.13. Заключительные замечания : 1122……Page 1122
Приложение А. Таблица приоритетов и ассоциативности операций 1129……Page 1129
Приложение Б. Набор символов ASCII 1130……Page 1130
Приложение В. Системы счисления 1131……Page 1131
B.1. Введение 1132……Page 1132
B.2. Сокращенная запись двоичных чисел в восьмеричной и шестнадцатеричной системах счисления 1135……Page 1135
B.4. Преобразование двоичных, восьмеричных и шестнадцатеричных чисел в десятичные 1137……Page 1137
B.5. Преобразование десятичных чисел в двоичные, восьмеричные и шестнадцатеричные 1138……Page 1138
B.6. Представление отрицательных двоичных чисел:
дополнение до двух 1139……Page 1139
Г.1. Ресурсы 1145……Page 1145
Г.2. Учебные материалы 1146……Page 1146
Г.5. сотр.lang.с++ 1147……Page 1147
Г.6. Компиляторы 1149……Page 1149
Г.8. Стандартная библиотека шаблонов 1150……Page 1150

Reviews

There are no reviews yet.

Be the first to review “Как программировать на C++”
Shopping Cart
Scroll to Top