Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
02 семестр / Лекции и семинары / Лекции по С++ / Лекции / Язык программирования C++.ppt
Источник:
Скачиваний:
103
Добавлен:
04.03.2014
Размер:
384 Кб
Скачать

Операции (2)

Сдвиги:

<идентификатор> >> <идентификатор> - сдвиг вправо, <идентификатор> << <идентификатор> - сдвиг влево.

Порядковые:

++<идентификатор>, <идентификатор>++ (следующее);

--<идентификатор>, <идентификатор> - - (предыдущее).

Присваивания:

= += -= *= /= %= &= ^= |= <<= >>=

Условная:

<Выражение1>?<Выражение2>:<Выражение3>

21

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

1.

( )

[ ] -> :: .

2.

! (не) + - ++ -- &(адрес) *(указатель) sizeof new delete

3.

.*

->*

4.* / %

5.+ - (бинарные)

6.<< >>

7.< <= > >=

8.= = ! =

9.&(поразрядное и) 10. ^(исключающее или)

11.| (поразрядное или)

12.&&

13.||

14.?=

15.

= *= /= %= += -= &= ^= |= <<=

>>=

16.

,

22

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

 

23

1.7 Блок операторов

Блок операторов используется в конструкциях ветвления, выбора и циклов, предусматривающих один оператор.

Формат:

{ <Оператор>;… <Оператор>;}

Пример:

{

f=a+b;

a+=10;

}

Точка с запятой в отличие от Паскаля является частью оператора, а потому не может опускаться перед фигурной скобкой.

24

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");

25

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!");

}

26

 

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);

}

}

27

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;

}

28

 

3. Оператор цикла do ... while

do <Оператор > while (<Выражение>) ;

Пример. Игнорировать ввод значения, выходящего за пределы заданного интервала.

do {

printf("Введите значение от %d до % d : ",low, high); scanf(" %d ", &a);

}

while (a<low || a>high);

29

1.11 Неструктурные операторы передачи управления

1. Оператор безусловного перехода goto goto <Метка перехода>;

Пример:

again: x=y+a;

...

goto again;

30