Приоритет операций и ассоциативность

Т.Е. Мамонова

Лабораторная работа № 2

Математические операции в C++

Методические указания по выполнению лабораторных работ

по курсу «Информатика»

для студентов направлений 220000 – «Мехатроника и робототехника»,

220700 – «Автоматизация технологических процессов и производств».

Издательство

Томского политехнического института

УДК 519.6

ББК 00000

А00

Мамонова Т.Е.

А00 Математические операции в C++. Методические указания по выполнению лабораторных работ по курсу «Информатика» для Приоритет операций и ассоциативность студентов I курса, обучающихся по фронтам 220000 – «Мехатроника и робототехника», 220700 – «Автоматизация технологических процессов и производств» / Т.Е. Мамонова. – Томск: Изд-во Томского политехнического института, 2011. – 12 с.

УДК 519.6

ББК 00000

Методические указания рассмотрены и рекомендованы к изданию методическим семинаром кафедры встроенных

компьютерных систем управления ИК

«2» сентября 2011 г.

Зав. кафедрой ИКСУ

доктор технических наук _________________ А.М. Малышенко

Председатель учебно-методической

комиссии Приоритет операций и ассоциативность _________________ В.Н. Шкляр

Рецензент

Доцент ИКСУ ИК НИ ТПУ кандидат технических наук

В.Н. Шкляр

© ГОУ ВПО «Томский политехнический

университет», 2011

© Мамонова Т.Е., 2011

© Оформление. Издательство Томского

политехнического института, 2011

ЛАБОРАТОРНАЯ РАБОТА № 2

Математические операции в C++

Цель работы. Приобретение способностей выполнения математических операций на языке C++ в программке Borland C++.

Теоретическая часть

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

Списоквозможных операций довольно широк.

Эти главные математические операции употребляются и в программках C++. Ведь приложения без вычислительных способностей себя совсем не оправдывают Приоритет операций и ассоциативность. Операции C++ снаружи схожи обычным арифметическим операциям, выполняемым на клоке бумаги; разве что используемые в вычислениях переменные перед внедрением необходимо объявлять:

Пример 1.

int varl;

int var2=1;

varl=2*var2;

В этом примере объявлены две переменные, varl и var2. Переменной var2 присвоено изначальное значение l, varl определена как итог удвоения переменной Приоритет операций и ассоциативность var2.

В согласовании с количеством операндов, которые употребляются в операциях они делятся на унарные, бинарные и тернарную.

Унарные операции

Унарными именуются те операторы, которые имеют только один аргумент, к примеру -а. Унарными математическими операторами являются +, -, ++ и --. А так же операции, выставленные в табл. 1.

Пример 2.

int varl=10;

int var2=-varl;

Тут в Приоритет операций и ассоциативность последнем выражении употребляется унарный оператор "-".

Оператор "минус" изменяет символ собственного аргумента (в примере это varl) на обратный. Положительные числа становятся отрицательными и напротив. Оператор "плюс" знака аргумента не изменяет и практически вообщем ни на что не оказывает влияние.

Таблица 1. Унарные операции

Операция Описание
++ Повышение на единицу: префиксная операция Приоритет операций и ассоциативность - наращивает операнд до его использования, постфиксная операция наращивает операнд после его использования.
-- Уменьшение на единицу: префиксная операция - уменьшает операнд до его использования, постфиксная операция уменьшает операнд после его использования.
sizeof вычисление размера (в б) для объекта того типа, который имеет операнд
- Унарный минус
+ Унарный плюс
& Получение адреса операнда
* Получение значения Приоритет операций и ассоциативность, находящегося по обозначенному адресу (разыменование)
new Выделение памяти
delete Освобождение памяти
(type) Преобразование типа

Операторы ++ и -- вы сможете узреть в первый раз. Они наращивают либо уменьшают на 1 значение аргумента и потому именуются операторами инкремента и декремента (от англ. increment (наращивать) и decrement (уменьшать)). К реальным переменным их применение неприемлимо Приоритет операций и ассоциативность.

Пример 3.

int var=10; // Инициализация переменной

var++; //повышение на 1; значение переменной равно

//11

Операторы инкремента и декремента могут находиться или перед аргументом (префиксная форма), или после него (постфиксная форма). Зависимо от метода записи, выполнение операторов инкремента и декремента имеет свои особенности.

Разглядим оператор инкремента (механизмы работы оператора декремента те же). Представим, что Приоритет операций и ассоциативность переменная n имеет значение 5. Оба метода внедрения к n оператора инкремента (++n и n++) приведут к результату 6. Разница меж ними заключается в том, что значение n в выражении ++n равно 6, в то время как в выражении с постфиксной формой записи оно равно 5. Это можно проиллюстрировать последующим примером.

Пример Приоритет операций и ассоциативность 4.

//объявляем три целые переменные

int nl, n2, n3;

nl=5;

n2=++nl; //обе переменные – nl и n2 – получают

//значение 6

nl=5;

n3=nl++; // nl воспринимает значение 6, а n3 – 5

Другими словами, переменной n2 присваивается уже увеличенное префиксным оператором инкремента значение nl, тогда как переменной n3 передается еще не увеличенное постфиксным оператором значение nl.

Бинарные операции

Бинарными именуются операторы Приоритет операций и ассоциативность, которые имеют два аргумента. В выражениях типа varl op var2 оператор op бинарный. Самыми всераспространенными бинарными операторами являются обыкновенные математические операции.

Бинарные операции, которые поддерживает C++, приведены в табл. 2.

Таблица 2. Бинарные операции

Операция Описание
Мультипликативные
* умножение операндов арифметического типа
/ деление операндов арифметического типа (если операнды целочисленные, то производится Приоритет операций и ассоциативность целочисленное деление)
% получение остатка от деления целочисленных операндов
Аддитивные
+ бинарный плюс (сложение арифметических операндов)
- бинарный минус (вычитание арифметических операндов)
Операции сопоставления
< меньше, чем
<= меньше либо равно
> больше
>= больше либо равно
= равно
!= не равно
Итог выполнения операторов сопоставления: "правда" – это "1" (поточнее "не ноль") "неверно" – это "0" Значения, хранимые в переменных (в регистрах Приоритет операций и ассоциативность) х и у, НЕ меняются! Берутся (считываются) значения хранящиеся (либо содержащиеся) в переменных и сравниваются Тернарная операция

Тернарными именуются операторы, которые имеют три аргумента.

К тернарным относится операция ?: – условная операция, в ней употребляется три операнда: Выражение 1 ? Выражение 2: Выражение 3;

Первым рассчитывается значение выражения 1. Если оно поистине, то рассчитывается значение выражения 2, которое становится Приоритет операций и ассоциативность результатом. Если при вычислении выражения 1 получится 0, то в качестве результата берется значение выражения 3.

Пример 5.

x<0?-x:x; //рассчитывается абсолютное значение x.

Оператор присваивания

Оператор присваивания (см. табл. 3) присваивает значение некой области памяти. К примеру, оператор

fleas=38;

присваивает целое число 38 области памяти, выделенной для переменной fleas. Символ = обозначает операцию присваивания. В Приоритет операций и ассоциативность языке С++ имеется одна необыкновенная особенность: операцию присваивания можно использовать поочередно, т. е. последующий код программки будет реальным:

int steinway;

int baldwin;

int yamaha;

yamaha=baldwin=steinway=88;

Присваивание происходит в направлении справа влево.

Пример 6.

nVariable+=2; // значение переменной nVariable увеличено на 2.

Таблица 3. Операции присваивания

Операция Описание
= присваивание
*= умножение с присваиванием (мультипликативное присваивание Приоритет операций и ассоциативность)
/= деление с присваиванием
%= деление с остатком с присваиванием
+= сложение с присваиванием
-= вычитание с присваиванием

Анализ выражения

Самым всераспространенным видом инструкций в C++ является выражение. Выражением в C++ именуют всякую последовательность операторов (длиной не меньшеодного), которая возвращает значение. Все выражения типизированы. Тип выраженияопределяется типом возвращаемого значения. К примеру, значение выражения 1+2приравнивается 3, как следует Приоритет операций и ассоциативность, это целочисленное выражение (здесь необходимо вспомнить, чтоконстанты без дробной части определяются как имеющие тип int). Синтаксическаяконструкция, включающая математический оператор, является выражением, так какв итоге выполнения хоть какой операции выходит число.

Выражения бывают как сложными, так и очень ординарными. Необыкновенной особенностью C++ будет то, что он соображает Приоритет операций и ассоциативность под выражением хоть какой законченный оператор. Потому корректным оператором является, к примеру, 1;. Он тоже представляет собой выражение, так как его значение 1, а тип int.

В операторе

z = х*у+w;

можно выделить 5 выражений:

х*у+w

х*у

x

y

w

Необыкновенный нюанс C++ заключается в том, что выражение само по себе является завершенной аннотацией, т Приоритет операций и ассоциативность.е. упомянутое выражение 1; – завершенная аннотация C++.

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

Ценность операций и ассоциативность

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

int var = 2*3+1;

Если сложение выполнить перед умножением, то значением выражения будет 2*4=8.

Если сначала выполнить умножение, то получим значение 6+1=7.

Таблица 4. Ценности операций.

Ранг Операции
( ) [ ] -> .
! ~ - ++ -- & * (тип) sizeof тип( )
* / % (мультипликативные бинарные)
+ - (аддитивные бинарные)
= (дела)
== != (дела)
&& (конъюнкция «И»)
|| (дизъюнкция «ИЛИ»)
?: (условная операция)
= *= /= %= -= &= ^= |= <>= (операция присваивания)
, (операция запятая)

Ценности операций определяют порядок выполнения вычислений. Из табл. 4. видно Приоритет операций и ассоциативность, что ценность операции умножения выше, чем сложения, т.е. итог все таки равен 7 {приоритеты употребляются и в математике, и C++ следует конкретно им).

А что происходит, когда в одном выражении употребляется два оператора с схожим ценностью?

int var=8/4/2;

Как в данном случае следует поступить: поначалу 8 поделить на 2 либо 2 на Приоритет операций и ассоциативность 4? Если в одном выражении находятся операции с схожими ценностями, они производятся слева вправо (то же правило применяется и в математике). Потому в прошлом примере поначалу делим 8 на 4, получая 2, а потом делим его на 2, получая ответ – 1.

В выражении

х/100+32

х делится на 100 и к результату добавляется 32. Но что, если программеру Приоритет операций и ассоциативность необходимо поделить х на сумму 100 и 32? В таком случае ему придется использовать скобки:

х/(100+32)

При вычислении такового выражения х будет делиться на 132.

Заметим, что изначальное выражение

х/100+32

идентично последующему:

(х/100)+32

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

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

Варианты заданий к лабораторной работе №2

Задание: найти тип данных выражений и отыскать их значения. Составить систему тестов и вычислить приобретенное Приоритет операций и ассоциативность выражение для нескольких значений n и m, найти при каких n и m выражение не может быть вычислено.

При выполнении заданий на сопоставления, использовать тернарную операцию.

Вариант 1.

1) n+(++m)

2) m-->n

3) n-->m

Вариант 2.

1) n/m++

2) m++<--n

3) (m/n)++

Вариант 3.

1) ++n*++m

2) m++

3) n++>m

Вариант 4.

1) m--n

2) m++

3) n++>m

Вариант 5.

1) n++*m

2) n++

3) --m>n

Вариант Приоритет операций и ассоциативность 6.

1) --m-n++

2) m*m

3) n-->++m

Вариант 7.

1) m-++n

2) m++>--n

3) m--<++n

Вариант 8.

1) m+--n

2) m++<--n

3) --m>n--

Вариант 9.

1) m++/n--

2) ++m

3) n-->m

Вариант 10.

1) m/--n++

2) m/n

3) m+n++>n+m

Вариант 11.

1) (n++)+m--

2) n*m

3) n-->++m

Вариант 12.

1) n++*m

2) m--

3) ++m>n

Вариант 13.

1) (n++/--m)++

2) ++m

3) --m>++n

Вариант 14.

1) n++*--m

2) n--

3) --n>--m

Вариант 15.

1) n Приоритет операций и ассоциативность++/--m

2) n-->n/m++

3) m

Содержание отчета

· цель работы;

· задание;

· код программки;

· блок-схема;

· результаты работы программки;

· выводы по работе.

Перечень литературы

1. Ален И. Голуб. Правила программирования на Си и Си++. Пер. с англ.: – М.: Вильямс, 2001. – 241 с.

2. Павловская Т.А. С/С++. Программирование на языке высочайшего уровня. – СПб.: Питер, 2010.

3. Прата Приоритет операций и ассоциативность С. Язык программирования С++. Лекции и упражнения. СПб.: Питер, 2003. – 645 с.

Учебное издание

МАМОНОВА Татьяна Егоровна

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

Методические указания по выполнению лабораторных работ

по курсу «Информатика» для студентов I курса, обучающихся по фронтам 220000 – «Мехатроника и робототехника»,

220700 – «Автоматизация технологических процессов и производств».


prioritetnie-napravleniya-deyatelnosti-upravleniya-kulturi-administracii-goroda-chelyabinska-v-2011-godu.html
prioritetnie-napravleniya-i-sferi-regionalnogo-konkursa.html
prioritetnie-napravleniya-podderzhki.html