Программирование >>  Структурное программирование 

1 ... 20 21 22 [ 23 ] 24 25 26 ... 342


О © © © ©

Цифры в кружках под операциями обозначают последовательность, в которой С-Ы- выполняет операции. Умножение, вычисление остатка и деление выполняются первыми в последовательности слева направо (т.е. их ассоциативность слева направо), так как они имеют более высокий приоритет, чем сложение и вычитание. Сложение и вычитание выполняются следующими в той же последовательности слева направо.

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

а * (Ь + с) + с * (d + е)

не содержит вложенных круглых скобок. В подобном случае принято говорить, что круглые скобки находятся на одном и том же уровне.

Для углубления понимания правил старшинства операций, рассмотрим вычисление полинома второй степени.

у = а * X * х+Ь * х + с;

© © 0 © ©

Цифры в кружках под операциями обозначают последовательность, в которой С-Ь-f- выполняет операции. В С++ нет арифметической операции возведения в степень, поэтому мы представляем х как х * х. Скоро мы рассмотрим библиотечную функцию pow ( power ), которая выполняет возведение в степень. Поскольку для понимания функции pow надо учитывать некоторые тонкие вопросы, относящиеся к типам данных, мы отложим детальное объяснение pow до третьей главы.

Допустим, что а, Ь, с и X имеют следующие начальные значения: а = 2,Ь = 3,с=7их = 5. Рисунок 1.12 иллюстрирует последовательность, в которой выполняются операции в предыдущем примере вычисления полинома второй степени.

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

у = (а * X * х) + (Ь * х) + с;

Никаких круглых скобок не требуется. Умножение выполняется первым, потому что оно имеет более высокий приоритет, чем сложение.

Следующий пример содержит операции вычисления остатка (%), умножения, деления, сложения и вычитания:

Алгебра: z = pr%q + w/x - у

С++: z=p*r%q + w/ x- y;



Шаг 2. у = 10 .5 + 3*5 +7;

10 * 5 равно (Самое левое умножение)

Шаг 3. у = 50+ 3*5 + 7 3

* 5 равно (js) (Умножение перед сложением)

Шаг 4. у = 50+ 15+ 7 50

+ 15 равно (и) (Самое левое сложение)

Шаг 5. у = 65 + 7

65 + 7 равно (т (Последняя операция)

Рис. 1.12. Последовательность вычисления полинома второй степени

1.19. Принятие решений: операции проверки на равенство и отношения

Этот раздел познакомит вас с простой версией структуры if в С++, которая позволяет программе принимать решение, основываясь на истинности или ложности некоторого условия.

Если условие удовлетворено, т.е. условие есть true (истина), то оператор в теле структуры if выполняется. Если условие не удовлетворяется, т.е. условие есть false (ложь), то оператор в теле не выполняется. Мы покажем это вскоре на примере.

Условия в структурах if могут быть сформированы с использованием операций проверки на равенство и отношения, сводка которых приведена на рис. 1.13. Все операции отношения имеют одинаковый приоритет и ассоциативность слева направо. Операции проверки на равенство также имеют одинаковый уровень приоритета, который, однако, ниже приоритета операций отношения. Операции проверки на равенство также имеют ассоциативность слева направо.

Шаг 1. у = 2*5*5 + 3.5 + 7;

: * 5 равно (jo) (Первая операция - самое левое умножение)



Обычная алгебраическая операция проверки на равенство или отношения

Операция С++ проверки на равенство или отношения

Пример условия на С++

Значение условия С++

Операции проверки на равенство

X == у

X равен у

X != у

X не равен у

Операции отношения

>

>

X > у

X больше у

<

<

X < у

X меньше у

>

>=

X >= у

X больше или равен у

<

<=

X <= у

X меньше или равен у

Рис. 1.13. Операции проверки на равенство и отношения

Типичная ошибка программирования 1.5

Если операции ==, !=, >= и <= содержат между своими символами пробелы, это - синтаксическая ошибка.

Типичная ошибка программирования 1.6

Перестановка символов в обозначении операций: вместо !=, >= и <= запись =!, => и =< соответственно вызывает синтаксическую ошибку.

Типичная ошибка программирования 1.7

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

В приведенном ниже примере используется шесть операторов if для сравнения двух вводимых пользователем чисел. Если в каком-либо из этих операторов if условие удовлетворяется, выполняется связанный с данным if оператор вывода. Программа и три примера вывода показаны на рис. 1.14.

Заметим, что в программе на рис. 1.14 используются сцепленные операции взять из потока для ввода двух целых чисел. Сначала читается значение переменной numl, а затем - переменной пит2. Отступы в операторах if облегчают чтение программы. Кроме того заметим, что каждый из операторов if на рис. 1.14 имеет в своем теле только один оператор. В главе 2 мы расскажем, как записать операторы if с телом, содержащем несколько операторов.



1 ... 20 21 22 [ 23 ] 24 25 26 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика