Programski jezik C -naredbe - University of Belgrade

28
Programski jezik C - naredbe

Transcript of Programski jezik C -naredbe - University of Belgrade

Page 1: Programski jezik C -naredbe - University of Belgrade

Programski jezik C - naredbe

Page 2: Programski jezik C -naredbe - University of Belgrade

Pregled naredbi (iskaza ) u C-u

Naredba izraza;

Složena naredba, blok (serijski komponovani iskaz)

Naredbe kontrole toka: Uslovne naredbe (if, switch)

Naredbe ponavljanja – petlje

Naredbe skoka

Teorema o struktuiranju (Bom-Jakopini)

2

Page 3: Programski jezik C -naredbe - University of Belgrade

Pregled naredbi u C-u

Naredba izraza:

izraz;

(i dodela, poziv funkcije)

Na primer:

3 + 4*5;

n = 3;

c++;

f();

3

Page 4: Programski jezik C -naredbe - University of Belgrade

Naredba dodele - semantika

Promena vrednosti

a = Ψ;

Izračunava vrednost izraza Ψ, transformiše je u tip promenljive a i dodeljuje je promenljivoj a.

S leve strane naredbe dodele mora biti promenljiva (adresa), tzv. l-vrednost.

4

Page 5: Programski jezik C -naredbe - University of Belgrade

Složena naredba (blok; serijskikomponovani iskaz)

Naredbe se dopisuju jedna na drugu:

{naredba1; naredba2; naredba3;

}

BLOK: može da sadrži i deklaracije, tj. oblika je

{

lista deklaracijalista naredbi}

5

Page 6: Programski jezik C -naredbe - University of Belgrade

Naredbe kontrole toka: uslovnanaredba

nepotpuni oblik

if( uslov )

naredba potpuni oblik

if( uslov )

naredbaelse

naredba naredba – pojedinačna naredba (završava se ;) ili

blok

6

Page 7: Programski jezik C -naredbe - University of Belgrade

Uslovna naredba

Kombinacije: potpuni, nepotpuni oblik if (izraz1)

if (izraz2)

naredba1

else

naredba2

if (izraz1){

if (izraz2)

naredba1

else

naredba2

} 7

Page 8: Programski jezik C -naredbe - University of Belgrade

Uslovna naredba

Kombinacije: potpuni, nepotpuni oblik

Alternativna interpretacija – obavezne zagrade:

if (izraz1) {

if (izraz2)

naredba1

}

else

naredba2

8

Page 9: Programski jezik C -naredbe - University of Belgrade

Naredba grananja i uslovni operator (operator uslova ? : )

Minimum dva broja

int x, y, min;

if( x < y )

min = x;

else

min = y;

Skraćeno: min = x < y ? x : y

9

Page 10: Programski jezik C -naredbe - University of Belgrade

Primeri

if (n != 0) je ekvivalentno sa if (n)

x=1;

if( x = 0 )

printf("x je jednako 0\n");

else

printf(“x nije jednako 0\n");

10

Page 11: Programski jezik C -naredbe - University of Belgrade

Konstrukcija else-if

if (izraz)

naredba

else if (izraz)

naredba

else if (izraz)

naredba

else

naredba

11

Page 12: Programski jezik C -naredbe - University of Belgrade

Složeno grananje: switch

Ako x uzima više vrednosti, onda se može koristiti switch-naredba, npr.

switch (x){

case 0: printf("nula"); break;

case 1: printf("jedan"); break;

case 2: printf("dva"); break;

...

case 9: printf("devet"); break;

default: printf("greska"); }

Uloga naredbaa break! Ako x = 0, bez break:

nulajedandva...

12

Page 13: Programski jezik C -naredbe - University of Belgrade

Iteracija (ponavljanje)- petlja, ciklus

Tri moguća oblika za izražavanje ponovljenog izračunavanja u C-u su:

petlja za (ključna reč for) – brojački ciklus

petlja sve dok - radi (while) – ciklus sa predproverom uslova

petlja radi - dok je (do-while) – ciklus sa postproverom uslova

13

Page 14: Programski jezik C -naredbe - University of Belgrade

Petlja for

Sintaksa:

for(izraz1; izraz2; izraz3)

naredba

for(inicijalizacija; uslov; korak)

naredba

Značenje: izvršava se

inicijalizacija (izraz1),

ispitivanje uslova (izraz2), naredba, korak(izraz3)

(ispitivanje uslova, naredba, korak) ...

naredba – pojedinačna; ili blok14

Page 15: Programski jezik C -naredbe - University of Belgrade

Petlja for - primer

Zbir prvih n prirodnih brojeva:

s = 0;

for(i = 1; i <= n; i++ ) s = s + i;

for( s = 0, i = 1; i <= n; i++ )

s = s + i;

for( s = 0, i = 1; i <= n; s = s + i, i++ );

Za n=3:

s=0 i=1, s=1 i=2, s=3 i=3, s=6 i=4

15

Page 16: Programski jezik C -naredbe - University of Belgrade

Petlja for

for(; ;)…; - beskonačna petlja

16

Page 17: Programski jezik C -naredbe - University of Belgrade

Dvostruka for petlje

#include<stdio.h>

int main() {

int i, j, n=3;

for(i = 1; i <= n; i++) {

for(j = 1; j <= n; j++)

printf("%i * %i = %i\t", i, j, i*j);

printf("\n");

}

return 0;

}

1 * 1 = 1 1 * 2 = 2 1 * 3 = 3

2 * 1 = 2 2 * 2 = 4 2 * 3 = 6

3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 17

Page 18: Programski jezik C -naredbe - University of Belgrade

Petlja while

Sintaksa

while( uslov ) naredba

Naredba – jedna naredba sa „ ; “ ili blok

Značenje

Ispitati da li je uslov ispunjen (nije 0) pre nego što se izvrši naredba.

Ako je uslov ispunjen, izvršiti naredbu i ponoviti ispitivanje uslova;

Inače, završiti sa izvršavanjem.

Naredba se ne mora izvršiti nijednom.

18

Page 19: Programski jezik C -naredbe - University of Belgrade

Petlja while - primer

Množenje uzastopnim dodavanjem#include<stdio.h>

int main() {

int x=3, y=5, z, u;

z=0;

u=x;

while (u>0) {

z=z+y;

u=u-1;

}

printf("%i * %i = %i\t", x, y, z);

return 0;

} 19

Page 20: Programski jezik C -naredbe - University of Belgrade

Petlja while

while (1) {

...

}

20

Page 21: Programski jezik C -naredbe - University of Belgrade

Petlja do - while

Sintaksa

do {

lista naredbi

} while( uslov );

Značenje

Ispitati da li važi uslov pošto se izvrši lista naredbi.

Lista naredbi se izvršava bar jednom!

21

Page 22: Programski jezik C -naredbe - University of Belgrade

Razlika između while i do-while

while( i <= n ) i = i + 1;

Ako je i <= n pre izvršavanja while, posle izvršavanja će biti

i = n + 1.

Ako je i > n, posle izvršavanja i očuvava svoju vrednost.

do { i = i + 1; } while( i <= n );

Ako i <= n pre izvršavanja, posle će biti i = n + 1.

Ako je i > n pre izvršavanja, posle će vrednost i biti uvećana za 1!

22

Page 23: Programski jezik C -naredbe - University of Belgrade

Odnos while i do-while

while (p) S

if(p)

do {

S

} while(p);

do { S1; S2; … Sk;} while(p)

S1; S2; … Sk;

while(p) {S1; S2; … Sk;}

{ t=1;

while (t||p) {S1; S2; … Sk; t=0;} 23

Page 24: Programski jezik C -naredbe - University of Belgrade

Odnos for i while

for (izraz1; izraz2; izraz3)

naredba

(naredba: jedna naredba; ili blok}

izraz1;

while (izraz2) {

naredba

izraz3;

}

(naredba: jedna naredba; ili blok bez {} )

24

Page 25: Programski jezik C -naredbe - University of Belgrade

Prekidanje iteracije

continue

izaziva prelaz na sledeći korak (iteraciju)

Primer:for(i = 0; i < n; i++) {

if (i % 10 == 0)

continue; /* preskoci brojeve deljive sa 10 */

...

}

25

Page 26: Programski jezik C -naredbe - University of Belgrade

Prekidanje petlje

break

izaziva prekid petlje ili grananja

Primer:

for(i = 1; i < n; i++) {

if(i > 10)

break;

...

}

26

Page 27: Programski jezik C -naredbe - University of Belgrade

Break / continue: dvostruka petlja

#include<stdio.h>

int main() {

int i, j;

for (i = 0; i < 3; i++)

for (j = 0; j < 3; j++) {

if (i + j > 2) break;

printf("%d %d ", i, j);

}

return 0;

}

0 0 0 1 0 2 1 0 1 1 2 0

27

Page 28: Programski jezik C -naredbe - University of Belgrade

Bezuslovno grananje

Sintaksa

goto etiketa;

......

etiketa: naredba;

Prenos izračunavanja na tačku programa obeleženu etiketom.

Etiketa mora biti unutar funkcije u kojoj je definisana. Nema skoka iz jedne funkcije u drugu.

28