Программирование. Принципы и практика использования C++

Бьярн Страуструп

Вводный курс программирования, написанный автором языка С++.

Подготовка к созданию реальных программ Автор книги полагает, что читатели в конце концов начнут писать нетривиальные программы либо в качестве профессиональных разработчиков программного обеспечения, либо в качестве программистов, работающих в других областях науки и техники.

Упор на основные концепции и методы Основные концепции и методы программирования в книге излагаются глубже, чем это принято в традиционных вводных курсах. Это позволит читателям разрабатывать полезные, правильные, понятные и эффективные программы.

Программирование на современном языке С++ Книга представляет собой введение в программирование вообще, включая объектно-ориентированное и обобщенное программирование. Она также представляет собой прекрасное введение в язык С++, один из наиболее популярных языков программирования в современном мире. В книге описаны современные методы программирования на С++, включая стандартную библиотеку, позволяющую упростить программирование.

Для начинающих программистов и всех, кто хочет научиться программировать Книга предназначена в основном для людей, никогда ранее не программировавших. Она опробована более чем тысячей студентов университета. Однако опытные программисты и студенты, уже изучившие основы программирования, также найдут в книге много полезной информации, которая позволит им перейти на более высокий уровень мастерства.

Широкий охват тем Первая половина книги охватывает широкий спектр основных понятий, методов проектирования и программирования, свойств языка С++ и его библиотек. Это позволит читателям писать программы, выполняющие ввод и вывод данных, вычисления и построение простых графических изображений. Во второй половине рассматриваются более специализированные темы, такие как обработка текста и тестирование. В ней содержится много справочного материала. Исходные коды и другие приложения читатели могут найти на веб-сайте автора.

Издательство: Вильямс, 2011 г.

ISBN 978-5-8459-1705-8, 978-0-321-54372-1, 978-5-8459-1621-1

Количество страниц: 1248.

