Звоните: (067) 644-70-74
Напишите нам burtrest@gmail.com

Книга Программирование на С++. 4-е изд. Савич. Питер. 2004

97.50 грн.

Артикул: 08a6103771cb Категория:

Описание

 Книга Программирование на С++. 4-е изд. Савич. Питер. 2004 содержит исчерпывающую информацию о языке программирования C++. Кроме «стандартных» тем, таких как объявление переменных, операторы выбора, массивы, циклы, функции и др., детально рассматривается к тому же работа с векторами, динамические многомерные массивы, обработка исключений, указатели и перегрузка операторов. Примеры и квесты для самостоятельной работы, содержащиеся в любой главе, помогут читателю зафиксировать изученный гипотетический материал. Книга рассчитана на студентов и начинающих программистов, которые желают изучить тонкости программирования на языке C++.

Содержание книги Программирование на С++. 4-е изд. Савич. Питер. 2004

Предисловие
Последовательность изучения курса
Порядок изложения материала в главах
Где получить дополнительные материалы
От издательства
Глава 1. Основы информатики и программирования на языке C++
1.1. Компьютерные системы
Аппаратное обеспечение
Программное обеспечение
Высокоуровневые языки программирования
Компиляторы
Историческая справка
1.2. Программирование и решение задач
Алгоритмы
Разработка программ
Объектно-ориентированное программирование
Жизненный цикл программного обеспечения
1.3. Введение в C++
Как возник язык C++
Пример программы на C++
Ловушка: использование /n вместо n при переходе на новую строку
Совет программисту: синтаксис ввода и вывода
Структура простой программы на C++
Ловушка: пробел перед именем файла в директиве include
Компиляция и запуск программы на C++
Совет программисту: запуск программы
1.4. Тестирование и отладка
Виды программных ошибок
Ловушка: предполагается, что программа верна
Резюме
Ответы к упражнениям для самопроверки
Практические задания
Глава 2. Основные понятия C++
2.1. Переменные и операторы присваивания
Переменные
Имена и идентификаторы
Объявление переменных
Операторы присваивания
Ловушка: неинициализированные переменные
Совет программисту: используйте информативные имена
2.2. Ввод-вывод
Вывод с помощью потока cout
Директивы include и пространства имен
Управляющие последовательности
Совет программисту: заканчивайте каждую программу выводом символа новой строки
Форматирование чисел с дробной частью
Ввод с помощью потока cin
Программирование ввода и вывода
Совет программисту: переводы строки при вводе-выводе
2.3. Типы данных и выражения
Типы int и double
Другие числовые типы
Тип char
Тип bool
Совместимость типов данных
Арифметические операторы и выражения
Ловушка: целые числа и деление
Еще об операторах присваивания
2.4. Простейшее управление потоком
Простой механизм ветвления
Ловушка: сравнение нескольких значений
Ловушка: использование = вместо ==
Составные операторы
Простые механизмы циклического выполнения
Операторы инкрементирования и декрементирования
Пример: баланс кредитной карточки
Ловушка: бесконечные циклы
2.5. Некоторые особенности оформления программ
Отступы
Комментарии
Именованные константы
Резюме
Ответы к упражнениям для самопроверки
Практические задания
Глава 3. Процедурная абстракция и функции
3.1. Нисходящее проектирование
3.2. Стандартные функции
Использование функций
Преобразование типов
Старая форма оператора приведения типов
Ловушка: при целочисленном делении отбрасывается дробная часть
3.3. Функции, определяемые программистом
Определения функций
Две формы объявлений функций
Ловушка: неверный порядок аргументов
Синтаксис определения функции
Еще об определениях функций
3.4. Процедурная абстракция
Аналогия с черным ящиком
Совет программисту: выбор имен формальных параметров
Пример: покупка пиццы
Совет программисту: использование псевдокода
3.5. Локальные переменные
Аналогия с маленькой программой
Пример: расчет предполагаемого урожая
Глобальные константы и глобальные переменные
Формальные параметры, передаваемые по значению, являются переменными
Пространство имен std
Пример: функция, вычисляющая факториал
3.6. Перегрузка имен функций
Основные понятия перегрузки
Пример: модифицированная программа покупки пиццы
Автоматическое преобразование типов
Резюме
Ответы к упражнениям для самопроверки
Практические задания
Глава 4. Функции для разных подзадач
4.1. Функции типа void
Определения функций типа void
Пример: преобразование значений температуры
Оператор return в функциях типа void
4.2. Передача параметров по ссылке
Первое знакомство с передачей параметров по ссылке
Механизм передачи параметров по ссылке
Пример: функция swap_values
Смешанные списки параметров
Совет программисту: как правильно выбрать способ передачи параметра
Ловушка: локальная переменная вместо параметра, передаваемого по ссылке
4.3. Использование процедурной абстракции
Функции, вызывающие другие функции
Предусловия и постусловия
Пример: цены в супермаркете
4.4. Тестирование и отладка функций
Заглушки и отладочные программы
Резюме
Ответы к упражнениям для самопроверки
Практические задания
Глава 5. Потоки ввода-вывода
5.1. Потоки и основы файлового ввода-вывода
Почему для ввода-вывода используются файлы
Файловый ввод-вывод
Введение в классы и объекты
Совет программисту: проверяйте, открыт ли файл
Реализация файлового ввода-вывода
Добавление данных в файл (факультативный материал)
Использование имен файлов в качестве входных данных (факультативный материал)
5.2. Дополнительные средства выполнения потокового ввода-вывода
Форматирование выходных данных с помощью потоковых функций
Манипуляторы
Потоки в качестве аргументов функций
Совет программисту: проверка на конец файла
О пространствах имен
Пример: форматирование файла
5.3. Символьный ввод-вывод
Функции-члены get и put
Функция-член putback (факультативный материал)
Пример: проверка входных данных
Ловушка: лишний символ n во входном потоке
Функция-член eof
Пример: редактирование текстового файла
Предопределенные символьные функции
Ловушка: функции toupper и tolower возвращают значения типа int
5.4. Наследование
Наследование для потоковых классов
Пример: еще одна функция new_line
Аргументы функции, используемые по умолчанию (факультативный материал)
Резюме
Ответы к упражнениям для самопроверки
Практические задания
Глава 6. Определение классов
6.1. Структуры
Структуры для разнородных данных
Ловушка: отсутствие точки с запятой в определении структуры
Структуры как аргументы функций
Совет программисту: пользуйтесь иерархическими структурами
Инициализация структур
6.2. Классы
Определение классов и функций-членов
Открытые и закрытые члены класса
Совет программисту: объявляйте все переменные-члены как закрытые
Совет программисту: определяйте аксессоры и мутаторы
Совет программисту: используйте для объектов оператор присваивания
Пример: класс BankAccount
Резюме: некоторые свойства классов
Инициализация с помощью конструкторов
Совет программисту: всегда определяйте конструктор, используемый по умолчанию
Ловушка: конструкторы без аргументов
6.3. Абстрактные типы данных
Классы как абстрактные типы данных
Пример: альтернативная реализация класса BankAccount
Резюме
Ответы к упражнениям для самопроверки
Практические задания
Глава 7. Поток управления программы
7.1. Использование логических выражений
Вычисление логических выражений
Ловушка: логические выражения преобразуются в значения типа int
Функции, возвращающие логические значения
Перечисления (факультативный материал)
7.2. Многонаправленное ветвление
Вложенные операторы if…else
Совет программисту: используйте скобки во вложенных операторах
Многонаправленные операторы if…else
Пример: подоходный налог штата
Оператор switch
Ловушка: забытый оператор break в операторе switch
Использование операторов switch для создания меню
Совет программисту: использование в операторах ветвления вызовов функций
Блоки
Ловушка: переменные, случайно оказавшиеся локальными
7.3. Циклы в C++
Цикл while
Операторы инкрементирования и декрементирования
Оператор for
Ловушка: лишняя точка с запятой в операторе for
Каким циклом пользоваться
Ловушка: неинициализированные переменные и бесконечные циклы
Оператор break
Ловушка: оператор break во вложенных циклах
7.4. Разработка циклов
Циклы для сумм и произведений
Завершение циклов
Вложенные циклы
Отладка циклов
Резюме
Ответы к упражнениям для самопроверки
Практические задания
Глава 8. Дружественные функции и перегрузка операторов
8.1. Дружественные функции
Пример: функция равенства
Применение дружественных функций
Совет программисту: определяйте и аксессоры, и дружественные функции
Совет программисту: используйте и функции-члены, и обычные функции
Пример: класс Money
Реализация функции digit_to_int (факультативный материал)
Ловушка: ведущие нули в числовых константах
Квалификатор const
Ловушка: непоследовательное использование квалификатора const
8.2. Перегрузка операторов
Реализация перегрузки операторов
Конструкторы для автоматического приведения типов
Перегрузка унарных операторов
Перегрузка операторов >> и << Резюме Ответы к упражнениям для самопроверки Практические задания Глава 9. Раздельная компиляция и пространства имен 9.1. Раздельная компиляция Еще раз об абстрактных типах данных Пример: DigitalTime — отдельно компилируемый класс Директива #ifndef Совет программисту: определение других библиотек 9.2. Пространства имен Пространства имен и директива using Создание пространств имен Уточнение имен Особенности использования пространств имен (факультативный материал) Безымянные пространства имен Совет программисту: выбор имени для пространства имен Ловушка: не путайте глобальное и безымянное пространства имен Резюме Ответы к упражнениям для самопроверки Практические задания Глава 10. Массивы 10.1. Основные понятия Объявление массивов и доступ к их элементам Совет программисту: используйте для работы с массивами цикл for Ловушка: элементы массивов всегда нумеруется начиная с нуля Совет программисту: задавайте размер массивов с помощью определенных в программе констант Расположение массивов в памяти Ловушка: выход индекса массива за допустимые пределы Инициализация массивов 10.2. Массивы и функции Элементы массива в качестве аргументов функций Массивы в качестве аргументов функций Квалификатор параметра const Ловушка: несогласованное использование квалификатора const Функции, возвращающие массивы Пример: диаграмма производительности 10.3. Использование массивов Частично заполненные массивы Совет программисту: не ограничивайте количество формальных параметров Пример: поиск в массиве Пример: сортировка массива 10.4. Массивы и классы Массивы структур и массивы классов Массивы как члены классов Пример: класс для частично заполненного массива 10.5. Многомерные массивы Основные понятия Параметры типа многомерных массивов Пример: программа, использующая двухмерный массив Ловушка: запятые между индексами массива Резюме Ответы к упражнениям для самопроверки Практические задания Глава 11. Строки и векторы 11.1. Массивы для хранения строк Строковые значения и строковые переменные C Ловушка: использование операторов = и == со строками C Функции из библиотеки cstring Ввод и вывод строк C Преобразование строк C в числа 11.2. Стандартный класс string Первое знакомство с классом string Ввод-вывод с помощью класса string Совет программисту: дополнительные версии функции getline Ловушка: комбинирование ввода с помощью потока cin и функции getline Обработка строк с помощью класса string Пример: проверка палиндрома Взаимное преобразование объектов типа string и строк C 11.3. Векторы Основные понятия Ловушка: индекс в квадратных скобках превышает размер вектора Совет программисту: учитывайте особенности присваивания для векторов Эффективное использование памяти Резюме Ответы к упражнениям для самопроверки Практические задания Глава 12. Указатели и динамические массивы 12.1. Указатели Переменные-указатели Основы управления памятью Ловушка: зависшие указатели Динамические и автоматические переменные Совет программисту: определяйте типы указателей 12.2. Динамические массивы Массивы переменных и переменные-указатели Создание и использование динамических массивов Арифметические операции с указателями (факультативный материал) Многомерные динамические массивы (факультативный материал) 12.3. Классы и динамические массивы Пример: класс для строковой переменной Деструкторы Деструкторы Конструктор копирования Перегрузка оператора присваивания Резюме Ответы к упражнениям для самопроверки Практические задания Глава 13. Рекурсия 13.1. Рекурсивные функции, не возвращающие значений Пример: вертикальная запись чисел Подробно о рекурсии Ловушка: бесконечная рекурсия Стеки и рекурсия Ловушка: переполнение стека Рекурсия и итеративное выполнение 13.2. Рекурсивные функции, возвращающие значения Схема рекурсивных функций, возвращающих значения Пример: еще одна функция возведения в степень 13.3. Рекурсивное мышление Рекурсивные технологии проектирования Пример: реализация двоичного поиска с помощью рекурсии Пример: рекурсивная функция-член Резюме Ответы к упражнениям для самопроверки Практические задания Глава 14. Шаблоны 14.1. Шаблоны для абстрактных алгоритмов Шаблоны функций Ловушка: сложности компиляции Пример: универсальная функция сортировки Совет программисту: как определять шаблоны Ловушка: использование шаблона с неподходящим типом данных 14.2. Шаблоны и абстракция данных Синтаксис шаблона класса Пример: класс-массив Резюме Ответы к упражнениям для самопроверки Практические задания Глава 15. Указатели и связные списки 15.1. Узлы и связные списки Узлы Связные списки Вставка узла в начало списка Ловушка: потерянные узлы Поиск в связном списке Указатели в качестве итераторов Вставка и удаление элементов в середине списка Ловушка: использование оператора присваивания с динамическими структурами данных 15.2. Применение связных списков Стеки Пример: класс Stack Резюме Ответы к упражнениям для самопроверки Практические задания Глава 16. Наследование и полиморфизм 16.1. Наследование Производные классы Конструкторы в производных классах Ловушка: использование закрытых переменных-членов базового класса Ловушка: закрытые функции-члены можно считать ненаследуемыми Модификатор protected Переопределение функций-членов Переопределение и перегрузка Доступ к переопределенной функции базового класса 16.2. Подробнее о наследовании Функции, которые не наследуются Операторы присваивания и конструкторы копирования в производных классах Деструкторы и производные классы 16.3. Полиморфизм Позднее связывание Виртуальные функции в языке C++ Виртуальные функции и расширение совместимости типов Ловушка: проблема расщепления Ловушка: без функций-членов не обойтись Ловушка: попытка откомпилировать определение класса без определений всех его виртуальных функций-членов Совет программисту: объявляйте деструкторы как виртуальные Резюме Ответы к упражнениям для самопроверки Практические задания Глава 17. Обработка исключений 17.1. Основы обработки исключений Простой пример обработки исключений Определение собственных классов исключений Выброс и перехват исключений различных типов Ловушка: сначала перехватывайте специализированные исключения Совет программисту: классы исключений могут быть пустыми Выброс исключений в функции Спецификация исключений Ловушка: спецификация исключений в производных классах 17.2. Программирование обработки исключений Когда следует выбрасывать исключения Ловушка: необработанные исключения Ловушка: вложенные блоки try...catch Ловушка: злоупотребление исключениями Иерархия классов исключений Проверка наличия свободной памяти Повторный выброс исключения Резюме Ответы к упражнениям для самопроверки Практические задания Приложения Приложение 1. Ключевые слова C++ Приложение 2. Приоритет выполнения операторов Приложение 3. Набор символов ASCII Приложение 4. Некоторые библиотечные функции Приложение 5. Макрос assert Приложение 6. Встраиваемые функции Приложение 7. Перегрузка квадратных скобок индекса массива Приложение 8. Указатель this Приложение 9. Перегрузка операторов как операторов-членов Алфавитный указатель