ООП C++_1
.pdf1.5 Операции
Арифметические:
+ – сложение; - – вычитание; * – умножение;
/ – деление – результат – вещественное, если хотя бы одно из чисел – вещественное, результат – целое, если делимое и делитель – целые,
%- остаток от деления целых чисел.
Логические: ! (не), && (и), || (или).
Логические поразрядные:
-(не), & (и), | (или), ^ (исключающее или).
Отношения:
<, >, <=, >=, = = (равно), ! = (неравно).
21
Операции (2)
Сдвиги:
<идентификатор> >> <идентификатор> - сдвиг вправо, <идентификатор> << <идентификатор> - сдвиг влево.
Порядковые:
++<идентификатор>, <идентификатор>++ (следующее);
--<идентификатор>, <идентификатор> - - (предыдущее).
Присваивания:
= += -= *= /= %= &= ^= |= <<= >>=
Условная:
<Выражение1>?<Выражение2>:<Выражение3>
22
Приоритет операций
1. |
( ) |
[ ] -> |
:: . |
|
2. |
! (не) + - ++ -- &(адрес) *(указатель) sizeof |
new delete |
||
3. |
.* |
->* |
|
|
4. |
* |
/ % |
|
|
5. |
+ |
- (бинарные) |
|
|
6. |
<< >> |
|
|
|
7. |
< |
<= > |
>= |
|
8. |
= = ! = |
|
|
|
9. |
&(поразрядное и) |
|
||
10. |
^(исключающее или) |
|
||
11. |
| (поразрядное или) |
|
||
12. |
&& |
|
|
|
13. |
|| |
|
|
|
14. |
?= |
|
|
|
15. |
= |
*= /= |
%= += -= &= ^= |= <<= |
>>= |
16. |
, |
|
|
23 |
|
|
|
1.6 Оператор «Выражение»
Формат составного выражения:
<Выражение1>[,<Выражение2>,...[,<Выражение n>]...]
Примеры: |
|
|
|
a) int a=10, b=3; float ret; ret=a/b; |
ret=3 |
||
б) c=1; |
b=c++; |
b=1, c=2 |
|
в) c=1; |
sum=++c; |
c=2, sum=2 |
|
г) c=a<<4; |
эквивалентно с=a*16; |
||
д) a+=b; |
|
эквивалентно a=a+b; |
|
е) a=b=5; |
эквивалентно b=5; a=b; |
||
ж) с=(a=5, b=a*a); |
эквивалентно a=5; b=a*a; c=b; |
||
з) a=(b=s/k)+n; |
эквивалентно b=s/k; a=b+n; |
||
и) c=(a>b)?a:b; |
если a>b, то с=a, иначе с=b |
24
1.7 Блок операторов
Блок операторов используется в конструкциях ветвления, выбора и циклов, предусматривающих один оператор.
Формат:
{ <Оператор>;… <Оператор>;}
Пример:
{
f=a+b;
a+=10;
}
Точка с запятой в отличие от Паскаля является частью оператора, а потому не может опускаться перед фигурной скобкой.
25
1.8 Оператор условной передачи управления
if (<Выражение>) <Оператор;> [ else <Оператор;>] Примеры:
а) if (!b)
puts("с - не определено"); // если b=0, то – ошибка, else {c=a/b; printf("c=%d\n", c);} // иначе - выводится с.
б) if ((c=a+b)!=5) c+=b;
else c=a; |
|
|
в) if ((ch=getchar())==′q′) |
// если в ch введено q, |
|
puts ("Программа завершена."); |
// то ... |
|
else puts ("Продолжаем работу..."); |
// иначе ... |
г) ch=′a′;
if ((oldch=ch, |
ch=′b′)==′a′)puts("Это символ ′a′\n"); |
|
else puts("Это |
символ ′b′\n"); |
26 |
|
|
1.9 Оператор выбора
switch (<выражение>)
{ |
case <элемент>: <операторы;> |
|
case <элемент>: <операторы;> |
|
. . . |
} |
[ default : <операторы;>] |
|
Пример:
switch |
(n_day) |
|
{ case |
1: |
|
case |
2: |
|
case |
3: |
|
case |
4: |
|
case |
5: puts("Go work!"); break; |
|
case |
6: printf("%s","Clean the yard and"); |
|
case |
7: puts("relax!"); |
27 |
} |
|
|
1.10 Операторы циклов
1. Оператор цикла while
while (<Выражение>) <Оператор>
Пример Ex1_02. Вычислить при x > 1 сумму ряда S=1+1/x- 1/x2+1/x3-... с точностью ξ.
#include <stdio.h> #include <math.h>
void main(int argc, char* argv[])
{ float s, r,x,eps; puts("Input x, eps:"); scanf("%f %f", &x, &eps); if (x<=1) puts("Error."); else { s=1; r=1/x;
}
}
while (fabs(r)>eps){ s+=r; r=-r/x; } printf("Result= %f.\n", s);
28
2. Оператор цикла for
for (<Выражение1>;<Выражение2>;<Выражение3>)<Оператор>;
Эквивалентно:
<Выражение1>
while (<Выражение2>) {<Оператор>; <Выражение3>;
}
Пример Ex1_03. Вычислить сумму первых десяти натуральных чисел.
#include <stdio.h>
int main(int argc, char* argv[])
{ int i,s;
for (i=1,s=0;i<=10;i++) s+=i; printf("Sum=%d\n",s);
} return 0;
29
3. Оператор цикла do ... while
do <Оператор > while (<Выражение>) ;
Пример. Игнорировать ввод значения, выходящего за пределы заданного интервала.
do {
printf("Введите значение от %d до % d : ",low, high); scanf(" %d ", &a);
}
while (a<low || a>high);
30