Сообщений 11    Оценка 46        Оценить  
Система Orphus

C++. Экспресс-курс

Автор: Валерий Лаптев
Издательство: БХВ-Петербург, 2004
512 страниц

Материал предоставил: Алексей Кирюшкин
Найти в магазинах
Купить в Озоне (172 руб.)
Купить в Books.Ru
Купить в Болеро (152 руб.)

Аннотация

Содержание
Введение
Комментарии

Аннотация

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

Содержание

Введение
Кому адресована эта книга
Структура книги
Используемые программные продукты
Благодарности

ЧАСТЬ I. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА С++

Глава 1. Как написать программу на С++
Проверка условий
Оператор-переключатель
Повторение вычислений
Операторы break и continue
Встроенные типы данных
Дробные числа
Целые числа
Символы и строки
Операции присваивания и выражения
Преобразование типов
Другие операции
Печальная действительность
"Страшный зверь" по имени undefined behavior

Глава 2. Функции
Библиотечные функции
Математические функции
Как написать функцию
Определение функции
Список параметров и вызов функции
Передача параметров по значению
Параметры по умолчанию
Область видимости и "время жизни" переменных
Передача параметров по ссылке
Константные параметры функций
Побочный эффект
Перегрузка функций
Шаблоны функций
Символы
Макросы и inline-функции
Применение препроцессора с пользой

Глава 3. Группы данных
Массивы
Обработка числовых массивов
Индексы как параметры
Многомерные массивы
Строки
Обработка символьных массивов
Ввод и вывод массивов символов
Структуры
Структуры как параметры
Шаблоны структур
Массивы и структуры
Структуры, функции и шаблоны
Размеры структур

Глава 4. Тяжелое наследие С
Параметры-массивы в форме указателя
Что такое указатели
Виды указателей
Объявление типизированных указателей
Бестиповые указатели и преобразование типов
Массивы и указатели
Указатели как параметры
Бестиповые указатели как параметры
Указатели на символы
Русские буквы
Библиотека string.h
Указатели на символы - переменные и константы
Указатели и динамическая память
Многомерные динамические массивы
Многомерные массивы как параметры
Структуры и указатели
Структуры с указателями
Проблемы с указателями
Указатели на функции как параметры
Экономия памяти
Параметры функции main

Глава 5. Стандартная библиотека
Логический тип данных
Новые строки
Строки как параметры
Числа - прописью
Контейнеры, итераторы и алгоритмы
Векторы вместо массивов
Указатели и контейнеры
Стандартные алгоритмы и итераторы
Поиск в контейнере
Сортировки
Обработка контейнеров и функциональные объекты

Глава 6. Ввод и вывод в С++
Стандартные потоки в С++
Ввод данных
Ввод строк
Потоки и файлы
Каталоги
Протестируемся
Состояния потока
Макет сохранения информации
Программа тестирования
Форматирование вывода
Снова о программе тестирования
Режимы открытия потоков (файлов)
Текстовые и двоичные файлы
Двоичные файлы и прямой доступ
Шифрование файлов
Соберем все вместе
Строковые потоки

Глава 7. Снова о функциях
''Левые'' функции
''Левые'' функции с указателями
Функции с переменным числом параметров
Стандартные средства
Рекурсивные функции
Формы рекурсивных функций
Выполнение рекурсивных функций
Рекурсия при обработке динамических структур данных
Односвязный линейный список
Двоичное дерево
Параметры в рекурсивных функциях

ЧАСТЬ II. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Глава 8. Создание простых типов
Перегрузка операций
Перегрузка операций для enum
Снова структуры
Конструкторы
Конструкторы и параметры функций
Конструкторы и преобразование типов
Перегрузка операций методами
Внешняя или внутренняя?
Классы и структуры

Глава 9. Динамические классы
Массивы c задаваемыми индексами
Конструкторы и деструкторы
Копирующее присваивание
''Разноликие'' матрицы
Перегрузка индексирования для нецелых аргументов
Последовательный контейнер
''Интеллектуальные'' указатели
auto_ptr

Глава 10. Исключения - что это такое
Принципы обработки исключений
Генерация исключений
Перехват исключений
Функции и исключения
Передача информации в блок обработки
Спецификация исключений
Конструкторы, деструкторы и исключения
Стандартные исключения

Глава 11. Наследование
Простое наследование
Открытое наследование
Конструкторы и деструкторы в производных классах
Закрытое наследование
Виртуальность
RTTI и dynamic_cast
Большие программы
Переменные, функции и файлы
Пространства имен
Именованные пространства имен
Неименованные пространства имен
Использование препроцессора

