Стенли Липпман - Язык программирования C++. Пятое издание
- Название:Язык программирования C++. Пятое издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2014
- Город:Москва
- ISBN:978-5-8459-1839-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стенли Липпман - Язык программирования C++. Пятое издание краткое содержание
Вы держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под
. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.
С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать их наилучшие способы применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.
Стенли Б. Липпман Жози Лажойе Барбара Э. Му • Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием
• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования
• Изучите принципы и узнайте почему язык С++11 работает именно так
• Воспользуйтесь множеством перекрестных ссылок, способных помочь вам объединить взаимосвязанные концепции и проникнуть в суть
• Ознакомьтесь с современными методиками обучения и извлеките пользу из упражнений, в которых подчеркиваются ключевые моменты, позволяющие избежать проблем
• Освойте лучшие методики программирования и закрепите на практике изученный материал
Исходный код примеров можно загрузить с веб-страницы книги на сайте издательства по адресу: http://www.williamspublishing.com
Язык программирования C++. Пятое издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
#include
int main() {
int v1 = 0, v2 = 0;
std::cin >> v >> v2; // ошибка: используется "v" вместо "v1"
// cout не определен, должно быть std::cout
cout << v1 + v2 << std::endl;
return 0;
}
Сообщение об ошибке содержит обычно номер строки и краткое описание того, что компилятор считает неправильным. Исправлять ошибки имеет смысл в том порядке, в котором поступают сообщения о них. Зачастую одна ошибка приводит к появлению других, поэтому компилятор, как правило, сообщает о большем количестве ошибок, чем имеется фактически. Целесообразно также перекомпилировать код после устранения каждой ошибки или небольшого количества вполне очевидных ошибок. Этот цикл известен под названием " редактирование, компиляция, отладка " (edit-compile-debug).
Упражнение 1.16. Напишите собственную версию программы, которая выводит сумму набора целых чисел, прочитанных при помощи объекта cin
.
1.4.4. Оператор if
Подобно большинству языков, С++ предоставляет оператор if
, который обеспечивает выполнение операторов по условию. Оператор if
можно использовать для написания программы подсчета количества последовательных совпадений значений во вводе:
#include
int main() {
// currVal - подсчитываемое число; новые значения будем читать в val
int currVal = 0, val = 0;
// прочитать первое число и удостовериться в наличии данных
// для обработки
if (std::cin >> currVal) {
int cnt = 1; // сохранить счет для текущего значения
while (std::cin >> val) { // читать остальные числа
if (val == currVal) // если значение то же
++cnt; // добавить 1 к cnt
else { // в противном случае вывести счет для
// предыдущего значения
std::cout << currVal << " occurs "
<< ent << " times" << std::endl;
currVal = val; // запомнить новое значение
cnt = 1; // сбросить счетчик
}
} // цикл while заканчивается здесь
// не забыть вывести счет для последнего значения
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
} // первый оператор if заканчивается здесь
return 0;
}
Если задать этой программе следующий ввод:
42 42 42 42 42 55 55 62 100 100 100
то результат будет таким:
42 occurs 5 times
55 occurs 2 times
62 occurs 1 times
100 occurs 3 times
Большая часть кода в этой программе должна быть уже знакома по прежним программам. Сначала определяются переменные val
и currVal
: currVal
будет содержать подсчитываемое число, а переменная val
— каждое число, читаемое из ввода. Новыми являются два оператора if
. Первый гарантирует, что ввод не пуст.
if (std::cin >> currVal) {
// ...
} // первый оператор if заканчивается здесь
Подобно оператору while
, оператор if
проверяет условие. Условие в первом операторе if
читает значение в переменную currVal
. Если чтение успешно, то условие истинно и выполняется блок кода, начинающийся с открытой фигурной скобки после условия. Этот блок завершается закрывающей фигурной скобкой непосредственно перед оператором return
.
Как только подсчитываемое стало известно, определяется переменная cnt
, содержащая счет совпадений данного числа. Для многократного чтения чисел со стандартного устройства ввода используется цикл while
, подобный приведенному в предыдущем разделе.
Телом цикла while
является блок, содержащий второй оператор if
:
if (val == currVal) // если значение то же
++cnt; // добавить 1 к cnt
else { // в противном случае вывести счет для
// предыдущего значения
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
currVal = val; // запомнить новое значение
cnt = 1; // сбросить счетчик
}
Условие в этом операторе if
использует для проверки равенства значений переменных val
и currVal
оператор равенства (equality operator) (оператор ==
). Если условие истинно, выполняется оператор, следующий непосредственно за условием. Этот оператор осуществляет инкремент значения переменной cnt
, означая очередное повторение значения переменной currVal
.
Если условие ложно (т.е. значения переменных val
и currVal
не равны), выполняется оператор после ключевого слова else
. Этот оператор также является блоком, состоящим из оператора вывода и двух присвоений. Оператор вывода отображает счет для значения, которое мы только что закончили обрабатывать. Операторы присвоения возвращают переменной cnt
значение 1
, а переменной currVal
— значение переменной val
, которое ныне является новым подсчитываемым числом.
В языке С++ для присвоения используется оператор
=
, а для про верки равенства — оператор ==
. В условии могут присутствовать оба оператора. Довольно распространена ошибка, когда в условии пишут =
, а подразумевают ==
.
Упражнение 1.17. Что произойдет, если в рассматриваемой здесь программе все введенные значения будут равны? Что если никаких совпадающих значений нет?
Упражнение 1.18. Откомпилируйте и запустите на выполнение программу этого раздела, а затем вводите только равные значения. Запустите ее снова и вводите только не повторяющиеся числа. Совпадает ли ваше предположение с реальностью?
Упражнение 1.19. Пересмотрите свою программу, написанную для упражнения раздела 1.4.1, которая выводила бы диапазон чисел, обрабатывая ввод, так, чтобы первым отображалось меньше число из двух введенных.
Оформление исходного кода программ на языке С++ не имеет жестких правил, поэтому расположение фигурных скобок, отступ, выравнивание, комментарии и разрыв строк, как правило, никак не влияет на полученную в результате компиляции программу. Например, фигурная скобка, обозначающая начало тела функции main()
, может находиться в одной строке со словом main
(как в этой книге), в начале следующей строки или где-нибудь дальше. Единственное требование — чтобы открывающая фигурная скобка была первым печатным символом, за исключением комментария, после списка параметров функции main()
.
Хотя исходный код вполне можно оформлять по своему усмотрению, необходимо все же позаботиться о его удобочитаемости. Можно, например, написать всю функцию main()
в одной длинной строке. Такая форма записи вполне допустима, но читать подобный код будет крайне неудобно.
Интервал:
Закладка: