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

Лекции Си_ppt_Типы Операции Операторы_2012

.pdf
Скачиваний:
11
Добавлен:
02.06.2015
Размер:
739.89 Кб
Скачать

Таблицаприоритета Оп

Операция Ассоциативность

( ) [ ]

с Указателями

++

-- ун+ ун- ! * & sizeof ~ (тип)

*

/

%

+

-

 

<<

>> сдвиг влево, вправо

<

<=

> >=

==

!=

 

&

логич-е AND, поразрядные:

^XOR

| OR, отрицание (инверсия)

22

13.10.2011

&&

AND Логические

||

Or (и отрицание ‘!’ )

?:

Оп условие

= += -= *= /= %= != ^= <<= >>=

,

 

X += 1; // или X = X + 1; но так медленнее ! sizeof(тип | выражение) – размер в байтах

Пример, число элементов в массиве:

N = sizeof( arr ) / sizeof( arr[0] );

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

Вызов функции и скобки,

Арифметические Операции,

Операции отношения (сравнения),

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

*** Информатика_Л5 ***

Логич-е Операции

иОператоры управления

Операции отношения и логические Оп;

Поразрядные Оп;

Управляющие Операторы:

Опер-ы составной ( { } ) и пустой (;),

Опер перехода ( goto ),

Условные Опер ( if else, switch),

иусловная Оп ?:,

Опeр Циклов ( for, while, do while )

Оп отношениявалгебре логики

В Си нет логического типа (boolean в Pascal),

рез-т лог-го выражения – целочисл-е значение: False – 0, True – ненулевая величина ( 1 ).

Примеры:

 

 

int tr,

fal;

 

tr = 3 <= 5;

// tr 1

fal = 3

> 5;

// fal 0

tr = 12;

// в условных Опер-х – это True

В С++ тип bool, пример:

bool b = -12, // b <- 1, Истина bb = 0; // bb <- 0, Ложь

Логические Операции (ЛогОп)

Примеры использования ЛогОп:

Условие попаданияточки х:

в интервал [a, b]

x >= a и x <= b

a

b

и(And) – логическое умножение

в интервалы [a, b], [c, d]

(x >= a и x <= b) или (x >= c и x <= d)

или (Or) - логическое сложение

a b c d

не ( Not ) – отрицание ( инверсия )

Xor исключающее или

поразрядная Оп

 

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

1 – True,

0 - False

 

 

 

 

 

 

 

 

 

 

 

 

 

Оп Си логич-е

&&

 

 

||

нет

 

 

!

 

 

 

 

 

 

 

 

 

 

 

 

 

Поразрядные

&

 

 

|

^

 

 

~

 

 

 

 

 

 

 

 

 

 

 

 

 

X1

X2

And

 

 

Or

Xor

 

 

Not X1

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

0

 

 

0

0

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

0

 

 

1

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

 

0

 

 

1

1

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

1

 

 

1

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

Логические Операции ЗНАТЬ !

Логические Оп - итог

Not лог-е отрицание;

And лог-е и”, пересечение, лог-е умножение;

Or лог-е или”, объединение, лог-е сложение;

Xor двоичное сложение, “исключающее или”;

Приоритет уменьшается…..

Примеры:

int x, y, z, logA;

x = 1 , y = 2 , z = 3 ;

logA = x > y And y < z; // False logA = Not x > y And y < z; // True logA = x > y Or y < z; // True logA = x < y Xor y < z; // False

Поразрядные (побитовые) Оп

Оп

1 0 1 1 0 1

 

для целочисленных

 

 

0 0 1 1 1 1

 

~-х и const

 

 

 

 

 

 

And 0 0 1 1 0 1

 

Or

1 0 1 1 1 1

Cравнение каждой

 

 

 

Xor

1 0 0 0 1 0

 

пары битов

1 – для разных битов

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

k = 9 >> 2; // 1001 >> 2 потеря 2 битов

//

0010

01

k 2

k = k << 2; //

1000

 

k 8

 

Сдвиг вправо на 1 бит – деление числа на 2

Сдвиг влево на 1 бит – умножение числа на 2

Применение поразрядных Оп

Хранение флагов состояния процесса:

в 1 байте – 8 флагов on/off ( fl = 01011001 )

Установка флага во 2 бите:

fl = fl | 2; // 00000010

Сброс флага в 4 бите:

fl = fl & 0xF7; // 11110111

