Стенли Липпман - Язык программирования C++. Пятое издание Страница 62

Тут можно читать бесплатно Стенли Липпман - Язык программирования C++. Пятое издание. Жанр: Компьютеры и Интернет / Программирование, год -. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте «WorldBooks (МирКниг)» или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Стенли Липпман - Язык программирования C++. Пятое издание

Стенли Липпман - Язык программирования C++. Пятое издание краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Стенли Липпман - Язык программирования C++. Пятое издание» бесплатно полную версию:
Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Вы держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать их наилучшие способы применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.Стенли Б. Липпман работал старшим консультантом в Jet Propulsion Laboratory, архитектором группы Visual С++ корпорации Microsoft, техническим сотрудником Bell Laboratories и главным инженером- программистом по анимации в кинокомпаниях Disney, DreamWorks, Pixar и PDI.Жози Лажойе, работающий ныне в кинокомпании Pixar, был членом канадской группы разработчиков компилятора C/C++ корпорации IBM, а также возглавлял рабочую группу базового языка С++ в составе международной организации по стандартизации ANSI/ISO.Барбара Э. Му имеет почти тридцатилетний опыт программирования. На протяжении пятнадцати лет она работала в компании AT&T, сотрудничая с Бьярне Страуструпом, автором языка С++, и несколько лет руководила группой разработчиков С++.• Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования• Изучите принципы и узнайте почему язык С++11 работает именно так• Воспользуйтесь множеством перекрестных ссылок, способных помочь вам объединить взаимосвязанные концепции и проникнуть в суть• Ознакомьтесь с современными методиками обучения и извлеките пользу из упражнений, в которых подчеркиваются ключевые моменты, позволяющие избежать проблем• Освойте лучшие методики программирования и закрепите на практике изученный материалИсходный код примеров можно загрузить с веб-страницы книги на сайте издательства по адресу: http://www.williamspublishing.com

Стенли Липпман - Язык программирования C++. Пятое издание читать онлайн бесплатно

Стенли Липпман - Язык программирования C++. Пятое издание - читать книгу онлайн бесплатно, автор Стенли Липпман

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

Для примера вернемся к циклу while из кода в разделе 1.4.1.

while (val <= 10) {

 sum += val; // присвоить sum сумму val и sum

 ++val;      // добавить 1 к val

}

Логика программы нуждалась в двух операторах, но цикл while способен содержать только один оператор. Заключив эти операторы в фигурные скобки, получаем один (составной) оператор.

Блок не завершают точкой с запятой.

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

while (cin >> s && s != sought)

 { } // пустой блок

Упражнения раздела 5.1

Упражнение 5.1. Что такое пустой оператор? Когда его можно использовать?

Упражнение 5.2. Что такое блок? Когда его можно использовать? 

Упражнение 5.3. Используя оператор запятой (см. раздел 4.10), перепишите цикл while из раздела 1.4.1 так, чтобы блок стал больше не нужен. Объясните, улучшило ли это удобочитаемость кода.

5.2. Операторная область видимости

Переменные можно определять в управляющих структурах операторов if, switch, while и for. Переменные, определенные в управляющей структуре, видимы только в пределах этого оператора и выходят из области видимости по его завершении.

while (int i = get_num()) // i создается и инициализируется при

                          // каждой итерации

 cout << i << endl;

i = 0; // ошибка: переменная i недоступна вне цикла

Если к значению управляющей переменной необходимо обращаться впоследствии, то ее следует определить вне оператора.

// найти первый отрицательный элемент

auto beg = v.begin();

while (beg != v.end() && *beg >= 0)

 ++beg;

if (beg == v.end())

 // известно, что все элементы v больше или равны нулю

Значение объекта, определенного в управляющей структуре, используется самой структурой. Поэтому такие переменные следует инициализировать.

Упражнения раздела 5.2

Упражнение 5.4. Объясните каждый из следующих примеров, а также устраните все обнаруженные проблемы.

(a) while (string::iterator iter != s.end()) { /* ... */ }

(b) while (bool status = find(word)) { /* ... */ }

    if (!status) { /* ... */ }

5.3. Условные операторы

Язык С++ предоставляет два оператора, обеспечивающих условное выполнение. Оператор if разделяет поток выполнения на основании условия. Оператор switch вычисляет результат целочисленного выражения и на его основании выбирает один из нескольких путей выполнения.

5.3.1. Оператор if

Оператор if выполняет один из двух операторов в зависимости от истинности своего условия. Существуют две формы оператора if: с разделом else и без него. Синтаксис простой формы оператора if имеет следующий вид:

if (условие)

 оператор

Оператор if else имеет следующую форму:

if (условие)

 оператор

else

 оператор2

В обеих версиях условие заключается в круглые скобки. Условие может быть выражением или инициализирующим объявлением переменной (см. раздел 5.2). Тип выражения или переменной должен быть преобразуем в тип bool (см. раздел 4.11). Как обычно, и оператор, и оператор2 могут быть блоком.

Если условие истинно, оператор выполняется. По завершении оператора выполнение продолжается после оператора if.

Если условие ложно, оператор пропускается. В простом операторе if выполнение продолжается после оператора if, а в операторе if else выполняется оператор2.

Использование оператора if else

Для иллюстрации оператора if else вычислим символ оценки по ее числу. Подразумевается, что числовые значения оценок находятся в диапазоне от нуля до 100 включительно. Оценка 100 получает знак "А++", оценка ниже 60 — "F", а остальные группируются по десять: от 60 до 69 — "D", от 70 до 79 — "C" и т.д. Для хранения возможных символов оценок используем вектор:

vector<string> scores = {"F", "D", "C", "B", "A", "А++"};

Для решения этой проблемы можно использовать оператор if else, чтобы выполнять разные действия проходных и не проходных отметок.

// если оценка меньше 60 - это F, в противном случае вычислять индекс

string lettergrade;

if (grade < 60)

 lettergrade = scores[0];

else

 lettergrade = scores[(grade - 50)/10];

В зависимости от значения переменной grade оператор выполняется либо после части if, либо после части else. В части else вычисляется индекс оценки уже без неудовлетворительных. Затем усекающее остаток целочисленное деление (см. раздел 4.2) используется для вычисления соответствующего индекса вектора scores.

Вложенные операторы if

Чтобы сделать программу интересней, добавим к удовлетворительным отметкам плюс или минус. Плюс присваивается оценкам, заканчивающимся на 8 или 9, а минус — заканчивающимся на 0, 1 или 2.

if (grade % 10 > 7)

 lettergrade += '+'; // оценки, заканчивающиеся на 8 или 9, получают +

else if (grade % 10 < 3)

 lettergrade += '-'; // оценки, заканчивающиеся на 0, 1 и 2, получают -

Для получения остатка и принятия на основании его решения, добавлять ли плюс или минус, используем оператор деления по модулю (см. раздел 4.2).

Теперь добавим код, присваивающий плюс или минус, к коду, выбирающему символ оценки:

// если оценка неудовлетворительна, нет смысла проверять ее на + или -

if (grade < 60)

 lettergrade = scores[0];

else {

 lettergrade = scores[(grade - 50)/10]; // выбрать символ оценки

if (grade != 100) // добавлять + или -, только если это не А++

 if (grade % 10 > 7)

  lettergrade += '+'; // оценки, заканчивающиеся на 8 или 9,

                      // получают +

 else if (grade % 10 < 3)

  lettergrade += '-'; // оценки, заканчивающиеся на 0, 1 и 2,

                      // получают -

}

Обратите внимание, что два оператора, следующих за первым оператором else, заключены в блок. Если переменная grade содержит значение 60 или больше, возможны два действия: выбор символа оценки из вектора scores и, при условии, добавление плюса или минуса.

Следите за фигурными скобками

Когда несколько операторов следует выполнить как блок, довольно часто забывают фигурные скобки. В следующем примере, вопреки отступу, код добавления плюса или минуса выполняется безусловно:

if (grade < 60)

 lettergrade = scores[0];

else // ошибка: отсутствует фигурная скобка

 lettergrade = scores[(grade - 50)/10];

 // несмотря на внешний вид, без фигурной скобки, этот код

 // выполняется всегда

 // неудовлетворительным оценкам ошибочно присваивается - или +

 if (grade != 100)

  if (grade % 10 > 7)

   lettergrade += '+'; // оценки, заканчивающиеся на 8 или 9,

                       // получают +

  else if (grade % 10 < 3)

   lettergrade += '-'; // оценки, заканчивающиеся на 0, 1 и 2,

                       // получают -

Найти такую ошибку бывает очень трудно, поскольку программа выглядит правильно.

Во избежание подобных проблем некоторые стили программирования рекомендуют всегда использовать фигурные скобки после оператора if или else (а также вокруг тел циклов while и for).

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

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.