Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Programmirovanie_-_1_kurs / Лекции (опорный конспект)

.pdf
Скачиваний:
69
Добавлен:
09.06.2015
Размер:
2.39 Mб
Скачать

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

Выполняются над булевскими операндами

Возвращают булевское значение

Операция

Описание

Пример

 

 

выражения

 

 

 

 

&&

Логическое «И»

A &&

B

 

 

x<=2

&& y>3

 

 

 

 

| |

Логическое «ИЛИ»

x<=2

| | y>3

 

 

 

!

Логическое «НЕ»

!A && B

 

 

!(x<=2)

 

 

 

 

A

B

!A

A&&B

A| |B

 

 

 

 

 

 

 

Ложь

Ложь

Истина

Ложь

Ложь

 

 

 

 

 

 

 

Ложь

Истина

Истина

Ложь

Истина

 

 

 

 

 

 

 

Истина

Ложь

Ложь

Ложь

Истина

 

 

 

 

 

 

 

Истина

Истина

Ложь

Истина

Истина

31

 

 

 

 

 

 

3.3. Побитовые логические операции (1)

Возвращают целочисленное значение

Выполняются над целочисленными операндами

Операция

Описание

Пример

 

 

выражения

 

 

 

&

Побитовое «И»

A & B

 

 

 

|

Побитовое «ИЛИ»

A | B

 

 

 

^

Побитовое исключающее «ИЛИ»

A ^ B

 

 

 

~

Побитовое «НЕ»

~A

 

 

 

A

B

~A

A&B

A|B

A^B

 

 

 

 

 

 

 

 

0

0

1

0

0

0

 

 

 

 

 

 

 

 

0

1

1

0

1

1

 

 

 

 

 

 

 

 

1

0

0

0

1

1

 

 

 

 

 

 

 

 

1

1

0

1

1

0

32

 

 

 

 

 

 

3.3. Побитовые логические операции (2)

unsigned char SW = 0; //

00000000

 

 

// Установить значение 1

для 1 бита

 

SW = SW | 0x01;

//

00000000

-

SW

 

//

00000001

-

0x01

 

//

-----------------

 

 

 

//

00000001

-

SW

// Установить значение 1

для 3 бита

 

SW = SW | 0x04;

//

00000001

-

SW

 

//

00000100

-

0x04

 

//

-----------------

 

 

 

//

00000101

-

SW

// Установить значение 0

для 1 бита

 

SW = SW & (~0x01);

//

00000101

-

SW

 

//

11111110

-

~0x01

 

//

-----------------

 

 

 

//

00000100

-

SW

//

Установить значение 0

для 3 бита

 

SW

= SW & (~0x04);

//

00000100

-

SW

 

 

//

11111011

-

~0x04

 

 

//

-----------------

 

 

 

 

//

00000000

-

SW

// Изменить значение 4 бита на противоположное

SW = SW ^ 0x08;

// 00000000

- SW

 

// 00001000

-

0x08

 

// -----------------

 

 

 

// 00001000

-

SW

//

Изменить значение 4 бита на противоположное

SW

= SW ^ 0x08;

// 00001000

-

SW

 

 

// 00001000 - 0x08

 

 

// -----------------

 

 

 

 

// 00000000

-

SW

33

3.4.Операции сдвига

Возвращают целочисленное значение

Выполняются над целочисленными операндами

Операция

Описание

 

 

Пример

 

 

 

выражения

 

 

 

 

 

>>

Сдвиг вправо

A

>>

2

 

 

 

 

 

<<

Сдвиг влево

A

<<

3

 

 

 

 

 

unsigned

char A = 12; // 00001100

(12)

A

=

A <<

2;

//

00110000

(48)

A

=

A >>

3;

//

00000110

(6)

34

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

Операция

Описание

Приоритет

 

 

 

!

Логическое «НЕ»

1

 

 

 

~

Побитовое «НЕ»

1

 

 

 

Унарный минус

1

 

 

 

*

Умножение

2

 

 

 

/

Деление

2

 

 

 

%

Получение остатка от

2

 

деления

 

 

 

 

+

Сложение

3

 

 

 

Вычитание

3

 

 

 

>>

Сдвиг вправо

4

 

 

 

<<

Сдвиг влево

4

 

 

 

a +2 b *1 c >=3 d &&4 d < e –2 5

Операция

 

Описание

Приоритет

 

 

 

 

<

 

Меньше

5

 

 

 

 

<=

 

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

5

 

 

 

 

>

 

Больше

5

 

 

 

 

>=

 

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

5

 

 

 

 

==

 

Равно

6

 

 

 

 

!=

 

Не равно

6

 

 

 

 

&

 

Побитовое «И»

7

 

 

 

 

 

^

 

Побитовое

8

 

 

исключающее «ИЛИ»

 

 

 

 

 

|

 

Побитовое «ИЛИ»

9

 

 

 

 

&&

 

Логическое «И»

10

 

 

 

 

| |

 

Логическое «ИЛИ»

11

 

 

 

 

false &&1 false ||2 true

a + b * c >= d && d < e – 5

( ( a + (b * c) ) >= d ) && ( d < (e – 5) )

35

(a + b) * c

3.6.Математические функции (1)

Основные математические функции определены в заголовочном файле math.h

#include <math.h>

• Функция возведения в степень

double pow(double x, double y);

double x = pow(2,4); // x = 16;

• Функции взятия числа по модулю

• Функции округления

double ceil(double x); double floor(double x);

double a = floor(9.9); // a = 9; double b = floor(9.1); // b = 9; double c = floor(-1.4); // c = -2;

int

abs(int x);

 

double

fabs(double

x);

double z = fabs(-1.4); // z = 1.4;

double a = ceil(9.9); // a = 10; double b = ceil(9.1); // b = 10; double c = ceil(-1.4); // c = -1;

36

3.6. Математические функции (2)

double log(double x);

Натуральный логарифм

 

 

double log10(double x);

Десятичный логарифм

 

 

double sqrt(double x)

Квадратный корень числа

 

 

double sin(double x);

Синус

 

 

double cos(double x);

Косинус

 

 

double tan(double x);

Тангенс

 

 

double sinh(double x);

Гиперболический синус

 

 

double cosh(double x);

Гиперболический косинус

 

 

double tanh(double x);

Гиперболический тангенс

 

 

double asin(double x);

Арксинус

 

 

double acos(double x);

Арккосинус

 

 

double atan(double x);

Арктангенс

 

 

double exp(double x);

Вычисление экспоненты

 

 

37

4.Операторы языка С++

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

Оператор присваивания позволяет установить новое значение для переменной

Оператор

Пример

Эквивалентный

присваивания

использования

оператор

 

 

 

+=

a += b

a = a + b

 

 

 

-=

a -= b

a = a – b

 

 

 

*=

a *= b

a = a * b

 

 

 

/=

a /= b

a = a / b

 

 

 

%=

a %= b

a = a % b

 

 

 

<<=

a <<= b

a = a << b

 

 

 

>>=

a >>= b

a = a >> b

 

 

 

&=

a &= b

a = a & b

 

 

 

|=

a |= b

a = a | b

 

 

 

^=

a ^= b

a = a ^ b

 

 

 

переменная = выражение

X = a + b * c >= d && d < e – 5; D = 2 * a;

A = A + 10;

38

4.2.Инкремент и декремент

Оператор инкремента (++) увеличивает значение переменной на единицу

Оператор декремента (--) уменьшает значение переменной на единицу

++c; // префиксный инкремент c++; // постфиксный инкремент

Оператор

Последовательность

 

действий

 

 

x = c++;

x = c;

 

c = c + 1;

 

 

x = ++c;

c = c + 1;

 

x = c;

 

 

x = c--;

x = c;

 

c = c - 1;

 

 

x = --c;

c = c - 1;

 

x = c;

39

4.3. Операторы передачи управления

• Вызов функции

имя_функции(параметр1, параметр2, ...)

function1();

function2(1,2,3);

function3(a,b,c);

a = F(b) + F(c);

• Возврат значения функции

void function1()

{

//...

return;

}

int function2()

{

//...

return 10;

}

• Безусловный переход

// ...

goto label1;

//...

//...

label1: a = 5;

//...

double sum (double a, double b)

{

return a+b;

}

void main()

{

int a = 5; int b = 10;

int c = sum(a,b);

cout << "c = a + b = " << c; getch();

40

}