Проверка флага в 4 бите:

if( fl & 8 ) … ; // 00001000

Поразр-е Оп прим-ся в системных П (в драйверах устройств и др), в П,

связанных с принтером, модемом и др. устройствами К.

Помнить о возможной потере разрядов числа при сдвиге влево (старшие разряды) или вправо (младшие разряды) !!!

УправляющиеОператоры -

для обработки Д по А любой сложности с разветвлениями, Ц-ми, переходами.

1. Составной Оператор

Блок, ограниченный { } : - объявления ~-х, -выполняемые Опер-ы

Распол-ся в любом месте Фун как обычный Опер, в

СостОпер м. быть другие СостОпер

{ … { int K; K++ ; … ; } … } K – не видима !

2. Пустой Оператор – это ‘;

x = a ; ; y = 3 ;

Используется:

для установки метки (переход по goto),

в Опер if else, пример:

if(x > 0) a = b ;

else a = 2*b;

после Опер-а заголовка Ц

while( K-- ) ;

3. Оператор goto

if(x > 0) goto metka ; // metka идентиф-р

… …

// не объявляется !

metka: y = 3 ;

// Переход только внутри Фун !

Не рекомендуется переход внутрь Опер-в:

составного { … m1: … … } ; goto m1;

условного if else,

Опер-а выбора варианта switch,

Цикла

Оператор goto нерекомендуется

использовать вП согласно методологии структурного П-я:

ухудшается понимаемостьП !!!

Только в случаенеобходимости !

Использование goto

Переход по goto только вниз по ходу выполнения П,

Если нужно вернуться назад,

использовать Цикл

goto m;

m: x=0;

4. Разветвление вычислений

Условный Опер if else, Опер выбора варианта switch и условная Оп ?:

Условный Опер if else

Сокращенная форма:

B ≠ 0

В – выражение любого типа – условие разв-я

i f ( B )

S ;

B = 0

 

S – простой

 

 

 

 

или СостОпер

Пример: i f ( a > sqrt(x) +3.5 ) z = a ;

Полная форма Опер-ра if

else

i f ( B ) S1 ; // B ≠ 0

 

e l s e S2 ; // B = 0

 

Пример: i f ( a > 3.5 )

z = a ;

 

e l s e i f

( b > 3.5 )

z = b ;

e l s e { z = a + b ; y = a * b;

}

else с ближайшим if, не связанным с else

Оператор выбора варианта switch

switch ( В )

{case m1: S1; [ break; ] // mi - метки

… …

case mN: SN; [ break; ]

[ default: SS; ] // если В ≠ m1 … mN

//метка – целая или символьная const

//B – выражение, рез-т кот. значение целого типа:

//

int,

char,

long

Пример: переход по «да» / «нет»

char c;

c = getchar( ); // чтение символа с клавиатуры switch( c )

{case ‘Y’: ;

case ‘y’: fun1( ); break; case ‘N’: ;

case ‘n’: fun2( ); break; default: printf(“\n Введите Y,y или N,n !” );

}

Операция условие ? :

(выраж_1) ? (выраж_2) : (выраж_3)

0 = 0

Примеры: max = (x > y) ? x : y ;

(x > y) ? z = x - y : z = x * y ;

Задание: запишите выражения для вычисления а) | x | ,

b) для х > y вычислить sin( x ), в противном случае cos( y ) и результат запомнить в х

Операторы Циклов ( Ц )

Цикл for Опер Ц с параметром

= 0

for ( сп1 ; сп2 ; сп3 )

0

{ … … ; continue;

… … ; break;

… … ;

}

В Цикле for :

сп1 – инициализация нач. знач, вып-ся 1 раз,

сп2 – список выражений для проверки конца Ц,

сп3 – список Опер и/или выражений для корректировки

параметров Ц.

Примеры: for( s=0, i=1; i <= N; i++ ) s=s + i;

или s=0;

for( i=1; i <= N; s=s + i, i++ );

или

. . . . . .

В Цикле for :

 

параметр Ц - ~-я любого числового типа; for( x = 0.1; x <= 10.5; x = x + 0.3 ) … ;

for( c = ‘a’; c <= ‘z’; c++ ) … ;

параметры в сп2 и сп3 можно изменять в теле Ц;

значения пар-ов Ц сохраняются при выходе из Ц. for ( ; ; ) ; // Это бесконечный Ц