4962

Выполнение простых операций на C++

Лекция

Информатика, кибернетика и программирование

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

Русский

2012-11-30

177.5 KB

9 чел.

Выполнение простых операций

Из урока 4 вы узнали, как объявлять и использовать переменные в своих программах. По мере усложнения программ вы будете выполнять арифметические операции, такие как сложение, вычитание, умножение и деление, над значениями, содержащимися в переменных. Данный урок описывает, как использовать арифметические операторы C++ для выполнения этих операций. К тому времени, когда вы закончите изучение данного урока, вы освоите следующие основные концепции:

  •  Для выполнения математических операций используйте в своих программах арифметические операторы C++.
  •  Чтобы гарантировать последовательность операций, C++ назначает приоритет каждому оператору.
  •  Используя круглые скобки в арифметических выражениях, вы можете управлять порядком, в котором C++ выполняет операции.
  •  Многие программы на C++ прибавляют или вычитают единицу, используя операции увеличения (++) или уменьшения (--).

После того как вы научитесь распознавать разные арифметические операторы C++, вы поймете, что выполнять математические операции очень легко!

ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ

Независимо от назначения большинство ваших программ на C++ будут складывать, вычитать, умножать или делить. Вы узнаете, что ваши программы могут выполнять арифметические операции с константами (например, 3*5) или с переменными (например, payment — total). Таблица 5.1 перечисляет основные математические операции C++:

Таблица 5. 1. Основные математические операции С++

Операция

Назначение

Пример

+

Сложение

total = cost + tax;

-

Вычитание

change = payment - total;

*.

Умножение

tax = cost * tax_rate;

/

Деление

average = total / count;

Следующая программа SHOWMATH.CPP использует cout для вывода реультата нескольких простых арифметических операций:

Посмотрите внимательно на операторы программы. Обратите внимание, что каждое выражение сначала появляется в кавычках, которые обеспечивают вывод символов (например, 5 + 7 =) на экран. Затем программа выводит результат операции и символ новой строки. Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующий вывод:

5 + 7 = 12

12 - 7 = 5

1.2345 * 2 = 2.469

15 / 3 = 5

В данном случае программа выполняла арифметические операции, используя только постоянные значения. Следующая программа MATHVARS.CPP выполняет арифметические операции, используя переменные:

В данном случае программа использует только переменные с плавающей точкой. Как видите, программа присваивает значения переменным при объявлении. Далее программа выполняет арифметические операции над переменными для определения налога на продажу, общего счета и сдачи покупателю. Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующий вывод:

Стоимость покупки: $15.5 Налог: $0.93 Общий счет: $16.43

Сдача покупателю: $3.57

УВЕЛИЧЕНИЕ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ НА 1

Обычной операцией, которую вы будете выполнять при программировании, является прибавление 1 к значению целой переменной. Например, предположим, что ваша программа использует переменную с именем count, чтобы сохранить данные о количестве напечатанных файлов. Каждый раз, когда программа печатает файл, 1 будет добавляться к текущему значению count. Используя оператор присваивания C++, ваша программа может увеличивать значение count,как показано ниже:

count = count + 1;

В данном случае программа сначала выбирает значение count, а затем добавляет к нему единицу. Далее программа записывает результат сложения обратно в переменную count. Следующая программа INTCOUNT.CPP использует оператор присваивания для увеличения переменной count (которая первоначально содержит значение 1000) на единицу (присваивая переменной результат 1001):

Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующий вывод:

начальное значение count равно 1000

конечное значение count равно 1001

Так как увеличение значения переменной представляет собой обычную операцию в программах, в C++ есть операция увеличения — двойной знак плюс (++). Операция увеличения обеспечивает быстрый способ прибавления единицы к значению переменной. Следующие операторы, например, увеличивают значение переменной count на 1:

count = count + 1; count++;

Следующая программа INC_OP.CPP использует операцию увеличения для наращивания значения переменной count на 1:

Эта программа работает так же, как INCCOUNT.CPP, которая использовала оператор присваивания для увеличения значения переменной. Когда C++ встречает операцию увеличения, он сначала выбирает значение переменной, добавляет к этому значению единицу, а затем записывает результат обратно в переменную.

Представление о префиксной (до) и постфиксной (после) операциях увеличения

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

++variable; variable++;

Так как первый оператор появляется до переменной, он называетсяпрефиксным оператором увеличения. Аналогично этому, второй оператор появляется после переменной и называется постфиксным оператором увеличения. Вам необходимо знать, что C++ трактует эти два оператора по-разному. Например, рассмотрим следующий оператор присваивания:

current_count = count++;

Этот оператор присваивания указывает C++ присвоить текущее значениеcount переменной current_count. В дополнение к этому постфиксный оператор увеличения заставляет C++ увеличить текущее значение count.Использование постфиксного оператора в этом случае делает показанный выше оператор эквивалентным следующим двум операторам:

current_count = count;

count = count + 1;

Теперь рассмотрим следующий оператор присваивания, который использует префиксный оператор увеличения:

current_count = ++count;

В этом случае оператор присваивания указывает C++ сначала увеличить значение count, а затем присвоить результат переменной current_count.Использование префиксного оператора увеличения делает показанный выше оператор эквивалентным следующим двум операторам:

count = count + 1;

current_count = count;

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

Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующий вывод:

small_count равно 0

small_count++ производит 0

конечное значение small_count равно 1

big_count равно 1000

++big_count производит 1001

конечное значение big_count равно 1001

С переменной small_count программа использует постфиксную операцию увеличения. В результате программа выводит текущее значение переменной (0), а затем увеличивает его на 1. С переменной big_countпрограмма использует префиксную операцию увеличения. В результате программа сначала увеличивает значение переменной (1000 + 1), а затем выводит результат (1001). Найдите время, чтобы отредактировать эту программу, и сначала измените постфиксную операцию на префиксную, а затем префиксную на постфиксную. Откомпилируйте и запустите программу, обращая внимание на то, как изменение операции изменяет вывод.

С++ обеспечивает также операции уменьшения

Как вы уже знаете, двойной знак плюс (++) представляет собой оператор увеличения C++. Подобным образом двойной знак минус (--) соответствует оператору уменьшения C++, который уменьшает значение переменной на 1. Как и в случае с операцией увеличения, C++ поддерживает префиксный и постфиксный операторы уменьшения. Следующая программа DECCOUNT.CPP иллюстрирует использование оператора уменьшения C++:

Когда вы откомпилируете и запустите эту программу, на вашем экране появится следующий вывод:

small_count равно 0

small_count-- производит 0

конечное значение small_count равно -1

big_count равно 1000

—big_count производит 999

конечное значение big_count равно 999

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

ДРУГИЕ ОПЕРАТОРЫ С++

В этом уроке описаны обычные арифметические операции C++, а также операции увеличения и уменьшения. В программах на C++ вы можете встретить одну или несколько операций, перечисленных в табл. 5.2:

Таблица 5.2. Операции C++, которые вы можете встретить в программах.

Операция

Функция

%

Взятие по модулю или остаток; возвращает остаток целочисленного деления

~

Дополнение; инвертирует биты значений

&

Побитовое И

|

Побитовое включающее ИЛИ

^

Побитовое исключающее ИЛИ

<<

Сдвиг влево; сдвигает биты значения влево на указанное количество разрядов

>>

Сдвиг вправо; сдвигает биты значения вправо на указанное количество разрядов

СТАРШИНСТВО ОПЕРАЦИЙ

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

result =5+2*3;

В зависимости от порядка, в котором C++ выполняет умножение и сложение, результат будет разным:

result =5+2*3; 
=7*3; 
= 21; 
result =5+2*3; 
=5+6; 
= 11;

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

Таблица 5.3 перечисляет старшинство операций C++. Операции, находящиеся в верхней части, имеют более высокий приоритет. Операции внутри каждой части имеют одинаковый приоритет. Если вы рассмотрите таблицу, то увидите, что в C++ умножение имеет более высокий приоритет, чем сложение. Вы не знакомы со многими операциями, представленными в таблице. В настоящее время не думайте об этих операциях. К концу изучения этой книги вы сможете использовать (и понять) каждую из них!

Таблица 5.3. Старшинство операций в C++.

Операция

Имя

Пример

:: Разрешение области видимости classname::classmember_name

::

Глобальное разрешение

::variable_name

.

Выбор элемента

object.member_name

->

Выбор элемента

pointer->membername

[]

Индексация

pointer[element]

()

Вызов функции

expression(parameters)

()

Построение значения

type(parameters)

sizeof

Размер объекта

sizeof expression

sizeof

Размер типа

sizeof(type)

++

Приращение после

variable++

++

Приращение до

++variable

--

Уменьшение после

variable--

--

Уменьшение до

-- variable

&

Адрес объекта

&variable

*

Разыменование

*pointer

new

Создание (размещение)

new type

delete

Уничтожение (освобождение) delete pointer

delete[]

Уничтожение массива

delete pointer

~

Дополнение

~expression

!

Логическое НЕ

! expression

+

Унарный плюс

+1

-

Унарный минус

-1

()

Приведение

(type) expression

.*

Выбор элемента

object.*pointer

->

Выбор элемента

object->*pointer

*

Умножение

expression * expression

/

Деление

expression / expression

%

Взятие по модулю

expression % expression

+

Сложение (плюс)

expression + expression

-

Вычитание (минус)

expression expression

Управление порядком, в котором C++ выполняет операции

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

cost = price_a + price_b * 1.06;

К сожалению, в этом случае C++ сначала выполнит умножение (price_b * 1.06), а затем прибавит значение price_a.

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

result =(2+3)* (3+4);

C++ вычисляет данное выражение в следующем порядке:

result = (2 + 3) * (3 + 4); 
= (5) * (3 + 4); 
= 5 * (7); 
=5*7; 
= 35;

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

cost = (price_a + price_b) * 1.06;

СЛЕДИТЕ ЗА ОШИБКАМИ ПЕРЕПОЛНЕНИЯ ПРИ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЯХ

Из урока 4 вы узнали, что, если вы присваиваете переменной значение, которое не входит в диапазон значений для данного типа переменной, возникает ошибка переполнения. При выполнении арифметических операций необходимо помнить о возможности возникновения ошибок переполнения. Например, следующая программа MATHOVER.CPP умножает 200 на 300 и присваивает результат переменной типа int.Однако, поскольку результат умножения (60000) превышает наибольшее возможное значение для типа int (32767), возникает ошибка переполнения:

Когда вы откомпилируете и запустите эту программу, на экране появится следующий вывод:

С:\> MATHOVER <ENTER>

200 * 300 = -5536

ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ

В данном уроке вы изучали обычные арифметические операции и операции приращения C++. Чтобы программы корректно выполняли арифметические вычисления, C++ назначает каждой операции приоритет, который управляет порядком выполнения операций. Из урока 6 вы узнаете, как использовать входной поток с именем cin для выполнения операций ввода с клавиатуры. До изучения урока 6 убедитесь, что вы освоили следующее:

  1.  C++ использует операторы +,- , * и / для сложения, вычитания, умножения и деления.
  2.  C++ обеспечивает префиксные (до) и постфиксные (после) операции увеличения, которые прибавляют единицу к значению переменной.
  3.  C++ обеспечивает префиксную (до) и постфиксную (после) операции уменьшения, которые вычитают единицу из значения переменной.
  4.  Префиксные (до) операции указывают C++ сначала увеличить (или уменьшить) значение переменной, а затем использовать это значение.
  5.  Постфиксные (после) операции указывают C++ сначала использовать значение переменной, а затем увеличить (или уменьшить) его.
  6.  Чтобы гарантировать, что выражения выполняются корректно, C++ назначает каждой операции приоритет, управляющий порядком выполнения операций.
  7.  Если вам нужно управлять порядком выполнения арифметических операций, используйте круглые скобки. C++ всегда вычисляет сначала выражение в скобках.


 

А также другие работы, которые могут Вас заинтересовать

81395. Теоретико-категориальный аппарат социальной работы. Понятия «социальная помощь», «социальная защита», «социальная реабилитация», «социальные гарантии» 33.49 KB
  Теоретикокатегориальный аппарат социальной работы. Под социальной защитой можно понимать систему мероприятий осуществляемых обществом и его различными структурами по обеспечению гарантированных минимально достаточных условий жизни поддержанию жизнеобеспечения и деятельного существования человека. Социальная помощь система социальных мер в виде содействия поддержки и услуг оказываемых отдельным лицам или группам населения социальной службой для преодоления или смягчения жизненных трудностей поддержания их социального статуса и...
