You are on page 1of 33

Tema 2

Operatori, selekcije i
repeticije

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Operatori
Operatori radnje koje se izvravaju nad
operandima i proizvode rezultat
unarni, binarni, ternarni

Vrste operatora:

aritmetiki
relacioni
logiki
dodele vrednosti
adresni
bit-operatori

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Operatori prioritet i smer grupisanja


Prioritet

Broj operanada

Operatori

Smer grupisanja

15

[] () . ->

14

! ~ ++ -- + - *
& (tip) sizeof

13

* / %

12

+ -

11

<< >>

10

< <= > >=

== !=

&

&&

||

?:

= += -= *= /= %=
&= ^= |= <<= >>=

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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;
}

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Aritmetiki operatori i operatori dodele


vrednosti
Omoguavaju obavljanje odreene akcije (u naem sluaju
matematike operacije) nad odreenim vrednostima
(konstantama, varijablama).
Vrednosti nad kojima se obavlja akcija - operandi.
Uobiajeni operatori:

zagrade ()
dodela vrednosti =
sabiranje +
oduzimanje mnoenje *
deljenje /
moduo %
inkrementacija (uveanje za 1) ++
dekrementacija (umanjenje za 1) - -

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Aritmetiki operatori i operatori dodele


vrednosti

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;

Programski jezici i strukture podataka

a++
b

++a
b

Energetika, elektronika i telekomunikacije

Zadatak 1
Napisati program koji od korisnika trai da
unese tri celobrojne vrednosti, a zatim ispisuje
njihov aritmetiku, harmonijsku, geometrijsku
i kvadratnu sredinu.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Relacioni i logiki operatori

Logiki tano je sve razliito od 0 (pre svega 1)


Logiki netano je sve jednako sa 0
Relacioni: < > <= >= == !=
Logiki: && (I), || (ILI), ! (NE)

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Iskazi selekcije
Omoguava da se odreene naredbe izvre
uslovno u zavisnosti od vrednosti odreenog
iskaza
Iskazi selekcije (grananje):
if
switch

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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

Energetika, elektronika i telekomunikacije

Ternarni operator
condition ? expression1 : expression2
Funkcionie kao if-else
min = ( x < y ) ? x : y;

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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

Energetika, elektronika i telekomunikacije

switch iskaz
Viestruki uslovni iskaz
Slian if-else if-else konstrukciji

Omoguava izbor proizvoljnog broja opcija. Izbor je zasnovan


na celobrojnoj vrednosti.
switch (izraz)
{
case const-izraz:
naredbe
case const-izraz:
naredbe

default:
naredbe
}

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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.);

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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

Energetika, elektronika i telekomunikacije

Zadatak 4
Napisati program kojim se za zadato x izraunava f(x) po
formuli:

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Zadatak 6
Tri take su zadate koordinatama u ravni. Napisati program
kojim se izraunava povrina paralelograma iji su vrhovi date
take.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

while ciklus

while (izraz) {
naredbe;
}

Naredbe se izvravaju sve dok je izraz logiki


taan, kada to vie nije sluaj izlazi se iz petlje

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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;
}

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

for ciklus

For petlje se kontroliu brojakom


promenljivom.
Primer
for ( i=0; i<=50; i++) {
printf(%d\n, i);
}

Programski jezici i strukture podataka

i je kontrolna promenljiva broja.


i se inkrementira nakon
svake iteracije (moe se i
dekrementirati po
potrebi)
Energetika, elektronika i telekomunikacije

Zadatak 7
Napisati C program koji rauna sumu prvih n
prirodnih brojeva, pri emu se n zadaje na
poetku programa.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Zadatak 8
Realizovati mnoenje i deljenje pomou
sabiranja i oduzimanja.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

for i while
for( initialization; expression; increment )
statement

initialization;
while( expression )
{
statement
increment;
}
Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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

Energetika, elektronika i telekomunikacije

do - while ciklus
int broj;
do {
printf(Unesite pozitivan ceo broj: );
scanf(%d, &broj);
} while ( broj <= 0 );

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Zadatak 9
Napisati program kojim se za dato n
izraunava faktorijel priordnog broja n:
fakt = n! = 1*2*3*...*n.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Zadatak 11
Sa standardnog ulaza uitati prirodan broj N.
Ispisati sve njegove inioce.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

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.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

Zadatak 13
Napisati program kojim se tampaju svi
trocifreni Armstrongovi brojevi. Broj je
Armstrongov ako je jednak zbiru kubova svojih
cifara.

Programski jezici i strukture podataka

Energetika, elektronika i telekomunikacije

You might also like