|
Программирование >> Структурное программирование
integerl Рис. 1.7. Распределение памяти с указанием имени и значения переменной integerl integers Рис. 1.8. Распределение памяти после ввода значений двух переменных Когда программа получила значения integerl и integer2, она складывает их и помещает сумму в переменную sum. Оператор sum = integerl + integer2 выполняет сложение и подразумевает уничтожение предыдущего значения sum. Это происходит, когда вычисленное значение суммы integerl и integer2 помещается в область памяти sum (независимо от того, каково было прежнее значение sum). После вычисления sum распределение памяти выглядит так, как показано на рис. 1.9. Заметим, что значения integerl и integer2 выглядят точно так же, как и до их использования при вычислении sum. Эти значения использовались, но не пропали во время выполняемых компьютером вычислений. Таким образом, считывание значений из памяти - процесс неразрушаю-щий. integerl integers Рис. 1.9. Распределение памяти после вычислений 1.18. Арифметика Большинство программ выполняет арифметические вычисления. Множество арифметических операций показано на рис. 1.10. Отметим использование в них разнообразных специальных символов, не используемых в алгебре. Звездочка (*) обозначает умножение, а знак процента (%) - это операция вычисления остатка, которая вкратце будет еще обсуждаться. Арифметические операции на рис. 1.10 являются бинарными операциями. Например, выражение integerl + integer2 содержит бинарную операцию -I- и два операнда integerl и integer2.
Рис. 1.10. Арифметические операции Целочисленное деление дает целый результат; например, выражение 7/4 равно 1, а выражение 17/5 равно 3. Заметим, что любая десятичная часть при целочисленном делении просто отбрасывается (т.е. усекается) - округление не производится. В С++ имеется операция вычисления остатка %, которая дает в качестве результата остаток от целочисленного деления. Выражение X % у дает остаток от деления х на у. Таким образом, 7 % 4 равно 3, 17 % 5 равно 2. В последующих главах мы обсудим много интересных применений операции вычисления остатка, таких, как определение, является ли одно число кратным другому. Типичная ошибка программирования 1.4 Попытка использования операции вычисления остатка % с нецелочисленными операндами является синтаксической ошибкой. Арифметические выражения на С++ должны быть записаны в одну строку, чтобы программу можно было ввести в компьютер. Таким образом, такое выражение как а разделить на Ь должно быть записано в виде а / b так, чтобы все константы, переменные и операции размещались в одной строке. Алгебраическая запись в общем случае не пригодна для компиляции, хотя существуют некоторые специальные пакеты программ, которые поддерживают более естественную форму записи сложных математических выражений. Круглые скобки используются в С++ в основном точно так же, как и в алгебраических выражениях. Например, чтобы перемножить величины а и Ъ+с, мы пишем а * (Ь + с) С++ применяет операции в арифметических выражениях в порядке старшинства, определенного правилами старшинства операций, которые, вообще говоря, совпадают с теми, которые используются в алгебре: 1. Операции в выражениях, заключенных внутри круглых скобок, выполняются в первую очередь. Таким образом, круглые скобки можно использовать для формирования любой желательной для программиста последовательности вычислений. О скобках говорят, что они имеют высший уровень приоритета . В случае вложенных, или встроенных круглых скобок операции внутри самой внутренней пары круглых скобок выполняются первыми. 2. Следующими выполняются операции умножения, деления и вычисления остатка. Если выражение содержит несколько операций умножения, деления и вычисления остатка, то операции выполняются слева направо. Говорят, что операции умножения, деления и вычисления остатка имеют одинаковый уровень приоритета. 3. Операции сложения и вычитания выполняются последними. Если выражение содержит несколько операций сложения и вычитания, то операции выполняются слева направо. Операции сложения и вычитания тоже имеют одинаковый уровень приоритета. Правила старшинства операций дают С++ возможность выполнять операции в правильной последовательности. Когда мы говорим о выполнении операций слева направо, то мы имеем в виду ассоциативность операций. Мы увидим, что у некоторых операций ассоциативность справа налево. Рис. 1.11 обобщает правила старшинства операций. Эта таблица будет расширяться по мере знакомства с дополнительными операциями С++. Полная таблица старшинства операций приведена в приложении Б.
Рис. 1.11. Последовательность выполнения арифметических операций Давайте теперь рассмотрим несколько выражений в свете правил, определяющих последовательность выполнения операций. Каждый пример представляется алгебраическим выражением и его эквивалентом на С++. Ниже приводится пример среднего арифметического значения пяти членов: а + Ь + c+d+e Алгебра: т =--- С++: <а + Ь + с + d + в) / 5; Круглые скобки необходимы, так как деление имеет более высокий уровень приоритета, чем сложение. Полная величина (a + b + c + d + e) делится на 5. Если ошибочно проигнорировать круглые скобки, получим a+b+c+d+e/5, что эквивалентно a+b+c+d+ Следующий пример - уравнение прямой линии: Алгебра: у = тх + Ь С++: у = m * X + Ь;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |