Математика

Физика

Химия

Биология

Техника и    технологии

Как программировать на C++-Харви Дейтел Издательство БИНОМ», 2001 г. — 1152 с.
Перевод с английского
Архангельского А.Я., Бочкаревой В.В., Ильина В.Н., Капустина О.А., Козлова А.В.
Харви Дейтел, Пол Дейтел
Как программировать на C++: Третье издание. Пер. с англ. —М.: ЗАО «Издательство БИНОМ», 2001 г. — 1152 с.: ил.
Книга является руководством по программированию на языке C++. Это — одно из наиболее полных описаний последней версии C++, предназначенное как для начинающих программистов, так и для опытных пользователей, высоко оценивших предыдущее издание этой книги. В книге описаны две парадигмы программирования: процедурное программирование (поскольку C++ включает язык С) и объектно-ориентированное программирование. Авторы избрали стратегию представления С-подобного материала, включающего базисные типы данных, управляющие структуры, функции, массивы, указатели, строки и структуры, представили объектно-ориентированное программирование, посвятили самую большую главу стандартной библиотеке шаблонов (STL), шаблонным контейнерам, контейнерам последовательностей, ассоциативным контейнерам, адаптерам контейнеров, итераторам для прохождения шаблонных контейнеров. Основной особенностью нового издания является полностью реализованные практические примеры объектно-ориентированного проектирования с применением унифицированного языка моделирования — Unified Modeling Language™ (UML).
Книга написана в виде учебника (с большим количеством методических приемов) * и может быть использована в этом качестве и преподавателями, и студентами.
Все права защищены. Никакая часть этой книги не может быть воспроизведена в любой форме или любыми средствами, электронными или механическими, включая фотографирование, магнитную запись или иные средства копирования или сохранения информации без письменного разрешения издательства.
Содержание
Предисловие. . , ...................................... 15
Глава 1. Введение в компьютеры и программирование на C++ ....... . 41
1.1. Введение . . ........................... ... ...... .42
1.2. Что такое компьютер? .................... . . . . . . ... . 45
1.3. Организация компьютера...... ..'......... .'. ...... . . . .46
1.4. Эволюция операционных систем......... . . • • • • • • • • • • . * 46
1.5. Вычисления на персональном компьютере, распределенные вычисления и вычисления на платформе клиент/сервер ..... . . 47
1.6. Машинные языки, языки ассемблера и языки высокого уровня. . . 48
1.7. История Си C++.............•,...' i.................49
1.8. Стандартная библиотека C++........................ .51
1.9. Java и Java How to Program .................... . ..... 51
1.10. Другие языки высокого уровня . . ...................... 52
1.11. Структурное программирование........................ 53
1.12. Ключевые тенденции в программном обеспечении:
объектная технология.............................. 53
1.13. Общее описание типичной среды программирования на C++ . ... .56
1.14. Тенденции развития аппаратных средств ............... . . 58
1.15. История Internet.................... . .............. 59
1.16. История World Wide Web............................60
.17. Общие замечания о C++, и об этой книге..................61
.18. Введение в программирование на C++ ................... 62
.19. Простая программа: печать строки текста.. ................ 62
.20. Другая простая программа: сложение двух целых чисел.......66
.21. Концепции памяти ..........:..................... 70
1.22. Арифметика................ . . ................... 71
1.23. Принятие решений: операции проверки
на равенство и отношения................'............ 75
1.24. Размышления об объектах............................ 79
Глава 2. Управляющие структуры................................99
2.1. Введение. ......'..................,'.. . ,............. 100
2.2. Алгоритмы..................................... 101
2.3. Псевдокод. . . . . . ............................. . . . 101
2.4. Управляющие структуры.......................... ,102
2.5. Структура выбора if (ЕСЛИ).........................104
2.6. Структура выбора if/else (ЕСЛИ—ИНАЧЕ)............ ... 106
2.7. Структура повторения while (ПОКА) . . . ................110
2.8. Разработка алгоритмов: учебный пример 1
(повторение, управляемое счетчиком). .................. 112
2.9. Нисходящая разработка алгоритмов с пошаговой J детализацией: учебный пример 2
(повторение, управляемое меткой) . . . . . . . ..............115
2.10. Нисходящая разработка алгоритмов с пошаговой детализацией: учебный пример 3
(вложенные управляющие структуры) .................. 122
2.11. Операции присваивания........................... .126
2.12. Операции инкремента и декремента . . ,................. 127
2.13. Основы повторения, управляемого счетчиком..............129
2.14. Структура повторения for (ЦИКЛ)..................... 132
2.15. Пример использования структуры for................... 136
2.16. Структура множественного выбора switch................141
2.17. Структура повторения do/while..........., . . . .........147
2.18. Операторы break и continue......................... 149
2.19. Логические операции..............................151
2.20. Ошибки случайной подмены операций
проверки равенства (==) и присваивания (=) . . ............154
2.21. Заключение по1 структурному программированию.......... 156
2.22. Размышления об объектах: идентификация классов задачи. . . . 161
Глава 3. Функции. . . ..................................195
, 3.1. Введение........................................196
3.2. Программные компоненты в C++.,.................... 197
3.3. Математические библиотечные функции................. 198
3.4. Функции . . . ................: ................. . 199
3.5. Определения функций.............................200
3.6. Прототипы функций ..............................204
3.7. ' Заголовочные файлы............................. . 207
3.8. Генерация случайных чисел-. ........................ 209
3.9. Пример: азартная игра............................. 214
3.10. Классы памяти................................. . 217
3.11. .Правила, определяющие область действия. . ...............220
3.12. Рекурсия................ . . ....................224
3.13. Пример использования рекурсии:
последовательность чисел Фибоначчи.................. .227
3.14. Рекурсии или итерации . . .............. ..............230
3.15. Функции без параметров............................232
3.16. Встраиваемые функция............................ 234
3.17. Ссылки и ссылочные параметры...................... 235
3.18. Аргументы по умолчанию....... . .......... . . .......239
3.19. Унарная операция разрешения области действия .............241
3.20. Перегрузка функций.............................. 242
3.21. Шаблоны функции............................... .244
3.22. Размышления об объектах: идентификация атрибутов класса . . . 247
Глава 4. Массивы..................................... 277
4.1. Введение. . ................................ . . .... 278
4.2. Массивы................................... ... .278
4.3. Объявление массивов..............................280
4.4. Примеры использования массивов...................... 281
4.5. Передача массивов в функции......................... 295
4.6. Сортировка массивов............................. .300
4.7. Учебный пример: вычисление среднего значения,
медианы и моды с использованием массивов .............. 302
4.8. Поиск в массивах: последовательный поиск И бинарный поиск . . .306
4.9. Многомерные массивы............................. 311
4.10. Размышления об объектах: идентификация операций класса. . . 317
Глава 5. Указатели и строки......................... Л ... 341
5.1. Введение....................................... 342
5.2. Объявления и инициализация переменных-указателей,. ...... 343
5.3. Операции над указателями.......................... 344
5.4. Вызов функций по ссылке........................... 347
5.5. Использование спецификатора const с указателями . ...... ..349
5.6. Пузырьковая сортировка, использующая вызов по ссылке. . . . . 357
5.7. Выражения и арифметические действия с указателями. . . . . . . 363
5.8. Взаимосвязи между указателями и массивами............ .365
5.9. Массивы указателей.............................. .370
5.10. Учебный пример: моделирование тасования и раздачи карт.... 370
5.11. Указатели на функции............................. 375
5.12. Введение в обработку символов и строк. ............... . .380
5.12.1. Основы теории символов и строк ...................... 380
5.12.2. Функции работы со строками из библиотеки обработки строк. . .382
5.13. Размышления об объектах: взаимодействие между объектами . . 389
Глава 6. Классы и абстрагирование данных ..:................423
6.1. Введение....................................... 424
6.2. Определения структур . . . ..........................425
• 6.3. Доступ к элементам структуры ............... ..-........426
6.4. Реализация определенного пользователем типа Time
с помощью struct................................. 427
6.5. Реализация абстрактного типа данных Time с помощью class . . . 429
6.6. Область действия класса и доступ к членам класса .......... 436
6.7. Отделение интерфейса от реализации................... 437
6.8. Управление доступом к членам класса . .................441
6.9. Функции доступа и обслуживающие функции-утилиты ...... 444
6.10. Инициализация объектов класса: конструкторы . . .........447
6.11. Использование конструкторов с аргументами по умолчанию . . . 448
6.12. Использование деструкторов ......................... 452
6.13. Когда вызываются конструкторы и деструкторы ........... 453
6.14. Использование данных-членов и функций-членов...... ... . .456
6.15. Возвращение ссылки на закрытые данные-члены.......... .461
6.16. Присваивание побитовым копированием по умолчанию ...... 463
6.17. Повторное использование программного обеспечения .......,.465
6.18. Размышления об объектах: программирование классов
ппа ЪЯЛПАТГЮ imAwa
Глава 7. Классы: часть II................................ 487
7.1. Введение....................................... 488
7.2. Константные объекты и функции-члены.................488
7.3. Композиция: объекты как члены классов................ 497
7.4. Дружественные функции и дружественные классы. ......... 502
7.5. Использование указателя this........................505
7.6. Динамическое распределение памяти с помощью
операций new и delete.............................510
7.7. Статические члены класса...........................511
7.8. Абстракция данных и скрытие информации..............516
7.8.1. Пример: абстрактный тип данных «массив».............. . 617
7.8.2. Пример: абстрактный тип данных «строка»................518
7.8.3. Пример: абстрактный тип данных «очередь»...............519
7.9. Классы-контейнеры и классы-итераторы................. 519
7.10. Proxy-классы . . .................................520
7.11. Размышления об объектах: программирование классов
для модели лифта................................522
Глава 8. Перегрузка операций................ . ...........555
8.1. Введение.......................................556
8.2. Основы перегрузки операций. ........................ 557
8.3. Ограничения на перегрузку операций................... 558
8.4. Функции-операции как члены класса
и как дружественные функции ...,.;,•.......•.........560
8.5. Перегрузка операций «Поместить в поток» и «взять из потока» . . . 561
8.6. Перегрузка унарных операций........................564
8.7. Перегрузка бинарных операций....................... 565
8.8. Учебный пример: класс Array.........../............ 565
8.9. Преобразования типов-.............................. 576
8.10. Учебный пример: класс String. . ......................577
8.11. Перегрузка ++ и —............................... 588
8.12. Учебный пример: класс Date.......„................... 590
Глава 9. Наследование. . . . .............................605
9.1. Введение....................................... 606
9.2. . Наследование: базовые классы и производные классы........608
9.3. Защищенные члены класса . .................... ..... 610
9.4. Приведение типов указателей базовых классов
к указателям производных классов....................610
9.5. Использование функций-членов...................... . 616
9.6. Переопределение членов базового класса
> в производном классе ............................. . 616
9.7. Открытые, защищенные и закрытые базовые классы......."...,. 620
• 9.8. Прямые и косвенные базовые классы...................621
9.9. Использование конструкторов и деструкторов
в производных классах.............................622
9.10. Неявное преобразование объектов производных, классов
в объекты базовых классов.......................... 625
9.11. Проектирование программного обеспечения
9.12. Композиция и наследование .....'.........-..- . . ....... 628
9.13. Отношения «использует А» и «знаетА»................. 629
9.14. Учебный пример: точка, круг, цилиндр.................. 629
9.15. Множественное наследование.......... . ... .......... 636
9.16. Размышления об объектах: включение наследования
в модель лифта................................. .641
Глава 10. Виртуальные функции и полиморфизм................ 653
10.1. Введение....................................... 654
10.2. Поля типов и операторы switch....................... 654
10.3. Виртуальные функции . . ........... .'................ 655
10.4. Абстрактные базовые классы и конкретные классы ......... 656
10.5. Полиморфизм...................................657
10.6. Учебный пример: система расчета заработной платы. . ....... 659
10.7. Новые классы и динамическое связывание ...... .... .... .670
10.8. Виртуальные деструкторы................... . . . . , . . 670
10.9. Учебный пример: наследование интерфейса и реализации . .... 671
10.10. Внутренняя реализация полиморфизма,
виртуальных функций и динамического связывания в С-Н-. •. . .679
Глава 11. Потоки ввода-вывода в C++......................... 687
11.1. Введение. . . ............... . . ................... 689
11.2. Потоки....................................... .690
11.2.1. Заголовочные файлы библиотеки iostream................690
11.2.2. Классы и объекты потоков ввода-вывода ................. 691
11.3. Вывод потоков...................................692
11.3.1. Операция «поместить в поток»........................ 693
11.3.2. Сцепление операций «поместить в'поток» и «взять из потока» . . . 695
11.3.3. Вывод переменных типа char*....... .................696
11.3.4. Вывод символов с помощью функции-члена put;
сцепленные выводы...............................696
11.4. Ввод потоков.................................... 697
11.4.1. Операция «взять из потока»................... .......... 697
11.4.2. Функции-члены get и getline.........................700
11.4.3. Другие функции-члены класса istream (peek, putback, ignore) . .,.702
11.4.4. Сохранение типов данных при вводе-выводе. . ............. 703
11.5. Неформатированный ввод-вывод с использованием
read, gcount и write........... . .................. .703
11.6. Манипуляторы потоков............................ . 704
11.6.1. Манипуляторы потоков dec, oct, hex и setbase, /
задающие основание чисел........................... 704
11.6.2. Точность чисел с плавающей запятой (precision, setprecision) ... 705
11.6.3. Ширина поля (set*, width) ... . ... . . ... . . ... .... . . . . . . 705
11.6.4. Манипуляторы, определяемые пользователем.............708
11.7. Состояния формата потоков.......... .............. , . 708
11.7.1. Флаги состояний формата ................ . . . . . ..... . 708
11.7.2. Нулевые младшие разряды и десятичные точки (ios::showpoint) . ....................... .-.-. ....... 710
11.7.3. Выравнивание (ios::left, ios::right, ios::mternal). ........... 711
11.7.4. Заполнение (fill, setfill). ............................ 713
11.7.5. Основание системы счисления ' .'','.' (ios::dec, ios::oct, ios::hex, ios::showbase). ................ 715

Цена: 300руб.

Назад

Заказ

На главную страницу

Hosted by uCoz