Читаем Программирование полностью

Упомянем еще об одной разновидности: пустой инструкции. Рассмотрим следующий код:

if (x == 5);

{ y = 3; }

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

Что произойдет, когда эта программа начнет выполняться? Компилятор проверит, равно ли значение переменной x числу 5. Если это условие истинно, то будет выполнена следующая инструкция (пустая). Затем программа перейдет к выполнению следующей инструкции, присвоив переменной y число 3. Если же значение переменной x не равно 5, то компилятор не будет выполнять пустую инструкцию (что также не порождает никакого эффекта) и присвоит переменной y число 3 (это не то, чего вы хотели, если значение переменной x не равно 5).

Иначе говоря, эта инструкция if присваивает переменной y число 3 независимо от значения переменной x. Эта ситуация типична для программ, написанных новичкам, причем такие ошибки трудно обнаружить.

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

<p id="AutBody_Root046"><strong>4.4.1. Инструкции выбора</strong></p>

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

<p id="AutBody_Root047"><strong>4.4.1.1. Инструкции if</strong></p>

Простейшая форма выбора в языке С++ реализуется с помощью инструкции if, позволяющей выбрать одну из двух альтернатив. Рассмотрим пример.

int main()

{

  int a = 0;

  int b = 0;

  cout << "Пожалуйста, введите два целых числа \n";

  cin >> a >> b;

  if (a

           // 1-я альтернатива (выбирается, если условие истинно):

    cout << "max(" << a << "," << b <<") равно " << b <<"\n";

  else

           // 2-я альтернатива (выбирается, когда условие ложно):

    cout << "max(" << a << "," << b <<") равно " << a << "\n";

}

  Инструкция if осуществляет выбор из двух альтернатив. Если его условие является истинным, то выполняется первая инструкция; в противном случае выполняется вторая. Это простая конструкция. Она существует в большинстве языков программирования. Фактически большинство основных конструкций в языках программирования представляют собой просто новое обозначение понятий, известных всем еще со школьной скамьи или даже из детского сада. Например, вам, вероятно, говорили в детском саду, что, для того чтобы перейти улицу, вы должны дождаться, пока на светофоре не загорится зеленый свет: “если горит зеленый свет, то можно переходить, а если горит красный свет, то необходимо подождать”. В языке С++ это можно записать как-то так:

if (traffic_light==green) go();

if (traffic_light==red) wait();

Итак, основное понятие является простым, но и это простое понятие можно использовать слишком наивно. Рассмотрим неправильную программу (ошибка в ней заключается не только в отсутствии директивы #include).

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

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

int main()

{

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

                                   // в дюйме

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

                      // сантиметрах

  char unit = 0;

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

  cin >> length >> unit;

  if (unit == 'i')

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

  else

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

}

На самом деле эта программа работает примерно так, как предусмотрено: введите 1i, и вы получите сообщение 1in==2.54cm введите 2.54c, и вы получите сообщение 2.54cm==1in. Поэкспериментируйте — это полезно.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных