123
Увод у Увод у програмирање програмирање програмски језик C Електротехнички факултет у Источном Сарајеву

Увод у програмирање програмски језик C

  • Upload
    peers

  • View
    84

  • Download
    8

Embed Size (px)

DESCRIPTION

Увод у програмирање програмски језик C. Електротехнички факултет у Источном Сарајеву. Професор. Doc.dr Slobodan Obradović, dipl.inž.el. E-mail: sobradovic @ vets.edu.yu. Испит. (А или Б) и Ц ___________________________ А) 3 Колоквијума обавезна сва три колоквијума - PowerPoint PPT Presentation

Citation preview

Page 1: Увод у програмирање програмски језик  C

Увод у програмирањеУвод у програмирање програмски језик C

Електротехнички факултет у Источном Сарајеву

Page 2: Увод у програмирање програмски језик  C

2

Професор Професор

Doc.dr Slobodan Obradović, dipl.inž.el.

E-mail: [email protected]

Page 3: Увод у програмирање програмски језик  C

3

ИспитИспит

• (А или Б) и Ц

___________________________

• А) 3 Колоквијума– обавезна сва три колоквијума

– за сваки колоквијум (51% минимум)

• Б) Интегрални испит

• Ц) Усмени испит

Page 4: Увод у програмирање програмски језик  C

4

ЛитератураЛитература

• Ласло Краус, “Програмски језик СС са решеним задацима”, Академска мисао, Београд, 2004.

• Додатна литература

Page 5: Увод у програмирање програмски језик  C

5

Садржај курса из језика ССадржај курса из језика С

• Дефинисање података• Оператори• Наредбе• Низови• Показивачи• Знакови• Функције• Претпроцесорске наредбе• Структуре• Рад са датотекама• Повезане листе

Page 6: Увод у програмирање програмски језик  C

6

ИсторијаИсторија

• Програмски језик C је први пут развијен почетком 1970-тих (Bell Labs, USA)

• Намена: основа за развој оперативног система UNIX.

• Други виши програмски језици тог времена (COBOL, FORTRAN, PL/I, ALGOL...) су били превише спори.

• Као основа за програмски језик C су послужила два виша програмскa језика: ALGOL и BCPL.

Page 7: Увод у програмирање програмски језик  C

7

ИсторијаИсторија

• 1960: ALGOL (ALGOrithmic Language)

• 1967: BCPL (Basic Combined Programming Language)

• 1970: B programming language (без типова)

• 1972: C: BCPL + B (уведени типови)

• 1978: Kernighan + Ritchie стандард за C

• 1989: ANSI стандард за C

Page 8: Увод у програмирање програмски језик  C

8

Предности С језикаПредности С језика

• Опште намене, од ОС до специфичних проблема

• Врло ефикасни компајлери за вели број процесора и оперативних система

• Преносивост компајлера• Моћни оператори• Мали скуп наредби и богате библиотеке• Језик средњег нивоа, дакле може

ефикасно да приступи и хардверу

Page 9: Увод у програмирање програмски језик  C

9

Решавање задатака Решавање задатака

• Анализа задатка, деф. проблема, подела на делове и одређивање коначног циља

• Разрада алгоритма, тј. Решавање задатка

• Кодирање програма и превођење на машински језик

• Тестирање и отклањање грешака

• Израда коначне документације

• Употреба и одржавање програма

Page 10: Увод у програмирање програмски језик  C

10

Писање програмаПисање програма

• Скуп наредби (instructions, statements) се назива кôд (Code ) или изворни кôд (Source code).

• Фајл који садржи кôд се назива Source file. • У C програмском језику се низ наредби

групише у целине које се називају функције (function)

• Сваки програм мора да садржи бар једну функцију i to funkciju main( )

Page 11: Увод у програмирање програмски језик  C

11

Како изгледа програм у језикуКако изгледа програм у језику C C

#include <stdio.h>

main()

{ printf(“Primjer”);}}

Сваки програм мора да има main

функцију

main()

заглавље функције

printf(“Primer”);

тело функције (блок наредби)

{

Почетак блока

}

Крај блока

;

граничник исказа, наредби

#include <stdio.h>

Претпроцесорска директива

Page 12: Увод у програмирање програмски језик  C

12

Фазе обраде програмаФазе обраде програма

1. Писање програма (Editing)

2. Предобрада (Preprocessing)

3. Превођење (Compilation)

4. Повезивање (Linking)

5. Има још једна фаза код модерних програмских језика а то је пуњење (Loading)

6. Извршавање (Executing)

Page 13: Увод у програмирање програмски језик  C

13

1. Предобрада 1. Предобрада # # ((PreprocessingPreprocessing))

• Обавља се програмом који се назива preprocessor.

• Модификује изворни кôд (у RAM-у) у складу сa наредбама за предобраду (preprocessor directives).Ове наредбе ближе дефинишу начин превођења.

• Приликом предобраде се занемарују коментари (comments) и празан простор (white space) из кôда.

• Кôд, који је програмер написао и претходно снимио на диск, НЕ МЕЊА се у процесу предобраде!

Page 14: Увод у програмирање програмски језик  C

14

Претпроцесорка директиваПретпроцесорка директива

#include <stdio.h>

main()

{printf(“Primer”);

}

#include <stdio.h> Претпроцесорска директива

Обрађује се пре превођења програма

Обавезно почиње са #

#include – најчешће коришћена директива

Укључује у програм садржај датотеке која се наводи као параметар

#include <ime>или

#include ”ime”

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

<stdio.h> функције за стандардни улаз/излаз<math.h> библиотека математичких функција ...

#define – често коришћена директива

Дефинише симболичке константе i макрое

#define IME vrednost

#define PI 3.14159#define EPS 0.0001

Page 15: Увод у програмирање програмски језик  C

15

Претпроцесорка директиваПретпроцесорка директива

• Директиве служе за повезивање програма са стандардним библиотекама, сваки програм захтева бар једну stdio.h– Екстензија .h је од речи header, заглавље– Корисник може да прави сопствене библиотеке

• Служе за дефинисање симболичких константи, сва константа има засебну директиву

• Свака директива почиње са #

• Иза ових редова нема ;

Page 16: Увод у програмирање програмски језик  C

16

Претпроцесорка директиваПретпроцесорка директива

ПримерПример::

#include <stdio.h>#include <stdio.h>

#define PI 3.14159#define PI 3.14159

#define EPS 1e-6#define EPS 1e-6

#define MAXINT 32767#define MAXINT 32767

#define K_OCT 071#define K_OCT 071

#define K_HEX 0x41#define K_HEX 0x41

main()()

{{ printf( ”printf( ”%d%d””,, MAXINTMAXINT ); );

printf(printf( ” ”%8.5f%8.5f\n”\n”,, PI ); PI );

printf(printf( ” ”%%1010..88ff\n”\n”,, EPS ); EPS );

printf(printf( ” ”%%d %d”d %d”,,K_OCT, K_HEX );K_OCT, K_HEX );}}

#include <stdio.h>Претпроцесорска директива

укључује стандардне функције за улаз/излаз

података#define PI 3.14159 Претп. директива деф.

симболичку константу PI#define EPS 1e-6

Претпроц. директива деф. симболичку константу EPS

= 0.000001#define MAXINT 32767Претпроцесорска директива деф. целобројну константу

MAXINT = 32767#define K_OCT 071Дефинише окталну константу

K_OCT = 071Октална константа започиње са 0

071 = 7*8 + 1*1 = 56 + 1 = 57 dec#define K_HEX 0x41

Деф. Хексадецималну константу K_HEX = 0x41

Хексадецимална конст. почиње са 0x0x41 = 4*16 + 1*1 = 64 + 1 = 65 dec

printf( ”%d”, MAXINT );

printf( ”%8.5f\n”, PI );

printf( ”%10.8f\n”, EPS );

printf( ”%d %d”,K_OCT, K_HEX );

Главни програм (функција main)Исписује вредност дефинисаних

константи на екрану

За иепис на екран користи се стандардна функција printf()

Page 17: Увод у програмирање програмски језик  C

17

Претпроцесорка директиваПретпроцесорка директива

Пример:

#include <stdio.h>

#define PI 3.14159

#define EPS 1e-6

#define MAXINT 32767

#define K_OCT 071

#define K_HEX 0x41

main()

{ printf( ”%d”, MAXINT );

printf( ”%8.5f\n”, PI );

printf( ”%10.8f\n”, EPS );

printf( ”%d %d”,K_OCT, K_HEX );}

printf( ”%d”, MAXINT );

32767_

printf( ”%8.5f\n”, PI );

_3.14159

printf( ”printf( ”%d%d””,, MAXINTMAXINT ); );

0.00000100

printf( ”%10.8f\n”, EPS );

printf(printf( ” ”%8.5f%8.5f\n”\n”,, PI ); PI );

printf( ”%d %d”,K_OCT, K_HEX );

57_65_

printf(printf( ” ”%%1010..88ff\n”\n”,, EPS ); EPS );

printf(printf( ” ”%%d %d”d %d”,,K_OCT, K_HEX );K_OCT, K_HEX );

Page 18: Увод у програмирање програмски језик  C

18

2. Превођење (2. Превођење (CompilationCompilation))

• Програм којим се обавља превођење назива се преводилац (compiler)

• Изворни кôд, претходно подвргнут предобради, преводи се у објектни кôд (object code).

• Проверава се синтакса грешке (errors) и упозорења (warnings)

• Снима објектни кôд на диск (нови фајл).

• Ако се приликом превођења констатује грешка, НЕ ГЕНЕРИШЕ се објектни кôд.

Page 19: Увод у програмирање програмски језик  C

19

3. Повезивање (3. Повезивање (LinkingLinking))

• Уколико је кôд писан у више фајлова постоји више фајлова са објектним кодом.

• Објектни фајлови се повезују у једну целину како би се формирао извршни фајл (executable file, са екстензијом .еxe).

• Други објектни фајлови могу да настану позивањем готових функција из тзв. библиотека (Libraries, Run-Time Library) или објектних фајлова које је креирао програмер.

• Уколико се приликом линковања констатује грешка неће се формирати извршни фајл!

Page 20: Увод у програмирање програмски језик  C

20

Како до извршног програма?Како до извршног програма?

Повезивање

Програм за унос и обраду текста

filename1.c

filename2.c

...

filenameN.c

Предобрада

Предобрада

Предобрада

Предобрада

filename1.obj

...

filenameN.obj

filename2.obj

Објектни фајлови

Фајл након предобраде, памти се у RAM-у

Превођење

Превођење

Превођење

Превођење

filename1.obj filename1.obj ... filenameN.obj

project_filename.prj

Извршни програм .exe

Page 21: Увод у програмирање програмски језик  C

21

Отклањање грешакаОтклањање грешака

• deBUGing

• bug - computer bugs - debug

Page 22: Увод у програмирање програмски језик  C

22

Врсте грешакаВрсте грешака

• Синтаксне грешке (syntax errors)

• Грешке при извршавању (run time error)

• Грешке намере (semantic error)

Page 23: Увод у програмирање програмски језик  C

23

Синтаксне грешкеСинтаксне грешке

• Неправилно раздвајање инструкција

• Неправилно отварање-затварање коментара

• Коришћење апострофа, наводника, ... Унутар стринга

• Неправилна употреба зареза или размака

• Позивање функције или променљиве пре него што је дефинисана

• Употреба функције као инструкције (увек мора бити на десној страни) и погрешна имена

Page 24: Увод у програмирање програмски језик  C

24

Грешке при извршавањуГрешке при извршавању

• Неправилна употреба контролних структура

• Погрешан унос података

• Типски конфликти

Page 25: Увод у програмирање програмски језик  C

25

Грешке намереГрешке намере

• Погрешан математички модел

• Погрешан алгоритам

• Употреба глобалних променљивих

• Недостају ознаке за поч. и крај блока

• Употреба погрешних услова лог. Фја.

• Појава бесконачне петље

• Занемаривање грешака заокругљивања

Page 26: Увод у програмирање програмски језик  C

26

Формат Формат CC програма - стилпрограма - стил#include <stdio.h>/* C program koji ispisuje: "Zdravo!" */int main( ){ printf("Zdravo!\n"); return 0; }

#include <stdio.h>/* C program koji ispisuje: "Zdravo!" */int main (){printf("Zdravo!\n");return 0;}

Page 27: Увод у програмирање програмски језик  C

27

Формат Формат CC програма - стилпрограма - стил

#include<stdio.h>

/* C program koji ispisuje:

"Zdravo!" */

int

main

(

)

{

printf(

"Zdravo!\n"

)

;

return

0

;

}

Page 28: Увод у програмирање програмски језик  C

28

Формат Формат CC програмапрограма

• Најпрегледније, најразумљивије

• Најлакше за тестирање

• Најпогодније за “дораду”

• Правила#include <stdio.h >

printf("Ovo je veoma, veoma,\veoma, veoma,duga linija.");

Page 29: Увод у програмирање програмски језик  C

29

Улога заграда и неких Улога заграда и неких граничникаграничника

• () у именима функција, за смештање аргумената

• {}, означи почетак и крај тела функције, да издвоји блокове инструкција и ограничи област важења података

• ; означава крај једног израза или наредбе

• С језик може у једном реду имати јако дуге и угњеждене изразе (више наредби)

Page 30: Увод у програмирање програмски језик  C

30

Граматика језикаГраматика језика

• Азбука - скуп дозвољених знакова, симбола

• Лексика – исправно писање недељивих целина

• Синтакса – исправно писање решеница

• Семантика – смисао

Page 31: Увод у програмирање програмски језик  C

31

Елементи језика Елементи језика CC

• Скуп знакова • Велика и мала слова енглеског алфабетаAa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz

• Децималне цифре 0 1 2 3 4 5 6 7 8 9

• Знаци: : _ ! ? . , : ; ‘ = + - / * # % & \ | ( ) [ ] { } < >

Page 32: Увод у програмирање програмски језик  C

32

Лексички симболи - токениЛексички симболи - токени

• Идентификати

• Службене, резервисане речи (пишу се малим словима енглеске азбуке!)

• Константе

• Оператори

• Сепаратори (граничници)

• Знаковни низови

Page 33: Увод у програмирање програмски језик  C

33

ИдентификаториИдентификатори

• Служе за означавање елемената програма (података, симболичких константи, нових типова података, функција ...)и представљају називе објеката језика Правила

1.Могу да се састоје од:– Слова (малих и великих)

– Цифара

– Знака подвучено ( _ )

Page 34: Увод у програмирање програмски језик  C

34

ИдентификаториИдентификатори

2. Први знак у имену мора да буде слово. Може да буде и знак подвучено али...

3. Дужина имена идентификатора да не буде већа од 31 карактера

Пример:JednaPromenljivaKojaImaKarakteraJakoPuno = 1 JednaPromenljivaKojaImaKarakteraSamoJedanVise = 3

4. C разликује мала и велика слова (Rezultat и rezultat) Case Sensitive

5. Имена идентификатора не могу да буду из скупа службених речи.

Page 35: Увод у програмирање програмски језик  C

35

исправни идентификаториисправни идентификатори

suma NovoImec5_4 novo_imeJEDAN_BROJ Broj_studenataTX_protocol Broj_StudenataTRUE _split_name

UporediRezultat_sabiranja dugoimesamnogokaraktera

Page 36: Увод у програмирање програмски језик  C

36

неисправни идентификаторинеисправни идентификатори

70fс почиње бројем

x-name знак - није дозвољен

ime sa razmakom размак није дозвољен

int резервисана реч

axx& знак & није дозвољен

Površina*kruga знак * није дозвољен

jedan,dva знак , није дозвољен

Page 37: Увод у програмирање програмски језик  C

37

Службене речиСлужбене речи (32)(32)

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof volatile

do if static while

Page 38: Увод у програмирање програмски језик  C

38

Подела податакаПодела података

• Скаларни (знаковни, целобројни, реални)

• Нескаларни (структуре података)

Page 39: Увод у програмирање програмски језик  C

39

Логички подаци

C не располаже логичким типом податакау неким програмским језицима то су

LOGICAL или BOOLEAN

Нису имплементиране ни логичке константе TRUE (istina) i FALSE (laž)

Било који података се може посматрати као логички ISTINA ... podatak <> 0

LAŽ ... podatak = 0Уобичајено је да се користе целобројни подациРезултат логичких операција је:

rezultat=1 -> ISTINA (tačno) rezultat=0 -> LAŽ (netačno)

Page 40: Увод у програмирање програмски језик  C

40

Подаци, Променљиве и типови Подаци, Променљиве и типови податакаподатака

• Подаци су предмет обраде у програмима.

• Сваки податак има одређене особине, а скуп свих особина једног податка одређује тип податка.

• Тип податка је одређен:– скупом могућих вредности које податак

може да узме и

– скупом могућих операција које је могуће извести над податком.

Page 41: Увод у програмирање програмски језик  C

41

ПодациПодаци

• Подаци у програму могу да се представе помоћу: – вредности или

– идентификатора. c=a+5

• Подаци педставњени преко вредности се називају константе

• Подаци педстављени преко идентификатора се називају променљиве

Page 42: Увод у програмирање програмски језик  C

42

Подаци – симболичке константеПодаци – симболичке константе

• Посебан случај непроменљивих података представљају симболичке константе.

#define PI=3.14;

#define MIN_RASTOJANJE=2;

#define Broj_Semestara=8;

Page 43: Увод у програмирање програмски језик  C

43

Имена, идентификатори променљивих

Променљиве (варијабле)

Променљива је симболичко име за неку меморијску локацијуСвака променљива мора имати неко јединствено име!?

име се формира од слова, цифара и знака _први знак не може бити цифрамаксимално 31 знакразликују се мала и велика слова: име Slovo различито од slovo

МЕМОРИЈАМЕМОРИЈА

broj

BROJ

podatak_1

Broj-1

123A

Page 44: Увод у програмирање програмски језик  C

44

Променљиве Променљиве

СВАКА ПРОМЕНЉИВА МОРА БИТИ ТАЧНО ОДРЕЂЕНОГ ТИПА

Тип променљиве не може се мењати током извршења програма променљива може бити неког -скаларног - описана једним бројем, или -нескаларног типа - састоји се од више делова од којих је сваки и засебан и део податка

Може да се мења вредност (садржај меморијске локације)зато се и зове променљива (varijabla)

MEMORIJA

int

charA

x

ZGa ABC

2.35

13

13

6-657

ABC

2.35

D

Page 45: Увод у програмирање програмски језик  C

45

Типови променљивих податакаТипови променљивих података

• Тип неког податка одређује :– Меморијски простор који података заузима

– Скуп вредности који тај податак може да има

– Скуп операција дефинисаних над њим.

• Програмски језик CC познаје само нумеричке типове података– целобројни нумерички типови

– реални нумерички типови.

Page 46: Увод у програмирање програмски језик  C

46

Целобројни типови податакаЦелобројни типови података

• Име типа: –int–short int–long int

• Опсег вредности: цели бројеви (унутар датог опсега) – Пример: 5, -35, 401

• Операције: аритметичке (сабирање, одузимање, множење, …), друге

Page 47: Увод у програмирање програмски језик  C

47

Целобројни типови податакаЦелобројни типови података

• сваки од ових типова може бити неозначен (само позитивне вредности)–unsigned int–unsigned short int–unsigned long int

Page 48: Увод у програмирање програмски језик  C

48

Пример опсега вредностиПример опсега вредности

Тип Бајтова Бита Mин вред. Maкс вред.

short int 2 16 -32768 32767

int 4(2) 32 -2147483648 2147483647

long int 4 32 -2147483648 2147483647

не заборавите signed unsigned

Page 49: Увод у програмирање програмски језик  C

49

Зашто постоје ограничењаЗашто постоје ограничења

• Са одређеним бројем бита, могуће је дефинисати одређени скуп вредности

• 16 бита, 65 536 могућих вредности– 32768 негативних вредности

– 1 нула

– 32767 позитивних вредности

• Прекорачење (Overflow):– покушај да се променљивој додели сувише

велика вредности (40 000 у short int)

Page 50: Увод у програмирање програмски језик  C

50

Целобројни типови податакаЦелобројни типови података

Тип char

• Мали означени целобројни податак

• величине 8 бита (1 бајт).

• Намењен за манипулацију карактерима, али може послужити и за рад са малим бројевима са вредностима у распону од од 128 до 128.

• unsigned char може имати вредности од 0 до 255.

( ASCII табела има 256 знакова).

Page 51: Увод у програмирање програмски језик  C

51

Реални типови податакаРеални типови података

• Име типа: –float (4 bajta)–double (8 bajtova)–long double (10 bajtova)

• Могуће вредности: реални бројеви, 5.0, -3.5, 4.01

• Операције: аритметичке (сабирање, одузимање, множење, …), друге

Page 52: Увод у програмирање програмски језик  C

52

Реални типови податакаРеални типови података

float: 4 бајта, 32 бита

double: 8 bајтова, 64 бита

long double: 10 бајтова, 80 бита

• Представљање:– mEe

– m магнитуда, мантиса (одређени број бита), децимални број и Е ознака за степеновање са основом

– е експонент, цео број са знаком

Page 53: Увод у програмирање програмски језик  C

53

Нумеричке константеНумеричке константе

• Целобројне

• Реалне

Page 54: Увод у програмирање програмски језик  C

54

Целобројне нум. константеЦелобројне нум. константе

• Могу бити написане у – децималном,

– хексадецималном (основе 16) и

– окталном (основе 8) бројевном систему.

974 Декадна константа типа int

0x2fc хексадецимална константа типа int

974l декадна константа типа long int

01234L октална константа типа long int

Page 55: Увод у програмирање програмски језик  C

55

Целобројне нум. константеЦелобројне нум. константе

• 0xffff негативна вредност-хексадец.• 0xffffuпозитивна вредност-хексадец.• 0723 негативна вредност-октална• 0723u позитивна вредност-октална

Page 56: Увод у програмирање програмски језик  C

56

Реалне нум. константеРеалне нум. константе• Могу бити написане у само у децималном

бројевном систему.

2.54Е-34 представља вредност 2.54 10-34

1.23 3е5

125. 2.1Е-45

.456 22.3F

Подразумевани тип је double

Додавањем суфикса F или f постаје float

Page 57: Увод у програмирање програмски језик  C

57

Дефинисање податакаДефинисање података

• Сваки податак (променљива) мора да се дефинише пре употребе!

• Општи облик наредбе је tip_podatka ime_podatka;

илиtip_podatka ime_podatka = početna_vrednost;

tip_podatka ime_podatka[= početna_vrednost];

Page 58: Увод у програмирање програмски језик  C

58

Дефиниција променљивеДефиниција променљиве

Преводиоцу (компајлеру) се мора указати на то да ће се у програму користити нека променљива, како би он могао да резервише потребан простор у меморији

Општи облик дефиниције променљиве:tip imepromjenljive [=vrednost]

Почетна вредност

Не мора се додељивати!!

[ ] ове заграде се користе да би се нагласило да нешто није обавезно

[=vrednost]

На пример.

int i,j,n=10;

float a, e=2.71;

char znak=’+’,c;

Page 59: Увод у програмирање програмски језик  C

59

Дефинисање податакаДефинисање података

short int broj1;

short int broj2=34,d, gr=5;

char slovo;

float a=5.43;

float b=12.65;

int visina=34/2;

float povrsina=a*b;

Page 60: Увод у програмирање програмски језик  C

60

ИницијализацијаИницијализација

• је додељивање почетне вредности (initial value) променљивој

• Промељива се не мора иницијализовати (вредност је у том случају случајна)

tip_podatka ime_podatka [=početna_vrednost], ...,ime_podatka [= početna_vrednost];

Пример:int broj=2, prisutni=0, godina=2004, br_sati;

Page 61: Увод у програмирање програмски језик  C

61

Дефинисање непроменљивих податакаДефинисање непроменљивих података

• Непроменљиви подаци су именовани подаци чија се вредност не мења.

• Дефинишу се на сличан начин с тим да:– дефинисање почиње са кључном речи const– мора бити додељена почетна вредност

• Општи облик дефинисања непроменљивих података

const tip_podatka ime_podatka =

početna_vrednost;

Page 62: Увод у програмирање програмски језик  C

62

Дефинисање непроменљивих податакаДефинисање непроменљивих података

const double e=2.71828182845905;

const int br_radnih_dana=26;

const float radijus=14;

const float cena=14.2, porez=0.22; /* i porez je konstanta*/

const float obim=2*radijus*3.14;

Page 63: Увод у програмирање програмски језик  C

63

Читање и писање податакаЧитање и писање података

• Сви подаци који се уносе са тастатуре се прихватају као знакови (character).

• Улазна конверзија се у програмском језику C обавља преко уграђене функције scanf()

• Приликом исписа података на монитор потребно је да се обави излазна конверзија,

• Ова конверзија се обавља применом уграђене функције printf()

Page 64: Увод у програмирање програмски језик  C

64

Читање и писање податакаЧитање и писање података

• Информације о функцијама scanf() и printf() налазе се у фајлу stdio.h.

• Име stdio потиче од standard input output a екстензија .h од header (заглавље).

#include <stdio.h>

#include "c:\nekoime.h"

Page 65: Увод у програмирање програмски језик  C

65

printf

Стандардна функција за излаз (испис) на екран

printf( ”konverzioni string” , lista_argumenata ) ”konverzioni string”

Kontrolni (konverzioni) niz određuje način na koji se vrši ispis

Štampa se sve što se nađe unutar ” ” sve dok se ne dođe do znaka %

Kad se dođe do znaka % gleda se sljedeći znak (grupa znakova) koji se naziva konverzioni karakter

Konverzioni karakter definiše kako će se ispisati odgovarajući podatak iz liste argumenata

Mora biti onoliko znakova % u cijelom stringu koliko ima i argumenata u listi

lista_argumenata

Određuje šta treba da se ispiše (koji podaci treba da se

ispišu)

Argumenti se odvajaju zapetama

Argumenti mogu da budu promjenljive, konstante,

izrazi

Page 66: Увод у програмирање програмски језик  C

66

Писање податакаПисање података

printf("Ovo je jednostavna poruka")• Резултат: Ovo je jednostavna poruka

printf(format,izraz,...,izraz)

• izraz може да представља име променљиве, вредност константе или аритметички израз

format има облик:

”%[Sirina][.Prec]Tip_kon”

Page 67: Увод у програмирање програмски језик  C

67

””%%[[SirinaSirina][.Prec]][.Prec]TipTip__konkon””

Tip_kon Тип Излазни формат --------------------------------------------------------------------------------i int децимални цео бројd int децимални цео бројu int неозначени дец. цео бројo int неозначени октални бројx int неозначени хексадецимални „abcdef”X int неозначени хексадецимални, „ABCDEF”c int карактер дефинисан једним бајтом (ASCII)e float реални број једноструке тачносити, експ обликf float реални број једноструке тачносити стд. обликаg float реални број једноструке тачносити облика f ,e

у зависности од тога који је погоднији за приказ

Page 68: Увод у програмирање програмски језик  C

68

Писање податакаПисање података• printf("%c ", ’A’);

резултат је: А • printf("%c %d", ’A’, 35);

резултат је: А 35 размак између %c и %d • printf("%c%d", ’A’, 35);

резултат је: А35 oвде нема размака. • printf("%c %d %f", ’A’, 35, 4.5);

резултат је: А 35 4.500000• printf("%c %d %е", ’A’, 35, 42.123);

резултат је: А 35 4.212300е+001

Page 69: Увод у програмирање програмски језик  C

69

Пример исписа по разним форматима

Пример:

#include <stdio.h>

main()

{ int var=65;

printf( ”Znakovi:\n”);

printf( ”%2c\n”, ’A’);

printf( ”%4c\n%6c\n”, var, ’B’);

printf( ”%8c\n”, var+1);

printf( ”%3d\n”, ’A’);

printf( ”%03d”, ’A’);

}}

MЕМОРИЈА

0100 0001

int var=65;

Znakovi:

int var=65;

printf( ”Znakovi:\n”);printf( ”Znakovi:\n”);

printf( ”%2c\n”, ’A’);

.A

printf( ”%2c\n”, ’A’);

printf( ”%4c\n%6c\n”, var, ’B’);

...A

.....B

printf( ”%4c\n%6c\n”, var, ’B’);

printf( ”%8c\n”, var+1);

.......B

printf( ”%8c\n”, var+1);

printf( ”%3d\n”, ’A’);

.65

printf( ”%3d\n”, ’A’);

printf( ”%03d”, ’A’);

065

printf( ”%03d”, ’A’);

Page 70: Увод у програмирање програмски језик  C

70

Променљиве и меморија

Пример:

#include <stdio.h>

main()

{ int i=9,j;

float a,b;

j=i/2;

a=i/2.0;

b=a*2.0/j;

printf( ”i=%d\n”, i );

printf( ”j=%d\n”, j );

printf( ”a=%6.2f\n”, a );

printf( ”b=%6.2f\n”, b );

}

MEMOРИJA

jj

aa

bb

ii

int i=9,j;int i=9,j;int i=9,j;

float a,b;float a,b;float a,b;

j=i/2;

0000 10010000 1001

0000 00000000 00009

0000 01000000 0100

0000 00000000 00004

1001 00001001 0000

0100 00000100 0000

0000 00000000 0000

0000 00000000 00004.5

j=i/2;

a=i/2.0;a=i/2.0;a=i/2.0;

b=a*2.0/j;

0001 00000001 0000

0100 00000100 0000

0000 00000000 0000

0000 00000000 00002.25

Page 71: Увод у програмирање програмски језик  C

71

””%[%[SirinaSirina][][.Prec.Prec]]TipTip__konkon””• .Prec представља прецизност исписа

значај само за реалне бројеве: ( e, f, g)• одређује број цифара које ће бити исписане

након децималне тачке. • Подразумевана вредност је 6. • Уколико је наведена прецизност мања од броја

децимала: исписује се онолико цифара колико прецизност дефинише а последња цифра се заокржује.

• За тип конверзије g: одређује укупан број цифара који ће се исписати (целобројни +децимални део). Нема заокруживања.

Page 72: Увод у програмирање програмски језик  C

72

””%[%[SirinaSirina][][.Prec.Prec]]TipTip__konkon””

• printf("%е", 42.126);резултат је: 4.212600е+001

Подразумевана вредност је 6 децимала• printf("%.4е" 42.126);

резултат је: 4.2126е+001

Исписује онолико децимала колико је наведено• printf("%.3е", 42.126);

резултат је: 4.213е+001 Заокруживање последње децимале

Page 73: Увод у програмирање програмски језик  C

73

””%[%[SirinaSirina][][.Prec.Prec]]TipTip__konkon””

• printf("%f", 42.126);резултат је: 42.126000 Подразумевана вредност је 6 децимала

• printf("%.7f", 42.12345679);резултат је: 42.1234568Заокруживање

• printf("%.2f", 42.126);резултат је: 42.13 Заокруживање

Page 74: Увод у програмирање програмски језик  C

74

””%[%[SirinaSirina][][.Prec.Prec]]TipTip__konkon””

• printf("%g", 42.126);резултат је: 42.126

• printf("%.7g", 42.12345678);резултат је: 42.123467 одсецање

• printf("%.2g", 42.126);резултат је: 42

• printf("%.2g", 142.126);резултат је: 1.4е+002

Page 75: Увод у програмирање програмски језик  C

75

””%[%[SirinaSirina][.Prec]][.Prec]TipTip__konkon””

• Sirina Одређује минимални број карактера који се резервише за испис неког броја. То је позитивна вредност. Уколико је за испис потребно мање карактера од броја који је одређен параметром Sirina, испис се допуњава бленковима (размацима) и поравнава се у десно.

• Уколико се испред параметра Sirina наведе 0 бленкови се, уколико постоје, замењују нулама.

Page 76: Увод у програмирање програмски језик  C

76

””%[%[SirinaSirina][.Prec]][.Prec]TipTip__konkon””

• printf(″%5c%4d″, ’A’, 35);

резултат је: А 35 /* четири бленка испред А и два бленка испред 35

• printf(″%04d″, 35);

• резултат је: 0035 /* нуле замењују празна места

• printf("%07.3f", 42.123); /*042.123*/ укупно 7 цифара од тога три цифре након децим. тачке и једна за децим. тачку */

Page 77: Увод у програмирање програмски језик  C

77

Додатно форматирањеДодатно форматирање

escape sequence

\a – bell \\ -- backslash\b – backspace \? – question mark\f – formfeed \’ – single quote \n – new line \” – quote mark\r – CR \o# – # in octal\t – horiz. tab \x# – # in hex\v – vertical tab

Page 78: Увод у програмирање програмски језик  C

78

printf("%c\n\t%d\n%f\n", 'A',35, 42.126);

резултат је:

А

35 /* \t je znak tab, 35 je pomeren u desno*/

42.126000

Page 79: Увод у програмирање програмски језик  C

79

Променљиве и излаз

Пример:

#include <stdio.h>

main()

{ int i=9,j;

float a,b;

j=i/2;

a=i/2.0;

b=a*2.0/j;

printf( ”i=%d\n”, i );

printf( ”j=%d\n”, j );

printf( ”a=%6.2f\n”, a );

printf( ”b=%6.2f\n”, b );

}

MEMORIJA

j

a

b

i0000 10010000 0000

9

0000 01000000 0000

4

1001 00000100 0000

0000 00000000 0000

4.5

0001 00000100 0000

0000 00000000 0000

2.25

b=a*2.0/j;

printf( ”i=%d\n”, i );

i=9

printf( ”i=%d\n”, i );

printf( ”j=%d\n”, j );

j=4

printf( ”j=%d\n”, j );

printf( ”a=%6.2f\n”, a );

a= 4.50

printf( ”a=%6.2f\n”, a );

printf( ”b=%6.2f\n”, b );

b= 2.25

Page 80: Увод у програмирање програмски језик  C

80

Читање података-стандардни улазЧитање података-стандардни улаз

• Општи облик наредбе је следећи:

scanf(format,&podatak,...,&podatak)

• Oператор & испред имена променљиве означава да се функцији scanf() додељује меморијска адреса променљиве (податка) на коју се уписује резултат конверзије.

• format има исти облик као и код функције printf().

Page 81: Увод у програмирање програмски језик  C

81

Стандардни улаз податакаСтандардни улаз података

Пример:

#include <stdio.h>

main()

{ int broj;

/*printf( ”Unesite ceо broj:\n” );*/

scanf( ”%d”, &broj );

printf( ”Uneli ste %d\n”, broj );

}}

MEMOРИЈA

brojbroj

_

6

00000000 0110 0110

0000 00000 0000000

Uneli ste 6

Page 82: Увод у програмирање програмски језик  C

82

Стандардни улаз податакаСтандардни улаз података

Primjer:

#include <stdio.h>

main()

{ int broj;

printf( ”Unesite cео broj:\n” );

scanf( ”%d”, &broj );

printf( ”Uneli ste %d\n”, broj );

}}

MEMOРИJA

brojbroj

Unesite cео broj:

6

00000000 0110 0110

0000 00000 0000000

Uneli ste 6

Пре сваке наредбе за унос пошаљите поруку на екран!!

Page 83: Увод у програмирање програмски језик  C

83

пример 1пример 1

#include <stdio.h>main(){char cVar; int dVar; float fVar;

scanf("%c %d %f", &cVar,&dVar, &fVar);printf("\n%c \n%d \n%f\n",cVar, dVar, fVar);

}

Page 84: Увод у програмирање програмски језик  C

84

унете вредности

излазне вредности

пример 1пример 1

Page 85: Увод у програмирање програмски језик  C

85

пример 2пример 2#include <stdio.h>main(){int x; char c; float y;

scanf("%d %c %f", &x, &c, &y);printf("\n%d \n%c \n%f\n",x, c, y);scanf("%d", &x);printf("Da li sam cekao za drugi \ unos?\n");printf("\n%d\n",x);

}

Page 86: Увод у програмирање програмски језик  C

86

пример 2пример 2

Page 87: Увод у програмирање програмски језик  C

87

ОператориОператори

• Радње које се извршавају над операндима и које дају одређени резултат.– Аритметички оператори

– Оператор доделе вредности

– Релацијски оператори

– Логички оператори

– Оператори по битовима

– Величина податка

– Условни израз

Page 88: Увод у програмирање програмски језик  C

88

Аритметички операториАритметички оператори

Бинарни оператори

Име Oператор Пример Сабирање + num1 + num2

Одузимање - initial - spent

Множење * kolicna * 6

Дељење / suma /kolicina

Модуо % m % n

Page 89: Увод у програмирање програмски језик  C

89

ДељењеДељење

• Ако су оба операнда при дељењу типа int онда ће и резултат бити типа int.

17 / 5 = 3 4 / 3 = 135 / 9 = 3#include <stdio.h>main(){int x=5, y=2, а; float z;а=x/y; /* a=2 */z=x/y; /* z = 2.5 */

}

Page 90: Увод у програмирање програмски језик  C

90

ДељењеДељење

• Aко је бар један операнд типа float резултат ће бити типа float.

• Примери: 17.0/ 5 = 3.4 4/ 3.2 = 1.25 35.2/9.1 = 3.86813

• Објашњење? Целобројни (int) операнд се привремено конвертује у реалну вредност (float), па се онда обави дељење.

