|
Программирование >> Структурное программирование
О © © © © Цифры в кружках под операциями обозначают последовательность, в которой С-Ы- выполняет операции. Умножение, вычисление остатка и деление выполняются первыми в последовательности слева направо (т.е. их ассоциативность слева направо), так как они имеют более высокий приоритет, чем сложение и вычитание. Сложение и вычитание выполняются следующими в той же последовательности слева направо. Не все выражения с несколькими парами круглых скобок содержат вложенные круглые скобки. Например, выражение а * (Ь + с) + с * (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) (Первая операция - самое левое умножение)
Рис. 1.13. Операции проверки на равенство и отношения Типичная ошибка программирования 1.5 Если операции ==, !=, >= и <= содержат между своими символами пробелы, это - синтаксическая ошибка. Типичная ошибка программирования 1.6 Перестановка символов в обозначении операций: вместо !=, >= и <= запись =!, => и =< соответственно вызывает синтаксическую ошибку. Типичная ошибка программирования 1.7 Смешивание операции проверки на равенство == с операцией присваивания = Операция проверки на равенство должна читаться как равно , а операция присва ивания должна читаться как присваивает . Некоторые предпочитают читать опера цию проверки на равенство как двойное равенство . Как мы вскоре увидим, сме шивание этих операций может вызывать нелегко распознаваемую синтаксическую ошибку, а может вызвать и чрезвычайно запутанные логические ошибки. В приведенном ниже примере используется шесть операторов if для сравнения двух вводимых пользователем чисел. Если в каком-либо из этих операторов if условие удовлетворяется, выполняется связанный с данным if оператор вывода. Программа и три примера вывода показаны на рис. 1.14. Заметим, что в программе на рис. 1.14 используются сцепленные операции взять из потока для ввода двух целых чисел. Сначала читается значение переменной numl, а затем - переменной пит2. Отступы в операторах if облегчают чтение программы. Кроме того заметим, что каждый из операторов if на рис. 1.14 имеет в своем теле только один оператор. В главе 2 мы расскажем, как записать операторы if с телом, содержащем несколько операторов.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |