US-Uvod u Programski Jezik C

Embed Size (px)

DESCRIPTION

Uvod u programski jezik C Univerzitet Singidunum

Citation preview

  • 1

    C (C programming Language)

    C ........................................................................................................................2 ........................................................................................................................2 (debuging) .................................................................................................4 C .....................................................................................................................5 C.......................................................................................................................6 ......................................................................................................................6 ........................................................................................................................8

    , .................................................................................8 ......................................................................................................................9

  • 2

    C C 1970- (Bell Labs), UNIX. UNIX . (assembly language).

    (COBOL, FORTRAN, PL/I, ALGOLl...) , . C , , : ALGOL BCPL.

    ao , (text editor). ext editor o . ext editor (notepad, wordpad ) (urbo C, Borland C, Microsoft Visual Studio ...).

    (instructions, statements) (Code Source code). Source file.

    C (function). (. , , ...). . . , ...

    ? ! , , . imeprog.c (main.c, povrsina.c, tx_modem.c, ...). , , .

    (project file). , , ( ) .

    , ( .exe), . (Compiler).

    :

    1. : (Preprocessing) preprocessor. ( RAM-) a (preprocessor directives)

    . . . , .

    (comments) (white space) .

  • 3

    , , ! 2. : (Compilation)

    (compiler) , ,

    (object code). (machine code). (errors)

    (warnings), . ,

    ( .obj). , . (warnings).

    . : (Syntax error): ,

    / .

    (Logic error): , . . . !

    3. : (Linking)

    . ( ), (executable file, .xe).

    . (Libraries, Run-Time Library) .

    . MS-DOS Windows EXE.

    !

  • 4

    filename1.c

    filename2.c

    ...

    filenameN.c

    filename1.obj

    ...

    filenameN.obj

    filename2.obj

    , RAM-

    filename1.objfilename1.obj ... filenameN.obj

    project_filename.prj

    .exe

    1.

    ! .

    (debuging) deBUGing je (bug). , , . , Grace Hopper . . , ( ). Grace Hopper COBOL, ( ) (computer bugs). (debug), (bug) .

  • 5

    C C (free-form language) (. FORTRAN COBOL). (white space). . :

    )

    #include /* Moj prvi C program koji ispisuje: "Zdravo!" */ int main(int argc, char *argv[]){ printf("Zdravo!\n"); return 0; } )

    #include /* Moj prvi C program koji ispisuje: "Zdravo!" */ int main (int argc, char *argv[]){printf("Zdravo!\n");return 0;} ) #include /* Moj prvi C koji ispisuje: "Zdravo!" */ int main (int argc , char *argv[] ){ printf( "Zdravo!\n" ) ; return 0 ; } , ) . C . , , , ).

    , ? ( ) . ,

  • 6

    . . , .

    ) . () .

    M C ( ) ( . , : ; ). () , , .

    #include ( ) < stdio.h, stdio.h >. , \ (backslash). : printf("Ovo je veoma, veoma, \ veoma, veoma,duga linija.");

    . , C (case sensitive). C , .

    C , . () . C

    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 : : _ ! ? . , : ; = + - / * # % & \ | ( ) [ ] { } < >

    , . . C :

    () (, , , ...).

  • 7

    :

    1. : ( ) ( _ )

    2. () . ! ( ).

    3. ( , , _ ) ! , 31 , . .

    : JednaPromenljivaKojaImaKarakteraJakoPuno = 1 JednaPromenljivaKojaImaKarakteraSamoJedanVise = 3 JednaPromenljivaKojaImaKarakte. .

    4. C (Rezultat rezultat ) 5. .

    31 31 ( ). : a)

    suma NovoIme c5_4 novo_ime JEDAN_BROJ Broj_studenata dugoimesamnogokaraktera Broj_Studenata TRUE TX_protocol _split_name UporediRezultat_sabiranja )

    70fd x-name - ime sa razmakom int axx& & Povrina*kruga * jedan,dva ,

  • 8

    , . ( 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

    : (6) if, else, return, switch, case, default (5) for, do, while, break, continue (5 + 7) int, float, double, char, void extern, signed, unsigned, long, short, static, const (3) struct, typedef, union (2) enum, sizeof ( !) (1) goto (3) auto, register, volatile

    , . , . : .

    : .

    () . , , , . (variable). . . () . :

    #define PI=3.14; #define MIN_RASTOJANJE=2; #define Broj_Semestara=8; /*ne preporuuje se upotreba malih slova za simbolicke konstante*/

  • 9

    :

    1. #define 2. ,

    () . , ( ).

    ?

    . (), () (. x=a+b). , C- , .

    , . : racun bill xyz, r .

    , . , PocetnaCena pocetna_cena, (Pocetna_Cena) , PocetnaCena pocetna_cena.

    , . broj_kola broj_koka. .

    . () . , . , ( ) . . ( ) . ( ) , .

    () .

    C , .

    : int int , (signed), . signed signed int int. int + () () . (: 2, -30211, 0, +28). + .

    int . int (word size)

  • 10

    16- (2 ), 32 (4 ). 16 int -32 767 32 768 ( ) 65 536 . 16 (2 ) int 2 .

    int 32 (4 ): 2 147 483 648 2 147 483 647. int (. 6 632 343 000) : (overflow error).

    signed, unsigned, short long. : (signed) short int, unsigned short int, (signed) long int, unsigned long int, short int ( ) int. long int ( ) int. : short int, int long int . (short long), int .

    ( ) unsigned . unsigned short int unsigned int unsigned long int. char char ( character, ) 8 (1 ). , 128 128. unsigned unsigned char 0 255. (: ASCII 256 ).

    , char, , , A? 65 ( 1000 0001) ASCII .

    C : float, double long double T float , double , long double . int, double float long double double.

  • 11

    .

    C , ( 16) ( 8) .

    :

    0123 83 0x 0X

    0x123 291 , , int . long int. l L long int. :

    974 int 0x2fc int 974l long int 01234L long int + (). ( ). .

    u U unsigned int. 0xffff 0xffffu 0723 0723u

    . mEe m e

    :

    2.54-34 2.54 10-34

    double, float f F.

  • 12

    1.23 125. , .456 , 35 2.1-45 22.3F

  • 1

    C (C programming Language)

    2

    .................................................................................................................................. 2 ................................................................................................. 3

    .......................................................................................................................... 3 printf().............................................................................................................................. 4 scanf() ................................................................................................................................. 6

    ..................................................................................................................................................... 8 .......................................................................................................................... 8 .................................................................................................................... 9 ( ) ..................................................................................... 10 ................................................................................................................................ 10 ......................................................................................................................... 11 ................................................................................................................................... 11 ......................................................................................................................................... 12

    .......................................................................................................................................... 12 .......................................................................................................... 13

  • 2

    () !

    :

    tip_podatka ime_podatka;

    tip_podatka ime_podatka = poetna_vrednost; :

    tip_podatka: (int, long int, float, char,...). - .

    ime_podatka: . ( 1: )

    poetna_vrednost . . , .

    : , . :

    tip_podatka ime_podatka [ = poetna_vrednost] ; :

    short int broj1; short int broj2=34; char slovo; float a=5.43, float b=12.65; int visina=34/2; float povrsina=a*b;

    int visina=34/2; ( ). povrsina ( ), (a b), . , :

    tip_podatka ime_podatka[=poetna_vrednost],...,ime_podatka [= poetna_vrednost]; :

    int broj=2, prisutni=0, godiste=2004, br_casova; .

  • 3

    .

    :

    const

    const tip_podatka ime_podatka = poetna_vrednost; :

    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;

    . , , . . a () a () a. ( ) .

    , , (character). , .

    C () scanf() , . . printf().

    C ( ) scanf() printf() stdio.h. stdio standard input output a .h header (), . scanf() / printf() stdio.h . #include . : stdio.h < >

    . , #include c:\nekoime.h. < > , .

  • 4

    printf() printf() :

    printf("Ovo je jednostavna poruka")

    Ovo je jednostavna poruka ! ( f formated).

    :

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

    %[Sirina][.Prec]Tip_kon Tip_kon : Tip_kon ----------------------------------------------------------------------------------------------------- i int o d int o u int o int x int abcdef X int , ABCDEF c int (ASCII) e float , f float g float f e

    Tip_kon. :

    printf(%c, A); : printf(%c %d, A, 35); : 35 c %d. printf(%c%d A, 35); : 35 ov . printf(%c %d %f, A, 35, 4.5); : 35 4.50000 printf(%c %d %, A, 35, 42.123); : 35 4.212300+001

  • 5

    .Prec ( : e, f g) f .

    6.

    .

    g . .

    : printf(% 42.126); : 4.212600+001 6 printf(4 42.126); : 4.2126+001 printf(3 42.126); : 4.213+001 printf(%f, 42.126); : 42.126000 6 printf(7f 42.12345678); : 42.1234568 printf(%.2f, 42.126); : 42.13 printf(%g, 42.126); : 42.126 printf(%.7g, 42.12345678); : 42.12345 . printf(%.2g, 42.126); : 42 printf(%.2g, 142.126); : 1.4+002

    Sirina . . Sirina () .

    Sirina 0 , , .

  • 6

    :

    ("%2c %3d %10f\n", 'A', 35, 42.126); printf("%02c %03d %010.3f\n", 'A', 35, 42.126); printf("%c %d %2f\n", 'A', 35, 242.127456789); :

    35 42.126000 35 42.1260000 , 35,

    10 : , ,

    0 035 00042.126 35 242.127456

    , , escape :

    \a \\ - \ \? ? \ \ \b (backspace) \f (formfeed) \n \r (carriage return) \t (tab) \v (tab)

    : printf("%c\n\t%d\n%f\n", 'A', 35, 42.126); : /* \n je znak za novi red*/ 35 /* \t je znak tab, 35 je pomeren u desno*/ 42.126000

    scanf() :

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

    O & scanf() () .

    format printf().

  • 7

    : #include 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); } : (. F) , (. 32) (. -67.5092).

    ENTER !

    A .

    . .

    .

    . . #include 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); }

  • 8

    . :

    + - * / %

    ! :

    #include main() { int x=5; int y=2; float z; z=x/y; } z 2. : 10%2 0 10/2=5 0 15%7 1 15/7=2 1

    : +, - ( , ...) . + .

  • 9

    : ++, ++ 1 (increment). 1 (decrement). =+1; =-1; : ++; /* odgovara naredbi =+1; */ ++; /* odgovara naredbi =+1; */ --; /* odgovara naredbi =-1; */ --; /* odgovara naredbi =-1; */ e

    . . , (++ ) ( ) . , .

    : 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 poveava b na 7*/ broj_c= ++broj_a; /* prvo se broj_a povea na 4 a potom je broj_c jednak 4*/ broj_d= broj_b; /* broj_d je jednak 7*/

    C- .

    = , : +=, - =, *=, /= %=

    :

    ime_promenljive [op]= izraz; /* gde je op jedan od +, - , *, / ili % */ ( ) .

    broj_a=3; broj_b=6; broj_c= broj_b + broj_b a=+1; a+=b; /* isto je sto i a=a+b */ a-=b; /* isto je sto i a=a-b */

  • 10

    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; 27. c 27, b c a b.

    ( ) . : / (True/False) .

    : > a > b < a < b >= a >= b

  • 11

    izraz1 izraz2 izraz2 && izraz2 0 0 0 0 razliit od 0 1

    razliit od 0 0 1 razliit od 0 razliit od 0 1

    :

    10 100 (10

  • 12

    uslov ? izraz1 : izraz2 uslov. uslov izraz1 ( izraz2 ) .

    uslov 0 izraz2 .

    :

    c a b, c b c= (a>b) ? a : b; c y x z, c (x+z)/2 c=(x=z) ? y : (x+z)/2

    C . , .

    .

    5+6.0 /* isto sto i 5.0+6.0*/ 5/4+3 /* 5/4 zbog celobrojnog deljenja je 1 pa je rezultat 4*/ 3.0*5/4 /* (3.0*5)/4, zbog automatske konverzije (3.0*5) postaje (3.0*5.0) pa sledi 15.0/4 sto zbog automatske konverzije postaje 15.0/4.0. Rezultat je 3.75 */ , . cast-. :

    (novi_tip) izraz novi_tip C izraz .

    : int a; ... (char)a; /* pretvara int promenljivu a u tip char*/ float x; double y; y=sin((double)x); /* parametar funkcije sinus mora biti tipa double */

  • 13

    .

    .

  • 1

    C (C programming Language)

    3

    ........................................................................................................................................................................2

    O .................................................................................................................................2 ...................................................................................................................................3 (scope).............................................................................................3 ().................................................................................................................................7 if else ...............................................................................................................................................7 switch ...............................................................................................................................................12

    ( ).........................................................................................................15 while ....................................................................................................................................................15 for-..........................................................................................................................................................16 do while ...............................................................................................................................................18

    ...................................................................................................................................................................19 break..................................................................................................................................................19 continue ...........................................................................................................................................20

  • 2

    .

    a , (), . :

    () if-else switch . , .

    e (, ) for d . .

    C :

    1.

    2.

    3. ()

    if else switch

    4. () :

    while for do while

    4.

    break continue

    5. goto 6. return

    O ; ( ) C. :

    izraz;

    :

    Visina=5; printf("%d \n", Visina); broj b--;

    . - ; .

  • 3

    . , , .

    . . { } :

    { izraz1; izraz2; ... izrazN;}

    { izraz1; izraz2; ... izrazN; }

    :

    (. )

    , , ! , , , , .

    (scope) , . .

    , . , ( ). . .

    main() { int prom1=1; double prom2=3.22; double prom3= prom2 + 5.92; prom1+=32; prom3= (double)prom1*54.76; printf("%d\n %f\n", prom1, prom3); } : 33 1807.080000

  • 4

    main(), , . : prom1, prom2 prom3. ( }) main(). , :

    main() { int prom1=1; double prom3= prom2 + 5.92; /* GRESKA */ /* error C2065: 'prom2': undeclared identifier */ double prom2=3.22; ... }

    prom2 prom3 prom2 . , (nested blocks).

    :

    main() { int prom1=1; double prom2=3.22; double prom3= prom2 + 5.92; prom1+=32; prom3= (double)prom1*54.76; ... { /* pocetak unutrasnjeg bloka*/ prom1 *=4; prom2= prom2*prom2; ... } /* kraj unutrasnjeg bloka*/ printf("%d %f\n", prom1, prom3); }

    () . . , . ! .

  • 5

    :

    main() { int prom1=1; double prom2=3.22; double prom3= prom2 + 5.92; prom1+=32; prom3= (double)prom1*54.76; { /* pocetak unutrasnjeg bloka*/ int prom4; /* Lokalna promenljiva*/ prom4=76; prom1 *=4; prom2= prom2*prom2; } /* kraj unutrasnjeg bloka*/ printf("%d \n", prom4); /* Greska */ /*error C2065: 'prom4' : undeclared identifier */ }

    , ( printf() ).

    o ( )! .

    : /* Prikaz lokalnih promeljivih unutar bloka */ #include main() { /* Definisanje promenljive lokalne za funkciju main(). */ int count = 5; printf("\nVrednost promenljive u spoljasnjem bloku, count = %d", count); /* Pocetak unutrasnjeg bloka */ { /* Definisanje promenljive lokalne za unutranji blok */ int count = 999; printf("\nVrednost promenljive u unutrasnjem \ bloku, count = %d",count); } printf("\nVrednost promenljive u spoljasnjem bloku, ponovo, \ count = %d\n", count); }

    : Vrednost promenljive u spoljasnjem bloku, count = 5 Vrednost promenljive u unutrasnjem bloku, count = 999 Vrednost promenljive u spoljasnjem bloku, ponovo, count = 5

    count count .

  • 6

    count int 5. count main(), main(). printf 5. count int 999. printf 999. , printf count main().

    #include main() { /* Definisanje promenljive lokalne za funkciju main(). */ int count = 5; printf("\nVrednost promenljive u spoljasnjem bloku, count = %d", count); /* Pocetak unutrasnjeg bloka */ { /* Definisanje promenljive lokalne za unutranji blok */ double count = 99.888; printf("\nVrednost promenljive u unutrasnjem bloku, \ count = %f", count); } printf("\nVrednost promenljive u spoljasnjem bloku, ponovo, \ count = %d\n", count); }

    : Vrednost promenljive u spoljasnjem bloku, count = 5 Vrednost promenljive u unutrasnjem bloku, count = 99.888000 Vrednost promenljive u spoljasnjem bloku, ponovo, count = 5

    , .

    , , C . . . , .

  • 7

    () . . , , . if : .

    if else :

    if(izraz1) { naredbe } else if(izraz2) { naredbe } else if(izraz3) { naredbe } ... else { naredbe }

    a) if(izraz1){naredb1; naredb2; ... naredbN; }

    if(izraz1) { naredb1; naredb2; ... naredbN; }

    if izraz1 . ( ") naredb1, naredb2,..., naredbN. naredb1, naredb2,..., naredbN. izraz1, if , :

  • 8

    = == x == y x j y

    != x != y x j y > > x > y x j y

    < < x < y x j y

    >= x >= y x j y 5)b=3;

    : br : if(br != 0) if(br) if(br == 0) if(!br)

    if . if printf if

  • 9

    : int main()/* pocetak programa pocinje funkcijom main */ { int num1; /* prvi broj koji korisnik treba da unese */ int num2; /* drugi broj koji korisnik treba da unese */ printf( "Unesite dva cela broja i ja cu Vam reci\n" ); printf( "u kom su oni odnosu: " ); scanf( "%d%d", &num1, &num2 ); /* citaju se dva cela broja */ if(num1 == num2) { printf( "%d je jednak sa %d\n", num1, num2); }/* kraj if naredbe */ if(num1 != num2) { printf("%d nije jednak sa %d\n", num1, num2); } /* kraj if naredbe */ if(num1 < num2) { printf("%d je manji od %d\n", num1, num2); } /* kraj if naredbe */ if(num1 > num2) { printf("%d je veci od %d\n", num1, num2 ); } /* kraj if naredbe */ if(num1 = num2) { printf("%d je veci ili jednak sa %d\n", num1, num2); }/* kraj if naredbe */ } /* kraj funkcije main */

    : if . if - (;).

    ) if if-else a:

    if(izraz1) { naredbe } else { naredbe }

  • 10

    if (if else a) .

    : if(br_ == 0) printf(" broj a je jednak nuli\n"); else printf(" broj a je razlicit od nule\n");

    : if else .

    . , .

    . , .

    if(br_ == 0) { br_b=7; printf(" broj a je jednak nuli\n"); } else printf(" broj a je razlicit od nule\n");

    Me, . , :

    if(x < 0) if(y < 0) broj_a=5; else broj_a=8;

    , x > 0 x = 0 broj_a=8; ? else if , if . else if () , else.

    if(x < 0) if(y < 0) broj_a=5; else broj_a=8;

    if(x < 0) { if(y < 0) broj_a=5; else broj_a=8; }

  • 11

    x > 0 x = 0 . ( ). x > 0 x = 0 broj_a=8;

    if(x < 0) if(y < 0) broj_a=5; else ; /* prazna naredba */ else broj_a=8;

    if(x < 0) { if(y < 0) broj_a=5; } else broj_a=8;

    ) , . if(izraz1) { naredbe } else if(izraz2) { naredbe } ... else { naredbe }

    :

    if(>90) ocena = 10; else if(a>80) ocena = 9; else if(a>70) ocena =8; else if(a>60) ocena =7; else if(a>50) ocena =6; else ocena = 5;

    (if(>90)). (ocena = 10) .

  • 12

    (if(a>80))... , , ( ) .

    : #include main() { int a = 85; int ocena; if(a>90) ocena = 10; else if(a>80) ocena = 9; else if( (a%5)==0) /* Da li je a deljivo sa 5?*/ printf("\n a je deljivo sa 5\n"); else ocena = 5; printf("\nVrednost ocene je %d\n", ocena); }

    : Vrednost ocene je 9 5 (if((a%5)==0), ), a>80.

    switch switch if . , if. :

    switch(izraz) { case vrednost_1: niz_naredbi_1 case vrednost_2: niz_naredbi_2 ... case vrednost_N: niz_naredbi_N default: niz_naredbi }

    switch izraz. vrednost_1, vrednost_2,... vrednost_N, case . case switch . , case (izraz), .

  • 13

    : #include main() { int a = 1; int b=2; switch(a+b) { case 1: printf("Zbir je 1\n"); case 2: printf("Zbir je 2\n"); case 3: printf("Zbir je 3\n"); case 4: printf("Zbir je 4\n"); default: printf("Zbir je veci od 4\n"); } }

    : Zbir je 3 Zbir je 4 Zbir je veci od 4 (niz_naredbi) case , switch , break. case default break. , izraz case (vrednost_i) case switch . :

    #include main() { int a = 1; int b=2; switch(a+b) { case 1: printf("Zbir je 1\n"); break; case 2: printf("Zbir je 2\n"); break; case 3: printf("Zbir je 3\n"); break; case 4: printf("Zbir je 4\n"); break; default: printf("Zbir je veci od 4\n"); break; } }

    : Zbir je 3 case , default . default ( . ) switch switch .

  • 14

    default switch , . , .

    : #include main() { int a = 4; int b=2; switch(a+b) { case 1: printf("Zbir je 1\n"); case 2: printf("Zbir je 2\n"); case 3: printf("Zbir je 3\n"); default: printf("Zbir je veci od 4\n"); case 4: printf("Zbir je 4\n"); } }

    : Zbir je veci od 4 Zbir je 4 break, case case . switch case (NSI C 257), ce case . :

    switch(izraz) { case vrednost_1: niz_naredbi_1 case vrednost_1: niz_naredbi_2 /* Greska! dve pojave vrednost_1*/ case vrednost_2: niz_naredbi_N default: niz_naredbi }

  • 15

    ( ) , .

    while :

    while(izraz) naredba;

    while(izraz) {naredba_1; naredba_2;...; naredba_N;}

    while(izraz) { naredba_1; naredba_2; ... naredba_N; }

    while izraz . , . , . izraz- . izraz while .

    : #include main() { float farenhajt, celzijus; int min, maks, korak; min = 0; maks = 120; korak = 20; farenhajt = min; while(farenhajt

  • 16

    : while (izraz, while(izraz)) ( ) while . .

    for- for :

    for(izraz_1; izraz_2; izraz_3) { naredbe }

    izraz_1 () , (i=0, broj=2;) izraz_2 (i

  • 17

    : #include void main() { int num; for(num = 10; num >= 0 ; num--) { printf(" %d ", num); } printf("\n"); }

    : 10 9 8 7 6 5 4 3 2 1 0

    : #include void main() { int num; for (num = 2; num

  • 18

    do while for while , do while . do while , .

    do { naredbe } while( izraz );

    do while , . .

    : #include main() { float num, total; total=0; do { printf("Please enter a number "); scanf("%f",&num); total += num; printf("The total is %f\n\n", total); }while(num!=0); }

    :

    Please enter a number 1 The total is 1.000000 Please enter a number 2 The total is 3.000000 Please enter a number 3 The total is 6.000000 Please enter a number 4 The total is 10.000000 Please enter a number 5 The total is 15.000000 Please enter a number 0 The total is 15.000000

  • 19

    , , . , , . :

    break continue break break (while, for do-while), switch. break switch .

    , (), break .

    : ... for(i=0; ; ++i) /* nema uslova za prekid petlje! */ { ... x=i-3+12*i; if(x>=500) break; ... } y=33; ... for () . ( for(i=0; ; ++i) ). , for . x 501, for y=33;

    : /* Prekid beskonacne petlje */ #include main() { char ch; printf("Unesite karkter:\n(unesite x za izlaz)\n"); while (1) { scanf("%c",&ch); if(ch == 'x') break; } printf("Prekid beskonacne petlje. Cao!\n"); }

  • 20

    continue continue, break (while, for do-while) () .

    : #include main() { int x; printf("Ispisujem samo parne brojeve od 1 do 10\n"); for( x = 1; x

  • 1

    C (C programming Language)

    4

    ........................................................................................................................................................... 2 ................................................................................................................................. 2 .......................................................................................................................... 3 ................................................................................................................. 4

  • 2

    . , , , (array). . . . , ( ...).

    . .

    . !

    tip ime_niza [duzina] [duzina]... [duzina] tip ( int float double....) ime_niza ( ...) duina ,

    :

    float Plate[10];/* jednodimenzionalni niz*/ int [10][5]; /* dvodimenzionalni niz, 10x5 elemenata*/*/

    223.44

    435.11

    218.44

    481.65

    Plate[0]

    322.76

    712.34

    490.09

    318.66

    348.33

    395.27

    Plate[4]

    Plate[2]

    Plate[3]

    Plate[1]

    Plate[5]

    Plate[9]

    Plate[7]

    Plate[8]

    Plate[6]

    4.1 10

    Plate 10 . ( ), ,

    . [ ], . .

  • 3

    0, 1, . 9 ( 10).

    . 0 0. . .

    00 01 02 03 04 10 11 12 13 14 20 21 22 23 24 ... 90 91 92 93 94

    .

    : Tip Ime[Duzina] = { vrednst0, vrednost1, , vrednostDuzina-1 };

    , . vrednost0 Ime[0], vrednost1 Ime[1], .

    () .

    : int tablica[4]={3, 5, 7, 9}; long a1[6]={3, 5, 7, 9, 0, 0}; int NumDays1[12] = { 31, 28, 31, 30,31, 30, 31, 31, 30, 31, 30, 31 }; /* Jan je 0, Feb je 1, ... */ int NumDays2[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31 }; /* Jan je 1, Feb je 2, */

    tablica 4 , . ( 0) 3, ( 1) 5 .

    . , 0 31 ( ), 1 28 ( )... , . , 4, 13 , ( ) , ( 1) , ( 2) ... , Duzina .

    int tablica[ ]={3, 5, 7, 9};

    int tablica[4]={3, 5, 7, 9}; (duzina) , !

  • 4

    int tablica [3]={3, 5, 7, 9}; /*Greska! rrr too many initializers....*/

    o 3 (tablica [3]) 4 . , . , .

    int tablica [5]={3, 5, 7, 0, 0};

    int tablica [5]={3, 5, 7}; -

    int mat2[3][2]={ {1,2}, {3,4}, {5,6}

    };

    int mat2[3][2]={{1,2},{3,4},{5,6}}; int NumDays2[2][13] = {

    {0,31,28,31,30,31,30,31,31,30,31, 30,31}, {0,31,29,31,30,31,30,31,31,30,31, 30,31}

    };

    short kvadratA[4][4]={ {0,1,2,0},{3,4,0,0},{5,6,7,8},{9,0,0,0} }; short kvadratB[4][4]={ {0,1,2},{3,4},{5,6,7,8},{9} };

    .

    , . , ( ) ,

    int kvA[4][4]={0,1,2,3,4,5,6,7,8,9}; int kvB[4][4]={ {0,1,2,3},{4,5,6,7},{8,9,0,0},{0,0,0,0} };

    . n-1, n .

    [ ].

    :

    i tablica int tablica [3]={3, 5, 7, 9}; int i; ... i = tablica [1]; /* i dobija vrednost 5*/ tablica [0]=i+1; /* tablica [0]= 6/ ...

  • 5

    :

    float Sales[10]; :

    Sales = 17.50; /* nedostaje indeks */ Sales[-1] = 17.50; /* indeks izvan opsega */ Sales[10] = 17.50; /* indeks izvan opsega */ Sales[7.0] = 17.50; /* tip indeksa nije odgovarajuci */ Sales[a] = 17.50; /* tip indeksa nije odgovarajuci */ Sales[7] = A; /* tip indeksa nije odgovarajuci */

    : Sales[7] = 17; /* 17 ce se konvertovati u float tip*/

    : for

    #include main() { int mat[10]; /* mat je niz od 10 elemenata*/ int i; /* brojac*/ /* inicijalizacija elemenata niza mat na 0*/ for(i = 0;i < 10;i++) { mat[i]=5; /* postavi element na lokaciji i na 0 */ }/* kraj for petlje*/ printf("\nElement\t Vrednost\n"); /* ispisi vrednost elemenata polja u obliku tabele*/ for(i = 0;i < 10;i++) { printf("\n%7d%10d\n",i,mat[i]); }/* kraj for petlje*/ }/* kraj funkcije main*/ :

    Element Vrednost 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 Press any key to continue

  • 6

    N . 5. 0, 2, 4,6, 8, ...18

    #include main() { int mat[10]; /* mat je niz od 10 elemenata*/ int i; /* brojac*/ /* inicijalizacija elemenata niza mat na 0*/ for(i = 0;i < 10;i++) { mat[i]=2*i; /* postavi element na lokaciji i na 2 puta i */ }/* kraj for petlje*/ printf("\nElement\t Vrednost\n"); /* ispisi vrednost elemenata polja u obliku tabele*/ for(i = 0;i < 10;i++) { printf("\n%7d%10d\n",i,mat[i]); }/* kraj for petlje*/ }/* kraj funkcije main*/ : Element Vrednost 0 0 1 2 2 4 3 6 4 8 5 10 6 12 7 14 8 16 9 18 Press any key to continue

    for main() { int mat[4][3]; int i,j; for( i = 0; i < 4; i++ ) { for( j = 0; j < 3; j++ ) { mat[i][j]=5 ; } } }

  • 7

    ,

    #include main() { #define MAXELEM 10 /* Nema ; iza pretprocesorske naredbe!*/ float plate[MAXELEM] = {117.0f, 129.95f, 276.22f, 201.10f,106.31f, 358.11f, 31.85f, 256.45f, 269.09f,197.81f}; float ukupno; int i; printf("\nElement\t Vrednost\n"); /* ispisi vrednost elemenata polja u obliku tabele*/ for(i = 0;i < MAXELEM;i++) { printf("\n%7d%10.2f\n",i,plate[i]); }/* kraj for petlje*/ /* Izracunaj zbir vrednosti elemenata niza */ ukupno = 0.0; for (i = 0; i < MAXELEM; i++) /* jedna naredba, moze i bez {} */ ukupno += plate[i]; /* moze i ukupno = ukupno + plate[i] */ printf("\n\nZbir svih elemenata niza: %.2f\n\n", ukupno); }/* kraj funkcije main */ : Element Vrednost 0 117.00 1 129.95 2 276.22 3 201.10 4 106.31 5 358.11 6 31.85 7 256.45 8 269.09 9 197.81 Zbir svih elemenata niza: 1943.89 f (float plate[MAXELEM] = {117.0f, 129.95f,...}). double .

    : . :

    1 10 (1 , 10 ). (o).

    . (. 1 5 , 2 3 , .). odgovor 40 ,

  • 8

    . frekvOcena 11 , . . frekvOcena[0] : frekvOcena[1] 1, frekvOcena[2] 2, ... frekvOcena[10] 10.

    #include #define BROJ_STUDENATA 40 /* definisi velicinu nizova */ #define FREKV_VELICINA 11 /* function main pocetak izvrsavanja programa */ int main() { int i; /* brojac koji kruzi od 1. do 40. odgovora */ /* inicijaliacija niza sa brojem dobijenih ocena na 0 */ int frekvOcena[ FREKV_VELICINA ] = { 0 }; /* inicijalizacija niza odgovor studenata */ int odgovor[ BROJ_STUDENATA ] = { 1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10 }; /* za svaki odgovor, odredite vrednost elementa niza odgovor i uzmite tu vrednost and kao indeks niza frekvOcena i da bi se pozicionirali na taj element niza frekvOcena i povecajte ga za 1 */ for ( i = 0; i < BROJ_STUDENATA; i++ ) { ++frekvOcena[ odgovor [ i ] ]; } /* kraj for petlje */ /* prikazi rezultate */ printf( "Ocena Broj glasova\n" ); /* Prikaz u tabelarnom formatu */ for ( i = 1; i < FREKV_VELICINA; i++ ) { printf( "%5d%14d\n", i, frekvOcena[i ] ); } /* end for */ } : Ocena Broj glasova 1 2 2 2 3 2 4 2 5 5 6 11 7 5 8 7 9 1 10 3 for (for ( i = 0; i < BROJ_STUDENATA; i++ ){++frekvOcena[odgovor[i]];}) odgovor i = 0 odgovor[0], i = 1 odgovor[1] ... : odgovor[0] 1, odgovor[1] 2, odgovor[3] 6...

  • 9

    odgovor frekvOcena frekvOcena 1 (++frekvOcena[odgovor[i]];) :

    for . i = 0. odgovor[0] 1 ( ).

    frekvOcena[odgovor[i]]= frekvOcena[odgovor[0]]= frekvOcena[1] ( 1) frekvOcena 0 (frekvOcena[1]=0) ++frekvOcena[1] . frekvOcena[1]=1. for , 1, (i = 1). odgovor[1] 2 ( ). frekvOcena[odgovor[i]]= frekvOcena[odgovor[1]]= frekvOcena[2] ( 2) frekvOcena 0 (frekvOcena[2]=0) ++frekvOcena[2] . frekvOcena[2]=1. for , 1, (i = 2). odgovor[2] 6 ( ). frekvOcena[odgovor[i]]= frekvOcena[odgovor[2]]= frekvOcena[6] ( 6) frekvOcena 0 (frekvOcena[6]=0) ++frekvOcena[6] . frekvOcena[6]=1. ...

    : :

    #include #define VELICINA 10 /* definisi velicinu niza */ /* function main pocetak izvrsavanja programa */ int main() { /* inicializacija niza n */ int n[ VELICINA ] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 }; int i; /* brojac za elemente polja */ int j; /* brojac zvezdica */ printf( "Element Vrednost Histogram\n" ); /* za svaki element polja ispisi index, vrednost i nacrtaj histogram */ for ( i = 0; i < VELICINA; i++ ) { /* ispis indeksa i vrednosti*/ printf( "%7d%10d ", i, n[ i ]) ; for ( j = 1; j

  • 10

    } /* kraj spoljasnje petlje */ } /* kraj funkcijemain */

    : Element Vrednost Histogram 0 19 ******************* 1 3 *** 2 15 *************** 3 7 ******* 4 11 *********** 5 9 ********* 6 13 ************* 7 5 ***** 8 17 ***************** 9 1 *

    #include main() { #define MAXEMPS 10 double Sales[MAXEMPS] = {117.0, 129.95, 276.22, 201.10,106.31, 358.11, 31.85, 256.45, 269.09, 197.81}; double maxS; int i; maxS = Sales[0]; for (i = 1; i < MAXEMPS; i++) { if (Sales[i] > maxS) maxS = Sales[i]; /* Primetite da i pocinje od 1 */ } printf("maksimalna vrednost niza je %f\n", maxS); } : maksimalna vrednost niza je 358.110000

  • 1

    C (C programming Language)

    5

    ..........................................................................................................................2 .................................................................................................3 &............................................................................................................................4 *.............................................................................................................................5 ............................................................................11 .......................................................................................................11

    .........................................................................12 ( ) .........................12 : .................................................................13 :..........................................13 : .......................................................................14 : ..............................................................14

    .......................................................................................................14 ........................................................................................16

  • 2

    (pointer) C .

    .

    :

    : . (main memory) (secundary memory). (hard disk, CD-rom...). RAM (random access memory). . , . . . 1 (8 ). , . . , , ( ) .

    (. 921) . ( ) . . , . () .

    , (variable) . . (") . , 1220, 1222 1230. , . , , (compiler) . , , !

    int main() { short int brojA; double tezina, zapremina; .... }

    (. short int -32768 32767) (, ...). (int, float, double...) . . .

  • 3

    2 4 , ( ) . , PC 64 , 1 , 16 (2 ) 216= 65536, 2 . . .

    . , . , ?

    . , .

    : tip_podatka *ime_pokazivaa; tip_podatka ( ) , , .

    * , . ime_pokazivaa .

    :

    int *p; float *ptr;

    p ptr . () p ( ) int, ptr float. p int ptr float. , :

    int *p;

    int* p;

    int * p; * .

    :

    int* p, q; p , q . q int. * . ,

    int *p, q;

    int *p, *q;

  • 4

    , () . , p int, p int.

    C :

    & *

    & & .

    : main() { int x=25; int *p; ... p=&x; *p=48; ... }

    p=&x; x p . : int x=25; int *p; 1. : 1200 1800 ( ). x 25, . .

    ??

    25

    .

    .

    .

    .

    .

    .

    .

    .

    .

    adresa:1200

    adresa:1800

    ime: p

    ime: x

    1

  • 5

    p=&x; , x. 2.

    1800

    25

    .

    .

    .

    .

    .

    .

    .

    .

    .

    adresa:1200

    adresa:1800

    ime: p

    ime: x

    2

    * , , *. , , , * .

    *p=48; : p, 48. ( p=&x; p x). 3.

    1800

    48

    .

    .

    .

    .

    .

    .

    .

    .

    .

    adresa:1200

    adresa:1800

    ime: p

    ime: x

    3

  • 6

    :

    1. &p, p *p . 2. &p ( ), 3 1200. 3. p ( ), 3 1800 4. *p (48, 3) (1800, 3)

    ( 1200, 3).

    :

    int x; int *p;

    x p 4

    .

    .

    .

    .

    .

    .

    .

    .

    .

    adresa:1400

    adresa:1750

    ime: p

    ime: x

    4. &p, p, *p &x x

    &p 1400 ( p) p ?? ( p) *p &x 1750 ( x) x ?? ( x)

    ,

    x=50; :

  • 7

    &p 1400 ( p) p ?? ( p) *p &x 1750 ( x) x 50

    p=&x;

    &p 1400 ( p) p 1750 *p 50 &x 1750 ( x) x 50

    *p=38;

    &p 1400 ( p) p 1750 *p 38 &x 1750 ( x) x 38

    :

    main() { int *ptr1, *ptr2; int x, y; ptr1=&x; *ptr1=42; ptr2=ptr1; *ptr2=53; ptr1=&y; *ptr1=88;

    } int *ptr1, *ptr2; int x, y; ( ):

  • 8

    &ptr1 2350 ptr1 ?? *ptr1 ?? &ptr2 2600 ptr2 ?? *ptr2 ?? &x 1320 x ?? &y 1950 y ??

    ptr1=&x;

    &ptr1 2350 ptr1 1320 *ptr1 ?? &ptr2 2600 ptr2 ?? *ptr2 ?? &x 1320 x ?? &y 1950 y ??

  • 9

    *ptr1=42;

    &ptr1 2350 ptr1 1320 *ptr1 42 &ptr2 2600 ptr2 ?? *ptr2 ?? &x 1320 x 42 &y 1950 y ??

    ptr2=ptr1;

    &ptr1 2350 ptr1 1320 *ptr1 42 &ptr2 2600 ptr2 1320 *ptr2 42 &x 1320 x 42 &y 1950 y ??

    ptr2 ptr1, x. ptr2 (2600 ) x (1320 ).

  • 10

    *ptr2=53;

    &ptr1 2350 ptr1 1320 *ptr1 53 &ptr2 2600 ptr2 1320 *ptr2 53 &x 1320 x 53 &y 1950 y ??

    ptr1=&y;

    &ptr1 2350 ptr1 1950 *ptr1 ?? &ptr2 2600 ptr2 1320 *ptr2 53 &x 1320 x 53 &y 1950 y ??

  • 11

    , *ptr1=88;

    &ptr1 2350 ptr1 1950 *ptr1 88 &ptr2 2600 ptr2 1320 *ptr2 53 &x 1320 x 53 &y 1950 y 88

    : ptr1 ptr2

    ptr2=ptr1; ptr2 ptr1.

    :

    ( ) ; 0 ().

    !

    : main( ) { int x; int *pokazivac= &x; int *p2=NULL /* moze se napisati i int *p2=0 */ }

    . float , float . , , (int, float, double...) void :

    vid *point; . !

  • 12

    : main() { int x; void *p=&x; /* Greska! Tip pokazivaca nije odgovarajuci*/ void *p2; ... p2=&x; /* Greska! Tip pokazivaca nije odgovarajuci */ ... }

    , ( void) . :

    main() { int x; void *p2; ... (int *)p2=&x; /* p2 ukazuje na adresu promenljive x */ *(int *)p2=3; /* na adresu promenljive x upisati 3 isto sto i x=3 */ ... }

    () . () .

    printf %p ( int %d; float %f ...).

    #include main() { int x; int *px; px=&x; printf(Pokazivac ukazuje na adresu: %p\n ,px); } : Pokazivac ukazuje na adresu: 0012FF7C ( )

    ( ) :

  • 13

    : = , .

    (cast), a !

    : main() { double x=1.23; double *px=&x; /* px ukazuje na adresu promenljive x */ double *p1; int *p2; .... p1=px; /* p1 ukazuje na adresu promenljive x */ p2=px; /* Greska! pokazivaci su razlicitih tipova */ p2=(double *)px; /* Ovako moze, ali na odgovornost programera */ }

    p1=px; px p1. p1 px , x. : : +, ++ += ,

    : , = . a .

    : main() { int *p; double *q; char *chPtr; ... p++; q++; chPtr++; p=p+2; ... }

    : int 4 , double 8 char 1 . p++; ( p= p + 1;) p 4 , . .

    q++; ( q= q + 1;) q 8 . chPtr++; ( chPtr= chPtr + 1;) chPtr 1 . (++) , , ( ) .

    , p= p + 2; p 8 .

  • 14

    , , : ( ) ( ). 2 4 sizeof(int)=4. () , . .

    : == != .

    : . ( NULL) . NULL .

    :

    int my_array[6]={1, 23, 17, 4, -5, 100}; 6 . my_array[0] my_array[5]. , :

    int *ptr; ptr=&my_array[0]; /* pokazivac ukazuje na prvi element niza*/

    :

    #include main() { int my_array[6] = {1, 23, 17, 4, -5, 100}; int *ptr; int i; ptr = &my_array[0]; /* ptr ukazuje na prvi element niza */ printf("\n\n"); for (i = 0; i < 6; i++) { printf("my_array[%d] = %3d\t ",i,my_array[i]); /*

  • 15

    C ptr = &my_array[0];

    ptr = my_array; , ptr . . ( ) . , :

    ptr = my_array;

    my_array = ptr; : ptr my_array ( ) . 3. ( 2) :

    ptr = &my_array[2];

    ptr = &my_array[0] + 2;

    ptr = my_array + 2; my_array &my_array[0]

    my_array[i] = *(my_array + i) :

    #include main() { int a[8] = {1,23,17,4,-5,100,55,44}; int *pa, *pb; int x, y; pa=&a[4]; /* pa ukazuje na a[4] tj na vrednost -5 */ printf("Vrednost *pa nakon naredbe pa=&a[4] je: %d\n", *pa); x=*(pa+3); /* x=a[7]=44 */ printf("Vrednost x nakon naredbe x=*(pa+3) je: %d\n", x); y=*pa+3; /* y=a[4]+3=-2*/ printf("Vrednost y nakon naredbe y=*pa+3; je: %d\n", y); *pa++; /* povecava se sadrzaj pokazivaca, isto sto i *(pa++) ili pa=&a[5] */ printf("Vrednost *pa nakon naredbe *pa++ je: %d\n", *pa); (*pa)++; /* povecava se pokazani podatak a[5]=a[5]+1=101 */ printf("Vrednost *pa nakon naredbe (*pa++) je: %d\n", *pa); pb=&a[2]; }

  • 16

    : Vrednost *pa nakon naredbe pa=&a[4] je: -5 Vrednost x nakon naredbe x=*(pa+3) je: 44 Vrednost y nakon naredbe y=*pa+3; je: -2 Vrednost *pa nakon naredbe *pa++ je: 100 Vrednost *pa nakon naredbe (*pa++) je: 101

    , . , . , . ? (, ) .

    : . (dynamic variables) . , (deallocate).

    , , ( ) . ( ) .

    , . , () , .

    .

    C , . . () , .

    .

    ( ) .

    malloc(velicina) velicina . ( void *) NULL . .

    calloc(n,velicina) n e velicina . ( void *) NULL

  • 17

    . .

    realloc(p,velicina) p velicina . . , , . , . ( void *) NULL .

    free(p) p. p malloc, calloc realloc.

    : malloc #include #include /* potrebno zbog malloc i free funkcije */ main() { int number; int *ptr; int i; printf("Koliko int vrednosti zelite da sacuvate? "); scanf("%d", &number); ptr = malloc(number*sizeof(int)); /* zahtev za dodelu memorije */ /* ptr = (int *)malloc(number*sizeof(int)); */ /* moze i ovako */ if(ptr!=NULL) { for(i=0 ; i0 ; i--) { printf("%d\n", *(ptr+(i-1))); /* prikazi u suprotnom redosledu */ } free(ptr); /* oslobodi dodeljenu memoriju */ } else printf("\nDodela memorije nije izvrsena - nema dovoljno memorije.\n"); } : Koliko int vrednosti zelite da sacuvate? 3 2 1 0

  • 18

    calloc /* Program koji koristi calloc da dodeli memoriju za 40 long int promenljivih. Inicijalizuje svaku promeljivu na 0 */ #include #include int main( void ) { long *buffer; buffer = (long *)calloc( 40, sizeof( long ) ); if( buffer != NULL ) printf( "Dodeljena memorija za 40 long int promenljivih\n" ); else printf( "Dodela memorije neuspesna\n" ); free( buffer ); } _____________________________________________________________________

    : #include #include /* potrebno zbog malloc i free funkcije */ main() { float *ptr_c1, *ptr_c2, *ptr_m1, *ptr_m2; int i; ptr_c1 = calloc(3, sizeof(float)); /* moze se zahtevati konverzija */ ptr_c2 = calloc(3, sizeof(float)); ptr_m1 = malloc(3 * sizeof(float)); ptr_m2 = malloc(3 * sizeof(float)); if(ptr_c1!=NULL && ptr_c2!=NULL && ptr_m1!=NULL && ptr_m2!=NULL) { printf("adresa ptr_c1 je %05.5p,\n", ptr_c1); printf("adresa ptr_c2 je %05.5p,\n", ptr_c2); printf("adresa ptr_m1 je %05.5p,\n", ptr_m1); printf("adresa ptr_m2 je %05.5p,\n\n", ptr_m2); for(i=0 ; i

  • 19

    : adresa ptr_c1 je 00430120, adresa ptr_c2 je 004300E0, adresa ptr_m1 je 004300A0, adresa ptr_m2 je 00430060, *ptr_c1[0] ima vrednost 0.00000, *ptr_c2[0] ima vrednost 0.00000, *ptr_m1[0] ima vrednost -431602080.00000 *ptr_m2[0] ima vrednost 0.00000, *ptr_c1[1] ima vrednost 0.00000, *ptr_c2[1] ima vrednost 0.00000, *ptr_m1[1] ima vrednost -431602080.00000 *ptr_m2[1] ima vrednost 0.00000, *ptr_c1[2] ima vrednost 0.00000, *ptr_c2[2] ima vrednost 0.00000, *ptr_m1[2] ima vrednost -431602080.00000 *ptr_m2[2] ima vrednost 0.00000,

    : realloc #include #include int main() { int *ptr; int i; ptr = calloc(5, sizeof(int)); /*dinamicki niz od 5 elemenata indeks 0-4 */ if(ptr!=NULL) /* ako je dodeljena memorija...*/ { *ptr = 1; /* isto sto i ptr[0]=1 ili *ptr=1 */ *(ptr+1) = 2; /* isto sto i ptr[1]=2 */ *(ptr+2) = 4; *(ptr+3) = 8; *(ptr+4) = 16; printf("\nNakon naredbe calloc(5, sizeof(int)) i dodele vrednosti...\n"); for(i=0 ; i

  • 20

    printf("\n Nakon naredbe dodele vrednosti 6. i 7. elementu... \n"); for(i=0 ; i

  • 1

    C (C programming Language)

    6

    ......................................................................................................................................... 2 .................................................................................................................................. 2 ................................................................................................................................................. 3 ........................................................................................................................... 3 ...................................................................................................... 4 ..................................................................................................................... 5

    .................................................................................................................................... 5 .................................................................................................................. 6 .......................................................................................................................... 6 .................................................................................. 6 ......................................................................................................................... 8 ......................................................................................................... 14 ................................................................................. 18

  • 2

    C . , . C char . () , char.

    ( ) " . , ASCII .

  • 3

    . ASCII 32 ( space) 126 (~). 48 0, 49 1, ..., 65 , 66 ,..., 97 , 98 b.... , (!"#$....+-...).

    0 31 127 . . . : (space) (ff - form feed), (lf - line feed), (cr carriage return)...

    char , ().

    ( ASCII ).

    char .

    1: #include main() { char c1, c2, c3; c1='A'; c2=65; c3='#'; printf("Vrednost znakova: c1=%c, c2=%c, c3=%c\n",c1,c2,c3); } :

    Vrednost znakova: c1=A, c2=A, c3=# ! char . (0,1,2,...7) (\) 1078 G '\107'. (0,1,...,, b,...,f) \x \X. . 5116 ( 81 Q) '\x51.'

    2: main() { char c1, c2, c3,c4; c1='A'; c2=65; c3='\101'; /* 65 dekadno je 101 oktalno */ c4='\x41'; /* 65 dekadno je 41 heksadecimalno */ printf("Vrednost znakova: c1=%c, c2=%c, c3=%c, c4=%c\n",c1,c2,c3,c4); } :

    Vrednost znakova: c1=A, c2=A, c3=A, c4=A

  • 4

    . , (bell, 07) \a; \n; ...

    . , .

    () . . '\0' (null character) .

    ('\0'), .

    :

    "John L. Johanson" "Zdravo svima!"

    'A' "A". ('A') : , ("A") . , "A" : 'A' '\0'. "Zdravo" : 'Z', 'd', 'r', 'a', 'v', 'o' '\0'. '' char, "" char '' '\0'. "Zdravo" char. :

    char ime[16] ime 16 char. 16 , ime 15 . ime 10, 11 5 .

    3: char ime[16]={'J', 'o', 'h', 'n', '\0'};

    ime 16 char "Jonh". :

    4 char ime[16]="John";

    ( 3 4) .

    ,

    5: char ime[16]={'J', 'o', 'h', 'n'}; char imeB[16]="John";

    ime imeB ( 5) .

  • 5

    , ()

    6: char ime[]={'J', 'o', 'h', 'n', '\0'};

    7: char ime[]="John";

    ( 5 6) 5, !

    , ( ) ( 7)

    8: main() { char ime[]="John"; ... ime[0]='A'; /*ovo je dozvoljeno*/ ... ime="Marko"; /* Error! */ ... }

    .

    9: #define ZVONO '\a' #define NOVI_RED '\n' #define VALUTA "US dollar"

    . . , . . char daniA[7][11]={"ponedeljak", "utorak", "sreda", "cetvrtak", "petak", "subota", "nedelja"}; char *daniB[7]={"ponedeljak", "utorak", "sreda", "cetvrtak", "petak", "subota", "nedelja"}; 7 11 7 .

  • 6

    printf() i scanf() . :

    () %c %s.

    :

    #include main() { char a[8] = {'A','l','e','k','s','a'}; char b[5] = "Pera"; printf("ispis karaktera: %c\nIspis stringa: %s\n", a[3], b); } : ispis karaktera: k Ispis stringa: Pera

    .

    int getchar(void); : , , (). EOF .

    : : :

    #include int main() { char znak; printf ("Unesite tekst. Unesite tacku ('.') da bi izasli z programa:"); do { znak=getchar(); printf("%c",znak); } while (znak != '.'); return(0); }

  • 7

    int putchar(int character); : () . : () . int unsigned

    char . : , EOF

    : #include int main () { char znak; for (znak = 'A' ; znak

  • 8

    #include main() { char niz[256]; printf ("Upisite vasu adresu: "); gets(niz); printf ("Vasa adresa je: %s\n",niz); }

    int puts (const char *string); : string ( char) \0

    \n .

    : string . : , EOF

    : include int main () { char string [] = "Hello world!"; char *ptr; ptr = &string[0]; puts(ptr); }

    : #include int main () { char string [] = "Hello world!"; puts (string); }

    (, ...) . . 0 , . int isalnum(int c); /* slovo ili cifra? */ : :

    ('A'-'Z', 'a'-'z', '0'-'9') : . : 1 , 0 .

  • 9

    : #include #include main() { short int i; for (i = 0; i < 256; i++) { if(isalnum(i)) printf("isalnum (%c) Da \n", i); else printf("isalnum (%c) Ne\n", i); } }

    int isalpha(int c); /* c slovo? */ : : ('A'-'Z', 'a'-'z') : . : 1 , 0 .

    : #include #include main() { short int i; for (i = 0; i < 256; i++) { if(isalpha(i)) printf("isalpha (%c) Da \n", i); else printf("isalpha (%c) Ne\n", i); } }

    int islower(int c); /* c malo slovo? */ : : ('a'-'z')

    : . : 1 , 0 .

  • 10

    : #include #include main() { short int i; for (i = 0; i < 256; i++) { if(islower(i)) printf("islower(%c) Da \n", i); /* else printf("islower(%c) Ne\n", i); */ } }

    int isupper (int c); /* c veliko slovo? */ : : ('A'-'Z')

    : . : 1 , 0 . :

    #include #include main() { short int i; for (i = 0; i < 256; i++) { if(isupper(i)) printf("isupper(%c) Da \n", i); /* else printf("isupper(%c) Ne\n", i); */ } }

  • 11

    int isdigit (int c); /* c cifra? */ : : ('0'-'9')

    : . : 1 , 0 . :

    #include #include main() { short int i; for (i = 0; i < 256; i++) { if(isdigit(i)) printf("isdigit (%c) Da \n", i); /* else printf("isdigit (%c) Ne\n", i); */ } }

    int isxdigit(int c); /* c heksadecimalna cifra? */ : : ('0'-'9', ''-'f',

    'A'-'F')

    : . : 1 , 0 . :

    #include #include main() { short int i; for (i = 0; i < 256; i++) { if(isxdigit(i)) printf("isxdigit(%c) Da \n", i); /* else printf("isxdigit(%c) Ne\n", i); */ } }

    int isspace (int c); /* c beli znak? */ : : (, ,...) : . : 1 , 0 .

  • 12

    : #include #include main() { short int i; for (i = 0; i < 256; i++) { if(isspace(i)) printf("isspace(%c) Da \n", i); /* else printf("isspace(%c) Ne\n", i); */ } }

    int isgraph(int c); /* c tampajui znak a nije razmak? */ : .

    : . : 1 , 0 . :

    #include #include main() { short int i; for (i = 0; i < 256; i++) { if(isgraph(i)) printf("isgraph(%c) Da \n", i); /* else printf("isgraph(%c) Ne\n", i); */ } }

    int tolower(int c); /* c se konvertuje u malo slovo */ : .

    : . : , .

  • 13

    : #include #include main() { unsigned char i; for (i = 0x20; i < 0x7F; i++) /* od 32 do 127*/ printf ("tolower(%c) = %c\n", i, tolower(i)); }

    int toupper(int c); /* c se konvertuje u veliko slovo */ : .

    : . : , .

    : #include #include main() { unsigned char i; for (i = 32; i < 128; i++) printf ("toupper(%c) = %c\n", i, toupper(i)); }

  • 14

    C . () .

    strcpy( str_dest, str_src ); /* kopira string */ : str_src str_dest, .

    str_dest :

    #include #include main () { char str1[]="Sadrzaj stringa 1"; char str2[40]; char str3[40]; strcpy (str2,str1); strcpy (str3,"Kopiranje uspesno"); printf (" str1: %s\n str2: %s\n str3: %s\n",str1,str2,str3); } : str1: Sadrzaj stringa 1 str2: Sadrzaj stringa 1 str3: Kopiranje uspesno

    strncpy( str_dest, str_src ,n); /* kopira n znakova */ : n str_src str_dest,

    . n str_src .

    : #include #include main () { char str1[]= "To be or not to be"; char str2[30]="Pocetni sadrzaj pre kopiranja"; puts(str2); strncpy (str2,str1,10); str2[10]='\0'; /* !! */ puts(str2); }

  • 15

    :

    Pocetni sadrzaj pre kopiranja To be or n

    strcat(str_dest, str_src); /* dopisuje string */ : str_src str_dest,

    str_dest. . :

    #include #include main () { char str[80]; strcpy (str,"Stringovi "); strcat (str,"su "); strcat (str,"spojeni."); puts (str); } : Stringovi su spojeni.

    strncat(str_dest, str_src, n); /* dopisuje n znakova */ : n str_src str_dest,

    str_dest. .

    : #include #include main () { char str1[20]; char str2[20]; strcpy (str1,"To be "); strcpy (str2,"or not to be"); strncat (str1, str2, 6); puts (str1); } : To be or not

  • 16

    strcmp(str1, str2); /* poredi dva stringa */ : str1 str2,

    . SCII .

    0 str1 str2

    : #include #include main () { char Resenje[] = "kruska"; char Odgovor[80]; do { printf ("Koje je moje omiljeno voce? "); gets (Odgovor); } while (strcmp (Resenje,Odgovor) != 0); printf ("Odgovor tacan!\n"); } : Koje je moje omiljeno voce? jabuka Koje je moje omiljeno voce? kruska Odgovor tacan!

    strlen(str1); /* duina stringa */ : . :

    #include #include main () { char Ulaz[256]; printf ("Unesite tekst: "); gets (Ulaz); printf ("Uneto je %u znakova\n",strlen(Ulaz)); } Unesite tekst: nekoliko slova Uneto je 14 znakova

  • 17

    strchr(char *str1, c); /* trazi prvu poziciju karaktera u stringu */ : c str1. : A

    NULL

    : #include #include int main () { char str1[] = "Ovo je test recenica"; char * pch; printf ("Trazim karakter 'e' u \"%s\"...\n",str1); pch=strchr(str1,'e'); while (pch!=NULL) { printf ("pronasao sam 'e' na poziciji %d\n",pch-str1+1); pch=strchr(pch+1,'e'); } } Trazim karakter 'e' u "Ovo je test recenica"... pronasao sam 'e' na poziciji 6 pronasao sam 'e' na poziciji 9 pronasao sam 'e' na poziciji 14 pronasao sam 'e' na poziciji 16

    strrchr(char *str1, c); /* trai poslednju poziciju karak. u stringu */ : c str1. : A

    NULL

    : #include #include int main () { char str1[] = "Ovo je test recenica"; char * pch; pch=strrchr(str1,'e'); printf ("Poslednja pojava karaktera 'e' je na poziciji %d\n",pch-str1+1); } Poslednja pojava karaktera 'e' je na poziciji 16

  • 18

    strstr(str1, str2); /* tri poziciju stringa 2 u stringu1 */ : str2 str1. : A

    , NULL :

    #include #include int main () { char str[] ="Ovo je jedan primer"; char *pch; pch = strstr (str,"dan"); printf("Pronadjena pozicija je %d\n", pch-str+1); }

    Pronadjena pozicija je 10

    ( ) . double atof(string); /* konverzija u tip double */ : ccc.cccEcc

    double. :

    #include #include #include main () { double n,m; double pi=3.1415926535; char Ulaz[256]; printf("Unesite vrednost u stepenima: "); gets(Ulaz); n =atof(Ulaz); m = sin(n*pi/180); printf("sin(%f) je %f\n" , n, m); } Unesite vrednost u stepenima: 90 sin(90.000000) je 1.000000

  • 19

    int atoi(string); /* konverzija u tip int */ : cccc int. :

    #include #include main () { int i; char Ulaz[256]; printf ("Unesite broj: "); gets ( Ulaz ); i = atoi (Ulaz); printf ("Uneta vrednost je %d, a njena dvostruka vrednost je %d\n",i,i*2); } Unesite broj: 243 Uneta vrednost je 243, a njena dvostruka vrednost je 486

    long atol(string); /* konverzija u tip long */ : cccc long. :

    #include #include main () { int i; char Ulaz[256]; printf ("Unesite broj: "); gets ( Ulaz ); i = atol (Ulaz); printf ("Uneta vrednost je %d, a njena dvostruka vrednost je %d\n",i,i*2); } Unesite broj: 56324 Uneta vrednost je 56324, a njena dvostruka vrednost je 112648

  • 1

    C (C programming Language)

    7

    .............................................................................................................................2 .............................................................................................................2 ...............................................................................................................3 ..............................................................................................3 ............................................................................................................4 return .........................................................................................................................5 ( ) ..........................................................................8 - void ...............................................................9

    Void .............................................................................................9 Void ........................................................................................10

    .................................................................................11 .............................................................................................................19 () ..........................................................................21 ......................................................................................................23

  • 2

    o . . C . , .

    , .

    . . C : ( ) ( ) : printf,

    scanf, sin, malloc, free, .

    , . , , . , ( ) 2 5f x x= + , (1) 7f = , (2) 9f = (3) 11f = , 1, 2 3 f , 7, 9 11 f .

    C , , . , .

    pow(x,y), sqrt(x) floor(x). pow(x,y) (power function) xy pow(x,y)= xy. pow(2,3)= 23 = 8.0, pow(2.5,3)= 2.53 = 15.625. () pow(x,y) double pow double pow double. , x y pow. pow . sqrt(x) (square root) x x>=0.0. , sqrt(2.25)=1.5. sqrt double . floor(x) x. floor(23.21)=23.0. double . :

    #include #include main() { double y; y = floor( 2.8 ); /* poziv biblioteke funkcije*/ printf( "The floor of 2.8 is %f\n", y ); y = floor( -2.8 ); printf( "The floor of -2.8 is %f\n", y ); }

  • 3

    The floor of 2.8 is 2.000000 The floor of -2.8 is -3.000000

    , , ... , , , " . , . :

    , . (void) .

    pow(x,y), squrt(x) floor(x). () . (header file) . #include (. #include). , : 1. 2. 3. 4. ( ),

    5. , .

    (function heading) (function body). . , abs :

    int abs(int x)

    int abs(int x) { if(x < 0) x = -x; return x; }

    , x abs. stepen :

    double stepen(double osnova, double eksponent) stepen stepen osnova eksponent. :

  • 4

    main() { double u = 2.5; double v = 3.0; double x,y,w; x=stepen(u,v); /* Linija 1 */ y=stepen(2.0, 3.2); /* Linija 2 */ z=stepen(v, 7); /* Linija 3 */ ... }

    1 stepen u v. u v stepen. , u osnova v eksponent. u v stepen 1 . 2, stepen 2.0 3.2. 2.0 osnova 3.2 eksponent. , 3 .

    :

    . , . ( ) . , , . .

    :

    tip_funkcije ime_funkcije(lista formalnih argumenata) { naredbe; }

    , ( ) . , .

    . , a .

    . tip_funkcije . (tip_funkcije) (return type) . tip_funkcije int. void, .

    int ime_funkcije(lista formalnih argumenata) double ime_funkcije(lista formalnih argumenata) void ime_funkcije(lista formalnih argumenata)

  • 5

    ime_funkcije .

    , *, tip_funkcije. ( void *).

    double *treci_stepen(lista formalnih argumenata) void *moja_funkcija(lista formalnih argumenata)

    lista formalnih argumenata , , . . .

    tip_funkcije ime_funkcije(tip_prom1 ime_prom1, tip_prom2 ime_prom2,..., tip_promN ime_promN) float funPrimer(int a, double b)

    .

    tip_funkcije ime_funkcije() ( ) , , . .

    . .

    tip_funkcije ime_funkcije(int a[], double b) tip_funkcije ime_funkcije(int *c)

    , .

    tip_funkcije ime_funkcije(int a[][10], double b)

    return , return.

    return izraz; izraz , .

    return , . , " , . return. . . , float. , , . float. manji. a . :

  • 6

    float manji(float x, float y) { float pom; /* lokalna promenljiva*/ if(x

  • 7

    : Manji broj od 5 i 6 je 5.000000 Unesite dva broja 8 2 Manji od brojeva 8.000000 i 2.000000 je 2.000000 Manji od brojeva 0.900000 i 2.000000 je 0.900000

    manji(5,6) 2 , 5 6 . manji(prvi, drugi) 5 ( ), prvi drugi . manji(0.9, drugi) 7 , 0.9 drugi . ! :

    MinBroj=manji(float prvi, float drugi); /* Greska, ne treba navoditi tip */ MinBroj=manji(float prvi, 0.9); /* Greska, ne treba navoditi tip */ MinBroj=manji(float prvi, float 0.9); /* Greska, ne treba navoditi tip */

    void return izraz. , return .

    poruka a a=1 poruka A poruka B. , void .

    void poruka(short int a) { if(a==1) { printf("neka poruka A\n") return ; /* Nema izraza!*/ } printf("neka poruka B\n") return ; }

    , void, return . else return " o . void ( ). :

    void poruka(short int a) { if(a==1) { printf("neka poruka A\n") return ; /* Nema izraza!*/ } printf("neka poruka B\n") }

  • 8

    ( ) , . , manji main? , main () manji manji main. main . , , . ( main) ( ). - (;)

    tip_funkcije ime_funkcije(lista formalnih argumenata); manji :

    float manji(float x, float y); . . :

    float manji(float , float ); :

    #include /* Prototip funkcije*/ float manji(float x, float y); /*ili float manji(float , float ); */ main( ) { float prvi, drugi, MinBroj; /* Linija1 */ printf("Manji broj od 5 i 6 je %f\n", manji(5,6)); /* Linija2 */ printf("Unesite dva broja\n"); /* Linija3*/ scanf("%f %f", &prvi ,&drugi); /* Linija4*/ MinBroj=manji(prvi, drugi); /* Linija5 */ printf("Manji od brojeva %f i %f je %f\n", prvi, drugi, MinBroj); /* L6 */ printf("Manji od brojeva %f i %f je %f\n", 0.9, drugi, manji(0.9, drugi)); } float manji(float x, float y) { if(x

  • 9

    . manji main .

    .

    C . .

    .

    float proba(int x) { if(x< 5) return 2.0*x; }

    float float. x=2, o x

  • 10

    ( void ). .

    #include void upozorenje(); #include main( ) { float prvi; int pom; printf("Unesite broj manji od 45.00\n"); pom=0; do { scanf("%f", &prvi); if(prvi >45.0) { upozorenje(); pom=1; } else { printf("Uneti broj je manji od 45\n"); pom=0; } }while(pom !=0); } void upozorenje() { printf("_________________________________________________\n"); printf("Ponovite unos. Niste uneli odgovarajucu vrednost!\n"); printf("_________________________________________________\n"); }

    Void void :

    void ime_funkcije(lista formalnih argumenata) { naredbe }

    . lista formalnih argumenata . . .

  • 11

    void ime_funkcije(tip_prom1 ime_prom1,tip_prom2 ime_prom2,...,tip_promN ime_promN) void ime_funkcije(int a, double b)

    void : ime_funkcije(lista stvarnih argumenata);

    . , void .

    . , . .

    . , , :

    1. (value arguments)

    2. (reference arguments)

    K , . .

    : float moja_funk(float c); #include main( ) { float a, b; printf("Unesite broj\n"); scanf("%f", &a); printf("Vrednost promenljive pre poziva funkcije je =%f\n", a); b=moja_funk(a); printf("Vrednost promenljive nakon poziva funkcije je =%f\n", a); printf("Povratna vrednost funkcije je %f\n", b); } float moja_funk(float c) { c=c*c; return c+5.4; }

  • 12

    Unesite broj 6.4 Vrednost promenljive pre poziva funkcije a=6.400000 Vrednost promenljive nakon poziva funkcije a=6.400000 Povratna vrednost funkcije je 46.360001

    . 6.4 . .

    , .

    #include void moja_funk(float *c); /* deklaracija funkcije*/ /* argument je pokazivac na promen. tipa float*/ main( ) { float a; printf("Unesite broj\n"); scanf("%f", &a); printf("Vrednost promenljive pre poziva funkcije a=%f\n", a); moja_funk(&a); /* prenosi se adresa promenljive a */ printf("Vrednost promenljive nakon poziva funkcije a=%f\n", a); } void moja_funk(float *c) { printf("Vrednost promenljive na ulasku u funkciju je a=%f\n", *c); *c=512.5; printf("Vrednost promenljive pre izlaska iz funkcije je a=%f\n", *c); return; } : Unesite broj 6.4 Vrednost promenljive pre poziva funkcije a=6.400000 Vrednost promenljive na ulasku u funkciju je a=6.400000 Vrednost promenljive pre izlaska iz funkcije je a=512.500000 Vrednost promenljive nakon poziva funkcije a=512.500000

    , .

    , ( ) . , , . , . . , .

  • 13

    : #include

    void funJedan(int a, int *b, char v); void funDva(int *x, int y, char *w); main( ) { int num1, num2; char ch; num1=10; /* Linija 1*/ num2=15; /* Linija 2*/ ch='A'; /* Linija 3*/ printf("Linija 4: Unutar funk. main num1=%d, num2=%d, ch=%c\n",num1,num2,ch); funJedan(num1, &num2, ch); /* Linija 5*/ printf("Linija 6: Unutar funk. main num1=%d, num2=%d, ch=%c\n",num1,num2,ch); funDva(&num2, 25, &ch); /* Linija 7*/ printf("Linija 8: Unutar funk. main num1=%d, num2=%d, ch=%c\n",num1,num2,ch); }

    void funJedan(int a, int *b, char v) { int jedan; jedan=a; /* Linija 9*/ a++; /* Linija 10*/ *b=(*b)*2; /* Linija 11*/ v='B'; /* Linija 12*/ printf("Linija 13: Unutar funJedan a=%d, *b=%d, v=%c\n",a,*b,v); } void funDva(int *x, int y, char *w) { (*x)++; /* Linija 14*/ y=y*2; /* Linija 15*/ *w='G'; /* Linija 16*/ printf("Linija 17: Unutar funDva *x=%d, y=%d, *w=%c\n",*x,y,*w); } : Linija 4: Unutar funk. main num1=10, num2=15, ch=A Linija 13: Unutar funJedan a=11, *b=30, v=B Linija 6: Unutar funk. main num1=10, num2=30, ch=A Linija 17: Unutar funDva *x=31, y=50, *w=G Linija 8: Unutar funk. main num1=10, num2=31, ch=G

    1 () main. Ta ( ).

    3 1 ( ):

  • 14

    10

    15

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    1 4

    Linija 4: Unutar funk. main num1=10, num2=15, ch=A 5 funJedan. funJedan int a, int *b, char v int jedan. . , b, b . . 5 2.

    10

    15

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    10

    1430

    A

    .

    .

    .

    .

    .

    ime:

    ime: b

    ime: v

    ime: jedan ??

    funJedan

    .

    . 2

    9, jedan=a; 3.

  • 15

    10

    15

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    10

    1430

    A

    .

    .

    .

    .

    .

    ime:

    ime: b

    ime: v

    ime: jedan 10

    funJedan

    3 10 (++):

    10

    15

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    11

    1430

    A

    .

    .

    .

    .

    .

    ime:

    ime: b

    ime: v

    ime: jedan 10

    funJedan

    4

    *b=(*b)*2; 11

    10

    30

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    11

    1430

    A

    .

    .

    .

    .

    .

    ime:

    ime: b

    ime: v

    ime: jedan 10

    funJedan

    5

  • 16

    v='B' 12

    10

    30

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    11

    1430

    B

    .

    .

    .

    .

    .

    ime:

    ime: b

    ime: v

    ime: jedan 10

    funJedan

    6 13

    Linija 13: Unutar funJedan a=11, *b=30, v=B 13 funJedan 6 main . main! Me funJedan .

    10

    30

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    7 6

    Linija 6: Unutar funk. main num1=10, num2=30, ch=A 7 funDva. funDva : x, y w. x, w y . 14 :

  • 17

    10

    30

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    1430

    25

    1620

    .

    .

    .

    .

    .

    ime: x

    ime: y

    ime: w

    funDva

    8 14, (*x)++

    10

    31

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    1430

    25

    1620

    .

    .

    .

    .

    .

    ime: x

    ime: y

    ime: w

    funDva

    9 num2. 15 (y=y*2)

    10

    31

    A

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    1430

    50

    1620

    .

    .

    .

    .

    .

    ime: x

    ime: y

    ime: w

    funDva

    10

  • 18

    16 (*w='G')

    10

    31

    G

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    1430

    50

    1620

    .

    .

    .

    .

    .

    ime: x

    ime: y

    ime: w

    funDva

    11 17

    Linija 17: Unutar funDva *x=31, y=50, *w=G 17 j funDva 8 main. funDva . main

    10

    31

    G

    .

    .

    .

    .

    .

    .

    .

    .

    .

    main

    ime: num2

    ime: ch

    ime: num1

    adresa:1430

    adresa:1200

    adresa:1620

    12 8

    Linija 8: Unutar funk. main num1=10, num2=31, ch=G 8 .

  • 19

    . . . . , . , . , , , . .

    n n! : n! =n*(n-1)*(n-2)*(n-3)*...*1

    1! = 1 0! = 1

    : 5! = 5*4*3*2*1= 120

    broj for :

    faktorijel = 1; for(i=broj; i>=1; i--) { faktorijel *= i; /* faktorijel = faktorijel * i; */ } : :

    5! = 5*4*3*2*1= 5*(4*3*2*1) = 5*(4!) 4!= 4*3*2*1=4*(3*2*1) = 4*(3!) 3! = 3*2*1=3*(2*1) = 3*(2!) 2! = 2*1=2*(1) = 2*(1!) 1! = 1 ...

    long faktorijel(long broj) { /* ako je broj 0 ili 1, 0!=1 i 1!=1 */ if( broj

  • 20

    faktorijel(n), n 0 n 1) ( faktorijel(n-1)), , . n=1. faktorijel(4). To

    broj=4 je broj>1 return (4 * faktorijel(3));

    faktorijel(4)

    broj=3 je broj>1 return (3 * faktorijel(2));

    faktorijel(3)

    broj=2 je broj>1 return (2 * faktorijel(1));

    faktorijel(2)

    broj=1 je broj==1 return 1;

    faktorijel(1)return 1

    return 2*1

    return 3*2

    return 4*6

    faktorijel(4)) = 24

    13

  • 21

    , .

    ( ) ,

    () .

    , .

    () ( ) . . , . ".

    , .

    :

    float mojaFun(int x); main() { int a, b; float c ..