P8.1 Generatori skenera i parsera

Величина: px
Почињати приказ од странице:

Download "P8.1 Generatori skenera i parsera"

Транскрипт

1 Генератор лексичких и синтаксних анализатора Пример спецификације језика Flex генератор лексичких анализатора Bison генератор синтаксних анализатора 1

2 Граматика => Језик (Бесконачан) скуп реченица 2

3 Граматика <=> Језик (Бесконачан) скуп реченица 3

4 Различите граматике могу дефинисати исти језик S -> E E -> T T -> iks E -> E plus T S -> E E -> T T -> iks E -> T plus E S -> E E -> T T -> iks E -> E plus E S -> E S -> iks S -> S plus iks E -> iks E -> E plus E Jezik: iks iks plus iks iks plus iks plus iks iks plus iks plus iks plus iks... 4

5 Синтаксни анализатор јесте део језика Низ терминалних симбола A(J) G није део језика 5

6 Синтаксни анализатор јесте део језика Низ терминалних симбола A(G) J није део језика 6

7 Синтаксни анализатор јесте део језика Низ терминалних симбола A(G) Да ли ово имамо на улазу? J није део језика 7

8 Синтаксни анализатор јесте део језика Низ терминалних симбола A(G) Да ли ово имамо на улазу? Не, имамо низ знакова J није део језика 8

9 Синтаксни анализатор Два приступа: Написати граматику језика код које су знакови терминални симболи. Анализу обавити у два корака: Низ знакова L(G) јесте терминални симбол (који?) низ терминалних симбола Лексички анализатор није терминални симбол 9

10 Лексички анализатор Позови лексер Низ знакова L(G) Добави наредни терминални симбол A(G) 10

11 Лексички анализатор Слично као синтаксни анализатор Другачија граматика - једноставнија Терминални симболи су знаци Регуларна граматика (нижег нивоа од контекстно слободних граматика): G (N, T, Σ, P) Где је P скуп смена (продукција) које могу имати један од следећа три облика: B -> α, где B припада N, а αприпада T B -> αc (или B -> Cα), где C припада N B -> ε, где је ε празан знаковни низ 11

12 Лексички анализатор Алгоритам за одређивање да ли је неки улаз део језика дефинисаног регуларном граматиком (лексички исправан) заснива се на детерминистичком аутомату са коначним бројем стања (DFA Deterministic Finite Automata). То је јако повољан и ефикасан алгоритам. 12

13 Лексички анализатор 13

14 Прављење лексичког анализатора Можемо га правити ручно Коришћењем DFA Или неком другом, мање ефикасном техником (али опет довољно ефикасном) Можемо га генерисати помоћу алата Алат који на основу спецификације генерише лексички анализатора Један од таквих алата је Flex Flex генерише анализатор који се заснива на DFA Пример лексичког анализатора за језик Tiger 14

15 Прављење лексичког анализатора Како специфицирамо терминале језика? тј. регуларну граматику којом су дефинисани? Не пишемо продукције Много напорно и нејасно Користимо регуларне изразе Чест механизам за претраживање текста 15

16 Нотација регуларних израза a Обичан знак који стоји сам за себе ε Празан стринг Такође празан стринг M N Избор М или N M N Спајање М и N, иза М иде N MN Други начин да се напише спајање М и N M* Понављање М, нула или више пута M+ Понављање М, један или више пута M? Једно или ни једно појављивање М [a-za-z] Избор знака из скупа знакова. Тачка, означава један знак, било који, осим новог реда abc Низ знакова, било којих знакова 16

17 Коришћење регуларних израза Коришћењем овог језика можемо специфицирати лексичке симболе (токене) програмских језика Кључна реч if Идентификатор (почиње словом, а затим могу и слова и цифре) Цели бројеви Позитивни реални бројеви ( ) 17

18 Коришћење регуларних израза Коришћењем овог језика можемо специфицирати лексичке симболе (токене) програмских језика Кључна реч if if Идентификатор (почиње словом, а затим могу и слова и цифре) [a-z][a-z0-9]* Цели бројеви -?[0-9]+ Позитивни реални бројеви ( ) ([0-9]+. [0-9]*) ([0-9]*. [0-9]+) 18

19 Flex: генератор лексичких анализатора Генерише Це код на основу лексичке спецификације %{ int brojdjura = 0; %} %% djura brojdjura += 1;. ; #include <stdio.h> int main() { yylex(); printf( %d, brojdjura); return 0; } 19

20 Flex: генератор лексичких анализатора Генерише Це код на основу лексичке спецификације %{ %} %% djura return 1; pera return 2; mika return 3; #include <stdio.h> int main() { int toktype = yylex(); while (toktype!= 0) { print( %d, toktype); toktype = yylex(); } return 0; } 20

21 Flex: генератор лексичких анализатора Генерише Це код на основу лексичке спецификације %{ %} %% djura return 1; pera return 2; mika return 3; #include <stdio.h> int main() { int toktype = yylex(); while (toktype!= 0) { print( %s, yytext); toktype = yylex(); } return 0; } 21

22 Flex: генератор лексичких анализатора Генерише Це код на основу лексичке спецификације %{ %} %% djura return 1; pera return 2; mika return 3; #include <stdio.h> int main() { yyin = fopen( datoteka.txt, r ); int toktype = yylex(); while (toktype!= 0) { print( %s, yytext); toktype = yylex(); } return 0; } 22

23 Flex: генератор лексичких анализатора Генерише Це код на основу лексичке спецификације %{ %} %% djura return 1; pera return 2; mika return 3; #include <stdio.h> int main() { yyin = fopen( datoteka.txt, r ); int toktype = yylex(); while (toktype!= 0) { print( %s, %d, yytext, yylen); toktype = yylex(); } return 0; } 23

24 Flex: генератор лексичких анализатора Генерише Це код на основу лексичке спецификације За сваки тип лексичког симбола наводи се Регуларни израз и акција у Це језику, нпр. %{ /* C declarations */ #include tokens.h /* definitions of IF, ID, NUM, */ #include errormsg.h union {int ival; string sval; double fval;} yylval; int charpos = 1; #define ADJ {EM_tokPos = charpos; charpos += yyleng;} %} digits [0-9]+ /* Lex definition of digits */ %% /* Regular expressions and actions */ if {ADJ; return IF;} [a-z][a-z0-9]* {ADJ; yylval.sval = String(yytext); return ID;} digits {ADJ; yylval.ival = atoi(yytext); return NUM;} (digits. [0-9]*) ([0-9]*. digits) {ADJ; yyval.fval = atof(yytext); return FLOAT} ( -- [a-z]* \n ) ( \n \t )+ { ADJ; /* do nothing */ } 24. {ADJ; error();}

25 Детаљи Flex спецификације и излаза Излаз Flex-а је Це програм lex.yy.c Који интерпретира DFA и извршава Це код акција Спецификација I део, између %{ и %}: Це #include и декларације Потребне за Це код до краја датотеке II део: скраћенице рег. израза и декларације стања Нпр. digits је скраћеница за [0-9]+ III део: регуларни изрази и акције Акције враћају целобројну вредност (int), која означава врсту пронађеног симбола Даље читање: Flex упутство на Интернету 25

26 Пример вишег програмског језика Tiger аутор A.W.Apple, Modern Compiler Impl. Tiger је мали језик са Угњежденим функцијама Вредностима слогова са имплицитним показивачима Низовима Целобројним и стринг променљивама Неколико конструкција за структуирану контролу тока Спецификација: Лексика: уобичајени идентификатори и Це коментари Декларације и променљиве и изрази 26

27 Декларације (1/3) decs је низ декларација типова, вредности и функција decs {dec}, где {x} може бити празан скуп ε dec tydec vardec fundec Типови података tydec type type-id = ty ty type-id {tyfields} овде су { и } терминални симболи array of type-id tyfields ε id: type-id{, id : type-id} 27

28 Декларације (2/3) Уграђени типови: int и string Свака декларација низа или слога ствара нов тип Чак иако су сва поља идентична са неким претходним Међусобно рекурзивни типови Сваки циклус рекурзије мора проћи кроз тип слога или низа Нпр. саморекурзија: type intlist = {head:int, tail:intlist} Међурекурзија: type tree = {key:int, children:treelist} type treelist = {head:tree, tail:treelist} Декларације променљивих: vardec var id := exp var id:type-id := exp 28

29 Декларације (3/3) Декларације функција: fundec function id (tyfields) = exp fundec function id (tyfields) : type-id = exp Међусобно рекурзивне процедуре и функције, нпр. function treeleaves(t : tree) : int = if t=nil then 1 else treelistleaves(t.children) function treelistleaves(l : treelist) : int = if L=nil then 0 else treeleaves(l.head) + treelistleaves(l.tail) 29

30 Променљиве и изрази (1/4) Л-вредност је локација која се чита или у коју се пише lvalue id променљиве Изрази lvalue lvalue. id поља слогова (структура) lvalue [ exp ] елементи низова Изрази без вредности Позив процедуре, додела, if-then, while, break, и понекад if-thenelse nil нула, припада сваком типу слога Низ израза (exp; exp;... exp) израчунава изразе с лева у десно коначна вредност је вредност последњег израза у низу Нема вредност: () и let израз без ичега између in и end 30

31 Променљиве и изрази (2/4) Целобројни литерал низ децималних цифара Стринг литерал низ знакова између наводника Специјални знаци се наводе након знака \ (\n, \t, итд.) Негација целобројном изразу може претходити знак - Позив функције: id() или id(exp{,exp}) Аритметички израз: exp op exp, gde op +, -, *, /, захтевају и производе целе бројеве Поређење: exp op exp, gde op =, <>, >, <, >=, <=, пореде операнде и производе 1 (тачно) или 0 (нетачно) Поређење стрингова: два стринга су иста ако им је садржај идентичан 31

32 Променљиве и изрази (3/4) Изрази са Буловим операторима: exp op exp, где је op & или Приоритет оператора: unarni -, *, /, +, -, =, <>, >, <, >=, <=, &, Асоцијативност оператера: *, /, +, -, су асоцијативни у лево; оператори поређења нису асоцијативни. Додела вредности: lvalue := exp If-then-else: if exp1 then exp2 else epx3, где exp2 и exp3 морају бити истог типа, тај тип је и тип резултата If-then: if exp1 then exp2, где exp2 не производи вредност While: while exp1 do exp2, где exp2 не производи вредност For: for id := exp1 to exp2 do exp3, exp3 нема вредност 32

33 Променљиве и изрази (4/4) Break: прекида извршење најближе петље (while или for) Let: израз let decs in expseq end евалуира декларације decs, а затим израчунава низ израза expseq, чији коначни резултат је резултат задњег израза у низу. Заграде: могу се користити за синтаксно груписање израза 33

34 Пример: програм queens (1/2) /* A program to solve the 8-queens problem */ let var N := 8 type intarray = array of int var row := intarray [ N ] of 0 var col := intarray [ N ] of 0 var diag1 := intarray [N+N-1] of 0 var diag2 := intarray [N+N-1] of 0 function printboard() = (for i := 0 to N-1 do (for j := 0 to N-1 do print(if col[i]=j then " O" else "."); print("\n")); print("\n")) 34

35 Пример: програм queens (2/2) function try(c:int) = if c=n then printboard() else for r := 0 to N-1 do if row[r] = 0 & diag1[r+c] = 0 & diag2[r+7-c] = 0 then (row[r] := 1; diag1[r+c] := 1; diag2[r+7-c] := 1; col[c] := r; try(c+1); row[r] := 0; diag1[r+c] := 0; diag2[r+7-c] := 0) in try(0) end 35

36 Лексички анализатор за Tiger (1/4) tokens.h typedef union { int pos; int ival; string sval; } YYSTYPE; extern YYSTYPE yylval; # define ID 257 # define STRING 258 # define INT 259 # define COMMA 260 # define COLON 261 # define SEMICOLON 262 # define LPAREN 263 # define RPAREN 264 # define LBRACK 265 # define RBRACK 266 # define LBRACE 267 # define RBRACE 268 # define DOT 269 # define PLUS 270 # define MINUS 271 # define TIMES # define IF 284 # define THEN 285 # define ELSE 286 # define WHILE 287 # define FOR 288 # define TO 289 # define DO 290 # define LET 291 # define IN 292 # define END 293 # define OF 294 # define BREAK 295 # define NIL 296 # define FUNCTION 297 # define VAR 298 # define TYPE

37 Лексички анализатор за Tiger (2/4) tiger.lex (1/2)... %% " " {adjust(); continue;} \n {adjust(); EM_newline(); continue;} \t {adjust(); EM_newline(); continue;} "," {adjust(); return COMMA;} ":" {adjust(); return COLON;} ";" {adjust(); return SEMICOLON;} "(" {adjust(); return LPAREN;} ")" {adjust(); return RPAREN;} "[" {adjust(); return LBRACK;} "]" {adjust(); return RBRACK;} "{" {adjust(); return LBRACE;} "}" {adjust(); return RBRACE;} "." {adjust(); return DOT;} "+" {adjust(); return PLUS;} "-" {adjust(); return MINUS;} "*" {adjust(); return TIMES;} "/" {adjust(); return DIVIDE;} "=" {adjust(); return EQ;}... 37

38 Лексички анализатор за Tiger (3/4) tiger.lex (2/2)... while {adjust(); return WHILE;} for {adjust(); return FOR;} to {adjust(); return TO;} break {adjust(); return BREAK;} let {adjust(); return LET;} in {adjust(); return IN;} end {adjust(); return END;} function {adjust(); return FUNCTION;} var {adjust(); return VAR;} type {adjust(); return TYPE;} array {adjust(); return ARRAY;} if {adjust(); return IF;} then {adjust(); return THEN;} else {adjust(); return ELSE;} do {adjust(); return DO;} of {adjust(); return OF;} nil {adjust(); return NIL;} [a-za-z][a-za-z0-9"_"]* {adjust(); yylval.sval=string((char*)yytext); return ID;}... 38

39 Лексички анализатор за Tiger (3/4) driver.c int main(int argc, char** argv) { char* fname = argv[1]; EM_reset(fname); yyin = fopen(fname, r ); while (1) { int tok = yylex(); if (tok == 0) break; switch(tok) { case ID: case STRING: printf("%10s %4d %s\n", tokname(tok), EM_tokPos, yylval.sval); break; case INT: printf("%10s %4d %d\n", tokname(tok), EM_tokPos, yylval.ival); break; default: printf("%10s %4d\n", tokname(tok), EM_tokPos); } } fclose(yyin); return 0; 39 }

40 Лексички анализатор за Tiger (4/4) Излаз: прог. queens трансформисан у низ симбола FUNCTION 210 ID 219 printboard LPAREN 229 RPAREN 230 EQ 232 LPAREN 241 FOR 242 ID 246 i ASSIGN 248 INT TO 253 ID 256 N MINUS 257 INT DO 262 LPAREN 265 FOR 266 ID 270 j... function printboard() = (for i := 0 to N-1 do (for j := 0 to N-1 do print(if col[i]=j then " O" else "."); print("\n")); print("\n"))... 40

41 Прављење синтаксног анализатора Можемо га правити ручно Разни могући алгоритми. Разликују се по граматикама са којима могу да се носе и по ефикасности (меморијском и процесорском заузећу) Типична ручна техника: Синтаксни анализатор са рекурзивним спуштањем Можемо га генерисати помоћу алата Алат који на основу граматике генерише синтаксни анализатор Један од таквих алата је Bison (део GNU-а) Bison генерише анализатор који се заснива на LALR алгоритму 41

42 Граматика независна од контекста (контекстно слободна) Спецификација језика у облику низа продукција Пример: језик праволинијских програма Нетерминални симболи: S, E и L; почетни симбол је S Терминални симболи: id print num, + ( ) := ; Пример реченице у овом језику id := num; id := id + (id := num + num, id) Може потицати од следећег улаза (изворног кода): a := 7; b := c + (d := 5 + 6, d) Имена a,b,c и бројеви 5,6,7 су семантичке вредности симбола S S ; S S id := E S print ( L ) E id E num E E + E E (S, E) L E L L, E 42

43 Изводи реченица и стабла анализе Постоји више извода исте реченица: pera := 15; djole := 13 + pera S S ; S S id := E S print ( L ) E id E num E E + E E (S, E) L E L L, E 43

44 Изводи реченица и стабла анализе Постоји више извода исте реченице, нпр. Крајњи леви: увек се смењује крајњи леви нетерминал Крајњи десни: увек се смењује крајњи десни нетерминал Стабло синтаксне анализе Сваки симбол у изводу се спаја са симболом из ког је изведен Два различита извода могу имати исто стабло синтаксне анализе S S ; S id := E ; S id := num ; S id := num ; id := E id := num ; id := E + E 44

45 Нејасне граматике Граматика је НЕЈАСНА ако може да произведе исту реченицу са два различита стабла Нпр. граматика SLP-а је нејасна јер за реченицу id:=id+id+id постоје два стабла синтаксне анализе 45

46 Проблем нејасне граматике: Различита значења! Пример 1: Граматика Калкулатор 1 Два стабла за реченицу Ако се стабло користи за интерпретирање значења Прво значење: (1-2)-3 = -4 Друго значење: 1-(2-3) = 2 E id E num E E * E E E / E E E + E E E E E (E ) 46

47 Други пример различитих значења! Пример 2: Граматика Калкулатор 1 Два стабла за реченицу 1+2*3 Ако се стабло користи за интерпретирање значења Прво значење: (1+2)*3 = 9 Друго значење: 1+(2*3) = 7 E id E num E E * E E E / E E E + E E E E E (E ) 47

48 Решење проблема: Јасна граматика Калкулатор 2 Задатак: Покушајмо да пронађемо јасну граматику Калкулатор 2, која дефинише (прихвата) исти језик Решење: Прво, оператор * треба да има првенство у односу на + Друго, сви оператори треба да буду асоцијативни у лево Ово се постиже увођењем нових нетерминалних симбола T и F Да би * била асоцијативна у десно, уместо ово продукције: T T * F писали би ову продукцију T F * T. E E + T E E T E T T T * F T T / F T F F id F num F ( E ) 48

49 Bison: генератор синт. анализатора Генерише Це код на основу улазне спецификације Bison је наследник алата Yacc Улазна спец. се састоји од три дела, раздвојених са %{, %} и %% (врло слично Flex-у) Програмски код: Це код који ће користи акције из доњих делова Декларације: списак терминала, нетерминала, итд. Граматичка правила (продукције): нетерминал : дефиниција, нпр. exp : exp PLUS exp {семантичка акција} где је exp нетерминал (израз) а PLUS терминал (оператор +) Излаз је Це код: y.tab.h и y.tab.c Приликом генерисања води рачуна о конфликтима 49

50 Пример спецификације (без акција) %{ int yylex(void); void error(char* s) {...} %} %token ID WHILE BEGIN END DO IF THEN ELSE SEMI ASSIGN %start prog %% prog: stmlist stm: ID ASSIGN ID WHILE ID DO stm BEGIN stmlist END IF ID THEN stm IF ID THEN stm ELSE stm stmlist: stm stmlist SEMI stm S id := id S while id do S S begin L end S if id then S S if id then S else S L S L L ; S 50

51 Синтаксни анализатор за Tiger (1/6) tiger.grm (1/3) %union { int pos; int ival; string sval; } %token <sval> ID STRING %token <ival> INT %token COMMA COLON SEMICOLON LPAREN RPAREN LBRACK RBRACK LBRACE RBRACE DOT PLUS MINUS TIMES DIVIDE EQ NEQ LT LE GT GE... %nonassoc EQ NEQ LT LE GT GE %left MINUS PLUS %left TIMES DIVIDE %left DOT %left NEG 51

52 Синтаксни анализатор за Tiger (2/6) tiger.grm (2/3) %start input %% input: stm ; stm: assignment ifthenelse ifthen while for break compoundstm let ; exp: lvalue NIL INT STRING NEG INT functioncall arithmetic comparison booleanexp recordcreation arraycreation ; 52

53 Синтаксни анализатор за Tiger (3/6) tiger.grm (3/3) arithmetic: exp PLUS exp exp MINUS exp exp TIMES exp exp DIVIDE exp MINUS exp %prec NEG ; comparison: exp EQ exp exp NEQ exp exp GT exp exp LT exp exp GE exp exp LE exp ; booleanexp: exp AND exp exp OR exp ; decs: /* empty */ decs dec ; dec: tydec vardec fundec ; tydec: TYPE ID EQ ty ; ty: ID LBRACE tyfields RBRACE ARRAY OF ID ; tyfields: /* empty */ typeidlist ; 53

54 Синтаксни анализатор за Tiger (4/6) Изгенерисани y.tab.h /* Tokens. */ #ifndef YYTOKENTYPE #define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { ID = 258, STRING = 259, INT = 260, COMMA = 261, COLON = 262, SEMICOLON = 263, LPAREN = 264, RPAREN = 265, LBRACK = 266, RBRACK = 267, LBRACE = 268,... 54

55 Синтаксни анализатор за Tiger (5/6) parsetest.c програм за тестирање #include <stdio.h> #include <stdlib.h> #include "util.h" #include "errormsg.h int main(int argc, char** argv) { yyin = stdin; yyout = stdout; parse(argv[1]); return 0; } void parse(char* fname) { EM_reset(fname); if (yyparse() == 0) /* parsing worked */ fprintf(stderr, "Parsing successful!\n"); else fprintf(stderr, "Parsing failed\n"); } 55

56 Синтаксни анализатор за Tiger (6/6) Добро је почети са једноставним тестовима pera pera.mika pera[djoka] pera[mika.djoka] nil () (pera;mika) (pera;mika;djoka) 100 "string" -100 foo() foo(pera) foo(pera, mika) pera + mika pera - mika pera * mika pera / mika -pera + mika pera = mika pera <> mika pera > mika pera < mika pera >= mika pera <= mika "string1" = "string2" pera & mika pera mika pera & mika djoka (pera mika) & djoka pera {} pera {mika=djoka} pera {mika=djoka, laza=nil} type tippera = perintip type tippera = {} type tippera = {id1:id1tip} 56

57 Bison у практичној употреби Предности: Једноставније специфицирати језик помоћу граматике Ако је граматика ваљана, сигурније је да ће и анализатор бити ваљан Алат нам помаже у откривању неких концептуалних проблема у граматици Мане: Резултујући анализатор је (мало) спорији од ручно писаног Теже организовање смисленог пријављивања грешака Лоше ношење са нејасним граматикама Теже дебаговање саме граматике (метајезик за описивање граматике уноси индирекцију) 57

58 Bison у практичној употреби Тренутно се користи за Ruby, PHP, Bash... Користио се за GCC do CLANG (Це предњи део за LLVM) је одмах писан ручно EDG предњи део се користи у већини комерцијалних Це/Це++ компајлера (Intel, пример) Постоје и други алати: ANTLR, JavaCC... 58

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić projektni zadatak projektovanje programa (algoritmi) pisanje programskog koda, izvorni kod,

Више

P2.1 Formalne gramatike

P2.1 Formalne gramatike Превођење Полазни језик? Одредишни језик 1 Превођење Полазни језик? Одредишни језик Како знање неког језика стиче и складишти човек, а како рачунар? 2 Два аспекта језика Синтакса Семантика значење То су

Више

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4 Programiranje 2 0. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/48 Sadržaj predavanja Ponavljanje onog dijela C-a koji

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić funkcije delovi programa koji izvršavaju neki zadatak, celinu; dele na ugrađene, korisničke i main funkciju ugrađene funkcije printf,scanf... da bi se one izvršile potrebno

Више

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode] Programski jezik C organizacija izvornog programa Prevođenje Pisanje programa izvorni program Prevođenje programa izvršni program Izvršavanje programa rezultat Faze prevođenja Pretprocesiranje Kompilacija

Више

P8.2 Pravljenje sintaksnog analizatora

P8.2 Pravljenje sintaksnog analizatora Прављење синтаксног анализатора Синтаксни анализатор Ручно: анализатор са рекурзивним спуштањем Уз помоћ алата: сличност са интерпретером 1 Синтаксни анализатор са рекурзивним спуштањем (енгл. recursive-descent)

Више

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005 Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005 2 Sadržaj 1 5 1.1 Specifikacija sintakse programskih

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Ulaz i izlaz podataka Ulaz i izlaz podataka Nakon odslušanog bit ćete u stanju: navesti sintaksu naredbi za unos/ispis znakova znakovnih nizova cijelih brojeva realnih brojeva jednostruke i dvostruke preciznosti

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra

Више

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Microsoft PowerPoint - Bitovi [Compatibility Mode] Оператори над битовима (Јаничић, Марић: Програмирање 2, тачка 5.6) Оператори за рад са појединачним битовима Само на целобројне аргументе: ~ битовска негација & битовска конјункција (и) битовска (инклузивна)

Више

P11.2 Izbor instrukcija, IBURG

P11.2 Izbor instrukcija, IBURG Избор инструкција (1/2) Машинска инструкција се може приказати као део стабла међукода, који се назива шаблон стабла (енгл. tree pattern). Избор инструкција је проблем поплочавања стабла међукода минималним

Више

070-ALIP2-udzbenik.indb

070-ALIP2-udzbenik.indb 0. U uvodnom ćemo poglavlju ponoviti osnove programskog jezika C s kojima smo se susreli u. razredu. U kratkom pregledu navedeni su operatori (aritmetički, relacijski i logički), neke od funkcija iz biblioteka

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Niz (array) Nizovi Niz je lista elemenata istog tipa sa zajedničkim imenom. Redosled elemenata u nizovnoj strukturi je bitan. Konkretnom elementu niza pristupa se preko zajedničkog imena niza i konkretne

Више

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Microsoft PowerPoint - Datoteke [Compatibility Mode] Датотеке стандардни улаз / излаз Датотека је именовани низ знакова (бајтова) У програмском језику C датотека је везана за улаз и излаз података функције стандардне библиотеке Најједностaвније

Више

Microsoft Word - 11 Pokazivaci

Microsoft Word - 11 Pokazivaci Pokazivači U dosadašnjem radu smo imali prilike da koristimo promenljive koje smo deklarisali na početku nekog bloka. Prilikom deklaracije promenljiva dobija jedinstveni naziv i odgovarajući prostor u

Више

PowerPoint Presentation

PowerPoint Presentation II Karakteristike C jezika Programski jezik C je viši programski jezik opšte namene. Tesno je povezan sa UNIX OS uz koji je razvijan. Razvio ga je Dennis Ritchie 1970 u Bell Telephone Laboratories, Inc.

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Datoteke nastavak Funkcija fgets Funkcija koja učitava podatke iz datoteke, liniju po liniju, je char *fgets(char *str, int n, FILE *fp); gdje su str pokazivač na dio memorije (string) u koji će ulazna

Више

Grananje u programu predavač: Nadežda Jakšić

Grananje u programu predavač: Nadežda Jakšić Grananje u programu predavač: Nadežda Jakšić u okviru linijske strukture izvršavaju se sve naredbe u okviru razgranate strukture uvek se ispituje neki uslov; u zavisnosti od toga da li je uslov ispunjen

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Obeležene petlje Obeležene petlje Obeležavanje petlje nekim identifikatorom omogućava da se programski tok usmeri na mesto u programu specificirano tim identifikatorom. Ako se iza naredbi break ili continue

Више

Microsoft PowerPoint - C-4-1

Microsoft PowerPoint - C-4-1 Pregled iskaza u C-u Izraz; Iskaz dodele, serijski komponovani iskaz; blok Uslovni iskazi i izrazi; složeno grananje Iterativni iskazi Iskaz dodele Promena vrednosti a = Ψ; Izračunava vrednost izraza Ψ,

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić do sada su korišćene "gotove" funkcije iz standardnih biblioteka (cin, cout...) one su pozivane iz main funkcije koja je glavna funkcija u programu jer izvršavanje programa

Више

Programski jezik C

Programski jezik C SPR, 2016 Rad sa datotekama Komunikacija sa OS Rad sa datotekama Vrste datoteka Otvaranje / zatvaranje datoteka Pristup datotekama za upis / čitanje Funkcije za rad sa datotekama Ulazno / izlazni tokovi

Више

Programski jezik C

Programski jezik C Pojam funkcije Deklaracija i definicija funcije Poziv funkcije Memorijske klase promjenljivih Primjeri. Za kompajliranje koda koristen DEV-C++ 4.9.9.2 Compiler!!!! Moze is koristiti I bilo koji drugi standardni

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Pokazivači Pointeri Definicija pokazivača Pokazivač na tip je varijabla koja sadrži adresu varijable tipa tip. Definicija pokazivača: mem_klasa tip * p_var; Primjer: static int * pi; double *px; char*

Више

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007 Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007 2 Sadržaj 1 Programski jezik C 5 1.1 Oblast važenja lokalnih promenljivih..........................

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Programiranje 2 doc.dr.sc. Goranka Nogo PMF Matematički odsjek, Zagreb Kontakt ured: 228, drugi kat e-mail: nogo@math.hr konzultacije: četvrtak, 12:00-14:00 petak, 11:00-12:00 neki drugi termin, uz prethodni

Више

Strukture predavač: Nadežda Jakšić

Strukture predavač: Nadežda Jakšić Strukture predavač: Nadežda Jakšić složeni tip podatka; kolekcija promenljivih različitog tipa koje su sakupljene radi lakše manipulacije sintaksa: struct [oznakastrukture] navede { definicija člana strukture;

Више

PowerPoint Presentation

PowerPoint Presentation Python tutorijal - praktični primeri - Sadržaj: 1. Upoznavanje sa razvojnim okruženjem - Python proširenje (PTVS) za Visual Studio 2015 - Druga razvojna okruženja 2. Osnovi Python jezika - Sintaksa i konvencije

Више

PowerPoint Presentation

PowerPoint Presentation Programski jezici i strukture podataka UVOD Izvođači nastave Srđan Popov (JUG 215) Petar Marić (JUG 105) Milena Počuča (JUG 215) Milica Milutinović (JUG 215) Termini konsultacija naknadno Cilj vežbi Sticanje

Више

P1.2 Projektovanje asemblera

P1.2 Projektovanje asemblera ПРОЈЕКТОВАЊЕ АСЕМБЛЕРА Асемблер Модули асемблера 1 Дефинисање новог лингвистичког нивоа превођењем Потребан преводилац алат који преводи програм написан на једном језику (на једном лингвистичком нивоу)

Више

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar 2016 1 Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova strategija rekurzivno razbija problem na 2 ili više potproblema

Више

07_PJISP_II_Predavanja

07_PJISP_II_Predavanja Rekurzija i rekurzivne funkcije Informacioni inženjering 1 Rekurzija Rekurzija nastaje kada se pojam definiše pomoću sebe samog Javlja se u različitim oblastima, od lingvistike i logike, preko matematike

Више

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, 02.07.2019. Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite Uputstvo pre popunjavanja Obrasca za odgovore. b) Vrednost

Више

P1.1 Analiza efikasnosti algoritama 1

P1.1 Analiza efikasnosti algoritama 1 Analiza efikasnosti algoritama I Asimptotske notacije Master metoda (teorema) 1 Asimptotske notacije (1/2) Služe za opis vremena izvršenja algoritma T(n) gde je n N veličina ulaznih podataka npr. br. elemenata

Више

Microsoft Word - 02 Elementi programskog jezika Pascal

Microsoft Word - 02 Elementi programskog jezika Pascal Elementi programskog jezika Pascal Osnovni elementi jezika Osnovni simboli U programskom jeziku Pascal sve konstrukcije se grade od skupa osnovnih simbola jezika koji čine slova, cifre i specijalni znaci.

Више

3.Kontrlne (upravlja~ke) strukture u Javi

3.Kontrlne (upravlja~ke) strukture u Javi Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Низови у програмском језику Јава Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ

Више

Fortran

Fortran FORTRAN Uvod Računala su samo strojevi: neznaju ništa, ne razmišljaju ni o čemu, ali mogu izuzetnom brzinom i vrlo točno, slijediti precizno napisane upute. Takve upute moraju se napisati u posebnom jeziku

Више

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj Programiranje 1 5. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanje dodatak p. 1/60 Sadržaj predavanja dodatka Primjeri

Више

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode] Osnove programiranja Nizovi Sadržaj Definicija niza Vrste i elementi nizova Deklarisanje nizova Dodele (početne) vrednosti nizovima Jednodimenzionalni nizovi Primeri dodele vrednosti Petlja foreach Nizovi

Више

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Sadržaj 1 Pokazivači - ponavljanje 3 2 Pokazivači - veza sa nizovima 5 2 1 Pokazivači - ponavljanje 1.

Више

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije korake. Uz dobro razrađen algoritam neku radnju ćemo

Више

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, 5.06.019. godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekstenzija se najčešće koristi za tekstualne datoteke? a)

Више

Uvod u PHP

Uvod u PHP Uvod u PHP Marijan Šuflaj FER, 2018 Sadržaj PHP Općenito Sintaksa Osnove Kontrola toka Zadatci Resursi Općenito Naziv od PHP Hypertext Preprocessor Obično koristi ekstenziju.php Tipovi su dinamički Trenutno

Више

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode] Osnove programiranja Funkcije - Metode Prenos parametara Po vrednosti Po referenci Po izlazu Sadržaj Opseg važenja promenljive u drugim strukturama Rekurzije Prenos parametara Metoda može vratiti isključivo

Више

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Računarski praktikum I - Vježbe 03 - Implementacija strukture string Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 03 - Implementacija strukture string v2018/2019. Sastavio: Zvonimir Bujanović Stringovi u C-u String

Више

Datoteke predavač: Nadežda Jakšić

Datoteke predavač: Nadežda Jakšić Datoteke predavač: Nadežda Jakšić svi podaci sa kojima smo do sada radili u programima su smeštani u operativnu memoriju računara i trajali su najduže koliko i sam program; kada program završi sa radom,

Више

PowerPoint Presentation

PowerPoint Presentation NAREDBE U PHP-U Naredbe if else elseif/else if while do-while for foreach break continue switch return require include require_once include_once goto If-else if (izraz) uradi 1 else uradi 2 ili if (izraz)

Више

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1 Programiranje 1 10. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1/95 Sadržaj predavanja Funkcije: Definicija funkcije.

Више

KDP

KDP Региони Региони Програмска парадигма за приступ критичној секцији Увођење посебне синтаксе за експлицитно означавање критичних секција Обезбеђивање међусобног искључивања процеса Условни критични регион

Више

Uvod u takmičarsko programiranje

Uvod u takmičarsko programiranje 8. čas Uvod u programiranje - naredbe ciklusa Uvežbavamo naredbe ciklusa, naredbe ponavljanja (loop) https://studio.code.org/s/course2/stage/6/puzzle/3 "Talk is cheap. Show me the code." - Linus Torvalds

Више

Програмирај!

Програмирај! Листе Поред појединачних вредности исказаних бројем или ниском карактера, често је потребно забележити већи скуп вредности које су на неки начин повезане, као, на пример, имена у списку путника у неком

Више

P11.3 Analiza zivotnog veka, Graf smetnji

P11.3 Analiza zivotnog veka, Graf smetnji Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 1 Поједностављени поглед на задњи

Више

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijski program: Informacioni inženjering Informacioni inženjering 1 Rekurzivne funkcije Binarna stabla Informacioni

Више

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1. I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz 3 2 1 4 5 14 Analiza: 1. Odredimo zbir svih 5 unesenih brojeva (i sačuvamo u

Више

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni šalabahter. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić 1. temperatura u stepenima Celzijusa i stepene Farenhajta tf=1.8*tc+32 2. pretvoriti inče u centimetre 1 inč=2.54cm 3. vreme učitano

Више

Računarski praktikum I - Vježbe 01 - Uvod

Računarski praktikum I - Vježbe 01 - Uvod Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 01 - Uvod v2018/2019. Sastavio: Zvonimir Bujanović Gradivo i način polaganja Gradivo: osnove jezika

Више

Microsoft Word - CAD sistemi

Microsoft Word - CAD sistemi U opštem slučaju, se mogu podeliti na 2D i 3D. 2D Prvo pojavljivanje 2D CAD sistema se dogodilo pre više od 30 godina. Do tada su inženjeri koristili table za crtanje (kulman), a zajednički jezik komuniciranja

Више

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar. 1.. Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred. 1.7. Bodovna vrijednost (ECTS) 7 1.3. Suradnici 1.8. Način izvođenja nastave

Више

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode] OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 5 OBJEKTI U INTERAKCIJI Miloš Kovačević Đorđe Nedeljković 1 /25 OSNOVNI KONCEPTI - Abstrakcija - Modularizacija - Objektne reference - Klasni dijagram - Objektni

Више

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode] Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба

Више

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature opti

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature opti The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Uvod u programiranje dr Ninoslava Savić Predavanja (3) sreda: 11:15 13:50 Učionica 16 Konsultacije sreda: 15 17 h Kabinet 43 Uvod u programiranje Fond časova: 3+3 Broj ESPB: 7 Ocena znanja (max. broj poena

Више

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan realan broj od 0 i 1. Na standardni izlaz ispisati

Више

PROMENLJIVE, TIPOVI PROMENLJIVIH

PROMENLJIVE, TIPOVI PROMENLJIVIH PROMENLJIVE, TIPOVI PROMENLJIVIH Šta je promenljiva? To je objekat jezika koji ima ime i kome se mogu dodeljivati vrednosti. Svakoj promenljivoj se dodeljuje registar (memorijska lokacija) operativne memorije

Више

P9.2 Optimizujuci kompajler, prednji deo

P9.2 Optimizujuci kompajler, prednji deo ОПТИМИЗУЈУЋИ КОМПАЈЛЕР Структура компајлера Предњи део, до међукода 1 Важна својства одредишне архитектуре Подржане операције Регистри и меморија (Ресурси - операнди) Проточна структура Организација меморије

Више

P1.3 Projektovanje makroasemblera

P1.3 Projektovanje makroasemblera ПРОЈЕКТОВАЊЕ МАКРОАСЕМБЛЕРА Макроасемблер Потребна проширења асемблера 1 МАКРОАСЕМБЛЕР Макроасемблер преводи полазни програм написан на макроасемблерском језику у извршиви машински програм. Приликом израде

Више

PHP kod

PHP kod PHP kod Fajl test.txt kreiran u Notepad-u Ugrađene funkcije u php-u fopen() otvara datoteku fclose() zatvara datoteku Primjer pokazuje kako se može najprije otvariti datoteka "test.txt" za čitanje, zatim

Више

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode]

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode] Programski jezik C - ulaz i izlaz programa Ulaz i izlaz programa Argumenti komandne linije Standardni tokovi Preusmerenje Funkcije za rad sa ulazom i izlazom Formatiran ulaz/izlaz Datoteke 2 Aргументи

Више

P3.2 Paralelno programiranje 2

P3.2 Paralelno programiranje 2 Paralelno programiranje II Analiza zavisnosti Struktura algoritma Pomoćne strukture Komunikacioni šabloni 1 4 Koraka paralelizacije programa 2 Evo algoritma. Gde je paralelizam? Dekompozicija zadataka

Више

Algoritmi i arhitekture DSP I

Algoritmi i arhitekture DSP I Univerzitet u Novom Sadu Fakultet Tehničkih Nauka Katedra za računarsku tehniku i međuračunarske komunikacije Algoritmi i arhitekture DSP I INTERNA ORGANIACIJA DIGITALNOG PROCESORA A OBRADU SIGNALA INTERNA

Више

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7 Programiranje 2 7. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/75 Sadržaj predavanja Tipovi i složene deklaracije:

Више

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni podsjetnik. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode] Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 03 Zvonimir Bujanović Slaven Kožić Vinko Petričević Mrežno programiranje: SocketAPI Programiramo u aplikacijskom sloju, za ostale se brinu

Више

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode] Osnove programiranja Funkcije - Metode http://www.introprogramming.info/english-intro-csharp-book/read-online/ Sadržaj Funkcije Metode Definisanje Pozivanje Povratne vrednosti Parametri Metode (1) Metoda

Више

Teorija skupova - blog.sake.ba

Teorija skupova - blog.sake.ba Uvod Matematika je jedan od najomraženijih predmeta kod većine učenika S pravom, dakako! Zapitajmo se šta je uzrok tome? Da li je matematika zaista toliko teška, komplikovana? Odgovor je jednostavan, naravno

Више

KATUŠIĆ ANTONIO.pdf

KATUŠIĆ ANTONIO.pdf SVEUILIŠTE JOSIP JURAJ STROSSMAYER ELEKTROTEHNIKI FAKULTET OSIJEK Preddiplomski studij raunarstva PROGRAMSKI JEZIK RUBY ZAVRŠNI RAD Antonio Katuši OSIJEK, svibanj 2015. SVEUILIŠTE JOSIP JURAJ STROSSMAYER

Више

Inženjering informacionih sistema

Inženjering informacionih sistema Fakultet tehničkih nauka, Novi Sad Inženjering informacionih sistema Dr Ivan Luković Dr Slavica Kordić Nikola Obrenović Milanka Bjelica Dr Jelena Borocki Dr Milan Delić UML UML (Unified Modeling Language)

Више

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe 6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe, očekuje se da su koordinate celobrojne. U slučaju

Више

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Microsoft PowerPoint - 07-DinamickeStrukturePodataka Динамичке структуре података листа, стек, ред Програмирање 2: глава 6 Динамичке структуре података Динамичка алокација и динамичке структуре података Најзначајније динамичке структуре података листе и

Више

Algoritmi

Algoritmi Projektovanje algoritama L09.1. Topološko sortiranje Današnje teme Topološko sortiranje Povezanost grafa jako povezane komponente Minimum Spanning Trees (razapinjuće stablo) Lektira: 22. Elementary Graph

Више

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU http://www.mi.sanu.ac.rs/ tanjad (tanjad@mi.sanu.ac.rs) 21. januar 2013. Tatjana

Више

PowerPoint Presentation

PowerPoint Presentation Java konkurentno programiranje Životni ciklus niti i problemi sinhronizacije resursa Multitasking Multithreading Životni ciklus niti http://www.roseindia.net/java/thread/lifecycle-of-threads.shtml Životni

Више

Programski jezici i strukture podataka

Programski jezici i strukture podataka Programski jezici i strukture podataka 7 ULAZ, IZLAZ I DATOTEKE Ulazno izlazne operacije Programi moraju imati mogućnost da upisuju podatke u datoteke ili da ih ispisuju na izlazni uređaj poput ekrana

Више

Programiranje 1

Programiranje 1 Sveučilište u Rijeci ODJEL ZA INFORMATIKU Ulica Radmile Matejčić 2, Rijeka Akademska 2018./2019. godina PROGRAMIRANJE 1 Studij: Preddiplomski studij informatike (jednopredmetni) Godina i semestar: 1. godina,

Више

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun Konstrukcija i analiza algoritama Nina Radojičić februar 2018. 1 Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne funkcije od argumenta n iz skupa N prirodnih brojeva.

Више

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr Oblikovanje i analiza algoritama 5. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. predavanje p. 1/68 Sadržaj predavanja Nehomogene rekurzije

Више

Slide 1

Slide 1 OSNOVNI POJMOVI Naredba je uputa računalu za obavljanje određene radnje. Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Pisanje programa zovemo programiranje. Programski jezik

Више

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc Zadaci za samostalno vježbanje 4. Svi zadaci dati ovdje su takvi da se mogu uraditi korištenjem isključivo gradiva prva četiri predavanja i ranije stečenog predznanja na predmetu Osnove računarstva. Zvjezdicom

Више

Рачунарска интелигенција

Рачунарска интелигенција Рачунарска интелигенција Генетско програмирање Александар Картељ kartelj@matf.bg.ac.rs Ови слајдови представљају прилагођење слајдова: A.E. Eiben, J.E. Smith, Introduction to Evolutionary computing: Genetic

Више

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6 Programiranje 1 9. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/60 Sadržaj predavanja Osnovni algoritmi na cijelim brojevima:

Више

LAB PRAKTIKUM OR1 _ETR_

LAB PRAKTIKUM OR1 _ETR_ UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET STUDIJSKI PROGRAM: ELEKTRONIKA, TELEKOMUNIKACIJE I RAČUNARI PREDMET: OSNOVE RAČUNARSTVA 1 FOND ČASOVA: 2+1+1 LABORATORIJSKA VJEŽBA BROJ 1 NAZIV: REALIZACIJA

Више

Државно такмичење године 5. и 6. разред 1. [pločice] Правоугаону терасу димензија d s центиметара квадратних треба поплочати коришћењем плочица

Државно такмичење године 5. и 6. разред 1. [pločice] Правоугаону терасу димензија d s центиметара квадратних треба поплочати коришћењем плочица Државно такмичење 2018. године 5. и 6. разред 1. [pločice] Правоугаону терасу димензија d s центиметара квадратних треба поплочати коришћењем плочица квадратног облика странице p центиметара, које се постављају

Више

PASCAL UVOD 2 II razred gimnazije

PASCAL UVOD 2 II razred gimnazije PASCAL UVOD 2 II razred gimnazije Upis-ispis 1. Upis Read(a,b); --u jednom redu Readln(a,b); -- nakon upisa prelazi se u novi red 2. Ispis Write(a,b); -- u jednom redu Writeln(a,b); --nakon ispisa prelazi

Више

NIZOVI

NIZOVI NIZOVI II gimnazije NIZOVI su složeni tip podatka u koji se može smjestiti više varijabli(podataka) JEDNODIMENZIONALNI DVODIMENZIONALNI VIŠEDIMENZIONALNI Milenko Soldat 2 JEDNODIMENZIONALNI NIZOVI Sintaksa:

Више

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме 1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме Програмирање добијања награда омогућује ученицима да

Више

Sveucilište u Zagrebu

Sveucilište u Zagrebu Proširivanje Pythona programskim jezicima C/C++ Ivo Majić Mentor: Doc. dr. sc. Domagoj Jakobović Sveučilište u Zagrebu Fakultet elektrotehnike i računarstva Ak. god. 2011/12 Ivo Majić (FER) Sveučilište

Више

Kombinatorno testiranje

Kombinatorno testiranje Kombinatorno testiranje Uvod Na ponašanje aplikacije utiče puno faktora, npr. ulazne vrednosti, konfiguracije okruženja. Tehnike kao što je podela na klase ekvivalencije ili analiza graničnih vrednosti

Више

Slide 1

Slide 1 Симулација ПМ Верификација и валидација модела Два корака у процени модела у односу на моделирани систем: 1. Верификација модела да ли модел исправно извршава постављене претпоставке. 2. Валидација модела

Више

Microsoft Word - 1.Operacije i zakoni operacija

Microsoft Word - 1.Operacije i zakoni operacija 1. Operacije i zakoni operacija Neka je S neprazan skup. Operacija dužine n skupa S jeste svako preslikavanje : n n f S S ( S = S S S... S) Ako je n = 1, onda operaciju nazivamo unarna. ( f : S S ) Ako

Више