Содержание книги «Программирование. Принципы и практика использования C++»:

  • 25 Предисловие
  • 33 Глава 0. Обращение к читателям
    • 34 0.1. Структура книги
      • 35 0.1.1. Общие принципы
      • 36 0.1.2. Упражнения, задачи и т.п
      • 38 0.1.3. Что потом?
    • 38 0.2. Педагогические принципы
      • 41 0.2.1. Порядок изложения
      • 43 0.2.2. Программирование и языки программирования
      • 44 0.2.3. Переносимость
    • 45 0.3. Программирование и компьютерные науки
    • 45 0.4. Творческое начало и решение задач
    • 46 0.5. Обратная связь
    • 46 0.6. Библиографические ссылки
    • 47 0.7. Биографии
  • 51 Глава 1. Компьютеры, люди и программирование
    • 52 1.1. Введение
    • 53 1.2. Программное обеспечение
    • 55 1.3. Люди
    • 59 1.4. Компьютерные науки
    • 60 1.5. Компьютеры повсюду
      • 60 1.5.1. С экранами и без них
      • 61 1.5.2. Кораблестроение
      • 63 1.5.3. Телекоммуникации
      • 65 1.5.4. Медицина
      • 66 1.5.5. Информация
      • 68 1.5.6. Вид сверху
      • 69 1.5.7. И что?
    • 69 1.6. Идеалы программистов
  • 77 Часть I. Основы
  • 79 Глава 2. Hello, World!
    • 80 2.1. Программы
    • 81 2.2. Классическая первая программа
    • 84 2.3. Компиляция
    • 86 2.4. Редактирование связей
    • 87 2.5. Среды программирования
  • 93 Глава 3. Объекты, типы и значения
    • 94 3.1. Ввод
    • 96 3.2. Переменные
    • 97 3.3. Ввод и тип
    • 99 3.4. Операции и операторы
    • 102 3.5. Присваивание и инициализация
      • 104 3.5.1. Пример: удаление повторяющихся слов
    • 106 3.6. Составные операторы присваивания
      • 106 3.6.2. Пример: подсчет повторяющихся слов
    • 107 3.7. Имена
    • 109 3.8. Типы и объекты
    • 111 3.9. Типовая безопасность
      • 112 3.9.1. Безопасные преобразования
      • 113 3.9.2. Опасные преобразования
  • 121 Глава 4. Вычисления
    • 122 4.1. Вычисления
    • 124 4.2. Цели и средства
    • 126 4.3. Выражения
      • 128 4.3.1. Константные выражения
      • 129 4.3.2. Операторы
      • 130 4.3.3. Преобразования
    • 131 4.4. Инструкции
      • 133 4.4.1. Инструкции выбора
      • 139 4.4.2. Итерация
    • 143 4.5. Функции
      • 144 4.5.1. Зачем нужны функции
      • 146 4.5.2. Объявления функций
    • 147 4.6. Вектор
      • 148 4.6.1. Увеличение вектора
      • 149 4.6.2. Числовой пример
      • 151 4.6.3. Текстовый пример
    • 153 4.7. Свойства языка
  • 161 Глава 5. Ошибки
    • 162 5.1. Введение
    • 164 5.2. Источники ошибок
    • 165 5.3. Ошибки во время компиляции
      • 165 5.3.1. Синтаксические ошибки
      • 166 5.3.2. Ошибки, связанные с типами
      • 167 5.3.3. Не ошибки
    • 168 5.4. Ошибки во время редактирования связей
    • 169 5.5. Ошибки во время выполнения программы
      • 170 5.5.1. Обработка ошибок в вызывающем модуле
      • 172 5.5.2. Обработка ошибок в вызываемом модуле
      • 173 5.5.3. Сообщения об ошибках
    • 175 5.6. Исключения
      • 175 5.6.1. Неправильные аргументы
      • 176 5.6.2. Ошибки, связанные с диапазоном
      • 178 5.6.3. Неправильный ввод
      • 181 5.6.4. Суживающие преобразования
    • 182 5.7. Логические ошибки
    • 184 5.8. Оценка
    • 186 5.9. Отладка
      • 187 5.9.1. Практические советы по отладке
    • 190 5.10. Пред- и постусловия
      • 192 5.10.1. Постусловия
    • 193 5.11. Тестирование
  • 201 Глава 6. Создание программ
    • 202 6.1. Задача
    • 203 6.2. Размышления над задачей
      • 204 6.2.1. Стадии разработки программы
      • 204 6.2.2. Стратегия
    • 206 6.3. Назад к калькулятору!
      • 207 6.3.1. Первое приближение
      • 209 6.3.2. Лексемы
      • 211 6.3.3. Реализация лексем
      • 213 6.3.4. Использование лексем
      • 214 6.3.5. Назад к школьной доске!
    • 216 6.4. Грамматики
      • 221 6.4.1. Отступление: грамматика английского языка
      • 222 6.4.2. Запись грамматики
    • 223 6.5. Превращение грамматики в программу
      • 223 6.5.1. Реализация грамматических правил
      • 224 6.5.2. Выражения
      • 228 6.5.3. Термы
      • 230 6.5.4. Первичные выражения
    • 230 6.6. Испытание первой версии
    • 235 6.7. Испытание второй версии
    • 236 6.8. Потоки лексем
      • 238 6.8.1. Реализация класса Token_stream
      • 239 6.8.2. Считывание лексем
      • 241 6.8.3. Считывание чисел
    • 242 6.9. Структура программы
  • 247 Глава 7. Завершение программы
    • 248 7.1. Введение
    • 248 7.2. Ввод и вывод
    • 250 7.3. Обработка ошибок
    • 254 7.4. Отрицательные числа
    • 255 7.5. Остаток от деления: %
    • 257 7.6. Приведение кода в порядок
      • 258 7.6.1. Символические константы
      • 260 7.6.2. Использование функций
      • 261 7.6.3. Расположение кода
      • 262 7.6.4. Комментарии
    • 264 7.7. Исправление ошибок
    • 267 7.8. Переменные
      • 267 7.8.1. Переменные и определения
      • 272 7.8.2. Использование имен
      • 274 7.8.3. Предопределенные имена
      • 275 7.8.4. Все?
  • 279 Глава 8. Технические детали: функции и прочее
    • 280 8.1. Технические детали
    • 281 8.2. Объявления и определения
      • 285 8.2.1. Виды объявлений
      • 286 8.2.2. Объявления переменных и констант
      • 287 8.2.3. Инициализация по умолчанию
    • 287 8.3. Заголовочные файлы
    • 290 8.4. Область видимости
    • 295 8.5. Вызов функции и возврат значения
      • 296 8.5.1. Объявление аргументов и тип возвращаемого значения
      • 297 8.5.2. Возврат значения
      • 298 8.5.3. Передача параметров по значению
      • 299 8.5.4. Передача параметров по константной ссылке
      • 301 8.5.5. Передача параметров по ссылке
      • 304 8.5.6. Сравнение механизмов передачи параметров по значению и по ссылке
      • 306 8.5.7. Проверка аргументов и преобразование типов
      • 307 8.5.8. Реализация вызова функции
    • 312 8.6. Порядок вычислений
      • 313 8.6.1. Вычисление выражения
      • 314 8.6.2. Глобальная инициализация
    • 315 8.7. Пространства имен
      • 316 8.7.1. Объявления using и директивы using
  • 325 Глава 9. Технические детали: классы и прочее
    • 326 9.1. Типы, определенные пользователем
    • 327 9.2. Классы и члены класса
    • 328 9.3. Интерфейс и реализация
    • 330 9.4. Разработка класса
      • 330 9.4.1. Структуры и функции
      • 332 9.4.2. Функции-члены и конструкторы
      • 333 9.4.3. Скрываем детали
      • 335 9.4.4. Определение функций-членов
      • 337 9.4.5. Ссылка на текущий объект
      • 338 9.4.6. Сообщения об ошибках
    • 339 9.5. Перечисления
    • 341 9.6. Перегрузка операторов
    • 343 9.7. Интерфейсы классов
      • 344 9.7.1. Типы аргументов
      • 346 9.7.2. Копирование
      • 347 9.7.3. Конструкторы по умолчанию
      • 350 9.7.4. Константные функции-члены
      • 351 9.7.5. Члены и вспомогательные функции
    • 353 9.8. Класс Date
  • 361 Часть II. Ввод и вывод
  • 363 Глава 10. Потоки ввода и вывода
    • 364 10.1. Ввод и вывод
    • 366 10.2. Модель потока ввода-вывода
    • 367 10.3. Файлы
    • 369 10.4. Открытие файла
    • 371 10.5. Чтение и запись файла
    • 373 10.6. Обработка ошибок ввода-вывода
    • 376 10.7. Считывание отдельного значения
      • 378 10.7.1. Разделение задачи на управляемые части
      • 381 10.7.2. Отделение диалога от функции
    • 382 10.8. Операторы вывода, определенные пользователем
    • 383 10.9. Операторы ввода, определенные пользователем
    • 384 10.10. Стандартный цикл ввода
    • 386 10.11. Чтение структурированного файла
      • 387 10.11.1. Представление в памяти
      • 389 10.11.2. Считывание структурированных значений
      • 393 10.11.3. Изменение представления
  • 399 Глава 11. Настройка ввода и вывода
    • 400 11.1. Регулярность и нерегулярность
    • 401 11.2. Форматирование вывода
      • 401 11.2.1. Вывод целых чисел
      • 403 11.2.2. Ввод целых чисел
      • 404 11.2.3. Вывод чисел с плавающей точкой
      • 405 11.2.4. Точность
      • 407 11.2.5. Поля
    • 408 11.3. Открытие файла и позиционирование
      • 408 11.3.1. Режимы открытия файлов
      • 409 11.3.2. Бинарные файлы
      • 412 11.3.3. Позиционирование в файлах
    • 413 11.4. Потоки строк
    • 415 11.5. Ввод, ориентированный на строки
    • 416 11.6. Классификация символов
    • 418 11.7. Использование нестандартных разделителей
    • 425 11.8. И еще много чего
  • 431 Глава 12. Вывод на экран
    • 432 12.1. Почему графика?
    • 433 12.2. Вывод на дисплей
    • 435 12.3. Первый пример
    • 438 12.4. Использование библиотеки графического пользовательского интерфейса
    • 439 12.5. Координаты
    • 440 12.6. Класс Shape
    • 441 12.7. Использование графических примитивов
      • 441 12.7.1. Графические заголовочные файлы и функция main
      • 442 12.7.2. Почти пустое окно
      • 443 12.7.3. Оси координат
      • 446 12.7.4. График функции
      • 447 12.7.5. Многоугольники
      • 448 12.7.6. Прямоугольник
      • 450 12.7.7. Заполнение
      • 450 12.7.8. Текст
      • 451 12.7.9. Изображения
      • 453 12.7.10. И многое другое
    • 454 12.8. Запуск программы
      • 455 12.8.1. Исходные файлы
  • 459 Глава 13. Графические классы
    • 460 13.1. Обзор графических классов
    • 462 13.2. Классы Point и Line
    • 464 13.3. Класс Lines
    • 467 13.4. Класс Color
    • 469 13.5. Класс Line_style
    • 472 13.6. Класс Open_polyline
    • 473 13.7. Класс Closed_polyline
    • 474 13.8. Класс Polygon
    • 477 13.9. Класс Rectangle
    • 481 13.10. Управление неименованными объектами
    • 483 13.11. Класс Text
    • 485 13.12. Класс Circle
    • 487 13.13. Класс Ellipse
    • 488 13.14. Класс Marked_polyline
    • 490 13.15. Класс Marks
    • 491 13.16. Класс Mark
    • 492 13.17. Класс Image
  • 499 Глава 14. Проектирование графических классов
    • 500 14.1. Принципы проектирования
      • 500 14.1.1. Типы
      • 502 14.1.2. Операции
      • 503 14.1.3. Именование
      • 505 14.1.4. Изменяемость
    • 505 14.2. Класс Shape
      • 507 14.2.1. Абстрактный класс
      • 508 14.2.2. Управление доступом
      • 511 14.2.3. Рисование фигур
      • 515 14.2.4. Копирование и изменчивость
    • 516 14.3. Базовые и производные классы
      • 518 14.3.1. Схема объекта
      • 520 14.3.2. Вывод классов и определение виртуальных функций
      • 521 14.3.3. Замещение
      • 522 14.3.4. Доступ
      • 523 14.3.5. Чисто виртуальные функции
    • 525 14.4. Преимущества объектно-ориентированного программирования
  • 531 Глава 15. Графические функции и данные
    • 532 15.1. Введение
    • 532 15.2. Построение простых графиков
    • 536 15.3. Класс Function
      • 537 15.3.1. Аргументы по умолчанию
      • 539 15.3.2. Новые примеры
    • 540 15.4. Оси
    • 542 15.5. Аппроксимация
    • 548 15.6. Графические данные
      • 549 15.6.1. Чтение файла
      • 551 15.6.2. Общая схема
      • 552 15.6.3. Масштабирование данных
      • 553 15.6.4. Построение графика
  • 561 Глава 16. Графические пользовательские интерфейсы
    • 562 16.1. Альтернативы пользовательского интерфейса
    • 563 16.2. Кнопка Next
    • 565 16.3. Простое окно
      • 566 16.3.1. Функции обратного вызова
      • 569 16.3.2. Цикл ожидания
    • 571 16.4. Класс Button и другие разновидности класса Widget
      • 571 16.4.1. Класс Widget
      • 573 16.4.2. Класс Button
      • 573 16.4.3. Классы In_box и Out_box
      • 574 16.4.4. Класс Menu
    • 575 16.5. Пример
    • 578 16.6. Инверсия управления
    • 580 16.7. Добавление меню
    • 585 16.8. Отладка программы графического пользовательского интерфейса
  • 591 Часть III. Данные и алгоритмы
  • 593 Глава 17. Векторы и свободная память
    • 594 17.1. Введение
    • 596 17.2. Основы
    • 598 17.3. Память, адреса и указатели
      • 600 17.3.1. Оператор sizeof
    • 601 17.4. Свободная память и указатели
      • 603 17.4.1. Размещение в свободной памяти
      • 604 17.4.2. Доступ с помощью указателей
      • 605 17.4.3. Диапазоны
      • 607 17.4.4. Инициализация
      • 608 17.4.5. Нулевой указатель
      • 609 17.4.6. Освобождение свободной памяти
    • 611 17.5. Деструкторы
      • 613 17.5.1. Обобщенные указатели
      • 614 17.5.2. Деструкторы и свободная память
    • 616 17.6. Доступ к элементам
    • 616 17.7. Указатели на объекты класса
    • 618 17.8. Путаница с типами: void* и операторы приведения типов
    • 620 17.9. Указатели и ссылки
      • 622 17.9.1. Указатели и ссылки как параметры функций
      • 623 17.9.2. Указатели, ссылки и наследование
      • 624 17.9.3. Пример: списки
      • 626 17.9.4. Операции над списками
      • 627 17.9.5. Использование списков
    • 628 17.10. Указатель this
      • 631 17.10.1. Еще раз об использовании списков
  • 637 Глава 18. Векторы и массивы
    • 638 18.1. Введение
    • 639 18.2. Копирование
      • 640 18.2.1. Конструкторы копирования
      • 642 18.2.2. Копирующее присваивание
      • 644 18.2.3. Терминология, связанная с копированием
    • 645 18.3. Основные операции
      • 647 18.3.1. Явные конструкторы
      • 648 18.3.2. Отладка конструкторов и деструкторов
    • 651 18.4. Доступ к элементам вектора
      • 652 18.4.1. Перегрузка ключевого слова const
    • 653 18.5. Массивы
      • 654 18.5.1. Указатели на элементы массива
      • 657 18.5.2. Указатели и массивы
      • 659 18.5.3. Инициализация массива
      • 660 18.5.4. Проблемы с указателями
    • 663 18.6. Примеры: палиндром
      • 663 18.6.1. Палиндромы, созданные с помощью класса string
      • 664 18.6.2. Палиндромы, созданные с помощью массива
      • 665 18.6.3. Палиндромы, созданные с помощью указателей
  • 673 Глава 19. Векторы, шаблоны и исключения
    • 674 19.1. Проблемы
    • 677 19.2. Изменение размера
      • 678 19.2.1. Представление
      • 679 19.2.2. Функции reserve and capacity
      • 680 19.2.3. Функция resize
      • 681 19.2.4. Функция push_back
      • 681 19.2.5. Присваивание
      • 683 19.2.6. Предыдущая версия класса vector
    • 684 19.3. Шаблоны
      • 684 19.3.1. Типы как шаблонные параметры
      • 687 19.3.2. Обобщенное программирование
      • 690 19.3.3. Контейнеры и наследование
      • 691 19.3.4. Целые типы как шаблонные параметры
      • 693 19.3.5. Вывод шаблонных аргументов
      • 693 19.3.6. Обобщение класса vector
    • 697 19.4. Проверка диапазона и исключения
      • 698 19.4.1. Примечание: вопросы проектирования
      • 700 19.4.2. Признание: макрос
    • 701 19.5. Ресурсы и исключения
      • 702 19.5.1. Потенциальные проблемы управления ресурсами
      • 704 19.5.2. Получение ресурсов — это инициализация
      • 705 19.5.3. Гарантии
      • 707 19.5.4. Класс auto_ptr
      • 708 19.5.5. Принцип RAII для класса vector
  • 715 Глава 20. Контейнеры и итераторы
    • 716 20.1. Хранение и обработка данных
      • 717 20.1.1. Работа с данными
      • 718 20.1.2. Обобщение кода
    • 720 20.2. Принципы библиотеки STL
    • 724 20.3. Последовательности и итераторы
      • 727 20.3.1. Вернемся к примерам
    • 728 20.4. Связанные списки
      • 730 20.4.1. Операции над списками
      • 731 20.4.2. Итерация
    • 733 20.5. Еще одно обобщение класса vector
    • 735 20.6. Пример: простой текстовый редактор
      • 737 20.6.1. Строки
      • 738 20.6.2. Итерация
    • 742 20.7. Классы vector, list и string
      • 744 20.7.1. Операции insert и erase
    • 746 20.8. Адаптация нашего класса vector к библиотеке STL
    • 749 20.9. Адаптация встроенных массивов к библиотеке STL
    • 750 20.10. Обзор контейнеров
      • 753 20.10.1. Категории итераторов
  • 759 Глава 21. Алгоритмы и ассоциативные массивы
    • 760 21.1. Алгоритмы стандартной библиотеки
    • 761 21.2. Простейший алгоритм: find()
      • 763 21.2.1. Примеры использования обобщенных алгоритмов
    • 764 21.3. Универсальный алгоритм поиска: find_if()
    • 766 21.4. Объекты-функции
      • 767 21.4.1. Абстрактная точка зрения на функции-объекты
      • 769 21.4.2. Предикаты на членах класса
    • 770 21.5. Численные алгоритмы
      • 771 21.5.1. Алгоритм accumulate()
      • 772 21.5.2. Обобщение алгоритма accumulate()
      • 774 21.5.3. Алгоритм inner_product
      • 775 21.5.4. Обобщение алгоритма inner_product()
    • 776 21.6. Ассоциативные контейнеры
      • 776 21.6.1. Ассоциативные массивы
      • 779 21.6.2. Обзор ассоциативных массивов
      • 782 21.6.3. Еще один пример ассоциативного массива
      • 784 21.6.4. Алгоритм unordered_map()
      • 787 21.6.5. Множества
    • 788 21.7. Копирование
      • 789 21.7.1. Алгоритм copy()
      • 789 21.7.2. Итераторы потоков
      • 792 21.7.3. Использование класса set для поддержания порядка
      • 793 21.7.4. Алгоритм copy_if()
    • 793 21.8. Сортировка и поиск
  • 801 Часть IV. Дополнительные темы
  • 803 Глава 22. Идеалы и история
    • 804 22.1. История, идеалы и профессионализм
      • 804 22.1.1. Цели и философия языка программирования
      • 806 22.1.2. Идеалы программирования
      • 814 22.1.3. Стили и парадигмы
    • 817 22.2. Обзор истории языков программирования
      • 818 22.2.1. Первые языки программирования
      • 820 22.2.2. Корни современных языков программирования
      • 826 22.2.3. Семейство языков Algol
      • 833 22.2.4. Язык программирования Simula
      • 836 22.2.5. Язык программирования С
      • 839 22.2.6. Язык программирования С++
      • 842 22.2.7. Современное состояние дел
      • 844 22.2.8. Источники информации
  • 849 Глава 23. Обработка текста
    • 850 23.1. Текст
    • 850 23.2. Строки
    • 855 23.3. Потоки ввода-вывода
    • 855 23.4. Ассоциативные контейнеры
      • 861 23.4.1. Детали реализации
    • 863 23.5. Проблема
    • 865 23.6. Идея регулярных выражений
    • 868 23.7. Поиск с помощью регулярных выражений
    • 871 23.8. Синтаксис регулярных выражений
      • 872 23.8.1. Символы и специальные символы
      • 873 23.8.2. Классы символов
      • 873 23.8.3. Повторения
      • 874 23.8.4. Группировка
      • 875 23.8.5. Варианты
      • 875 23.8.6. Наборы символов и диапазоны
      • 877 23.8.7. Ошибки в регулярных выражениях
    • 879 23.9. Сравнение регулярных выражений
    • 883 23.10. Ссылки
  • 889 Глава 24. Числа
    • 890 24.1. Введение
    • 890 24.2. Размер, точность и переполнение
      • 894 24.2.1. Пределы числовых диапазонов
    • 895 24.3. Массивы
    • 896 24.4. Многомерные массивы в стиле языка С
    • 897 24.5. Библиотека Matrix
      • 898 24.5.1. Размерности и доступ
      • 901 24.5.2. Одномерный объект класса Matrix
      • 905 24.5.3. Двумерный объект класса Matrix
      • 907 24.5.4. Ввод-вывод объектов класса Matrix
      • 908 24.5.5. Трехмерный объект класса Matrix
    • 909 24.6. Пример: решение систем линейных уравнений
      • 910 24.6.1. Классическое исключение Гаусса
      • 912 24.6.2. Выбор ведущего элемента
      • 913 24.6.3. Тестирование
    • 914 24.7. Случайные числа
    • 916 24.8. Стандартные математические функции
    • 917 24.9. Комплексные числа
    • 919 24.10. Ссылки
  • 925 Глава 25. Программирование встроенных систем
    • 926 25.1. Встроенные системы
    • 929 25.2. Основные понятия
      • 932 25.2.1. Предсказуемость
      • 933 25.2.2. Принципы
      • 934 25.2.3. Сохранение работоспособности после сбоя
    • 936 25.3. Управление памятью
      • 938 25.3.1. Проблемы со свободной памятью
      • 941 25.3.2. Альтернатива универсальной свободной памяти
      • 942 25.3.3. Пример пула
      • 943 25.3.4. Пример стека
    • 944 25.4. Адреса, указатели и массивы
      • 945 25.4.1. Непроверяемые преобразования
      • 945 25.4.2. Проблема: дисфункциональный интерфейс
      • 949 25.4.3. Решение: интерфейсный класс
      • 952 25.4.4. Наследование и контейнеры
    • 956 25.5. Биты, байты и слова
      • 956 25.5.1. Операции с битами и байтами
      • 960 25.5.2. Класс bitset
      • 962 25.5.3. Целые числа со знаком и без знака
      • 966 25.5.4. Манипулирование битами
      • 968 25.5.5. Битовые поля
      • 970 25.5.6. Пример: простое шифрование
    • 975 25.6. Стандарты программирования
      • 976 25.6.1. Каким должен быть стандарт программирования?
      • 978 25.6.2. Примеры правил
      • 983 25.6.3. Реальные стандарты программирования
  • 991 Глава 26. Тестирование
    • 992 26.1. Чего мы хотим
      • 993 26.1.1. Предостережение
    • 994 26.2. Доказательства
    • 994 26.3. Тестирование
      • 995 26.3.1. Регрессивные тесты
      • 996 26.3.2. Модульные тесты
      • 1003 26.3.3. Алгоритмы и не алгоритмы
      • 1011 26.3.4. Системные тесты
      • 1017 26.3.5. Тестирование классов
      • 1020 26.3.6. Поиск предположений, которые не выполняются
    • 1022 26.4. Проектирование с учетом тестирования
    • 1022 26.5. Отладка
    • 1023 26.6. Производительность
      • 1025 26.6.1. Измерение времени
    • 1027 26.7. Ссылки
  • 1031 Глава 27. Язык программирования С
    • 1032 27.1. Языки С и С++: братья
      • 1034 27.1.1. Совместимость языков С и С++
      • 1036 27.1.2. Свойства языка С++, которых нет в языке С
      • 1038 27.1.3. Стандартная библиотека языка С
    • 1039 27.2. Функции
      • 1039 27.2.1. Отсутствие перегрузки имен функций
      • 1039 27.2.2. Проверка типов аргументов функций
      • 1041 27.2.3. Определения функций
      • 1043 27.2.4. Вызов функций, написанных на языке С, из программы на языке С++, и наоборот
      • 1045 27.2.5. Указатели на функции
    • 1046 27.3. Второстепенные языковые различия
      • 1047 27.3.1. Дескриптор пространства имен struct
      • 1048 27.3.2. Ключевые слова
      • 1048 27.3.3. Определения
      • 1050 27.3.4. Приведение типов в стиле языка С
      • 1051 27.3.5. Преобразование указателей типа void*
      • 1052 27.3.6. Перечисление
      • 1052 27.3.7. Пространства имен
    • 1053 27.4. Свободная память
    • 1055 27.5. Строки в стиле языка С
      • 1057 27.5.1. Строки в стиле языка С и ключевое слово const
      • 1058 27.5.2. Операции над байтами
      • 1059 27.5.3. Пример: функция strcpy()
      • 1059 27.5.4. Вопросы стиля
    • 1060 27.6. Ввод-вывод: заголовок stdio
      • 1060 27.6.1. Вывод
      • 1061 27.6.2. Ввод
      • 1063 27.6.3. Файлы
    • 1064 27.7. Константы и макросы
    • 1065 27.8. Макросы
      • 1066 27.8.1. Макросы, похожие на функции
      • 1067 27.8.2. Синтаксис макросов
      • 1068 27.8.3. Условная компиляция
    • 1069 27.9. Пример: интрузивные контейнеры
  • 1079 Часть V. Приложения
  • 1081 Приложение A. Краткий обзор языка
    • 1082 A.1. Общие сведения
      • 1083 A.1.1. Терминология
      • 1084 A.1.2. Старт и завершение программы
      • 1084 A.1.3. Комментарии
    • 1085 A.2. Литералы
      • 1085 A.2.1. Целочисленные литералы
      • 1087 A.2.2. Литералы с плавающей точкой
      • 1087 A.2.3. Булевы литералы
      • 1087 A.2.4. Символьные литералы
      • 1088 A.2.5. Строковые литералы
      • 1088 A.2.6. Указательные литералы
    • 1089 A.3. Идентификаторы
      • 1089 A.3.1. Указательные литералы
    • 1090 A.4. Область видимости, класс памяти и время жизни
      • 1090 A.4.1. Область видимости
      • 1091 A.4.2. Класс памяти
      • 1092 A.4.3. Время жизни
    • 1093 A.5. Выражения
      • 1098 A.5.1. Операторы, определенные пользователем
      • 1098 A.5.2. Неявное преобразование типа
      • 1101 A.5.3. Константные выражения
      • 1101 A.5.4. Оператор sizeof
      • 1101 A.5.5. Логические выражения
      • 1102 A.5.6. Операторы new и delete
      • 1102 A.5.7. Операторы приведения
    • 1103 A.6. Инструкции
    • 1105 A.7. Объявления
      • 1106 A.7.1. Определения
    • 1106 A.8. Встроенные типы
      • 1107 A.8.1. Указатели
      • 1109 A.8.2. Массивы
      • 1110 A.8.3. Ссылки
    • 1110 A.9. Функции
      • 1111 A.9.1. Разрешение перегрузки
      • 1112 A.9.2. Аргументы по умолчанию
      • 1113 A.9.3. Неопределенные аргументы
      • 1113 A.9.4. Спецификации связей
    • 1114 A.10. Типы, определенные пользователем
      • 1114 A.10.1. Перегрузка операций
    • 1114 A.11. Перечисления
    • 1115 A.12. Классы
      • 1115 A.12.1. Доступ к членам класса
      • 1118 A.12.2. Определения членов класса
      • 1119 A.12.3. Создание, уничтожение и копирование
      • 1121 A.12.4. Производные классы
      • 1125 A.12.5. Битовые поля
      • 1126 A.12.6. Объединения
    • 1126 A.13. Шаблоны
      • 1127 A.13.1. Шаблонные аргументы
      • 1127 A.13.2. Конкретизация шаблонов
      • 1128 A.13.3. Шаблонные типы членов-классов
    • 1129 A.14. Исключения
    • 1131 A.15. Пространства имен
    • 1132 A.16. Альтернативные имена
    • 1132 A.17. Директивы препроцессора
      • 1132 A.17.1. Директива #include
      • 1133 A.17.2. Директива #define
  • 1135 Приложение Б. Обзор стандартной библиотеки
    • 1136 Б.1. Обзор
      • 1137 Б.1.1. Заголовочные файлы
      • 1139 Б.1.2. Пространство имен std
      • 1140 Б.1.3. Стиль описания
    • 1140 Б.2. Обработка ошибок
      • 1141 Б.2.1. Исключения
    • 1142 Б.3. Итераторы
      • 1143 Б.3.1. Модель итераторов
      • 1145 Б.3.2. Категории итераторов
    • 1147 Б.4. Контейнеры
      • 1148 Б.4.1. Обзор
      • 1149 Б.4.2. Типы членов
      • 1150 Б.4.3. Конструкторы, деструкторы и присваивания
      • 1151 Б.4.4. Итераторы
      • 1151 Б.4.5. Доступ к элементам
      • 1151 Б.4.6. Операции над стеком и двусторонней очередью
      • 1152 Б.4.7. Операции над списком
      • 1152 Б.4.8. Размер и емкость
      • 1153 Б.4.9. Другие операции
      • 1153 Б.4.10. Операции над ассоциативными контейнерами
    • 1154 Б.5. Алгоритмы
      • 1155 Б.5.1. Немодицифирующие алгоритмы для последовательностей
      • 1156 Б.5.2. Алгоритмы, модифицирующие последовательности
      • 1159 Б.5.3. Вспомогательные алгоритмы
      • 1160 Б.5.4. Сортировка и поиск
      • 1162 Б.5.5. Алгоритмы для множеств
      • 1163 Б.5.6. Кучи
      • 1164 Б.5.7. Перестановки
      • 1164 Б.5.8. Функции min и max
    • 1165 Б.6. Утилиты библиотеки STL
      • 1165 Б.6.1. Вставки
      • 1166 Б.6.2. Объекты-функции
      • 1167 Б.6.3. Класс pair
    • 1168 Б.7. Потоки ввода-вывода
      • 1169 Б.7.1. Иерархия потоков ввода-вывода
      • 1170 Б.7.2. Обработка ошибок
      • 1170 Б.7.3. Операции ввода
      • 1171 Б.7.4. Операции вывода
      • 1172 Б.7.5. Форматирование
      • 1172 Б.7.6. Стандартные манипуляторы
    • 1173 Б.8. Манипуляции строками
      • 1173 Б.8.1. Классификация символов
      • 1174 Б.8.2. Строки
      • 1175 Б.8.3. Сравнение регулярных выражений
    • 1177 Б.9. Численные методы
      • 1177 Б.9.1. Предельные значения
      • 1179 Б.9.2. Стандартные математические функции
      • 1180 Б.9.3. Комплексные числа
      • 1181 Б.9.4. Класс valarray
      • 1181 Б.9.5. Обобщенные числовые алгоритмы
    • 1182 Б.10. Функции стандартной библиотеки языка С
      • 1182 Б.10.1. Файлы
      • 1183 Б.10.2. Семейство функций printf()
      • 1187 Б.10.3. Строки в стиле языка С
      • 1188 Б.10.4. Память
      • 1189 Б.10.5. Дата и время
      • 1191 Б.10.6. Другие функции
    • 1192 Б.11. Другие библиотеки
  • 1193 Приложение В. Начало работы со средой разработки Visual Studio
    • 1194 В.1. Запуск программы
    • 1194 В.2. Инсталляция среды разработки Visual Studio
    • 1194 В.3. Создание и запуск программ
      • 1195 В.3.1. Создание нового проекта
      • 1195 В.3.2. Используйте заголовочный файл std_lib_facilities.h
      • 1196 В.3.3. Добавление в проект исходного файла на языке С++
      • 1196 В.3.4. Ввод исходного кода
      • 1196 В.3.5. Создание исполняемого файла
      • 1196 В.3.6. Выполнение программы
      • 1197 В.3.7. Сохранение программы
    • 1197 В.4. Что дальше
  • 1199 Приложение Г. Инсталляция библиотеки FLTK
    • 1200 Г.1. Введение
    • 1200 Г.2. Загрузка библиотеки FLTK
    • 1201 Г.3. Инсталляция библиотеки FLTK
    • 1201 Г.4. Использование библиотеки FLTK в среде Visual Studio
    • 1202 Г.5. Как тестировать, если не все работает
  • 1203 Приложение Д. Реализация графического пользовательского интерфейса
    • 1204 Д.1. Реализация обратных вызовов
    • 1205 Д.2. Реализация класса Widget
    • 1206 Д.3. Реализация класса Window
    • 1207 Д.4. Реализация класса Vector_ref
    • 1208 Д.5. Пример: манипулирование объектами класса Widget
  • 1213 Глоссарий
  • 1221 Библиография
  • 1225 Предметный указатель

Инструкция как скачать книгу Бьярн Страуструп: Программирование. Принципы и практика использования C++ в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Программирование. Принципы и практика использования C++
Рейтинг книги:
3 голоса
1542

Поиск книг:




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

Статистика: