Автор работы: Пользователь скрыл имя, 12 Июня 2013 в 14:48, курсовая работа
Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.
Министерство образования и науки Российской Федерации
ФГБОУ ВПО «Московский государственный открытый
университет имения В.С. Черномырдина
Чебоксарский политехнический институт (филиал)
Кафедра информационных технологий и программирования
Курсовая работа
по дисциплине "Программирование и основы алгоритмизации"
на тему: "Выражения в С++. Приоритет операций. Последовательность выполнения операций."
Вариант № 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 должно
быть заключено в круглые скобки.
Оператор 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 |
, |
слева направо |
запятая |
Информация о работе Выражения в С++. Приоритет операций. Последовательность выполнения операций