Язык программирования 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 совершенно бесплатно.
Язык программирования C++. Лекции и упражнения.
Рейтинг книги:
0 голосов
427

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: