Программирование. Принципы и практика использования 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. Биографии
- 34 0.1. Структура книги
- 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. Преимущества объектно-ориентированного программирования
- 500 14.1. Принципы проектирования
- 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. Категории итераторов
- 716 20.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. Источники информации
- 804 22.1. История, идеалы и профессионализм
- 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. Ссылки
- 992 26.1. Чего мы хотим
- 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. Пример: интрузивные контейнеры
- 1032 27.1. Языки С и С++: братья
- 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
- 1082 A.1. Общие сведения
- 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. Другие библиотеки
- 1136 Б.1. Обзор
- 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 совершенно бесплатно.