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

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


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.



Операция С++

Арифметическая операция

Алгебраическое выражение

Выражение на С++

Сложение

f + 7

f + 7

Вычитание

Р - с

Р - с

Умножение

b ♦ m

Деление

х/у или - или X у

X / у

Вычисление остатка

г mod S

г % S

Рис. 1.10. Арифметические операции

Целочисленное деление дает целый результат; например, выражение 7/4 равно 1, а выражение 17/5 равно 3. Заметим, что любая десятичная часть при целочисленном делении просто отбрасывается (т.е. усекается) - округление не производится. В С++ имеется операция вычисления остатка %, которая дает в качестве результата остаток от целочисленного деления. Выражение X % у дает остаток от деления х на у. Таким образом, 7 % 4 равно 3, 17 % 5 равно 2. В последующих главах мы обсудим много интересных применений операции вычисления остатка, таких, как определение, является ли одно число кратным другому.

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

Попытка использования операции вычисления остатка % с нецелочисленными операндами является синтаксической ошибкой.

Арифметические выражения на С++ должны быть записаны в одну строку, чтобы программу можно было ввести в компьютер. Таким образом, такое выражение как а разделить на Ь должно быть записано в виде а / b так, чтобы все константы, переменные и операции размещались в одной строке. Алгебраическая запись

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

Круглые скобки используются в С++ в основном точно так же, как и в алгебраических выражениях. Например, чтобы перемножить величины а и Ъ+с, мы пишем

а * (Ь + с)

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

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



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

3. Операции сложения и вычитания выполняются последними. Если выражение содержит несколько операций сложения и вычитания, то операции выполняются слева направо. Операции сложения и вычитания тоже имеют одинаковый уровень приоритета.

Правила старшинства операций дают С++ возможность выполнять операции в правильной последовательности. Когда мы говорим о выполнении операций слева направо, то мы имеем в виду ассоциативность операций. Мы увидим, что у некоторых операций ассоциативность справа налево. Рис. 1.11 обобщает правила старшинства операций. Эта таблица будет расширяться по мере знакомства с дополнительными операциями С++. Полная таблица старшинства операций приведена в приложении Б.

Символ операции

Имя операции

Последовательность выполнения (старшинство)

Круглые скобки

Выполняются первыми. Если круглые скобки -вложенные, выражение внутри самой внутренней пары вычисляется первым. Если имеется несколько i ар круглых скобок одинакового уровня (т.е. не вложенных), они выполняются слева направо.

*, / или %

Умножение Деление

Вычисление остатка

Выполняются вторыми. Если их несколько, они выполняются слева направо.

+ или -

Сложение Вычитание

Выполняются последними. Если их несколько, они выполняются слева направо.

Рис. 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 + Ь;



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

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