Чтение онлайн

на главную - закладки

Жанры

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

Выражаю признательность студентам, ассистентам и преподавателям Техасского университета агрокультуры и машиностроения (курс ENGR 112), которые вольно или невольно помогли написать эту книгу, а также Уолтеру Догерити (Walter Daugherity), прослушавшему этот курс. Кроме того, я благодарен Дэмиану Дечеву (Damian Dechev), Трейси Хэммонд (Tracy Hammond), Арне Толструпу Мэдсену (Arne Tolstrup Madsen), Габриэлю Дос Рейосу (Gabriel Dos Reis), Николасу Страуструпу (Nicholas Stroustrup), Дж. К. ван Винкелю (J. C. van Winkel), Грэгу Версундеру (Greg Versoonder), Ронни Уарду (Ronnie Ward) и Леору Зольману (Leor Zolman) за конструктивные замечания к рукописи книги. Большое спасибо Могенсу Хансену (Mogens Hansen)

за объяснение принципов работы программного обеспечения по управлению двигателем, а также Элу Ахо (Al Aho), Стивену Эдвардсу (Stephen Edwards), Брайану Кернигану (Brian Kernighan) и Дэйзи Нгуен (Daisy Nguyen) за то, что помогли мне спрятаться от того, что могло отвлечь от работы на книгой на протяжении летних месяцев.

Благодарю рецензентов, которых издательство Addison-Wesley подыскало для меня: Ричарда Энбоди (Richard Enbody), Дэвида Густафсона (David Gustafson), Рона Мак-Карти (Ron McCarty) и К. Нараяанасвами (K. Narayanaswamy). Их комментарии, основанные в основном на преподавании языка С++ или курса Computer Science 101 на уровне колледжа, были очень полезными. Я признателен также моему редактору Питеру Гордону (Peter Gordon) за многочисленные комментарии и терпение (не в последнюю очередь). Большое спасибо техническому персоналу издательства Addison–Wesley. Они много сделали для повышения качества книги: корректору Джулии Грейди (Julie Grady), верстальщику Крису Кини (Chris Keane), художнику Робу Мохару (Rob Mauhar), техническому редактору Джулии Нахил (Julie Nahil) и литературному редактору Барбаре Вуд (BarbaraWood).

В дополнение к моим несистематическим попыткам проверить тексты программ Башар Анабтави (Bashar Anabtawi), Йинан Фан (Yinan Fan) и Юрий Солодкий (Yuriy Solodkyy) проверили все фрагменты программ с помощью компиляторов Microsoft C++ 7.1 (2003), 8.0 (2005) и GCC 3.4.4.

Я хотел бы также поблагодарить Брайана Кернигана и Дуга Мак-Илроя (Doug McIlroy) за очень высокие стандарты качества, установленные ими для программирования, а также Денниса Ритчи (Dennis Ritchie) и Кристена Нийгарда (Kristen Nygaard) за ценные уроки по практической разработке языков программирования.

Обращение к читателям

“Если карта не соответствует местности,

доверяй местности.”

Швейцарская армейская поговорка

Эта глава содержит разнообразную информацию; ее цель — дать представление о том, что можно ожидать от остальной части книги. Пожалуйста, пролистайте ее и прочитайте то, что найдете интересным. Для преподавателей полезной будет большая часть книги. Если же вы читаете книгу без помощи хорошего преподавателя, то не пытайтесь прочитать и понять все, что написано в этой главе; просто взгляните на раздел “Структура книги” и первую часть раздела “Педагогические принципы”. Возможно, вы захотите вернуться и перечитать эту главу еще раз, когда научитесь писать и выполнять свои собственные программы.

0.1. Структура книги

Книга состоит из четырех частей и нескольких приложений.

• В части I, “Основы”, описаны фундаментальные концепции и методы программирования на примере языка С++ и библиотек, необходимых для начала разработки программ. К этим концепциям относятся система типов, арифметические операции, управляющие конструкции, обработка ошибок, а также разработка, реализация и использование функций и пользовательских типов.

• В части II, “Ввод и вывод”, описаны способы ввода числовых и текстовых данных с клавиатуры и из файлов, а также вывода результатов на экран и в файлы. Кроме того, в ней показано, как вывести

числа, текст и геометрические фигуры в виде графической информации, а также как ввести данные в программу с помощью графического пользовательского интерфейса (GUI).

• Часть III, “Данные и алгоритмы”, посвящена контейнерам и алгоритмам из стандартной библиотеки С++ (standard template library — STL). В ней продемонстрирована реализация и использование контейнеров (таких как

vector
,
list
и
map
) с помощью указателей, массивов, динамической памяти, исключений и шаблонов. Кроме того, описаны разработка и использование алгоритмов из стандартной библиотеки (таких как
sort
,
find
и
inner_product
).

• Часть IV, “Расширение кругозора”, посвящена изложению идей и истории программирования на примерах матричных вычислений, обработки текста, тестирования, а также встроенных систем управления на основе языка С.

Приложения содержат полезную информацию, которая была пропущена в тексте по причинам педагогического характера. В частности, приводится краткий обзор языка С++ и возможностей стандартной библиотеки, а также продемонстрированы принципы работы с интегрированными средами разработки (integrated development environment — IDE) и библиотекой графического пользовательского интерфейса (graphical user interface — GUI).

К сожалению, программирование нельзя так просто разделить на четыре четко разделенные области. По этой причине предложенная классификация является довольно грубой, хотя мы считаем ее полезной (иначе не стали бы ее предлагать). Например, операции ввода в книге используются намного раньше детального описания стандартных потоков ввода-вывода в языке С++. Как только для описания какой-то идеи нам требуется упомянуть несколько тем, мы предпочитаем изложить минимум информации, а не отсылать читателя к подробному изложению темы в другом месте. Строгая классификация больше нужна для справочников, чем для учебников.

Порядок изложения определяется методами программирования, а не языковыми конструкциями (см. раздел 0.2). Обзор свойств языка содержится в приложении А.

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

• Метка: концепции и методы (как в данном разделе).

• Метка: совет.

• Метка: предупреждение.

0.1.1. Общие принципы

В книге я обращаюсь к вам непосредственно. Это проще и понятнее, чем принятое в научных работах косвенное обращение в третьем лице. Под местоимением “вы” я подразумеваю вас, читатель, а под местоимением “мы” — себя и преподавателей или нас с вами, работающих вместе над решением задачи, как если бы мы сами находились в одной комнате.

Поделиться:
Популярные книги

Измена. Жизнь заново

Верди Алиса
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Жизнь заново

Его огонь горит для меня. Том 2

Муратова Ульяна
2. Мир Карастели
Фантастика:
юмористическая фантастика
5.40
рейтинг книги
Его огонь горит для меня. Том 2

Командир Красной Армии

Поселягин Владимир Геннадьевич
1. Командир Красной Армии
Фантастика:
попаданцы
8.72
рейтинг книги
Командир Красной Армии

Брачный сезон. Сирота

Свободина Виктория
Любовные романы:
любовно-фантастические романы
7.89
рейтинг книги
Брачный сезон. Сирота

Сама себе хозяйка

Красовская Марианна
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Сама себе хозяйка

Барону наплевать на правила

Ренгач Евгений
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барону наплевать на правила

Единственная для невольника

Новикова Татьяна О.
Любовные романы:
любовно-фантастические романы
5.67
рейтинг книги
Единственная для невольника

Вторая невеста Драконьего Лорда. Дилогия

Огненная Любовь
Вторая невеста Драконьего Лорда
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Вторая невеста Драконьего Лорда. Дилогия

Любовь по инструкции

Zzika Nata
Любовные романы:
любовно-фантастические романы
5.85
рейтинг книги
Любовь по инструкции

Город Богов

Парсиев Дмитрий
1. Профсоюз водителей грузовых драконов
Фантастика:
юмористическая фантастика
детективная фантастика
попаданцы
5.00
рейтинг книги
Город Богов

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Мастер Разума II

Кронос Александр
2. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.75
рейтинг книги
Мастер Разума II

Сердце Дракона. Том 9

Клеванский Кирилл Сергеевич
9. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.69
рейтинг книги
Сердце Дракона. Том 9

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное