Professional Documents
Culture Documents
Pjisp Ee T2
Pjisp Ee T2
Operatori, selekcije i
repeticije
Operatori
Operatori radnje koje se izvravaju nad
operandima i proizvode rezultat
unarni, binarni, ternarni
Vrste operatora:
aritmetiki
relacioni
logiki
dodele vrednosti
adresni
bit-operatori
Operatori
Redosled izvravanja operatora
prvenstveno odreen upotrebnom oblih zagrada ( i )
zagrade se mogu ugnedavati do porizvoljne dubine
unutar zagrada, operatori se izvravaju prema
redosledu prioriteta
ako vie operatora u izrazu ima isti prioritet, izvrie se
sleva na desno ili sdesna na levo, u zavisnosti od
smera grupisanja operatora na tom nivou prioriteta
Broj operanada
Operatori
Smer grupisanja
15
[] () . ->
14
! ~ ++ -- + - *
& (tip) sizeof
13
* / %
12
+ -
11
<< >>
10
== !=
&
&&
||
?:
= += -= *= /= %=
&= ^= |= <<= >>=
Primer 1
/* Aritmeticke operacije */
#include <stdio.h>
int main()
{
int a = 5;
int b = 3;
printf("Zbir a+b je : %d\n",a+b);
printf("Razlika a-b je : %d\n",a-b);
printf("Proizvod a*b je : %d\n",a*b);
printf("Celobrojni kolicnik a/b je : %d\n", a/b);
printf("Pogresan pokusaj racunanja realnog kolicnika a/b je : %f\n", a/b);
printf("Realni kolicnik a/b je : %f\n", (float)a/(float)b);
printf("Ostatak pri deljenju a/b je : %d\n", a%b);
return 0;
}
zagrade ()
dodela vrednosti =
sabiranje +
oduzimanje mnoenje *
deljenje /
moduo %
inkrementacija (uveanje za 1) ++
dekrementacija (umanjenje za 1) - -
a=a+3
a=ab
a=a*c
/=, %=
a += 3
a = b
a *= c
a=a+1
b=b1
a += 1
b = 1
i = j++;
i = ++j;
i = j; j = j + 1;
j = j+1; i = j;
a++
b
++a
b
Zadatak 1
Napisati program koji od korisnika trai da
unese tri celobrojne vrednosti, a zatim ispisuje
njihov aritmetiku, harmonijsku, geometrijsku
i kvadratnu sredinu.
Iskazi selekcije
Omoguava da se odreene naredbe izvre
uslovno u zavisnosti od vrednosti odreenog
iskaza
Iskazi selekcije (grananje):
if
switch
If-else iskaz
if (izraz)
naredba1
else
naredba2
Ako je izraz taan, naredba1 se izvrava.
Ako je je izraz netaan, naredba2 se izvrava
U oba sluaja umesto naredbi moe se navesti blok
naredbi
Programski jezici i strukture podataka
Ternarni operator
condition ? expression1 : expression2
Funkcionie kao if-else
min = ( x < y ) ? x : y;
Zadatak 2
a) Napisati C program koji
ispisuje vei od dva cela broja.
...
if ( a > b ) printf(Veci je );
else printf(Veci je );
b) Napisati C program za
nalaenje najmanjeg od tri
cela broja.
Programski jezici i strukture podataka
START
a, b
a>b
DA
NE
END
switch iskaz
Viestruki uslovni iskaz
Slian if-else if-else konstrukciji
default:
naredbe
}
Primer 2
switch (ocena)
{
case 5:
case 4:
case 3:
case 2:
case 1:
default:
printf("Odlican!\n\n");
break;
printf("Vrlo dobar!\n\n");
break;
printf("Dobar!\n\n");
break;
printf("Dovoljan!\n\n");
break;
printf("Nedovoljan!\n\n");
break;
printf(Ocena mora biti izmedju 1 i 5.);
break
Kada se naie na break, blok naredbi se
naputa bez obzira na trenutnu vrednost
uslova.
Program nastavlja sa izvravanjem prve
naredbe iza bloka.
Ukoliko se pozove u ugnedenim blokovima,
break izlazi samo iz unutranjeg bloka.
Zadatak 3
Realizovati prethodni zadatak uz pomo if selekcije.
if (izraz) {
naredba1;
} else if (izraz2) {
naredba2;
} else if (izraz3) {
naredba3;
} else {
naredba4;
}
Programski jezici i strukture podataka
Zadatak 4
Napisati program kojim se za zadato x izraunava f(x) po
formuli:
Zadatak 5
Napisati program koji uitava vrednosti promenljivih a i b, a
zatim reava jednainu ax+b=0.
pokriti sve sluajeve za razliite kombinacije vrednosti a i b
Zadatak 6
Tri take su zadate koordinatama u ravni. Napisati program
kojim se izraunava povrina paralelograma iji su vrhovi date
take.
while ciklus
while (izraz) {
naredbe;
}
Primer 3
#include <stdio.h>
/* print Fahrenheit-Celsius table for fahr = 0, 20, ..., 300; floating-point version */
int 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 <= upper)
{
celsius = (5.0/9.0) * (fahr-32.0);
printf("%3.0f %6.1f\n", fahr, celsius);
fahr = fahr + step;
}
return 0;
}
for ciklus
Zadatak 7
Napisati C program koji rauna sumu prvih n
prirodnih brojeva, pri emu se n zadaje na
poetku programa.
Zadatak 8
Realizovati mnoenje i deljenje pomou
sabiranja i oduzimanja.
for i while
for( initialization; expression; increment )
statement
initialization;
while( expression )
{
statement
increment;
}
Programski jezici i strukture podataka
do - while ciklus
do {
naredbe
} while (izraz);
Slian while ciklusa
Uslov se izraunava nakon tela ciklusa
Telo ciklusa se izvrava NAJMANJE jednom, ak i
kada je uslov odmah netaan (jednak nuli)
Programski jezici i strukture podataka
do - while ciklus
int broj;
do {
printf(Unesite pozitivan ceo broj: );
scanf(%d, &broj);
} while ( broj <= 0 );
Zadatak 9
Napisati program kojim se za dato n
izraunava faktorijel priordnog broja n:
fakt = n! = 1*2*3*...*n.
Zadatak 10
Sa standardnog ulaza uitati prirodne brojeve
N i q. Koristei while ispisati sve brojeve od 2
do N koji su deljivi sa q.
Zadatak 11
Sa standardnog ulaza uitati prirodan broj N.
Ispisati sve njegove inioce.
Zadatak 12
Napisati program koji ispituje da li je dati
prirodan broj n prost. Broj je prost ako je deljiv
samo sa jedan i sa samim sobom.
Zadatak 13
Napisati program kojim se tampaju svi
trocifreni Armstrongovi brojevi. Broj je
Armstrongov ako je jednak zbiru kubova svojih
cifara.