Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп Страница 38

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

Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп» бесплатно полную версию:

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка.
Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие.
Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток.
Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

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

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

class="code">2.54c, и вы получите сообщение 2.54cm==1in. Поэкспериментируйте — это полезно.

Проблема заключается в том, что вы не можете предотвратить ввод неверной информации. Программа предполагает, что пользователь всегда вводит правильные данные. Условие unit=='i' отличает единицу измерения 'i' от любых других вариантов. Она никогда не проверяет его для единицы измерения 'c'.

Что произойдет, если пользователь введет 15f (футов) “просто, чтобы посмотреть, что будет”? Условие (unit=='i') станет ложным, и программа выполнит часть инструкции else (вторую альтернативу), преобразовывая сантиметры в дюймы. Вероятно, это не то, чего вы хотели, вводя символ 'f'.

 

 Мы должны всегда проверять входные данные программы, поскольку — вольно или невольно — кто-нибудь когда-нибудь введет неверные данные. Программа должна работать разумно, даже если пользователь так не поступает.

Приведем улучшенную версию программы.

// преобразование дюймов в сантиметры и наоборот

// суффикс 'i' или 'c' означает единицу измерения на входе

// любой другой суффикс считается ошибкой

int main()

{

  const double cm_per_inch = 2.54; // количество сантиметров

                                   // в дюйме

  double length = 1;               // длина в дюймах или сантиметрах

  char unit = ' ';                 // пробел - не единица измерения

  cout<< "Пожалуйста, введите длину и единицу измерения (c или i):\n";

  cin >> length >> unit;

  if (unit == 'i')

    cout << length << "in == " << cm_per_inch*length << "cm\n";

  else if (unit == 'c')

    cout << length << "cm == " << length/cm_per_inch << "in\n";

  else

    cout << "Извините, я не знаю, что такое '" << unit << "'\n";

}

Сначала мы проверяем условие unit=='i', а затем условие unit=='c'. Если ни одно из этих условий не выполняется, выводится сообщение "Извините, ...". Это выглядит так, будто вы использовали инструкцию "else-if", но такой инструкции в языке С++ нет. Вместо этого мы использовали комбинацию двух инструкций if. Общий вид инструкции if выглядит так:

if (выражение) инструкция else инструкция

Иначе говоря, за ключевым словом if следует выражение в скобках, а за ним — инструкция, ключевое слово else и следующая инструкция. Вот как можно использовать инструкцию if в части else инструкции if:

if (выражение) инструкция else if (выражение) инструкция else инструкция

В нашей программе этот примем использован так:

if (unit == 'i')

  ... // 1-я альтернатива

else if (unit == 'c')

  ... // 2-я альтернатива

else

  ... // 3-я альтернатива

 

 Таким образом, мы можем записать сколь угодно сложную проверку и связать инструкцию с отдельной альтернативой. Однако следует помнить, что программа должна быть простой, а не сложной. Не стоит демонстрировать свою изобретательность, создавая слишком сложные программы. Лучше докажите свою компетентность, написав самую простую программу, решающую поставленную задачу.

ПОПРОБУЙТЕ

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

4.4.1.2. Инструкции switch

Сравнение единиц измерения с символами 'i' и 'c' представляет собой наиболее распространенную форму выбора: выбор, основанный на сравнении значения с несколькими константами. Такой выбор настолько часто встречается на практике, что в языке C++ для него предусмотрена отдельная инструкция: switch. Перепишем наш пример в ином виде

int main()

{

  const double cm_per_inch = 2.54; // количество сантиметров

                                   // в дюйме

  double length = 1; // длина в дюймах или сантиметрах

  char unit = 'a';

  cout<< "Пожалуйста, введите длину и единицу измерения (c или i):\n";

  cin >> length >> unit;

  switch (unit) {

  case 'i':

    cout << length << " in == " << cm_per_inch*length << " cm\n";

    break;

  case 'c':

    cout << length << " cm == " << length/cm_per_inch << " in\n";

    break;

  default:

    cout << "Извините, я не знаю, что такое '" << unit << "'\n";

    break;

  }

}

 

 Синтаксис оператора switch архаичен, но он намного яснее вложенных инструкций if, особенно если необходимо сравнить значение со многими константами. Значение, указанное в скобках после ключевого слова switch, сравнивается с набором констант. Каждая константа представлена как часть метки case. Если значение равно константе в метке case, то выбирается инструкция из данного раздела case. Каждый раздел case завершается ключевым словом break. Если значение не соответствует ни одной метке case, то выбирается оператор, указанный в разделе default. Этот раздел не обязателен, но желателен, чтобы гарантировать перебор всех альтернатив. Если вы еще не знали, то знайте, что программирование приучает человека сомневаться практически во всем.

4.4.1.3. Технические подробности инструкции switch

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

1. Значение, которое определяет выбор варианта, должно иметь тип int, char или enum (см. раздел 9.5). В частности, переключение по строке произвести невозможно.

2. Значения меток разделов case должны быть константными выражениями (см. раздел 4.3.1). В частности, переменная не может быть меткой раздела case.

3. Метки двух разделов case не должны иметь одинаковые значения.

4. Один раздел case может иметь несколько меток.

5. Не забывайте, что каждый раздел case должен завершаться ключевым словом break. К сожалению, компилятор не предупредит вас, если вы забудете об этом.

Рассмотрим пример.

int main() // переключение можно производить только по целым

           // числам и т.п.

{

  cout << "Вы любите рыбу?\n";

  string s;

  cin >> s;

  switch (s) { // ошибка: значение должно иметь тип int,

               // char или enum

  case " нет ":

    // ...

    break;

  case " да ":

    // ...

    break;

  }

}

Для

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