Выражения в С++. Приоритет операций. Последовательность выполнения операций

Автор работы: Пользователь скрыл имя, 12 Июня 2013 в 14:48, курсовая работа

Описание работы

Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

Файлы: 1 файл

курсовая.doc

— 262.50 Кб (Скачать файл)

 

Министерство образования  и науки Российской Федерации

ФГБОУ ВПО «Московский  государственный открытый

университет имения В.С. Черномырдина

Чебоксарский политехнический  институт (филиал)

Кафедра информационных технологий и программирования

 

 

 

 

 

 

 

 

 

 

 

Курсовая работа

по дисциплине "Программирование и основы алгоритмизации"

на тему: "Выражения  в С++. Приоритет операций. Последовательность выполнения операций."

Вариант № 16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                                                      Выполнил :

студент 1-го курса 

очного отделения 

факультета УИТС

специальность 220400

Семенов Е.В.

Проверила:

ст. преподаватель Замкова Т.В.

 

 

 

Чебоксары 2013

 

 

Введение

 

C++ — компилируемый статически  типизированный язык программирования общего назначения.

Поддерживает такие парадигмы  программирования как процедурное  программирование, объектно-ориентированное  программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

Название «C++» происходит от названия языка C, в котором унарный оператор ++ обозначает инкремент переменной.Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОГЛАВЛЕНИЕ

 

 

Выражения и Операторы .................................................................................................................

Выражения............................................................................................................................................

Операторы Выражения.........................................................................................................................

Пустой  оператор...................................................................................................................................

Оператор if............................................................................................................................................

Операторы switch.................................................................................................................................

Оператор while......................................................................................................................................

Оператор for..........................................................................................................................................

Описания...............................................................................................................................................

Операции c++.......................................................................................................................................

Приоритет операций............................................................................................................................

Ассоциативность..................................................................................................................................

Возвращаемое  значение.......................................................................................................................

Количество  операндов.........................................................................................................................

Операция  присваивания.......................................................................................................................

Арифметические операции с присваиванием....................................................................................

Логические операции...........................................................................................................................

Поразрядные логические операции....................................................................................................

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

Операции new и delete..........................................................................................................................

  Заключение …....................................................................................................................................

источники материалов......................................................................................................................

Практическая  часть..........................................................................................................................

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выражения и Операторы 
 
В С++ имеется богатый набор операций, с помощью которых в выражениях образуются новые значения и изменяются значения переменных. Поток управления в программе задается с помощью операторов, а описания используются для введения в программе имен переменных, констант и т.д. Заметьте, что описания являются операторами, поэтому они свободно могут сочетаться с другими операторами. 
 
 
1 Выражения 
 
В С++ имеется большое число операций, и они будут объясняться там, где (и если) это потребуется. Следует учесть, что операции 
 
~ (дополнение) amp; (И) ^ (исключающее ИЛИ) ! (включающее ИЛИ) «„ (логический сдвиг влево) “» (логический сдвиг вправо) 
 
применяются к целым, и что нет отдельного типа данных для логических действий. 
 
Смысл операции зависит от числа операндов. Унарное amp; является операцией взятия адреса, а бинарное amp; – это операция логического И. Смысл операции зависит также от типа ее операндов: + в выражении a+b означает сложение с плавающей токой, если операнды имеют тип float, но целое сложение, если они типа int. В #1.8 объясняется, как можно определить операцию для типа, определяемого пользователем, без потери ее значения, предопределенного для основных и производных типов. 
 
В С++ есть операция присваивания =, а не оператор присваивания, как в некоторых языках. Таким образом, присваивание может встречаться в неожиданном контексте, например, x=sqrt(a =3*x). Это бывает полезно. a=b=c означает присвоение c объекту b, а затем объекту a. Другим свойством операции присваивания является то, что она может совмещаться с большинством бинарных операций. Например, x[i+3]*=4 означает x[i+3]=x[i+3]*4, за исключением того факта, что выражение x[i +3] вычисляется только один раз. Это дает привлекательную степень эффективности без необходимости обращения к оптимизирующим компиляторам. К тому же это более кратко. 
 
В большинстве программ на С++ широко применяются указатели. Унарная операция * разыменовывает* указатель, т.е. *p есть объект, на который указывает p. Эта операция также называется косвенной адресацией. Например, если имеется char* p, то *p есть символ, на который указывает p. Часто при работе с указателями бывают полезны операция увеличения ++ и операция уменьшения –. Предположим, p указывает на элемент вектора v, тогда p++ делает p указывающим на следующий элемент. 
 
– * англ. dereference – получить значение объекта, на который указывает данный указатель. (прим. Перев.)

 
2 Операторы Выражения

 
Самый обычный вид оператора  – выражение;. Он состоит из выражения, за которым следует точка с  запятой. Например: 
 
a = b*3+c; cout «„ «go go go“; lseek(fd,0,2);

 
3 Пустой оператор

 
Простейшей формой оператора является оператор: 
Он не делает ничего. Однако он может быть полезен в тех случаях, когда синтаксис требует наличие оператора, а вам 
оператор не нужен. 1.4.4 Блоки Блок – это возможно пустой список операторов, заключенный в фигурные скобки: 
 
(* a=b+2; b++; *) 
 
Блок позволяет рассматривать несколько операторов как один. Область видимости имени, описанного в блоке, простирается до конца блока. Имя можно сделать невидимым с помощью описаний такого же имени во внутренних блоках.

 
5 Оператор if

 
Программа в следующем примере  осуществляет преобразование дюймов в сантиметры и сантиметров в дюймы. Предполагаемся, что вы укажете единицы измерения вводимых данных, добавляя i для дюймов и c для сантиметров: 
 
#include «stream.h» 
 