81396. Антидискриминационная направленность социальной работы. Эйджизм, сексизм и инвалидизм в современном обществе 39.68 KB
  С точки зрения феминистской теории сексизм это проявление патриархата то есть такого устройства общества при котором мужчины как социальная группа обладают властью над женщинами как социальной группой. Для оправдания идеологии сексизма как правило используются эссенциалистские утверждения объясняющие социальное неравенство мужчин и женщин их природными различиями. Исторически женщины были а в некоторых странах остаются ущемлены в гражданских правах по сравнению с мужчинами например лишены избирательных прав. Она может выражаться в...
81397. Явление стигматизации в современном обществе. Виды стигматизации. Приведите примеры проявления 39.99 KB
  В отличие от слова клеймение слово стигматизация может обозначать навешивания социальных ярлыков. В этом смысле стигматизация ассоциация какоголибо качества как правило отрицательного с конкретным человеком или группой людей хотя эта связь отсутствует или не доказана. Стигматизация является составной частью многих стереотипов. Виды социальной стигматизации можно классифицировать следующим образом: Культурная стигматизация социальные ярлыки укоренившиеся в культуре государства либо мировой культуре чукчи недогадливы.
81398. Виктимизация и криминализация как социальное явление 37.5 KB
  Виктимизация это процесс превращения человека в жертву преступления и результат этого процесса как в единичном так и в массовом порядке. Виктимизация Обстоятельства тормозящие нормальное развитие личности человека: Общество и его культура; Низкий уровень жизни; Безработица обычаи и традиции народа; Особенности семейного воспитания; Плохие экологические условия на месте проживания; Слабая социальная поддержка государства Все эти факторы могут превращать в жертву социализации. Виктимизация – процесс превращения человека в...
81399. Пенсионеры как объект социальной работы и социологического анализа 38.97 KB
  Роуз согласно которой культура становится стержнем объединяющим людей пожилого возраста создает особую близость между ними и в то же время обосабливает их от других возрастных когорт. Эта теория предполагает возрастную дифференциацию наряду с социальной разделяя людей на группы по их образу жизни и материальному положению. Терапевтические модели образующие фундамент практической работы с пожилыми людьми должны использовать 3 принципа: Изучение индивида в его социальной среде Понимание психосоциологического становления и развития...
81400. Социально-демографическая категория пожилых людей. Основные подходы к рассмотрению процесса ресоциализации пожилых людей 39.08 KB
  Основные подходы к рассмотрению процесса ресоциализации пожилых людей. У людей избравших в старости цель сохранения себя как личности важным является сохранение системы социальных связей и передача своего жизненного опыта. Рассматривая данную стратегию старения ученые отмечают что психика пожилых людей в этом случае отличается ориентировкой на настоящее и отсутствием депрессивной проекции на прошедшее.
81401. Принципы социальной работы с пожилыми людьми и основные аспекты социальной поддержки пожилых людей 39.62 KB
  Принципы социальной работы в отношении пожилых граждан следующие: принцип независимости подразумевает что пожилые люди должны иметь: доступ к основным благам и обслуживанию; возможность работать или заниматься какимилибо видами деятельности приносящей доход; участвовать в определении сроков прекращения трудовой деятельности; сохранять возможность участия в программах образования и профессиональной подготовки; жить в безопасных условиях с учетом личных наклонностей и изменяющегося состояния; получать содействие в проживании в домашних...
81402. Основные положения социальной политики в отношении пожилых людей 37.81 KB
  Устойчивое повышение уровня и качества жизни поддержание социально приемлемого образа жизни граждан старшего поколения осуществляется с учетом специфики положения возрастной и иной дифференциации пожилых людей национальных традиций конфессиональных и других различий по следующим основным направлениям: 1. усиление правовой защиты граждан пожилого возраста путем продвижения в действующее законодательство специальных норм способствующих реализации конституционных гарантий их прав осуществления комплексных мер оказания правовой и иной защиты...
81403. Социальное обслуживание пожилых людей 37.36 KB
  Традиционно в нашем обществе сложились три направления деятельности органов социальной защиты населения в том числе пожилых людей и старых людей: социальная помощь представление старым людям льгот и преимуществ; социальное обслуживание; организация пенсионного обеспечения. Для Большинства пожилых людей выход на пенсию это снижение доходов в полтора два и более раз. Отсутствие возможности у пожилых людей самостоятельно или с помощью родственников удовлетворять свои потребности не всегда должно являться основанием для помещения в...