Язык программирования C++. Лекции и упражнения.
Стивен Прата
В новом издании популярной книги известного автора и специалиста по C++ рассматривается устоявшаяся версия языка, соответствующая стандарту ISO/ANSI. Изложение материала не привязано ни к какой конкретной реализации C++. В основе изложения материала лежит оригинальная методика, разработанная автором и неоднократно проверенная на различных группах пользователей. Книга охватывает обширный круг вопросов, необходимых для создания полноценных программ на C++, от знакомства с основами синтаксиса языка до многочисленных новых функциональных возможностей C++, таких как классы, объекты, наследование, полиморфизм, виртуальные функции, стандартная библиотека шаблонов STL, RTTI и других.
Практические задания к главам книги составлены на основе реальных проектов. Издание рассчитано на пользователей с любым уровнем подготовки. Для начинающих эта книга послужит превосходным учебником, а опытные программисты смогут воспользоваться ею в качестве справочника, облегчающего их ежедневный труд.
Книгу можно рекомендовать как методическое пособие преподавателям высших и средних учебных заведений, а также в качестве учебника для студентов.
Издательство: ДиаСофтЮП, 2005 г.
ISBN 5-93772-123-3, 5-8459-1127-3, 0-672-32697-3
Количество страниц: 1104.
Содержание книги «Язык программирования C++. Лекции и упражнения.»:
- 15Предисловие
- 25 Глава 1. Начальные сведения
- 26 Изучение языка C++
- 27 Немного истории
- 27 Язык C
- 28 Философия программирования, заложенная в языке С
- 29 Объектно-ориентированное программирование
- 30 Обобщенное программирование
- 31 Язык C++
- 32 Переносимость и стандарты
- 34 Методика создания программ
- 35 Создание исходного кода
- 36 Компиляция и компоновка
- 41 Соглашения, используемые в этой книге
- 42 Наша система
- 44 Глава 2. Приступаем к изучению языка С++
- 44 Начальные сведения о языке C++
- 46 Функция main()
- 49 Комментарии в языке C++
- 50 Препроцессор C++ и файл iostream
- 51 Имена заголовочных файлов
- 52 Пространства имен
- 53 Вывод данных в языке C++ с использованием объекта cout
- 56 Форматирование исходного кода C++
- 57 Стиль форматирования исходного кода программ на C++
- 58 Дополнительные сведения об операторах языка C++
- 59 Операторы объявления и переменные
- 60 Оператор присваивания
- 61 Важный момент, связанный с объектом cout
- 62 Еще несколько операторов языка С++
- 62 Применение объекта cin
- 63 И снова объект cout
- 63 Несколько слов о классах
- 65 Функции
- 65 Применение функций с возвращаемым значением
- 69 Разновидности функций
- 70 Функции, определяемые пользователем
- 73 Определяемая пользователем функция с возвращаемым значением
- 76 Основные сведения об операторах
- 76 Резюме
- 77 Вопросы для повторения
- 77 Упражнения по программированию
- 44 Начальные сведения о языке C++
- 79 Глава 3. Представление данных
- 80 Простые переменные
- 80 Имена переменных
- 82 Целочисленные типы данных
- 83 Типы данных short int и long
- 88 Типы данных без знака
- 90 Какой тип выбрать?
- 91 Целочисленные константы
- 92 Определение типа константы в языке C++
- 93 Тип данных char: символы и малые целые числа
- 99 Универсальные имена символов
- 101 Новый тип данных bool
- 102 Квалификатор const
- 103 Числа с плавающей точкой
- 104 Запись чисел с плавающей точкой
- 105 Типы данных с плавающей точкой
- 108 Константы с плавающей точкой
- 109 Преимущества и недостатки типов данных с плавающей точкой
- 110 Арифметические операции языка C++
- 111 Приоритет операций и ассоциативность
- 112 Разновидности операции деления
- 114 Операция деления по модулю
- 115 Преобразования типов данных
- 117 Преобразования данных в выражениях
- 121 Резюме
- 122 Вопросы для повторения
- 123 Упражнения по программированию
- 80 Простые переменные
- 124 Глава 4. Составные типы данных
- 125 Краткий обзор массивов
- 128 Правила инициализации массивов
- 129 Строки
- 131 Конкатенация строк
- 131 Использование строк в массиве
- 138 Смешанный ввод строк и чисел
- 139 Краткий обзор структур
- 144 Другие свойства структур
- 145 Массивы структур
- 146 Битовые поля
- 147 Объединения
- 148 Перечисления
- 150 Установка значений перечислителей
- 150 Диапазоны значений для перечислений
- 151 Указатели и свободная память
- 154 Объявление и инициализация указателей
- 157 Указатели и числа
- 158 Выделение памяти с помощью оператора new
- 160 Высвобождение памяти с помощью оператора delete
- 161 Использование оператора new для создания динамических массивов
- 165 Указатели, массивы и арифметика указателей
- 170 Указатели и строки
- 175 Использование оператора new для создания динамических структур
- 179 Автоматическое, статическое и динамическое выделение памяти
- 179 Автоматические переменные
- 181 Резюме
- 182 Вопросы для повторения
- 183 Упражнения по программированию
- 125 Краткий обзор массивов
- 185 Глава 5. Циклы и выражения сравнения
- 186 Обзор возможностей цикла for
- 187 Составные части цикла for
- 194 И опять о цикле for
- 195 Изменение шага цикла
- 196 Доступ к символам строки с помощью цикла for
- 197 Операторы инкремента (++) и декремента (--)
- 199 Комбинированные операторы присваивания
- 199 Составные операторы или блоки
- 202 Оператор "запятая" (или дополнительные синтаксические приемы)
- 204 Выражения сравнения
- 205 Типичная ошибка программирования
- 208 Сравнение строк
- 211 Цикл while
- 213 Сравнение циклов for и while
- 215 Пауза
- 217 Цикл do while
- 219 Циклы и ввод текста
- 220 Применение простого оператора cin для ввода данных
- 221 На помощь приходит функция cin.get(char)
- 222 Какую из функций cin.get() выбрать?
- 223 Условие конца файла
- 226 Еще одна разновидность функции cin.get()
- 230 Вложенные циклы и двумерные массивы
- 232 Инициализация двумерного массива
- 233 Резюме
- 234 Вопросы для повторения
- 235 Упражнения по программированию
- 186 Обзор возможностей цикла for
- 237 Глава 6. Операторы ветвления и логические операции
- 237 Оператор if
- 239 Оператор if else
- 241 Форматирование операторов if else
- 242 Конструкция if else if else
- 243 Логические выражения
- 244 Операция логическое ИЛИ: ||
- 245 Операция логическое И: &&
- 250 Операция логическое НЕ:!
- 251 Немного о логических операциях
- 252 Альтернативные представления
- 253 Библиотека символьных функций cctype
- 254 Оператор ?:
- 256 Оператор switch
- 261 Операторы switch и if else
- 262 Операторы break и continue
- 264 Циклы считывания чисел
- 267 Резюме
- 268 Вопросы для повторения
- 270 Упражнения по программированию
- 237 Оператор if
- 273 Глава 7. Функции языка C++
- 273 Обзор функций
- 274 Определение функции
- 277 Создание прототипов и вызов функций
- 281 Аргументы функции и передача по значению
- 282 Функции с несколькими аргументами
- 285 Еще одна функция с двумя аргументами
- 287 Функции и массивы
- 289 Применение указателей в функциях, обрабатывающих массивы
- 290 Особенности использования массивов в качестве аргументов
- 292 Другие примеры функций, выполняющих обработку массивов
- 298 Функции, в которых используются диапазоны массивов
- 300 Указатели и спецификатор const
- 303 Функции и двумерные массивы
- 305 Функции и строки в стиле языка C
- 307 Функции, возвращающие строки
- 308 Функции и структуры
- 309 Передача и возврат структур
- 311 Еще один пример
- 315 Передача адресов структур
- 317 Рекурсия
- 320 Указатели на функции
- 320 Назначение указателя на функцию
- 324 Резюме
- 325 Вопросы для повторения
- 326 Упражнения по программированию
- 273 Обзор функций
- 330 Глава 8. Работа с функциями
- 330 Встроенные функции
- 333 Ссылочные переменные
- 334 Создание ссылочных переменных
- 337 Ссылки в роли параметров функции
- 340 Свойства и особенности ссылок
- 344 Использование ссылок при работе со структурами
- 349 Аргументы, принимаемые по умолчанию
- 352 Полиморфизм или перегрузка функций
- 355 Пример перегрузки функций
- 357 Когда целесообразно использовать перегрузку функций
- 358 Шаблоны функций
- 361 Перегружаемые шаблоны
- 363 Явные специализации
- 364 Специализация третьего поколения (стандарт C++ ISO/ANSI)
- 368 Создание экземпляров и специализация
- 369 Выбор функций
- 373 Пример использования правил частичного упорядочивания
- 375 Резюме
- 376 Вопросы для повторения
- 377 Упражнения по программированию
- 380 Глава 9. Модели памяти и пространства имен
- 380 Раздельная компиляция
- 384 Управление заголовочными файлами
- 386 Классы памяти, диапазоны доступа и связывание
- 386 Диапазон доступа и связывание
- 387 Автоматический класс памяти
- 393 Переменные со статическим классом памяти
- 394 Статический класс памяти, внешнее связывание
- 398 Статический класс памяти, внутреннее связывание
- 401 Статический класс памяти, без связывания
- 403 Спецификаторы и классификаторы
- 406 Функции и связывание
- 407 Языковое связывание
- 408 Схемы распределения памяти и динамическое распределение
- 409 Пространства имен
- 409 Традиционные пространства имен языка C++
- 410 Новые свойства пространств имен
- 422 Пространства имен и будущее
- 422 Резюме
- 423 Вопросы для повторения
- 426 Упражнения по программированию
- 380 Раздельная компиляция
- 428 Глава 10. Объекты и классы
- 429 Процедурное и объектно-ориентированное программирование
- 430 Абстрагирование и классы
- 431 Что представляет собой тип
- 431 Класс
- 436 Реализация функций-элементов класса
- 441 Использование классов
- 445 Что мы узнали на текущий момент
- 446 Деструкторы и конструкторы классов
- 447 Объявление и определение конструкторов
- 448 Использование конструктора
- 449 Конструктор, заданный по умолчанию
- 451 Деструкторы
- 452 Давайте усовершенствуем класс Stock
- 459 Обзор конструкторов и деструкторов
- 460 Работа с указателем this
- 466 Массив объектов
- 469 Диапазон доступа класса
- 470 Константы с диапазоном доступа класса
- 471 Абстрактные типы данных
- 477 Резюме
- 478 Вопросы для повторения
- 479 Упражнения по программированию
- 482 Глава 11. Работа с классами
- 483 Перегрузка операций
- 485 Время в нашем распоряжении
- 488 Добавление операции сложения
- 490 Ограничения при выполнении перегрузки
- 492 Другие перегруженные операции
- 495 Использование дружественных структур
- 496 Создание дружественных конструкций
- 498 Общий вид дружественной конструкции: перегрузка операции <<
- 504 Перегруженные операции: дружественные функции или обычные?
- 505 Еще о перегрузке: класс Vector
- 513 Использование элементов состояния
- 514 Еще немного о перегрузке
- 517 Комментарий к реализации
- 518 Применение класса Vector к решению задачи случайного блуждания
- 521 Автоматические преобразования и приведение типов для классов
- 528 Функции преобразования
- 532 Преобразования и дружественные конструкции
- 536 Резюме
- 538 Вопросы для повторения
- 538 Упражнения по программированию
- 483 Перегрузка операций
- 541 Глава 12. Классы и динамическое распределение памяти
- 542 Динамическая память и классы
- 542 Обзорный пример и элементы статических классов
- 551 Неявные функции-элементы
- 559 Новый усовершенствованный класс Siring
- 570 Узелки на память: когда использовать оператор new в конструкторах
- 572 Применение указателей при работе с объектами
- 577 Обзор технических приемов программирования
- 580 Эмуляция очереди
- 580 Класс Queue
- 591 Класс Customer
- 594 Эмуляция
- 600 Резюме
- 601 Вопросы для повторения
- 603 Упражнения по программированию
- 606 Глава 13. Наследование классов
- 607 Простой базовый класс
- 609 Порождение класса
- 611 Конструктор: доступ
- 614 Использование производного класса
- 616 Особые связи
- 618 Наследование — отношение is-a
- 619 Полиморфное открытое наследование
- 620 Разработка наших классов
- 632 Статическое и динамическое связывание
- 633 Совместимость типов указателей и ссылок
- 634 Виртуальные функции и динамическое связывание
- 635 Зачем нужны два вида связывания?
- 636 Как работают виртуальные функции
- 636 Что следует знать о виртуальных функциях
- 640 Управление доступом - protected
- 641 Абстрактные базовые классы
- 644 Применение концепции абстрактных базовых классов
- 648 Наследование и динамическое распределение памяти
- 648 Случай 1. В производном классе не используется оператор new
- 650 Случай 2. В производном классе используется оператор new
- 652 Пример наследования с динамическим распределением памяти и дружественными конструкциями
- 656 Обзор структуры класса
- 656 Функции-элементы, которые генерирует компилятор
- 658 Другие соображения по поводу методов класса
- 661 Соображения по поводу открытого наследования
- 665 Итоговый анализ функций класса
- 666 Резюме
- 667 Вопросы для повторения
- 668 Упражнения по программированию
- 607 Простой базовый класс
- 671 Глава 14. Повторное использование программного кода в C++
- 672 Классы, включающие элементы объектов
- 673 Класс ArrayDb
- 679 Пример класса Student
- 683 Закрытое наследование
- 684 Пример класса Student (новая версия)
- 693 Множественное наследование
- 696 Определение количества рабочих
- 700 Выбор метода
- 710 Некоторые итоги по теме множественного наследования
- 710 Шаблоны классов
- 711 Определение шаблона класса
- 714 Использование шаблонного класса
- 717 Более подробное рассмотрение шаблона класса
- 722 Шаблон массива и аргументы, не являющиеся типами
- 725 Универсальный характер шаблонов
- 729 Специализации шаблонов
- 732 Шаблоны-элементы
- 734 Шаблоны в качестве параметров
- 736 Шаблоны классов и дружественные элементы
- 743 Резюме
- 745 Вопросы для повторения
- 746 Упражнения по программированию
- 672 Классы, включающие элементы объектов
- 750 Глава 15. Дружественные конструкции, исключения и прочее
- 730 Дружественные структуры
- 751 Дружественные классы
- 756 Дружественные функции-элементы
- 759 Другие дружественные отношения
- 761 Вложенные классы
- 763 Вложенные классы и доступ
- 765 Вложение в шаблоне
- 768 Обработка исключительных ситуаций
- 771 Примечания к программе
- 771 Механизм обработки исключительных ситуаций
- 773 Примечания к программе
- 774 Разносторонний характер исключений
- 781 Исключения и классы
- 788 Исключения и наследование
- 793 Класс exception
- 794 Исключение bad_alloc и оператор new
- 795 Проблемы, связанные с обработкой исключительных ситуаций
- 798 Замечание об исключениях
- 800 Библиотека RTTI
- 800 Назначение RTTI
- 800 Принципы функционирования RTTI
- 808 Операторы приведения типов
- 812 Резюме
- 813 Вопросы для повторения
- 814 Упражнения по программированию
- 730 Дружественные структуры
- 815 Глава 16. Класс string и стандартная библиотека шаблонов
- 815 Класс string
- 816 Создание строки
- 820 Реализация ввода в классе string
- 821 Работа со строками
- 828 Класс auto_ptr
- 829 Использование шаблона auto_ptr
- 831 Некоторые замечания относительно auto_ptr
- 833 Стандартная библиотека шаблонов
- 834 Шаблон класса vector
- 836 Операции, допустимые при работе с шаблонами vector
- 841 Дополнительные операции с векторами
- 845 Обобщенное программирование
- 846 Почему именно итераторы?
- 850 Типы итераторов
- 861 Типы контейнеров
- 863 Последовательности
- 865 Класс vector
- 866 Класс deque
- 866 Класс list
- 869 Класс queue
- 869 Класс priority_queue
- 870 Класс stack
- 870 Ассоциативные контейнеры
- 877 Функциональные объекты (функторы)
- 878 Концепции функторов
- 880 Предопределенные функторы
- 882 Адаптируемые функторы и функции-адаптеры
- 884 Алгоритмы
- 885 Группы алгоритмов
- 885 Общие свойства
- 887 STL и класс string
- 888 Функции и контейнерные методы
- 890 Использование STL
- 893 Другие библиотеки
- 894 Резюме
- 895 Вопросы для повторения
- 896 Упражнения по программированию
- 815 Класс string
- 898 Глава 17. Ввод/вывод данных и работа с файлами
- 899 Обзор ввода/вывода данных в C++
- 899 Потоки и буферы
- 901 Потоки, буферы и файл iostream
- 904 Перенаправление
- 905 Вывод с помощью cout
- 905 Перегруженный оператор <<
- 907 Другие методы класса ostream
- 910 Очистка буфера вывода
- 911 Форматирование вывода с помощью cout
- 927 Ввод данных с помощью cin
- 929 Kaк cin >> рассматривает поток ввода
- 931 Состояния потока
- 936 Другие методы класса istream
- 943 Другие методы класса istream
- 947 Ввод/вывод файлов
- 948 Простая работа с файлами
- 951 Открытие нескольких файлов
- 952 Работа в режиме командной строки
- 954 Проверка потока и функция is_open()
- 955 Режимы файлов
- 965 Произвольный доступ к файлам
- 974 Внутреннее форматирование
- 976 Что дальше?
- 977 Резюме
- 979 Вопросы для повторения
- 980 Упражнения по программированию
- 899 Обзор ввода/вывода данных в C++
- 983 Приложение А. Системы счисления
- 987 Приложение В. Ключевые слова языка C++
- 988 Приложение С. Таблица кодов ASCII
- 992 Приложение D. Приоритет операций
- 995 Приложение Е. Другие операции
- 1006 Приложение F. Шаблон класса STRING
- 1024 Приложение G. Методы и функции библиотеки STL
- 1055 Приложение Н. Рекомендуемая литература
- 1057 Приложение I. Преобразование программного кода в соответствии со стандартом ANSI/ISO C++
- 1065 Приложение J. Ответы на вопросы для повторения
- 1088 Предметный указатель
Инструкция как скачать книгу Стивен Прата: Язык программирования C++. Лекции и упражнения. в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.