STRUKTURE PODATAKA I ALGORITMI 1 Tipovi operatori i

  • Slides: 19
Download presentation
STRUKTURE PODATAKA I ALGORITMI 1 Tipovi, operatori i izrazi

STRUKTURE PODATAKA I ALGORITMI 1 Tipovi, operatori i izrazi

NAZIVI PROMENLJIVIH Nazivi se sastoje od slova i brojeva Znak _ se smatra slovom

NAZIVI PROMENLJIVIH Nazivi se sastoje od slova i brojeva Znak _ se smatra slovom i koristi se za poboljšanje čitljivosti dugačkih naziva promenljivih Ne počinjite naziv promenljive znakom _ zato što biblioteke često koriste takve nazive C razlikuje velika i mala slova (x i X su različite promenljive) Najčešće se promenljive pišu malim slovima, a konstante sa svim velikim slovima if, else, int, float itd. su rezervisane reči i ne mogu se koristiti kao promenljive. Pišu se isključivo malim slovima

TIPOVI I VELIČINA PODATAKA char - 1 bajt, čuva jedan karakter (znak) int -

TIPOVI I VELIČINA PODATAKA char - 1 bajt, čuva jedan karakter (znak) int - ceo broj, veličina zavisi od mašine float - broj sa pokretnim zarezom jednostruke tačnosti double - broj sa pokretnim zarezom dvostruketačnosti short int, long int, short, long signed, unsigned char unsigned char od -127 do 128 od 0 do 255

KONSTANTE int 1234 long 123456789 l usigned long 123456 ul double 123. 4 float

KONSTANTE int 1234 long 123456789 l usigned long 123456 ul double 123. 4 float 123. 4 f dekadni oktalni heksadekadni 31 037 0 x 1 f ili ili ili 123456789 L 123456 UL 1 e-2 123. 4 F 0 x 1 F

KONSTANTNI IZRAZI Izrazi u kojima učestvuju samo konstante izračunavaju se prilikom kompajliranja #define MAXLINE

KONSTANTNI IZRAZI Izrazi u kojima učestvuju samo konstante izračunavaju se prilikom kompajliranja #define MAXLINE 1000 char line[MAXLINE+1]; ili #define PRESTUPNA 1 /* u prestupnoj godini */ int dani[31+28+PRESTUPNA+31+30+31+30+31];

STRING KONSTANTE "Ja sam string" "" /* prazan string */ "hello, " "world" je

STRING KONSTANTE "Ja sam string" "" /* prazan string */ "hello, " "world" je isto što i "hello, world" Stringovi su nizovi karaktera koji se završavaju znakom /* strlen: return length of s */ int strlen(char s[]) { int i; while (s[i] != '') ++i; return i; } Funkcije za rad sa stringovima: <string. h> 'a' nije isto što i "a"

NABROJIVE KONSTANTE enum <naziv_tipa> {vrednost 1, vrednost 2, . . . }; Primer enum

NABROJIVE KONSTANTE enum <naziv_tipa> {vrednost 1, vrednost 2, . . . }; Primer enum logicki {NETACNO, TACNO}; enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC };

DEKLARACIJE int lower, upper, step; char c, line[1000]; ili int lower; int upper; int

DEKLARACIJE int lower, upper, step; char c, line[1000]; ili int lower; int upper; int step; char c; char line[1000]; Inicijalizacija prilikom deklarisanja int i = 0; int limit = MAXLINE+1; float eps = 1. 0 e-5; char esc = '\'; Promenljive čija se vrednost ne može menjati const double e = 2. 7182845905; const char msg[] = "warning: "; int strlen(const char[]);

ARITMETIČKI OPERATORI +, -, *, / - sabiranje, oduzimanje, množenje i deljenje % -

ARITMETIČKI OPERATORI +, -, *, / - sabiranje, oduzimanje, množenje i deljenje % - ostatak pri deljenju if ((godina % 4 == 0 && godina % 100 != 0) || godina % 400 == 0) printf("%d je prestupna godinan", godina); else printf("%d nije prestupna godinan", godina);

