02 tipovi, operatori i izrazi

19
STRUKTURE PODATAKA I ALGORITMI 1 Tipovi, operatori i izrazi

Upload: jelenagutic

Post on 11-Sep-2015

226 views

Category:

Documents


1 download

DESCRIPTION

02 Tipovi, operatori i izrazi

TRANSCRIPT

  • STRUKTURE PODATAKA I ALGORITMI 1Tipovi, operatori i izrazi

  • NAZIVI PROMENLJIVIHNazivi se sastoje od slova i brojevaZnak _ se smatra slovom i koristi se za poboljanje itljivosti dugakih naziva promenljivihNe poinjite naziv promenljive znakom _ zato to biblioteke esto koriste takve naziveC razlikuje velika i mala slova (x i X su razliite promenljive)Najee se promenljive piu malim slovima, a konstante sa svim velikim slovimaif, else, int, float itd. su rezervisane rei i ne mogu se koristiti kao promenljive. Piu se iskljuivo malim slovima

  • TIPOVI I VELIINA PODATAKAchar-1 bajt, uva jedan karakter (znak)int-ceo broj, veliina zavisi od mainefloat-broj sa pokretnim zarezom jednostruke tanostidouble-broj sa pokretnim zarezom dvostruketanosti

    short int, long int, short, longsigned, unsignedsigned char-od -127 do 128unsigned char-od 0 do 255

  • KONSTANTEint1234long123456789l ili 123456789Lusigned long123456ul ili 123456ULdouble123.4 ili 1e-2float123.4f ili 123.4F

    dekadni31oktalni037heksadekadni0x1f ili 0x1F

  • KONSTANTNI IZRAZIIzrazi u kojima uestvuju samo konstante izraunavaju se prilikom kompajliranja

    #define MAXLINE 1000char line[MAXLINE+1];

    ili

    #define PRESTUPNA 1 /* u prestupnoj godini */int dani[31+28+PRESTUPNA+31+30+31+30+31+31+30+31+30+31];

  • STRING KONSTANTE"Ja sam string""" /* prazan string */"hello, " "world"je isto to i"hello, world"

    Stringovi su nizovi karaktera koji se zavravaju znakom \0/* strlen: return length of s */int strlen(char s[]){int i;

    while (s[i] != '\0')++i;

    return i;}

    Funkcije za rad sa stringovima: 'a' nije isto to i "a"

  • NABROJIVE KONSTANTE

    enum {vrednost1, vrednost2,...};

    Primerenum logicki {NETACNO, TACNO};

    enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC };

  • DEKLARACIJEint lower, upper, step;char c, line[1000];iliint lower;int upper;int step;char c;char line[1000];

    Inicijalizacija prilikom deklarisanjaint i = 0;int limit = MAXLINE+1;float eps = 1.0e-5;char esc = '\\';

    Promenljive ija se vrednost ne moe menjaticonst double e = 2.71828182845905;const char msg[] = "warning: ";

    int strlen(const char[]);

  • ARITMETIKI OPERATORI+, -, *, /-sabiranje, oduzimanje, mnoenje i deljenje%-ostatak pri deljenjuif ((godina % 4 == 0 && godina % 100 != 0) || godina % 400 == 0)printf("%d je prestupna godina\n", godina);elseprintf("%d nije prestupna godina\n", godina);

  • RELACIONI I LOGIKI OPERATORIRelacioni operatori> >= <
  • KONVERZIJA TIPOVAint u floatf+ichar u int

  • 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]

  • EKSPLICITNA KONVERZIJAcast operator(novi tip) izraz

    double sqrt(double x){...}

    ...

    sqrt( (double) n )

    ...

    root = sqrt(2)

  • INKREMENT I DEKREMENT++-uveava 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; s[i] = c;i++; ++i;

  • /* squeeze: delete all c from s */void squeeze(char s[], int c){int i, j;for (i = j = 0; s[i] != '\0'; i++)if (s[i] != c)s[j++] = s[i];s[j] = '\0';}

    /* 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] != '\0') i++;/* find end of s */

    while ((s[i++] = t[j++]) != '\0');/* copy t */}

  • BINARNI OPERATORI&-logiko I nad bitovima|-logiko ILI nad bitovima^-logiko iskljuujue ILI nad bitovima>-pomeranje u desno~-komplement jedinice (unarni operator)

  • OPERATORI I IZRAZI DODELJIVANJAi = i + 2i += 2i = i * 3i *= 3Za bilo koji operator op iz skupa+ - * / % < > & ^ |

    izr1 op= izraz2 izr1 = (izr1) op (izr2)

    x *= y + 1x = x * (y + 1) a ne x = x * y + 1

    Za bilo koji od operatora+ - * / % < > & ^ |

  • USLOVNI IZRAZIOdreivanje maksimuma od a i bif (a > b)z = a;elsez = b;Ternarni operatorizr1 ? izr2 : izr3

    z = (a > b) ? a : b; /* z = max(a, b) */

    (n > 0) ? f : nje izraz tipa float

  • PRIORITET OPERATORA

    OperatoriAsocijativnost() [] -> . 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