Основи програмирања

летњи семестар 2012/13.
_____________________________________________________________

Предавање 3.
Оператори језика "С"
Наредба селекције
Функције стандардних библиотека

Висока школа електротехнике и рачунарства у Београду

Данас на предавањима   

Упознавање са операторима језика "С"
- Употреба оператора над операндима програма
- Приоритети оператора у сложеним изразима програма
Писање једноставних наредби селекције
(због једноставнијег објашњења појединих оператора)
Употреба функција стандардних "С" библиотека

Висока школа електротехнике и рачунарства у Београду

Преглед оператора језика "C"
1. Оператор доделе 

ime_promenljive = izraz ;
x =x+y;

lvrednost – променљива вредност 

комбиновање оператора доделе са осталим операторима –
омогућава краћи запис наредби

Висока школа електротехнике и рачунарства у Београду

1.
Оператор доделе
Изрази и наредбе у "С" програму

x

y

z

најпростији
С израз

најпростији
С израз

најпростији
С израз

x

x

=

=

y
С израз
y

+

z

+

z

;

С наредба
Висока школа електротехнике и рачунарства у Београду

1. Оператор доделе
Блок наредби у "С" програму

{
pom = x ;
x = y ;
y = pom ;
}

Блок С наредби

Висока школа електротехнике и рачунарства у Београду

2. Бинарни аритметички оператори +. % Oперација сабирање одузимање множење дељење остатак дељења Алгебарски израз a+b a–b а·b a:b a mod b C израз a+b a-b a*b a/b a%b Висока школа електротехнике и рачунарства у Београду . *. -. /.

/. % _____________________________________________________________  За декларисане и иницијализоване променљиве x и y: x/y .2. ако је бар један операнд реалног типа x%y . Бинарни аритметички оператори +.вредност израза је остатак дељења првог операнда другим Висока школа електротехнике и рачунарства у Београду . *. -.вредност израза је реална вредност количника.

) а— као замена за а = a-1 Погодни оператори у бројачким петљама Висока школа електротехнике и рачунарства у Београду .2. ++. -. --     Промена знака / без промене знака ( + / . Унарни аритметички оператори +.) Инкремент ( ++ ) а++ као замена за а = а+1 Декремент ( -.

0 1 a=++b. a b 0 0 а++. 0 0 а=b++. ++. Унарни аритметички оператори +. b = 0. --а. -.2. 1 0 а--. -- int a = 0. 2 2 Висока школа електротехнике и рачунарства у Београду . ++а.

3. Оператор величина типа sizeof(char) 1 sizeof (short) 2 sizeof(int) 2/4 sizeof(long) 4 sizeof(unsigned char) 1 sizeof (unsigned short) 2 sizeof(unsigned int) 2/4 sizeof(unsigned long) 4 sizeof(float) 4 sizeof(double) 8 Висока школа електротехнике и рачунарства у Београду .

4. Оператор конверзија типа Оператор конверзије типа: (tip) Релације између величина појединих основних С типова sizeof(char) < sizeof (short) ≤ sizeof(int) ≤ sizeof(long) sizeof(float) < sizeof(double) Аутомаске конверзије основних С типова (увек нижег у виши) char short најнижи тип од набројаних int long float double највиши тип од набројаних Висока школа електротехнике и рачунарства у Београду .

Оператор конверзија типа int x = 5. Висока школа електротехнике и рачунарства у Београду .5000000 променљива z је реална и може да сачува резултат оператор конвертује тип вредности израза (x*у) у int због израчунавања целобројног дела вредности израза променљива z чува резултат 51.0000000 z = (int) (x * y).4.0000000 вредност израза је реална вредност производа: 51. float y = 10.3. z = x * y. вредност x аутоматски се конвертује у: 5. z.

y = 3.0000000 променљива z чува резултат 3. вредност израза је целобројни део количника (јер су сви операнди целобројни) z = x / y.0000000 због израчунавања реалне вредности израза z = (float) x / y. Оператор конверзија типа int x = 10.0000000 оператор конвертује вредност x у 10.3333333 Висока школа електротехнике и рачунарства у Београду . float z. вредност y аутоматски се конвертује у 3.4. променљива z чува резултат 3.

Релацијски оператори Релација Релацијски C оператор C израз = == x == y ≠ != x != y < < x<y ≤ <= x <= y > > x>y ≥ >= x >= y Вредност израза је логичка јединица ако су вредности x и y еквивалентне ако вредности x и y нису еквивалентне ако је вредност x мања од вредности y ако је вредност x мања или једнака од вредности y ако је вредност x већа од вредности y ако је вредност x већа или једнака од вредности y Висока школа електротехнике и рачунарства у Београду .5.

Наредба селекције if ________________________________________________________   Једна наредба за контролу тока Наредба одлуке:  Проверава логичку тачност израза ( да ли је вредност израза логичка јединица )  Условљава одговарајући ток програма Висока школа електротехнике и рачунарства у Београду .

naredba2 . ако је израз логички тачан извршава се if наредба прва следећа наредба обавезно се извршава Висока школа електротехнике и рачунарства у Београду .Основни облик наредбе if ________________________________________________________ if ( relacijski_izraz ) naredba1 .

naredba2 . } naredban+1 .Основни облик наредбе if ________________________________________________________ if ( relacijski_izraz ) { naredba1 . ] naredban . ако је израз логички тачан извршава се if блок наредби прва следећа наредба обавезно се извршава Висока школа електротехнике и рачунарства у Београду .

блок наредби ако није тачан извршава се 2. блок наредби Висока школа електротехнике и рачунарства у Београду .Алтернативни члан else наредбе if ________________________________________________________ if ( relacijski_izraz ) { naredba11 naredba12 ] naredba1n } else { naredba21 naredba22 ] naredba2n } ако је израз логички тачан извршава се 1.

Наредба if уклопљена унутар друге наредбе if ________________________________________________________ if ( rel_izraz1 ) { if(rel_izraz2) { naredba11 naredba12 ] naredba1n } } else { naredba21 naredba22 ] naredba2n } ако су оба израза логички тачна извршава се 1. блок наредби Висока школа електротехнике и рачунарства у Београду . блок наредби ако први израз није логички тачан извршава се 2.

блок наредби ако 2. блок наредби } Висока школа електротехнике и рачунарства у Београду . израз ако је 2. израз логички тачан испитује се 2. израз логички тачан 1.Наредба if уклопљена унутар друге наредбе if ________________________________________________________ if ( rel_izraz1 ) if(rel_izraz2) { naredba11 naredba12 ] naredba1n } else { naredba21 naredba22 ] naredba2n ако је 1. израз није тачан 2.

блок наредби ако први израз није тачан и ако је тачан други израз извршава се 2.Наредба if уклопљена унутар члана else ________________________________________________________ if ( rel_izraz1 ) { naredba11 naredba12 ] naredba1n } else if(rel_izraz2) { naredba21 naredba22 ] naredba2n } ако је први израз логички тачан извршава се 1. блок наредби Висока школа електротехнике и рачунарства у Београду .

Логички оператори  Погодни за писање сложенијих услова у петљама && ( AND ) Оператор логички И || (OR ) Оператор логички ИЛИ ! (NOT) Оператор логички НЕ Висока школа електротехнике и рачунарства у Београду .6.

6. Логички оператори Таблица истинитости за оператор логички И Израз 0 && 0 0 && 1 1 && 0 1 && 1 Резултат_____ 0 0 0 1 Висока школа електротехнике и рачунарства у Београду .

6. Логички оператори Таблица истинитости за оператор логички ИЛИ Израз 0 || 0 0 || 1 1 || 0 1 || 1 Резултат_____ 0 1 1 1 Висока школа електротехнике и рачунарства у Београду .

Логички оператори Таблица истинитости за оператор логички НЕ Израз !0 !1 Резултат_____ 1 0 Висока школа електротехнике и рачунарства у Београду .6.

if ( x==0 )  if( !x ) if ( x!=0)  if( x ) Висока школа електротехнике и рачунарства у Београду . Логички оператори if( x >= -10 && x <= 10 ) printf(“\nVrednost je u opsegu od -10 do +10”). if( x < -10 || x > 10 ) printf(“\nVrednost je van opsega od -10 do +10”).6.

7. Условни оператор  Једини тернарни С оператор (izraz1) ? (izraz2) : (izraz3)  У зависности од логичке тачности првог израза. резултат овог сложеног израза је вредност другог или трећег израза Висока школа електротехнике и рачунарства у Београду .

7. Условни оператор ime_prom = (izraz1) ? (izraz2) : (izraz3) . Висока школа електротехнике и рачунарства у Београду . else ime_prom = izraz3. if(izraz1) ime_prom = izraz2.

Висока школа електротехнике и рачунарства у Београду .7. else max = y. Условни оператор max = (x>=y) ? (x) : (y) . if(x>=y) max = x.

7. Условни оператор printf(“\nmaximum je %d”. Висока школа електротехнике и рачунарства у Београду . (x>=y) ? x : y). y). x). else printf(“\nmaximum je %d”. if(x>=y) printf(“\nmaximum je %d”.

Оператори на нивоу бита  Погодни за програмирање и читање статуса регистара ~ (НЕ на нивоу бита) << (ПОМЕРАЈ УЛЕВО на нивоу бита) >> (ПОМЕРАЈ УДЕСНО на нивоу бита) & ( И на нивоу бита) | (ИЛИ на нивоу бита) ^ (ИСКЉУЧИВО ИЛИ на нивоу бита) Висока школа електротехнике и рачунарства у Београду .8.

Оператори на нивоу бита Таблица истинитости за оператор НЕ на нивоу бита 1. бит ~0 ~1 резултујући бит_____ 1 0 Висока школа електротехнике и рачунарства у Београду .8.

Оператори на нивоу бита Оператор померај улево на нивоу бита оригинални податак x x=x<<1 1 0 1 0 1 0 1 0 1 0 1 0 Бит најмање тежине добија нулу 0 1 0 1 0 1 0 1 0 1 0 0 податак померен на нивоу бита за једно место улево Висока школа електротехнике и рачунарства у Београду .8.

8. Оператори на нивоу бита Оператор померај удесно на нивоу бита оригинални податак Бит највеће тежине добија нулу 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 x x=x>>1 податак померен на нивоу бита за једно место удесно Висока школа електротехнике и рачунарства у Београду .

бит 2. Оператори на нивоу бита Таблица истинитости за оператор логички И на нивоу бита 1.8. бит 0 & 0 0 & 1 1 & 0 1 & 1 резултујући бит_____ 0 0 0 1 Висока школа електротехнике и рачунарства у Београду .

8. Оператори на нивоу бита Таблица истинитости за оператор логички ИЛИ на нивоу бита 1. бит 2. бит 0 | 0 0 | 1 1 | 0 1 | 1 резултујући бит_____ 0 1 1 1 Висока школа електротехнике и рачунарства у Београду .

8. бит 2. бит 0 ^ 0 0 ^ 1 1 ^ 0 1 ^ 1 резултујући бит_____ 0 1 1 0 Висока школа електротехнике и рачунарства у Београду . Оператори на нивоу бита Таблица истинитости за оператор логички искључиво ИЛИ на нивоу бита 1.

Постављање n-тог бита у податку x на вредност 1 x = x & ~( 1 << ( n-1 ) ). Постављање n-тог бита у податку x на вредност 0 x = x ^ ( 1 << ( n-1 ) ). bit ima vrednost 1”.8. n). Оператори на нивоу бита Програмирање и читање регистара if ( x & ( 1 << ( n-1 ) ) printf(“%d. Провера вредности n-тог бита у податку x x = x | ( 1 << ( n-1 ) ). Измена вредности n-тог бита у податку x (1 у 0 или 0 у 1) Висока школа електротехнике и рачунарства у Београду .

9. Оператори сложене доделе Сложени С оператор += -= *= /= С израз x x x x += -= *= /= %= &= |= ^= <<= >>= x x x x X X %= y &= y |= y ^= y <<= y >>= y y y y y Еквивалентан С израз x = x + y x = x – y x = x * y x = x / y x x x x x X = = = = = = x x x x x x % y & y | y ^ y << y >> y Висока школа електротехнике и рачунарства у Београду .

10. Висока школа електротехнике и рачунарства у Београду . Остали "С" оператори  Адресни оператор &  Позив функције ( )  Индекс у низу [ ]  Оператор индиректног приступа *  Оператор индиректног присутупа члану структуре ->  Оператор зарез .

Листа приоритета "С" оператора приоритет 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Оператор [ ] ( ) .& (tip) sizeof() * / % + << >> < <= > >= == != & ^ | && || ?: = += -= *= /= &= ^= |= <<= >>= .+ . Висока школа електротехнике и рачунарства у Београду . -> ! ~ ++ -.

Стандардне библиотеке које се често користе у "С" програмима име библиотеке опис функција које садржи библиотека stdio.h Функције улаза / излазa ctype. доделу меморије.h Функције које раде са знаковима math.h time.h Висока школа електротехнике и рачунарства у Београду .h string.h Математичке функције Функције са рад са временом Функције које раде са стринговима Функције за: конверзију текста у број. генерисање случајних бројеваm stdlib. и обрнуто.

tastatura ekran Висока школа електротехнике и рачунарства у Београду . znak = getchar( ). Излаз на екран знак по знак putchar( znak ).h _____________________________________________________________   Улаз са тастатуре знак по знак int znak.Функције за улаз/излаз знак по знак из стандардне "С" библиотека stdio.

printf(“%c”. c:\>S c:\>S Enter (потврда уноса) getchar().h ________________________________________________________  Функције getchar() / putchar() бафероване су као и функције scanf() / printf() scanf(“%c”. c:\>q c:\>q Enter (потврда уноса) znak = getchar(). (брисање из улазног бафера потврде уноса) Висока школа електротехнике и рачунарства у Београду .Функције улаза / излаза из стандардне "С" библиотеке stdio. putchar(znak). znak). &znak).

isdigit(c) – ако је c знак децимална цифра isupper(c) – ако је c знак велико слово islower(c) – ако јe c знак мало слово isalpha(c) – ако је c знак слово isalnum(c) – ако јe c знак слово или децимална цифра isprint(c) – ако јe c знак штампајући Висока школа електротехнике и рачунарства у Београду . c= getchar().h ________________________________________________________  Функције за тестирање знака чији ASCII код добије у аргументу. резултат сваке од ових функција је логичка јединица ( ≠0 ): int c.Функције за тестирање знакова из стандардне "С" библиотеке ctype.

Функције за тестирање знакова из стандардне "С" библиотеке ctype.h ________________________________________________________  Употреба ових функција захтева наредбу if if ( isdigit(c) )  if( c >= ‘0’ && c <= ‘9’ ) if ( isupper(c) )  if( c >= ‘A’ && c <= ‘Z’ ) if ( islower(c) )  if( c >= ‘a’ && c <= ‘z’ ) Висока школа електротехнике и рачунарства у Београду .

putchar(c). R D . Висока школа електротехнике и рачунарства у Београду .Функције за конверзије слова из стандардне "С" библиотеке ctype.h ________________________________________________________  Функције за конвертовање слова чији ASCII код добије у аргументу: toupper( с ) – малог у исто велико tolower( с ) – великог у исто мало  Пример int c. r D . c = getchar(). c = topupper(c).

h Функција језика С Математички израз sin(x) sin(x) cos(x) cos(x) tan(x) exp(x) log(x) log10(x) sqrt(x) fabs(x) pow(x.y) tg(x) ex ln(x) log10(x) √x |x| xy Висока школа електротехнике и рачунарства у Београду .Математичке функције из стандардне "С" библиотеке math.

Oператори) Анализа примера и задатака у вежби 3. у збирци Висока школа електротехнике и рачунарства у Београду .Припрема лабораторијске вежбе код куће _______________________________________________________________________    Лекције из уџбеника (поглавље 3. изрази и наредбе селекције) Израда задатака за припрему лабораторијске вежбе 3. у збирци (Oператори.

_____________________________________________________________ Предавање 3. Оператори језика "С" Наредба селекције Функције стандардних библиотека Висока школа електротехнике и рачунарства у Београду .Основи програмирања летњи семестар 2012/13.

Sign up to vote on this title
UsefulNot useful