Programski jezik C -naredbe - University of Belgrade
Transcript of Programski jezik C -naredbe - University of Belgrade
Programski jezik C - naredbe
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
Pregled naredbi u C-u
Naredba izraza:
izraz;
(i dodela, poziv funkcije)
Na primer:
3 + 4*5;
n = 3;
c++;
f();
3
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
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
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
Uslovna naredba
Kombinacije: potpuni, nepotpuni oblik if (izraz1)
if (izraz2)
naredba1
else
naredba2
≡
if (izraz1){
if (izraz2)
naredba1
else
naredba2
} 7
Uslovna naredba
Kombinacije: potpuni, nepotpuni oblik
Alternativna interpretacija – obavezne zagrade:
if (izraz1) {
if (izraz2)
naredba1
}
else
naredba2
8
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
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
Konstrukcija else-if
if (izraz)
naredba
else if (izraz)
naredba
else if (izraz)
naredba
else
naredba
11
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
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
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
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
Petlja for
for(; ;)…; - beskonačna petlja
16
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
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
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
Petlja while
while (1) {
...
}
20
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
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
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
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
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
Prekidanje petlje
break
izaziva prekid petlje ili grananja
Primer:
for(i = 1; i < n; i++) {
if(i > 10)
break;
...
}
26
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
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