Page 91: Увод у програмирање програмски језик  C

91

Дељење нуломДељење нулом

• Дељење нулом није математички дефинисано.

• Ако у току извршавања програма дође до дељења нулом то ће проузроковати прекид извшења програма fatal error.

Page 92: Увод у програмирање програмски језик  C

92

Модуо - Остатак при дељењуМодуо - Остатак при дељењу

• Израрз m % n даје целобројни остатак дељења m са n.

• Оба операнда МОРАЈУ бити целобројна • Примери : 17 % 5 = 2 6 % 3 = 0 9 % 2 = 1 5 % 8 = 5 a % b = a – (a/b)*b

Page 93: Увод у програмирање програмски језик  C

93

Модуо - Остатак при дељењуМодуо - Остатак при дељењу

Primjer:

#include <stdio.h>

main()

{ int sek;

printf( ”Unesite vreme u sekundama: ” );

scanf( ”%d”, &sek ); /* ovde se ucitava podatak */

printf( ”To je: %02d:%02d:%02d\n”, sek/3600,sek%3600/60,sek%60 ); }}

Unesite vreme u sekundama: 4000

To je: 01:06:40

Пример употребе % оператора

Page 94: Увод у програмирање програмски језик  C

94

Аритметички операториАритметички оператори

• Унарни оператори: +, -

Представљају предзнак операнда

• Унарни оператори: ++, −− Оператор ++ увећава вредност операнда за 1

(increment). Оператор −− умањује вредност операнда за 1

(decrement).

Page 95: Увод у програмирање програмски језик  C

95

Унарни оператори: ++, −−Унарни оператори: ++, −−

а++; /* одговара наредби а = а+1; */

++а; /* одговара наредби а = а+1; */

а--; /* одговара наредби а = а-1; */

--а; /* одговара наредби а = а-1; */

Page 96: Увод у програмирање програмски језик  C

96

Унарни оператори: ++, −−Унарни оператори: ++, −−

int broj_a, broj_b, broj_c, broj_d;

broj_a = 3;

broj_b = 6;

broj_c = broj_b++; /* broj_c je jednak 6 a nakon toga se povećava b na 7*/

broj_c = ++broj_a; /* prvo se broj_a

poveća na 4 a potom je broj_c jednak 4*/

broj_d= broj_b; /* broj_d je jednak 7*/

Page 97: Увод у програмирање програмски језик  C

97

Оператор доделе Оператор доделе вредностивредности

operator

= += - = *= /= %=

Општи обликime_promenljive [operator]= izraz

Page 98: Увод у програмирање програмски језик  C

98

Оператор доделе вредностиОператор доделе вредности

Пример:

#include <stdio.h>

main()

{

int a,b,c;

a=b=c=10;

printf( ”%d %d %d\n”, a,b,c );

a = (b=10) + (c=20);

printf( ”%d %d %d\n”, a,b,c );}

MEMOРИJA

aa0000 10100000 1010

0000 00000000 0000

bb0000 10100000 1010

0000 00000000 0000

cc0000 10100000 1010

0000 00000000 0000

10 10 10

0001 01000001 0100

0000 00000000 0000

0001 11100001 1110

0000 00000000 0000

30 10 20

Page 99: Увод у програмирање програмски језик  C

99

Оператор доделе, примерОператор доделе, пример

broj_a=3;broj_c= broj_b;a=а+1;a += b; /* isto je sto i a=a+b; */a -= b; /* isto je sto i a=a-b; */a *= b; /* isto je sto i a=a*b; */a /= b; /* isto je sto i a=a/b; */a %= b; /* isto je sto i a=a%b; */a=b=c=27;b += c+2; /* isto je sto i b=b+(c+2); */d *= e-5; /* isto je sto i d=d*(e-5); */

Page 100: Увод у програмирање програмски језик  C

100

Релацијски оператори Релацијски оператори

> веће од a > b < мање од a < b>= веће и једнако a >= b<= мање и једнако a <= b== једнако a == b!= није једнако a != b

• Резултати поређења су целобројног типа (int) и могу имати вредност: – 1 ако релација важи или– 0 уколико релација не важи.

Page 101: Увод у програмирање програмски језик  C

101

Релацијски оператори, примерРелацијски оператори, пример

3.1 != -3.1 /* rezultat 1 */

5.2 >= 6 /* rezultat 0 */

7<= 7 /* rezultat 1 */

0.5 == 4.2 /* rezultat 0 */

a != 5 /* rezultat zavisi od vrednosti promenljive a */

Page 102: Увод у програмирање програмски језик  C

102

Логички операториЛогички оператори

! негација

&& логичко И

|| логичко ИЛИ

Page 103: Увод у програмирање програмски језик  C

103

Логички оператори, примерЛогички оператори, пример

• да ли се вредност променљиве налази између 10 и 100

(10<а) && (а<100) /* Ako je a>10 i a<100 vrednost izraza je 1, u suprotnom 0*/

• да ли је апс. вредност променљиве већа од 15• (а <-15) || (а>15) /* ako je a<-15 ili a>15 vrednost izraza je 1, u suprotnom 0 */

Page 104: Увод у програмирање програмски језик  C

104

Оператори по битовимаОператори по битовима

~ комплемент

<< логичко попмерање у лево

>> логичко померање у десно

& логичко И на битском нивоу

| логичко ИЛИ на битском нивоу

^ ексклузивно или (exor)

Page 105: Увод у програмирање програмски језик  C

105

Оператори по битовима, примерОператори по битовима, пример

• 0x1234 & 0x5678 (4660 & 22136)

0001 0010 0011 0100

& 0101 0110 0111 1000 = 0001 0010 0011 0000=0x1230(4656)• 0x1234 | 0x5678

0001 0010 0011 0100

| 0101 0110 0111 1000

= 0101 0110 0111 1100 =0x567c

Page 106: Увод у програмирање програмски језик  C

106

Оператори по битовима, примерОператори по битовима, пример

• 0x1234 ^ 0x5678 0001 0010 0011 0100 ^ 0101 0110 0111 1000 = 0100 0100 0100 1100 =0x444c • ~0x1234 ~0001 0010 0011 0100 = 1110 1101 1100 1011 =0xedcb • 0x0001<<5 0000 0000 0000 0001 <<5 =0000 0000 0010 0000

Page 107: Увод у програмирање програмски језик  C

107

Оператори над битовима, примерОператори над битовима, пример