main() (* const float fac = 2.54; float x, in, cm; char ch = 0; 
 
cout «„ "введите длину: "; cin “» x »» ch; 
 
if (ch == 'i') (* // inch – дюймы in = x; cm = x*fac; *) else if (ch == 'c') // cm – сантиметры in = x/fac; cm = x; *) else in = cm = 0; 
 
cout «„ in «« " in = " «« cm «« « cm\n“; *) 
 
Заметьте, что условие в операторе if должно быть заключено в круглые скобки.

 
                                                         6 Операторы switch

 
Оператор switch производит сопоставление  значения с множеством констант. Проверки в предыдущем примере можно записать так: 
 
switch (ch) (* case 'i': in = x; cm = x*fac; break; case 'c': in = x/fac; cm = x; break; default: in = cm = 0; break; *) Операторы break применяются для выхода из оператора 
 
 
switch. Константы в вариантах case должны быть различными, и если проверяемое значение не совпадает ни с одной из констант, выбирается вариант default. Программисту не обязательно предусматривать default.

 
7 Оператор while 
 
Рассмотрим копирование строки, когда заданы указатель p на ее первый символ и указатель q на целевую строку. По соглашению строка оканчивается символом с целым значением 0. 
 
while (p != 0) (* *q = *p; // скопировать символ q = q+1; p = p+1; *) *q = 0; // завершающий символ 0 скопирован не был 
 
Следующее после while условие должно быть заключено в круглые скобки. Условие вычисляется, и если его значение не ноль, выполняется непосредственно следующий за ним оператор. Это повторяется до тех пор, пока вычисление условия не даст ноль. 
 
Этот пример слишком пространен. Можно использовать операцию ++ для непосредственного указания увеличения, и проверка упростится: 
 
while (*p) *q++ = *p++; *q = 0; 
 
где конструкция *p++ означает: «взять символ, на который указывает p, затем увеличить p.» 
 
Пример можно еще упростить, так как указатель p разыменовывается дважды за каждый цикл. Копирование символа можно делать тогда же, когда производится проверка условия: 
 
while (*q++ = *p++) ; 
 
Здесь берется символ, на который указывает p, p увеличивается, этот символ копируется туда, куда указывает q, и q увеличивается. Если символ ненулевой, цикл повторяется. Поскольку вся работа выполняется в условии, не требуется ни оного оператора. Чтобы указать на это, используется пустой оператор. С++ (как и C) одновременно любят и ненавидят за возможность такого чрезвычайно краткого ориентированного на выразительность программирования*. 
 
– * в оригинале expression-oriented (expression – выразительность и выражение). (прим. Перев.)

 
8 Оператор for 
 
Рассмотрим копирование десяти элементов одного вектора в другой: 
 
for (int i=0; i«10; i++) q[i]=p[i]; 
 
 
Это эквивалентно int i = 0; while (i«10) (* q[i] = p[i]; i++; *) но более удобочитаемо, поскольку вся информация, управляющая циклом, локализована. При применении операции ++ к целой переменной к ней просто добавляется единица. Первая часть оператора for не обязательно должна быть описанием, она может быть любым оператором. Например: 
 
for (i=0; i«10; i++) q[i]=p[i]; 
 
тоже эквивалентно предыдущей записи при условии, что i соответствующим образом описано раньше.

 
9 Описания

 
Описание – это оператор, вводящий имя в программе. Оно может  также инициализировать объект с этим именем. Выполнение описания означает, что когда поток управления доходит до описания, вычисляется инициализирующее выражение (инициализатор) и производится инициализация. Например: 
 
for (int i = 1; i«MAX; i++) (* int t = v[i-1]; v[i-1] = v[i]; v[i] = t; *) 
 
При каждом выполнении оператора for i будет инициализироваться один раз, а t MAX-1 раз.

 

 

 

Операции c++

 

Здесь будут рассмотрены все  операции языка C++. Можете использовать данный материал как справочник по операциям. Пока что, перечислены не все. Постепенно буду добавлять оставшиеся.

 

Сначала несколько определений.

 

Значения участвующие в операциях  называются операндами.

 

Операциии будем рассматривать  в порядке возрастания их приоритета: от низшего к высшему.

 

Приоритет операций

 

Итак, каждая операция в языке C++ обладает приоритетом. Приоритет определяет, в какой последовательности будут  выполняться операции в выражении.

 

Не забываем, что оператор в C++ - это строка кода заканчивающаяся  точкой с запятой. Не путайте операторы, операции и операнды.

 

Возьмём например следующий оператор:

 

y = x + 5;

 

Здесь выполняются две операции: операция сложения и операция присваивания. Так вот операция суммы обладает более высоким приоритетом, чем  операция присваивания. Поэтому сначала  вычисляется сумма x и пяти, а затем получившийся результат присваивается переменной y.

 

1

::

слева направо

унарная операция разрешения области  действия

[ ]

операция индексирования

()

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

.

обращение к члену структуры  или класса

->

обращение к члену структуры или класса через указатель

2

++

слева направо

постфиксный инкремент

постфиксный декремент

3

++

справа налево

префиксный инкремент

префиксный декремент

4

*

слева направо

умножение

/

деление

%

остаток от деления

5

+

слева направо

сложение

-

вычитание

6

>>

слева направо

сдвиг вправо

<<

сдвиг влево

7

<

слева направо

меньше

<=

меньше либо равно

>

больше

>=

больше либо равно

8

==

слева направо

равно

!=

не равно

9

&&

слева направо

логическое И

10

||

слева направо

логическое ИЛИ

11

?:

справа налево

условная операция (тернарная операция)

12

=

справа налево

присваивание

*=

умножение с присваиванием

/=

деление с присваиванием

%=

остаток от деления с присваиванием

+=

сложение с присваиванием

-=

вычитание с присваиванием

13

,

слева направо

запятая

Информация о работе Выражения в С++. Приоритет операций. Последовательность выполнения операций