01 Uvod u Programski Jezik C

23
STRUKTURE PODATAKA I ALGORITMI 1 Uvod u programski jezik C

description

01 Uvod u programski jezik C

Transcript of 01 Uvod u Programski Jezik C

  • STRUKTURE PODATAKA I ALGORITMI 1Uvod u programski jezik C

  • TA JE C?Programski jezik opte nameneJezik za sistemsko programiranje, ali i ...BCPL, Martin RichardsB, Ken Thompson, 1970

  • TA SADRI C?Tipovi podatakaZnakoviBrojevi (celi i sa pokretnim zarezom)PokazivaiNizoviStruktureKonstrukcije za kontrolu tokaNaredbe grananjaNaredbe viestrukog grananjaNaredbe ponavljanja

  • TA SADRI C?FunkcijeVraaju vrednosti osnovnih tipovaRekurzijaAutomatske lokalne promenljiveOdvojene izvorne datotekeRazliiti opsezi promenljivihPretprocesiranje

  • JO NETO O C-UJezik niskog nivoaNe sadri operacije za rad sa sloenim objektimaNema poseban mehanizam za rezervisanje memorijeNe obezbeuje ulazno/izlazne mehanizmeSvi mehanizmi vieg nivoa moraju biti obezbeeni pomou funkcija koje se pozivajuNe podrava konkurentno programiranjeANSI standard

  • ZDRAVO, SVETE!Program koji na ekranu ispisuje tekst hello, world

    #include

    main(){printf("hello, world\n");}

    Program u C-u se sastoji od funkcija i promenljivihmain je osnovna funkcija od koje poinje izvravanje programaSvaki program mora imati main funkcijuFunkcija main poziva druge funkcije

  • printf("hello, world\n");Funkcija printf prikazuje izlazne podatke"hello, world\n" je konstantan stringZnak \n obezbeuje prelazak u novi redSledei kod nije ispravan

    printf("hello, world");Isto to samo malo drugaije

    #include main(){printf("hello, ");printf("world");printf("\n");}

  • SPECIJALNE SEKVENCE\nnovi red\ttabulator\bpovratnik (backspace)\"navodnik\\za obrnutu crtu (backslash)

  • PROMENLJIVE I ARITMETIKI IZRAZIProgram koji prikazuje tabelu temperatura u Farenhajtima i Celzijusima po formuli

    #include

    /*printFahrenheit-Celsius tablefor fahr = 0, 20, ..., 300 */main(){int fahr, celsius;int lower, upper, step;

    lower = 0;/* lower limit of temperature scale */upper = 300;/* upper limit */step = 20;/* step size */

    fahr = lower;while (fahr

  • REZULTATprintf("%d\t%d\n", fahr, celsius);1-1720-640460158026100371204814060160711808220093220104240115260126280137300148printf("%3d\t%6d\n", fahr, celsius); 1-17 20 -6 40 4 60 15 80 26100 37120 48140 60160 71180 82200 93220104240115260126280137300148

  • VERZIJA SA REALNIM BROJEVIMA#include

    /*print Fahrenheit-Celsius tablefor fahr = 0, 20, ..., 300; floating-point version */main(){float fahr, celsius;float lower, upper, step;

    lower = 0;/* lower limit of temperatuire scale */upper = 300;/* upper limit */step = 20;/* step size */

    fahr = lower;while (fahr

  • REZULTATprintf("%3.0f %6.1f\n", fahr, celsius); 0-17.8 20 -6.7 40 4.4 ...

  • SPECIFIKACIJE KONVERZIJE%dprikazati kao dekadni ceo broj%6dprikazati kao dekadni ceo broj u polju od bar 6 znakova%fprikazati kao broj sa pokretnim zarezom%6fprikazati kao broj sa pokretnim zarezom u polju od bar 6 znakova%.2fprikazati kao broj sa pokretnim zarezom sa dve decimalne cifre%6.2fprikazati kao broj sa pokretnim zarezom u polju od bar 6 znakova sa dve decimalne cifre

  • NAREDBA FOR

    #include

    /* print Fahrenheit-Celsius table */main(){int fahr;

    for (fahr = 0; fahr

  • SIMBOLIKE KONSTANTE#defineimetekst_zamene

    Primer

    #include

    #define LOWER0/* lower limit of table */#define UPPER300/* upper limit */#define STEP20/* step size */

    /* print Fahrenheit-Celsius table */main(){int fahr;

    for (fahr = LOWER; fahr

  • ULAZ I IZLAZ ZNAKOVATekstualni tok (stream)getcharc=getchar()putcharputchar(c)

    PrimerKopiranje ulaznog toka na izlaz.

    #include

    /* copy input to output; 1st version */main(){int c;

    c = getchar();while (c != EOF) {putchar(c);c = getchar();}}

  • KRAE PISANJE#include

    /* copy input to output; 2nd version */main(){int c;

    while ((c = getchar()) != EOF)putchar(c);}

  • BROJANJE ZNAKOVA#include

    /* count characters in input; 1st version */main(){long nc;

    nc = 0;while (getchar() != EOF)++nc;

    printf("%ld\n", nc);}#include

    /* count characters in input; 2nd version */main(){double nc;

    for (nc = 0; gechar() != EOF; ++nc);

    printf("%.0f\n", nc);}

  • BROJANJE REDOVA#include

    /* count lines in input */main(){int c, nl;

    nl = 0;while ((c = getchar()) != EOF)if (c == '\n')++nl;

    printf("%d\n", nl);}

  • BROJANJE REI#include #defineIN1/* inside a word */#defineOUT0/* outside a word */

    /* count lines, words, and characters in input */main(){int c, nl, nw, nc, state;

    state = OUT;nl = nw = nc = 0;while ((c = getchar()) != EOF){++nc;if (c == '\n')++nl;if (c == ' ' || c == '\n' || c = '\t')state = OUT;else if (state == OUT){state = IN;++nw;}}printf("%d %d %d\n", nl, nw, nc);}

  • NIZOVI#include

    /* count digits, white space, others */main(){int c, i, nwhite, nother;int ndigit[10];

    nwhite = nother = 0;for (i = 0; i < 10; ++i)ndigit[i] = 0;

    while ((c = getchar()) != EOF)if (c >= '0' && c

  • REZULTATdigits = 9 3 0 0 0 0 0 0 0 1, white space = 123, other = 345

  • FUNKCIJEFunkcija za raunanje celobrojnog stepena n celog broja m.

    #include

    int power(int m, int n);

    /* test power function */main(){int i;

    for (i = 0; i < 10; ++i)printf("%d %d %d\n", i, power(2,i), power(-3,i));

    return 0;}

    /* power: raise base to n-th power; n >= 0 */int power(int base, int n){int i, p;p = 1;for (i = 1; i