Глава 12. Обобщенное программирование
Процедурное обобщенное программирование
Полиморфные функции
Способы передачи параметров-указателей на функции
Указатели на функцию в списках переменной длины
Возврат указателя на функцию
Функционально-объектное обобщенное программирование
Решения стандартной библиотеки
Объектно-ориентированное обобщенное программирование
Абстрактные классы
Метапрограммирование

ЧАСТЬ III. КАК НАПИСАТЬ ПРОГРАММУ ДЛЯ WINDOWS

Глава 13. Windows - это не просто
Венгерская нотация
Консольные приложения и Unicode
Оконные приложения
Создание "пустой" программы
Интерфейс программы умножения
Создание меню
Создание элементов управления
Обработка сообщений
Стоила ли игра свеч

Глава 14. Быстрая разработка приложений
Шаг 1
Шаг 2
Шаг 3
Шаг 4
Шаг 5

Заключение

ЧАСТЬ IV. ПРИЛОЖЕНИЯ

Приложение 1. Системы фирмы Borland

Borland С++ 3.1
Запуск IDE и выход
Создание и сохранение программы
Многофайловые программы
Создание и изменение проекта
Компиляция, компоновка и выполнение
Работа с отладчиком
Точки прерывания
Выполнение до курсора
Пооператорное (пошаговое) выполнение
Просмотр и изменение переменных
Справочная система

Borland С++ 5
Запуск IDE
Создание и выполнение консольных программ
Продолжение работы с программой
Создание проекта программы
Работа с отладчиком
Справочная система

Borland С++ Builder 6
Запуск IDE
Создание нового проекта
Продолжение работы с программой
Компиляция, компоновка и выполнение
Работа с отладчиком
Справочная система

Приложение 2. Интегрированная среда Microsoft Visual C++ 6

Запуск IDE
Создание и выполнение программ
Продолжение работы с проектом
Конфигурация проекта
Работа с отладчиком

Приложение 3. Ресурсы С++ в Интернете

Приложение 4. Список литературы

Предметный указатель

Введение

Валерий Лаптев

По шутливому замечанию Джеффа Элджера, "на рынке продается по крайней мере 2 768 942 книги о С++". И все же выдержите в руках еще одну - 2 768 943-ю книгу о том же самом. Зачем нужна еще одна книга о С++?

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

Все книги о С++ можно разделить на несколько категорий: о самом языке С++, об использовании конкретной среды программирования вроде Borland C++ или Visual C++, и о типовых структурах данных и алгоритмах. Однако по собственному опыту знаю, что этого недостаточно, чтобы научиться программировать на С++. В жизни программисту приходится сталкиваться с целым спектром чисто практических проблем, которые ни в одной книге не излагаются.

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

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

И наконец, проблема русских букв. Естественно, ни одна книга иностранных авторов, многие из которых просто замечательны и мне очень нравятся, эту проблему не затрагивает. Удивительно, но и в книгах российских авторов тоже нет об этом ни слова! Между тем, это серьезная проблема для начинающего программиста, требующая определенных знаний и навыков.

Такой же серьезной проблемой является переход от консольных приложений к оконным. Помню, как мучительно долго я, опытный программист, разбирался в идеологии и особенностях программирования для Windows. Угнетало количество технических деталей и отсутствие четких ориентиров, на что в первую очередь обращать внимание. Тем более такой переход сложен для новичка, несмотря на то, что сейчас существует достаточно много отличных книг, обучающих программированию для Windows.

Однако в экспресс-курсе невозможно изложить все. В процессе работы над книгой мне часто приходилось решать, что оставить, а что выбросить. Поэтому в главе об указателях я решил не упоминать о функции malloc и ее "родственниках" из С, а в главе о вводе/выводе ни слова нет о библиотеке stdio.h. Не упоминается и о битовых полях в структуре и совсем мало о битовых операциях. А вот о программировании функций, наоборот, написано значительно больше, чем это обычно принято. Довольно много внимания уделено и различным проблемам, возникающим в реальном программировании. Достаточно подробно описана проблема "кириллизации" строк, так важных для начинающих программистов.

Что получилось - судить вам.

Комментарии

Алексей Кирюшкин

Получилось - "то, что доктор прописал". Правильный порядок подачи материала, примеры с использованием средств именно C++, а не просто "C с классами" (потоки ввода-вывода, шаблоны, STL), указания на особенности используемых средств разработки позволяют смело рекомендовать ''С++. Экспресс курс'' как книгу, с которой нужно начинать изучение C++.

    Сообщений 11    Оценка 46        Оценить