& - битско AND

Пример:

#include <stdio.h>

main()

{

char c=’9’;

short cifra;

cifra = c & 0x0F;

printf( ”%d\n”, cifra );}

MEMOРИJA

cc00001111 10 100101

cifracifra

cc00001111 10 100101

00000000 1 1001001

0x0F0x0F00000000 1 1111111&&

00000000 1 1001001

9

Page 108: Увод у програмирање програмски језик  C

108

Оператори над битовима, примерОператори над битовима, пример

| - битско OR

Пример:

#include <stdio.h>

main()

{

short cifra=9;

char c;

c = cifra | 0x30;

printf( ”%c\n”, c );}

MEMORIJA

cifracifra00000000 10 100101

cc

cifracifra00000000 10 100101

00001111 1 1001001

0x300x3000001111 00000000||

00001111 1 1001001

9

Page 109: Увод у програмирање програмски језик  C

109

Оператори над битовимаОператори над битовима

~ - битско NOT

Пример:

#include <stdio.h>

main()

{

short x=1,y;

y = ~x;

printf( ”%d\n”, y );}

MEMOРИJA

xx00000000 00000101

yy

xx00000000 00000101

11111111 11101110~~

11111111 11101110

-2

Page 110: Увод у програмирање програмски језик  C

110

Оператори над битовимаОператори над битовима

^ - XOR (EX ILI)

Пример:

#include <stdio.h>

main()

{

short x=0x73,y;

y = x^0x32;

printf( ”%c\n”, y );}

MEMORIJA

xx00111111 00110011

yy

xx00111111 00110011

00100100 00010001

0x320x3200001111 00100010^̂

00100100 00010001

A

Page 111: Увод у програмирање програмски језик  C

111

Оператори померањаОператори померања

<< - померање лево

Пример:

#include <stdio.h>

main()

{

short x=3,y;

y = x<<1;

printf( ”%d\n”, y );}

MEMOРИJA

xx00000000 00001111

yy

xx00000000 00001111

00000 000 00111100

<<<<11

00000000 01100110

6

Page 112: Увод у програмирање програмски језик  C

112

Оператори померањаОператори померања

<< - померање лево

Пример:

#include <stdio.h>

main()

{

short x=3,y;

y = x<<4;

printf( ”%d\n”, y );}

MEMOРИJA

xx00000000 00001111

yy

xx00000000 00001111

00011 011 00000000

<<<<44

0011 00000011 0000

48

Page 113: Увод у програмирање програмски језик  C

113

Оператори померањаОператори померања

>> - померање десно

Пример:

#include <stdio.h>

main()

{

short x=12,y;

y = x>>1;

printf( ”%d\n”, y );}

MEMOРИJA

xx00000000 11001100

yy

xx00000000 11001100

00000 000 00111100

>>>>11

00000000 01100110

6

Page 114: Увод у програмирање програмски језик  C

114

Оператори померањаОператори померања

>> - померање десно

Пример:

#include <stdio.h>

main()

{

short x=-4,y;

y = x>>2;

printf( ”%d\n”, y );}

MEMOРИJA

xx11111111 11110000

yy

xx11111111 11110000

111111 111111 1111

>>>>22

11111111 11111111

-1

Page 115: Увод у програмирање програмски језик  C

115

Величина податкаВеличина податка

• Bеличина меморијске локације коју заузима неки податак се може израчунати употребом оператора sizeof.

• Примери:

sizeof( short int);

sizeof( long int);

sizeof( broj_a);

sizeof( broj_a*broj_b-3);

Page 116: Увод у програмирање програмски језик  C

116

Условни операторУсловни оператор

uslov ? izraz1 : izraz2

c= (a>b) ? a : b;

c=(x<=y && y>=z) ? y : (x+z)/2

Page 117: Увод у програмирање програмски језик  C

117

Условни операторУсловни оператор

Условни операторУсловни оператор (?:) (?:)

Општи обликОпшти облик::

uslov ? izraz1 : izraz2uslov ? izraz1 : izraz2

ISTINA LAŽuslov

izraz1 izraz2

нпр. y = 5; x = (y>0) ? 100 : 200; ---------- x 100

нпр. y = -2; x = (y>0) ? 100 : 200; ---------- x 200

Page 118: Увод у програмирање програмски језик  C

118

Конверзија типаКонверзија типа

• Бинарни оператори захтевају да два оператора имају исти тип.

• Када то није испуњено долази до аутоматске конверије типова.

5+6.0 /* isto sto i 5.0+6.0*/

5/4+3 /* rezultat 4*/

3.0*5/4 /* (3.0*5)/4=(3.0*5.0)/4

15.0/4 =15.0/4.0=3.75

*/

Page 119: Увод у програмирање програмски језик  C

119

Конверзија типаКонверзија типа

• Експлицитном наредба за промену типа применом тзв. cast-оператора.

• Његов општи облик је:(novi_tip) izraz

int a;(char)a; float x;

double y;y=sin((double)x);

Page 120: Увод у програмирање програмски језик  C

120

Редослед извршавања оператораРедослед извршавања оператора

• Редослед извршавања оператора је унапред дефинисан одговарајућим приоритетом .

• Заграде ( ) имају највиши приоритет.

Page 121: Увод у програмирање програмски језик  C

121

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

Приоритет и асоцијативност оператораПриоритет и асоцијативност оператора

Приоритет Приоритет операториоператори Асоцијативност Асоцијативност

највишинајвиши

најнижинајнижи

(( ) ) { } -> .{ } -> .

! ~ ++ -- + - * & (tip)! ~ ++ -- + - * & (tip)

( ) { } -> .

* / %* / %

! ~ ++ -- + - * & (tip)

+ -+ -

* / %

<< >><< >>

+ + -

< <= > >=< <= > >=

<< >>

== != & ^ | && ||== != & ^ | && ||

< <= > >=

?:?:

== != & ^ | && ||

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

?:

,,

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

Page 122: Увод у програмирање програмски језик  C

122

АсАсоцијативност оцијативност оператораоператора

Асоцијативност оператора слева удесно ()тзв. лева асоцијативност оператора

X op Y op Z (X op Y) op Z

Асоцијативност оператора здесна улево ()тзв. десна асоцијативност оператора

X op Y op Z X op (Y op Z)

Page 123: Увод у програмирање програмски језик  C

123

Хвала на пажњи

Питања?