4962

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

Лекция

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

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

Русский

2012-11-30

177.5 KB

11 чел.

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

Из урока 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++ всегда вычисляет сначала выражение в скобках.


 

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

36865. Построение трехмерных графиков в Scilab 676.5 KB
  Функции plot3d и plot3d1 В Scilb поверхность можно построить с помощью функций plot3d или plot3d1. Их отличие состоит в том что plot3d строит поверхность и заливает ее одним цветом а plot3d1 поверхность каждая ячейка которой имеет цвет зависящий от значения функции в каждом соответствующем узле сетки. Обращение к функциям следующее: plot3dxyz[thetlphlegflgebox][keyn=vluen] plot3d1xyz[thetlphlegflgebox][keyn=vluen] здесь x векторстолбец значений абсцисс; y векторстолбец значений ординат; z матрица значений...
36866. ПОДГОТОВКА ДОКУМЕНТА MS EXCEL К ПЕЧАТИ 64.5 KB
  ПОДГОТОВКА ДОКУМЕНТА MS EXCEL К ПЕЧАТИ Цель работы: рассмотреть этапы подготовки документов MS Excel к печати. Вопросы компетенции навыки для освоения: Изучить элементы интерфейса MS Excel служащие для подготовки документа к печати. Освоить технологии и рассмотреть этапы подготовки документов MS Excel к печати. Подготовить к печати документ большого объема.
36867. Построение поверхностей заданных параметрически с помощью функций param3d и param3d1 752 KB
  Затем обратимся к функции prm3d передав ей математические выражения функций y y1 и y2 а также углы в градусах под которыми наблюдатель будет видеть формируемый график 45 и 35 Листинг 6. Построение линии заданной параметрически с помощью функции prm3d t=[0:0. Построение линии заданной параметрически с помощью функции prm3d t=50pi:0. Для построения графиков линий в одной системе координат обратимся к функции prm3d1.
36868. ОСНОВНЫЕ ВСТРОЕННЫЕ ФУНКЦИИ MS EXCEL 284 KB
  Имя функции описывает операцию которая эта функция выполняет. 1 или нажатием кнопки Вставить функция в строке Формул. В этом окне сначала следует выбрать категорию функции из списка Категория а затем в открывшемся алфавитном списке Функция указать нужную функцию. Математические функции Функция СУММ Функция СУММ суммирует множества чисел.
36869. Решение нелинейных уравнений и систем 120.5 KB
  Всякое алгебраическое уравнение относительно x можно записать в виде 0xn1xn−1 n−1xn = 0 где 0 0 n 1 и i коэффициенты алгебраического уравнения nй степени. Решение алгебраического уравнения в Scilb состоит из двух этапов. Примеры символьных операций с полиномами p1=poly[1 2]xc p1 = 1 2x p2=poly[3 7 2]xc p2 = 2 3 7x 2x p1p2 Сложение ns = 2 2 5x 2x p1p2 Вычитание ns = 2 4 9x 2x p1p2 Умножение ns = 2 3 3 13x 16x 4x p1 p2 Деление ns = 1 3 x p1^2 Возведение в...
36870. ВВОД И РЕДАКТИРОВАНИЕ ФОРМУЛ. СТАНДАРТНЫЕ ФУНКЦИИ EXCEL 312 KB
  На первом листе повторитеОбразец 1 Образец 2 Образец 3 и Образец 4 используя команды форматирования ячеек Таблица 1 и средства автозаполнения команда меню Правка Заполнить Прогрессия. Образец 1 Образец 2 Образец 3 Образец 4 Таблица 1 Команда меню вкладка Опции Действие Формат Ячейкивкладка Граница области Все Отдельные и Линии Создание границ таблицы или обрамление таблицы Формат Ячейкивкладка Число список Числовые форматы Изменениечислового формата Формат Ячейкивкладка Выравнивание раскрывающиеся списки по...
36872. Исследование дешифраторов 42 KB
  Цель лабораторной работы: исследовать основные способы построения и работу дешифраторов. Задание: снять временные диаграммы определить таблицы состояний и особенности работы дешифраторов. Порядок выполнения: включить персональную ЭВМ запустить на выполнение программный пакет EWB и далее следовать порядку работы в пакете. В отчете приводится наименование и номер лабораторной работы цель работы программа работы с указанием всех необходимых экспериментов полученных результатов их объяснения и выводов.
36873. Фильтрация данных и вычисление итоговых характеристик 151 KB
  Удалите все листы кроме первого исходного листа Реки Украины. Примечание: Уровень оценки Количество листов для копирования Обязательное для выполнения задание 4 4 сортировка 1 условие 1 автофильтр 1 автофильтр 2 5 5 То же что и на 4 сортировка 2 6 7 6 То же что и на 5 сортировка и структура 7 8 7 То же что и на 7 условие 2 9 10 8 То же что и на 7 8 расширенный фильтр 11 12 9 Дополнительно 13 сводных таблицы Задания для выполнения: На листе Сортировка 1 необходимо отсортировать данные таблицы следующим образом: 1...