RELACIONI I LOGIČKI OPERATORI Relacioni operatori > == >= != < <= Logički operatori

RELACIONI I LOGIČKI OPERATORI Relacioni operatori > == >= != < <= Logički operatori && || if(i<MAX && name[i]=='r') if(!ispravno) umesto if(ispravno==0)

KONVERZIJA TIPOVA int u float f+i char u int

KONVERZIJA TIPOVA int u float f+i char u int

KONVERZIJA CHAR U INT /* atoi: convert s to integer */ int atoi(char s[])

KONVERZIJA CHAR U INT /* atoi: convert s to integer */ int atoi(char s[]) { int i, n; n = 0; for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i) n = 10 * n + (s[i] - '0'); return n; } Funkcije za rad sa karakterima: <ctype. h>

EKSPLICITNA KONVERZIJA cast operator (novi tip) izraz double sqrt(double x) {. . . }.

EKSPLICITNA KONVERZIJA cast operator (novi tip) izraz double sqrt(double x) {. . . }. . . sqrt( (double) n ). . . root = sqrt(2)

INKREMENT I DEKREMENT ++ - uvećava vrednost za jedan -- - umanjuje vrednost za

INKREMENT I DEKREMENT ++ - uvećava vrednost za jedan -- - umanjuje vrednost za jedan n=5; x=++n; /* prvo se n uvecava za 1, pa x dobija vrednost 6 */ x=n++; /* prvo x dobija vrednost 5, pa se n uvecava za 1 */ s[i++] = c; s[i] = c; i++; ++i; s[i] = c;

/* squeeze: delete all c from s */ void squeeze(char s[], int c) {

/* squeeze: delete all c from s */ void squeeze(char s[], int c) { int i, j; for (i = j = 0; s[i] != ''; i++) if (s[i] != c) s[j++] = s[i]; s[j] = ''; } /* strcat: concatenate t to end of s; s must be big enough */ void strcat(char s[], char t[]) { int i, j; i = j = 0; while (s[i] != '') i++; /* find end of s */ while ((s[i++] = t[j++]) != ''); /* copy t */ }

BINARNI OPERATORI & - logičko I nad bitovima | - logičko ILI nad bitovima

BINARNI OPERATORI & - logičko I nad bitovima | - logičko ILI nad bitovima ^ - logičko isključujuće ILI nad bitovima << - pomeranje u levo >> - pomeranje u desno ~ - komplement jedinice (unarni operator)

OPERATORI I IZRAZI DODELJIVANJA i = i + 2 i += 2 i =

OPERATORI I IZRAZI DODELJIVANJA i = i + 2 i += 2 i = i * 3 i *= 3 Za bilo koji operator op iz skupa + - * / % izr 1 op= izraz 2 > & ^ | izr 1 = (izr 1) op (izr 2) x *= y + 1 < x = x * (y + 1) x = x * y + 1 a ne Za bilo koji od operatora + - * / % < > & ^ |

USLOVNI IZRAZI Određivanje maksimuma od a i b if (a > b) z =

USLOVNI IZRAZI Određivanje maksimuma od a i b if (a > b) z = a; else z = b; Ternarni operator izr 1 ? izr 2 : izr 3 z = (a > b) ? a : b; /* z = max(a, b) */ (n > 0) ? f : n je izraz tipa float

PRIORITET OPERATORA Operatori Asocijativnost () [] ->. sa leva na desno ! ~ ++

PRIORITET OPERATORA Operatori Asocijativnost () [] ->. sa leva na desno ! ~ ++ -- + - * (type)sizeof sa desna na levo * / % sa leva na desno + - sa leva na desno << >> sa leva na desno < <= > >= sa leva na desno == != sa leva na desno & sa leva na desno ^ sa leva na desno | sa leva na desno && sa leva na desno || sa leva na desno ? : sa desna na levo = += -= *= /= %= &= ^= |= <<= >>= sa desna na levo , sa leva na desno