You are on page 1of 16

Komande za kontrolu toka izvravanja programa

Java komande se izvravaju u redosledu u kojem su napisane - odozgo na dole. Meutim, u nekim
situacijama je poeljno izvriti neke komande samo ako je neki odreeni uslov ispunjen. Druge
situacije zatevaju da se odreena komanda ponovi ve!i "roj puta. # ovim situacijama je potre"no
kontrolisati tok izvravanja programa. Java nared"e koje to omogu!avaju se dele u dve grupe$
%ared"e za uslovno grananje &'( i )*'+,- nared"e.
%ared"e za cikli/no ponavljanje &(01, *-'23 i D0-*-'23 nared"e..
IF naredba
4rogrameri se /esto susre!u sa situacijama u kojima je potre"no proveriti neki uslov, pa u zavisnosti
od njegove ispunjenosti, uraditi jednu stvar ili drugu. %a primer, potre"no je proveriti da li je uneta
visina u okviru granica 56 - 786 cm, pa ako je visina van granica ispisati poruku o greci. 0vo se
moe posti!i kori!enjem '( nared"e. Deklaracija '( nared"e se vri na slede!i na/in$
if ( ...uslov... ) komanda_1;
Deklaracija po/inje rezervisanom re/i i9 &mala slova.. 4osle toga, pie se logi/ki uslov koji se
proverava. 4osle logi/kog uslova se navodi komanda koja se izvrava ako je uslov ispunjen
(komanda_1).
#slov koji se pie izmeu zagrada u okviru '( nared"e predstavlja neki logi/ki izraz koji se moe
proveriti i svesti na ta/an &true. ili neta/an &9alse.. # najjednostavnijem slu/aju, taj izraz moe da
predstavlja proveru da li je neki "roj ve!i, manji ili jednak nekom drugom "roju. 0peratori za
poreenje vrednosti su dati u slede!oj ta"eli.
Operatori za poreenje vrednosti
Operator Opis Primeri
: ;e!e od a : "
< : 7
= Manje od a = "
< = 7
:> ;e!e ili jednako a :> "
< :> ?@A.A
=> Manje ili jednako a => "
< => ?@
>> Jednako &pie se kao dva znaka jednakosti
jedan pored drugog.
a >> "
< >> 8A.77
B> 1azli/ito a B> "
< B> ?
0peratori za poreenje vrednosti se mogu koristiti iskljuivo sa prostim tipovima podataka, jer
?
ne 9unkcioniu u onim situacijama kada je potre"no uporediti dva o"jekta. )tring, ,alendar i svi
drugi o"jekti se porede na drugi na/in, a ne preko operatora za poreenje vrednosti. Cko "i se
pokualo poreenje dva o"jekta preko operatora >>, poredile bi se adrese objekata u memoriji
a ne sadraj njihovih atributa.
4otre"no je napomenuti i da operatori = i == nisu isti. # prvom slu/aju, u pitanju je operator
dodeljivanja vrednosti &levoj strani se dodeljuje vrednost sa desne strane., dok je u drugom slu/aju
u pitanju operator poreenja jednakosti &poredi se da li su leva i desna stana jednake.. Cko se
umesto jednog napie drugi, Java javlja greku. %ovi programeri /esto gree i meaju ova dva
operatora, pa je potre"no o"ratiti panju pri pisanju logi/ki uslova.
Primer 1
Napraviti klasu ProveraCelihBrojeva koja ima:
Metodu proveriZnak koja proverava da li je broj, koji se prosleuje kao ulazni parametar
pozitivan, negativan ili nula i ispisuje poruku o tome na ekranu u formi Broj ## je ##.
Metodu proveriVeceManjeJednako koja prima dva broja i B kao ulazne parametre i
proverava da li je ! B, " B ili # B i ispisuje odgovaraju$u poruku o tome na ekranu.
class ProveraCelihBrojeva {
void proveriZnak (int a){

if (a == 0) Ss!em.out.prin!ln("Broj "#a#" je jednak nuli");

if (a $ 0) Ss!em.out.prin!ln("Broj "#a#" je ve%i od nule");

if (a & 0) Ss!em.out.prin!ln("Broj "#a#" je manji od nule");
'

void proveri(e%e)anje*ednako (int a+ int ,){
if (a $ ,)
Ss!em.out.prin!ln("Broj "#a#" je ve%i od ,roja "#,);

if (a == ,)
Ss!em.out.prin!ln("Broj "#a#" je jednak ,roju "#,);

if (a & ,)
Ss!em.out.prin!ln("Broj "#a#" je manji od ,roja "#,);
'
'
Metoda %rovera&eli'Brojeva kao ulazni parametar dobija broj, provarava da li je jednak nuli,
manji od nule ili ve(i od nule i ispisuje poruku o tome na ekranu. %rovera se vr)i uz pomo( tri
nezavisne *+ naredbe. ,slov koji se proverava u okviru prve naredbe je da li je broj jednak nuli.
ko jeste, izvr)i(e se komanda koja se nalazi u produ-etku tj. ispisa(e se na ekranu poruka da je
broj jednak nuli. ko uslov nije ispunjen. tj ako broj nije jednak nuli, ne(e se izvr)iti ispis na
ekranu. .li/no va-i i za naredne dve *+ naredbe, samo )to one proveravaju da li je broj ve(i od nule
7
ili manji od nule.
Metoda proveri0e$eManje1ednako isto ima tri *+ naredbe, ali se u okviru nji' proverava da li je
ulazni parametar ve(i, jednak ili manji od ulaznog parametra B.
# pretodnom primeru je prikazan i princip da se Java komande mogu pisati u vie redova. Drugim
re/ima, '( komanda se moe napisati i ovako$
if ( ...uslov... )
komanda_1;
0vo je korisno u situacijama kada je uslov ili komanda koja ga sledi prili/no duga/ka pa ne moe
da stane u jedan red na ekranu, ili ne moe da se vidi u celosti "ez pomeranja teksta.
'( nared"a moe da ima i else deo (ali ne mora). 4osle rezervisane re/i else se pie komanda
koja se izvrava samo ako uslov nije ispunjen (komanda_). Deklaracija '( nared"e koja ima i
else glasi$
if ( ...uslov... ) komanda_1;
else komanda_-;
Primer 2
2opuniti klasu ProveraCelihBrojeva tako da ima i:
Metodu razlicito koja prima dva broja kao ulazne parametre i vra(a 34,5 ako su brojevi
razli/iti a ina/e +6.5.
Metodu proveriParnost koja prima $eo broj kao ulazni parametar i proverava da li je paran
ili neparan. Metoda vra(a 34,5 ako je paran, a +6.5 ako je neparan.
Napraviti klasu TestProveraCelihBrojeva koja kreira jedan objekat klase %rovera&eli'Brojeva i
koristi njene metode.
7od ove dve metode je slede(i:
boolean ra.li%i!o (int a+ int ,){
if (a /= ,) return true;
else return false;
'
boolean proveriParnos! (int a){
if ((a0-) == 0) return true;
else return false;
'
7od klase 3est%rovera&eli'Brojeva je slede(i:
class 1es!ProveraCelihBrojeva {
public static void main(S!rin234 ar2s) {
ProveraCelihBrojeva p = new ProveraCelihBrojeva();
@
p.proveriZnak(51-);
p.proveri(e%e)anje*ednako(1-6+ 789);
boolean ra.li%i!i = p.ra.li%i!o(1-+ 16);
if (ra.li%i!i)
Ss!em.out.prin!ln("Brojevi su ra.li%i!i");
else
Ss!em.out.prin!ln("Brojevi su jednaki");
boolean paran = p.proveriParnos!(66);
if (paran)
Ss!em.out.prin!ln("Broj 66 je paran");
else
Ss!em.out.prin!ln("Broj 66 je neparan");
'
'
, metodi provera%arnosti je prikazano kako se proverava da li je broj paran ili neparan. ko je
ostatak pri deljenju brojem dva jednak nuli, broj je paran, a ina/e je neparan.
Dosadanji primeri o"uvataju one slu/ajeve u kojima je posle provere uslova '( nared"e potre"no
izvriti samo jednu komandu. # slu/aju kada je potre"no izvriti vie nared"i posle provere uslova,
nared"e se moraju uokviriti u blok naredbi viti/astim zagradama$
if ( ...uslov... ) {
komanda_1;
komanda_-;
...
komanda_n;
'
else {
komanda_1_1;
komanda_1_-;
...
komanda_1_m;
'
Primer
Napraviti klasu Provera!ealnihBrojeva tako da ima:
Metodu manjiOdPi koja prima realan broj kao ulazni parametar i vra(a 34,5 ako je
brojev manji od 8.9:9;<= a ina/e +6.5. , oba slu/aja, trebalo bi ispisati poruku na
ekranu o tome da li je broj manji od pi ili nije.
class Provera:ealnihBrojeva {
boolean manji;dPi(double <){
if (< & 6.1718=-) {
Ss!em.out.prin!ln("Broj "#<#" je manji od pi");
return true;
8
'
else {
Ss!em.out.prin!ln("Broj "#<#" je ve%i ili jednak pi");
return false;
'
'
'
Metoda manji>d%i sadr-i *+ naredbu koja pokre(e dve naredbe ako je uslov ispunjen i druge dve
ako nije. >ve naredbe su morale da budu uokvirene u blok naredbi kori)(enjem viti/asti' zagrada.
4retodni primer ukazuje i na jo jednu pojavu. 4ored toga to se return nared"om vra!a neka
vrednost, vri se i momentalno prekidanje daljeg izvravanja metode. Drugim re/ima, svaki put
kada se return komanda izvri! metoda se prekida i sve komande koje su napisane posle
(ispod) ove komande se ne izvravaju. D"og toga, tre"alo "i o"ratiti panju na to da je return
komanda poslednja u "loku nared"i.
#slov koji se proverava u okviru '( komande moe da "ude i sloen tj. da se sastoji iz vie prostiji
uslova. (ormiranje sloeniji uslova se vri kori!enjem logikih operatora ' &C%D., '2' &01. i
%3 &%0+. /ija speci9ikacija je data u slede!oj ta"eli.
Operatori za poreenje vrednosti
Operator Opis Primeri
EE ' &C%D. & &a : 7. EE &a = A. .
a mora da "ude ve!e od 7 i manje od A
da "i ceo uslov "io ta/an &true.
FF '2' &01. & &< = 6. FF &< : @@.@. .
< mora da "ude manje od 6 ili ve!e od
@@.@ da "i ceo uslov "io ta/an
B %3 &%0+. & B &a : ". .
a ne sme da "ude ve!e od " da "i ceo
uslov "io ta/an
Primer "
2opuniti klasu Provera!ealnihBrojeva tako da ima i:
Metodu koja proverava da li je ulazni parametar ?realan broj@ u rasponu od 9AA do =AA
uklju/uju(i i te vrednosti. ko jeste, metoda vra(a 34,5 a ina/e +6.5.
Metodu koja proverava da li je ulazni parametar ?realan broj@ manji od nule ili ve(i od
88.8. ko va-i bilo koji od ova dva uslova, metoda vra(a 34,5 a ina/e +6.5. , oba
slu/aja je potrebno ispisati i odgovaraju(e obave)tenje na ekranu.
7od tra-eni' metoda je:
boolean provera:aspona1 (double a){
if ((a $=100) >> (a &=-00))return true;
else return false;
A
'

boolean provera:aspona- (double a){
if ((a & 0) ?? (a $ 66.6)) {
Ss!em.out.prin!ln("Broj "#a#
" manji od nule ili ve%i od 66.6");
return true;
'
else {
Ss!em.out.prin!ln("Broj "#a#
" je u rasponu 0 5 66.6");
return false;
'
'
# dosadanjim primerima su prikazane neke metode koje sadre vie '( nared"i koje su meuso"no
nezavisne - napisane su kao odvojene nared"e. Meutim, u nekim situacijama se trai da se posle
provere jednog uslova provere i jo neki uslovi ali samo ako je prvi uslov zadovoljen. 1eenje
ovakvi pro"lema podrazumeva pisanje tzv. ugnjedenih naredbi, konkretno - ugnjedeni '(
nared"i$
if ( ...uslov 1... ) if ( ...uslov -... ) komanda_1_1;
else komanda_-_1;
else if ( ...uslov 6... ) komanda_1_-;
else komanda_-_-;
'z deklaracije se moe videti da se umesto o"i/ni komandi koje slede uslov i else deo '(
nared"e, koriste nove '( nared"e. +ako !e da se proveri uslov 7 tek ako je zadovoljen uslov ?.
Cko i uslov ? i uslov 7 vae, izvri!e se komandaG?G?, a ako vai uslov ? a ne vai uslov
7 izvri!e se komandaG7G?. )li/no tome, ako ne vai uslov ?, proveri!e se uslov @ pa, ako
on "ude vaio, izvri!e se komandaG?G7, a u suprotnom komandaG7G7. '( nared"e se mogu
ugnjedavati i stavljati u "lok nared"i zajedno sa drugim nared"ama tako da je i slede!a situacija
/esta$
if ( ...uslov... ) {
komanda_1;
komanda_-;
if ( ...uslov -... ) komanda_1_1;
else komanda_-_1;
...
komanda_n;
'
else {
if ( ...uslov 6... ) komanda_1_-;
else komanda_-_-;
komanda_6_1;
komanda_6_-;
...
komanda_6_m;
'
H
Primer #
Napraviti klasu Visinske$%tarosne&r'pe tako da ima:
Metodu proveri0isinu koja, kao ulazni parametar prima visinu neke osobe u santimetrima
?realan broj@ i ispisuje na ekranu da li ta osoba pripada niskim osobama ?manje od ili
jednako 9;B$m@, srednje visokim osobama ?vi)e od 9;B $m, manje ili jednako 9C<$m@ ili
visokim osobama ?vi)e od 9C< $m@. ko je uneta visina van grani$a ?9=AD=:A$m@, na ekranu
je potrebno ispisati samo poruku o gre)$i.
Metodu proveri.tarosno2oba koja kao ulazni parametar dobija starost osobe izra-enu u
godinama. Metoda prvo proverava da li je uneta starost u grani$ama A D 9=A godina. ko
nije, ispisuje se poruka o gre)$i na ekranu. ko jeste, potrebno je proveriti da li je osoba
mlada ?AD8A godina@, srednjeg doba ?89D;; godina@ ili stara ?;E godina i vi)e@ i ispisati
poruku o tome na ekranu.
Napraviti klasu TestVisinske$%tarosne&r'pe koja kreira jedan o"jekat klase
;isinske')tarosneIrupe i poziva njegove metode.
class (isinske@S!arosneArupe {
void proveri(isinu(double visina){
if ((visina & 1-0) ?? (visina $ -70))
Ss!em.out.prin!ln("(isina je van 2rani%a");
else{
if (visina &= 18B)
Ss!em.out.prin!ln(";so,a je niska");
if ( (visina $ 18B) >> (visina &= 1C=))
Ss!em.out.prin!ln(";so,a je srednje visine");
if (visina $ 1C=)
Ss!em.out.prin!ln(";so,a je visoka");
'
'
void proveriS!arosnoDo,a (int s!aros!){
if ((s!aros! & 0) ?? (s!aros! $ 1-0))
Ss!em.out.prin!ln("Ene!a s!aros! je van 2rani%a");
else{
if (s!aros! &= 60)
Ss!em.out.prin!ln(";so,a je mlada");
if ( (s!aros! $ 60) >> (s!aros! &= 88))
Ss!em.out.prin!ln(";so,a je srednje2 do,a");
if (s!aros! $ 88)
Ss!em.out.prin!ln(";so,a je s!ara");
'
'
'
class 1es!(isinske@S!arosneArupe {
public static void main(S!rin234 ar2s) {
(isinske@S!arosneArupe vs2 = new (isinske@S!arosneArupe();
vs2.proveriS!arosnoDo,a(8);
vs2.proveriS!arosnoDo,a(68);
vs2.proveriS!arosnoDo,a(89);
J
vs2.proveri(isinu(178);
vs2.proveri(isinu(1B8);
vs2.proveri(isinu(1C8);
'
'
'( nared"a se /esto koristi kada je potre"no proveriti da li je neka ulazna vrednost u okviru zadati
granica za neki atri"ut ili promenljivu &npr. da li je visina u okviru granica ?76-786cm.. 0vaj
postupak provere ulazni vrednosti se /esto zove logika kontrola ulaznih podataka.
Zadaci
"adatak 1
%apraviti klasu #elevizor. 0va klasa "i tre"alo da ima$
Ctri"ut ja$ina#ona koji je ceo "roj i ozna/ava trenutnu ja/inu tona na televizoru. 4o/etna vrednost ovog
atri"uta je 6 &ton je utian do kraja..
Ctri"ut trenutni%rogram koji ozna/ava "roj programa koji je trenutno na televizoru &npr. uklju/en je program
A.. 4o/etna vrednost ovog atri"uta je ?.
Ctri"ut uklju$en koji ozna/ava da li je televizor uklju/en ili nije &ako je uklju/en ima vrednost +1#3, a ina/e
(C2)3.. )matra se da je na po/etku televizor isklju/en.
Metodu ukljui koja uklju/uje televizor ako je isklju/en &postavlja vrednost atri"uta ukljucen na +1#3.. Cko
je televizor ve! uklju/en, onda ispisuje poruku +elevizor je vec ukljucen.
Metodu iskljui koja isklju/uje televizor ako je isklju/en &postavlja vrednost atri"uta ukljucen na (C2)3..
Cko je televizor ve! isklju/en, ispisuje poruku +elevizor je vec iskljucen.
Metodu poja$aj#on koja povecava vrednost atri"uta jacina+ona za jedan pod uslovom da maksimalna
vrednost tona nije postignuta &ona iznosi ?6.. Cko jeste, ispisuje se poruka +on je vec na maksimumu.
Metodu smanji#on koja smanjuje vrednost atri"uta jacina+ona za jedan pod uslovom da ton nije ve! na nuli.
Cko jeste, potre"no je ispisati poruku +on je vec na minimumu.
Metodu promeni%rogram&avise koja pove!ava vrednost atri"uta trenutni4rogram za jedan pod uslovom da
trenutno nije ukljucen KK-ti program. Cko jeste, onda se program podesava na prvi &televizor ima ukupno KK
programa pa se sa KK-tog programa direktno prelazi na ?...
Metodu promeni%rogram&anize koja smanjuje vrednost atri"uta trenutni4rogram za jedan pod uslovom da
trenutno nije ukljucen ?. program. Cko jeste, onda se program podesava na KK-ti.
Metodu ispisi%arametre koja, ako je televizor ukljucen, ispisuje podatke o trenutnom programu i jacini tona, a
ako je televizor iskljucen, samo ispisuje poruku +elevizor je iskljucen.
%apraviti klasu #est#elevizor koja kreira jedan o"jekat klase +elevizor7 i poziva neke od njegovi metoda. 4osle
svakog poziva metode, pozvati metodu ispisi4arametre i uo/iti promene u vrednostima atri"uta.
'eenje(
class 1elevi.or- {
int ja%ina1ona = 0;
int !renu!niPro2ram = 1;
boolean uklju%en = false;
void uklju%i() {
if (uklju%en == false)
uklju%en = true;
else
Ss!em.out.prin!ln("1elevi.or je ve% uklju%en");
'
5
void isklju%i() {
if (uklju%en == true)
uklju%en = false;
else
Ss!em.out.prin!ln("1elevi.or je ve% isklju%en");
'
void poja%aj1on() {
if (ja%ina1ona & 10)
ja%ina1ona = ja%ina1ona # 1;
else
Ss!em.out.prin!ln("1on je ve% na maksimumu");
'
void smanji1on() {
if (ja%ina1ona $ 0)
ja%ina1ona = ja%ina1ona 5 1;
else
Ss!em.out.prin!ln("1on je ve% na minimumu");
'
void promeniPro2ramFavise() {
if (!renu!niPro2ram & ==)
!renu!niPro2ram = !renu!niPro2ram # 1;
else
!renu!niPro2ram = 1;
'
void promeniPro2ramFani.e() {
if (!renu!niPro2ram $ 1)
!renu!niPro2ram = !renu!niPro2ram 5 1;
else
!renu!niPro2ram = ==;
'
void ispisiParame!re() {
if (uklju%en) {
Ss!em.out.prin!ln("*a%ina !ona je " # ja%ina1ona);
Ss!em.out.prin!ln("1renu!ni pro2ram je " # !renu!niPro2ram);
Ss!em.out.prin!ln("1elevi.or je uklju%en");
' else
Ss!em.out.prin!ln("1elevi.or je isklju%en");
'
'
class 1es!1elevi.or- {
public static void main(S!rin234 ar2s){
1elevi.or- ! = new 1elevi.or-();
!.ispisiParame!re();
!.uklju%i();
!.ispisiParame!re();
!.poja%aj1on();
K
!.ispisiParame!re();
!.promeniPro2ramFani.e();
!.ispisiParame!re();
'
'
"adatak
%apraviti klasu 'adio. 0va klasa "i tre"alo da ima$
Ctri"ut )m*rekven$ija koji ozna/ava trenutnu (M radio 9rekvenciju koju radio puta &npr. ?67.7 ili 5J.A..
4o/etna vrednost ovog polja je 5J.A.
Ctri"ut am*rekven$ija koji ozna/ava trenutnu CM radio 9rekvenciju koju radio puta &npr. AHJ ili ?A66..
4o/etna vrednost ovog parametra je AHJ.
Ctri"ut band koji ima vrednost LCL &slovo C. ako radio puta CM 9rekvenciju ili L(L &slovo (. ako radio puta
(M 9rekvenciju. 4o/etna vrednost ovog parametra je L(L.
Metodu podesi*+*rekven$iju koja prima kao ulazni parametar novu (M 9rekvenciju i podeava vrednost
atri"uta 9m(rekvencija na nju pod uslovom da je 9rekvencija u opsegu izmeu 5J.A i ?65.6. Cko je 9rekvencija
manja od 5J.A ili ve!a od ?65.6 ispisuje se poruka o greci.
Metodu podesi,+*rekven$iju koja prima kao ulazni parametar novu CM 9rekvenciju i podeava vrednost
atri"uta am(rekvencija na nju pod uslovom da je da je 9rekvencija u opsegu izmeu AHJ i ?AJH. Cko je
9rekvencija manja od AHJ ili ve!a od ?AJH ispisuje se poruka o greci.
Metodu promeni-and koja kao ulazni parametar prima slovo i menja vrednost atri"uta "and na to slovo.
4otre"no je da ulazni paramtar ima vrednost LCL ili L(L. Cko nema, ne vri se promena vrednosti atri"uta "and
ve! se ispisuje poruka o greci.
Metodu ispisi%arametre koja, ako radio puta CM 9rekvenciju, ispisuje poruku 1adio puta CM
9rekvenciju$ i trenutnu CM 9rekvenciju a ako radio puta (M 9rekvenciju ispisuje 1adio puta (M
9rekvenciju$ i trenutnu (M 9rekvenciju.
%apraviti klasu #est'adio koja kreira dva o"jekta klase 1adio7. 4odesiti prvi radio da radi na CM 9rekvenciji AJ6.
4odesiti drugi radio da radi na (M 9rekvenciji ?6J.K. 'spisati parametre o"a radija.
'eenje(
class :adio- {
double GmHrekven%ija = BC.8;
int amHrekven%ija = 89C;
char ,and = IHI;
void podesiH)Hrekven%iju (double GmHrekven%ija){
if ((GmHrekven%ija $= BC.8) >> (GmHrekven%ija &= 10B.0))
this.GmHrekven%ija = GmHrekven%ija;
else Ss!em.out.prin!ln(
"Areska/ H) Grekven%ija mora da ,ude u opse2u BC.8510B )J.");
'
void podesiK)Hrekven%iju (int amHrekven%ija){
if ((amHrekven%ija $= 89C) >> (amHrekven%ija &= 18C9))
this.amHrekven%ija = amHrekven%ija;
else Ss!em.out.prin!ln(
"Areska/ K) Grekven%ija mora da ,ude u opse2u 89C518C9 LJ.");
'
void promeniBand (char ,){
if ((, == IKI) ?? (, == IHI)) ,and = ,;
else Ss!em.out.prin!ln("Areska/ Band mo.e samo da ima vrednos! K ili H");
?6
'
void ispisiParame!re (){
if (,and == IKI){
Ss!em.out.prin!ln (":adio pus!a K) Grekven%iju");
Ss!em.out.prin!ln ("1renu!na K) Grekven%ija je "#
amHrekven%ija);
'
else{
Ss!em.out.prin!ln (":adio pus!a H) Grekven%iju");
Ss!em.out.prin!ln ("1renu!na H) Grekven%ija je "#
GmHrekven%ija);
'
'
'
class 1es!:adio- {
public static void main(S!rin234 ar2s){
:adio- r1 = new :adio-();
:adio- r- = new :adio-();
r1.promeniBand(IKI);
r1.podesiK)Hrekven%iju(8C0);
r-.promeniBand(IHI);
r-.podesiH)Hrekven%iju(10C.=);
r1.ispisiParame!re();
r-.ispisiParame!re();
'
'
"adatak .
%apraviti klasu -+/0alkulator koja ima slede!e metode$
Metodu izra$unaj-+/ koja izra/unava i vraca MM' tj. "odN mass inde< na osnovu zadate visine u metrima
&realan "roj. i teine u kilogramima &realan "roj. i to po 9ormuli MM' > teinaO&visina.
7
&teina kroz visina na
kvarat.. 4re izra/unavanja je potre"no proveriti da li su visina i teina u okviru granica &?.76-7.86m i
@6-766kg.. Cko nisu, metoda ispisuje na ekranu poruku o greci i vra!a nulu.
Metodu ispisi-+/0ategoriju koja do"ija kao ulazni argument neku vrednost MM' &npr. 76,67. i ispisuje na
ekranu kategoriju u koju spada nosilac MM' u 9ormi ;a MM' je$ PP, vi pripadate grupi$ PPP.
4rimer ra/unanja MM'$ ;isina > ?.5J m,
+eina > ?66 kg,
MM' > ?66O&?.5J.Q7 > 75,AK
0ategorija -+/
Cnoreksija MM' => ?A
Mravost ?A = MM' => ?5.A
%ormalno ?5.A= MM'=> 7A
4opunjen 7A = MM'=> @6
De"eo @6 = MM'=> 86
Iojazan MM' : 86
%apraviti klasu %rovera-+/0alkulatora koja proverava rad klase MM'Ralkulator.
??
'eenje(
class B)@Lalkula!or {
double i.ra%unajB)@ (double visina+ double !e.ina){

if ((visina & 1.-) ?? (visina $ -.7)) {
Ss!em.out.prin!ln (
"AreskaM visina mora da ,ude i.medju 1.- i -.7 me!ra");
return 0;
'
if ((!e.ina & 60) ?? (!e.ina $ -00)) {
Ss!em.out.prin!ln ("AreskaM !e.ina mora da ,ude i.medju 60 i -00 k2");
return 0;
'

double re.ul!a! = (!e.ina N (visinaOvisina));
return re.ul!a!;
'

void ispisiB)@La!e2oriju (double ,mi){

if (,mi &= 18)
Ss!em.out.prin!ln("(as B)@ jeM "#,mi#" vi pripada!e 2rupiM anoreksi%ni");

if ((,mi $ 18) >> (,mi &= 1B.8))
Ss!em.out.prin!ln("(as B)@ jeM "#,mi#" vi pripada!e 2rupiM mrsavi");

if ((,mi $ 1B.8) >> (,mi &= -8))
Ss!em.out.prin!ln("(as B)@ jeM "#,mi#" vi pripada!e 2rupiM normalni");

if ((,mi $ -8) >> (,mi &= 60))
Ss!em.out.prin!ln("(as B)@ jeM "#,mi#" vi pripada!e 2rupiM popunjeni");
if ((,mi $ 60) >> (,mi &= 70))
Ss!em.out.prin!ln("(as B)@ jeM "#,mi#" vi pripada!e 2rupiM de,eli");
if (,mi $ 70)
Ss!em.out.prin!ln("(as B)@ jeM "#,mi#" vi pripada!e 2rupiM 2oja.ni");
'
'
"adatak 1
%apraviti klasu 0lima2redjaj. 0va klasa "i tre"alo da ima$
Ctri"ut trenutna#emperatura koji ozna/ava temperaturu u ,elzijusima na koju je klima podeena &ceo "roj S
npr. 7@.. 4o/etna vrednost ovog atri"uta je ?5 stepeni.
Ctri"ut rezim'ada koji ozna/ava da li klima greje, ladi ili radi automatski. Cko greje, ovaj atri"ut ima
vrednost LIL, ako ladi L-L a ako radi automatski onda LCL. # po/etku, klima je podeena na automatski reim
rada.
Metodu smanji#emperaturu koja smanjuje trenutnu temperaturu za jedan stepen samo ako je trenutna
temperatura via od ?5,. Cko nije, ispisati poruku o greci.
Metodu pove$aj#emperaturu koja povecava trenutnu temperaturu za jedan stepen samo ako je trenutna
temperatura manja od @6,. Cko nije, ispisati poruku o greci.
Metodu podesi#emperaturu koja kao ulazni parametar prima konkretnu vrednost temperature i postavlja
vrednost atri"uta trenutna+emperatura na nju samo pod uslovom da je ova vrednost u opsegu ?5-@6,. #
suprotnom ispisati poruku o greci.
Metodu promeni'ezim koja podeava vrednost atri"uta rezim1ada na ulaznu vrednost pod uslovom da ulazna
?7
vrednost "ude LCL, LIL ili L-L. Cko ulazna vrednost nije ni jedno od ova tri, ispisati poruku o greci.
Metodu ispisi%arametre koja ispisuje trenutna podeavanja klima ureaja u 9ormatu 1ezim rada$ PP,
+renutna temperatura je podesena na PP ,.
%apraviti klasu %rovera0lima2redjaja koja koristi dva o"jekta klase Rlima#redjaj. 4otre"no je prvu klimu podesiti
da greje na 7H , a drugu da ladi na ?5 ,. 'spisati parametre o"e klime na ekranu.
'eenje(
class LlimaEredjaj- {
int !renu!na1empera!ura = 1B;
char re.im:ada = IKI;
void smanji1empera!uru (){
if (!renu!na1empera!ura $ 1B) !renu!na1empera!ura55;
else
Ss!em.out.prin!ln("AreskaM !empera!ura se ne mo.e smanji!i ispod 1BC");
'
void pove%aj1empera!uru (){
if (!renu!na1empera!ura & 60) !renu!na1empera!ura##;
else
Ss!em.out.prin!ln("AreskaM !empera!ura se ne mo.e pove%a!i preko 60C");
'
void podesi1empera!uru (int !){
if ((!$=1B) >> (!&=60)) !renu!na1empera!ura = !;
else
Ss!em.out.prin!ln("AreskaM !empera!ura mora da ,ude u opse2u 1B560C");
'
void promeni:e.im (char r){
if ((r==IKI) ?? (r==IJI) ?? (r==IAI)) re.im:ada = r;
else
Ss!em.out.prin!ln("AreskaM re.im rada mora da ,ude K+ A ili J");
'
void ispisiParame!re(){
if (re.im:ada == IKI)
Ss!em.out.prin!ln (":e.im rada je au!oma!ski");
if (re.im:ada == IAI)
Ss!em.out.prin!ln (":e.im rada je 2rejanje");
if (re.im:ada == IJI)
Ss!em.out.prin!ln (":e.im rada je hladjenje");
Ss!em.out.prin!ln ("Llima je podesena na "#!renu!na1empera!ura#" C");
'
'
class ProveraLlimaEredjaja- {
public static void main (S!rin234 ar2s){
LlimaEredjaj- k1 = new LlimaEredjaj-();
LlimaEredjaj- k- = new LlimaEredjaj-();
k1.promeni:e.im(IAI);
?@
k1.podesi1empera!uru(-9);
k-.promeni:e.im(IJI);
k-.podesi1empera!uru(1B);
k1.ispisiParame!re();
k-.ispisiParame!re();
'
'
"adatak 3
%apraviti klasu ,utomobil. 0va klasa "i tre"alo da ima$
Ctri"ut model.
Ctri"ut marka
Ctri"ut ku"ikaza &ceo "roj. koji predstavlja ku"ikau motora izraenu u ku"nim santimetrima &ccm..
Ctri"ut snaga &ceo "roj. koji predstavlja "roj konjski snaga motora &R)..
%apraviti klasu #roskovi'egistra$ije koja ima
)tati/ku metodu o"racunajDoprinos koja kao ulazni parametar do"ija o"jekat klase Cutomo"il i vra!a iznos
doprinosa koji je potre"no platiti pri registraciji. +ari9e zavise od ku"ikae automo"ila i date su u slede!oj
ta"eli. 4re izra/unavanja, potre"no je proveriti da li je ku"ikaa u okviru granica &866-?6666 ku"ika., pa ako
nije, ispisati poruku o greci na ekranu i vratiti vrednost 6.
Ru"ikaa &ccm. ,ena &din.
k = ?666 ?8A.A
?666 => k = ?866 766.6
?866 => k = 7A66 7A6.6
7A66 => k 8?@.@
)tati/ku metodu o"racunaj0siguranje koja kao ulazni parametar do"ija o"jekat klase Cutomo"il i vra!a iznos
koji je potre"no platiti kao o"avezno osiguranje pri registraciji. +ari9e osiguranja zavise od snage motora i date
su u slede!oj ta"eli. 4re izra/unavanja, potre"no je proveriti da li je snaga u okviru granica &76-?666 R)., pa
ako nije, ispisati poruku o greci na ekranu i vratiti vrednost 6.
)naga &R). ,ena &din.
s = AA @666.6
AA => s = JA 8A66.6
JA => s = ?A6 J@66.6
?A6 => s K666.6
)tati/ku metodu ispisi)ve+roskove koja kao ulazni parametar do"ija o"jekat klase Cutomo"il i na ekranu
ispisuje sve trokove koje je potre"no platiti pri registraciji - i doprinose i osiguranje i to prema gore
navedenim tari9ama.
%apraviti klasu +est+roskovi1egistracije koja kreira o"jekat klase Cutomo"il i postavlja vrednosti njegovi atri"uta na
Mercedes, C ?J6, ?HK6 ku"ika, KA konjski snaga. 'spisati na ekranu vrednosti svi trokova registracije ovog
automo"ila. 4osle toga, izra/unati koliko iznose ukupni trokovi &sa"rati trokove za osiguranje i doprinose. i ispisati
rezultat na ekranu.
'eenje(
class Ku!omo,il {
S!rin2 marka;
S!rin2 model;
?8
int ku,ika.a;
int sna2a;
'
class 1roskovi:e2is!ra%ije {
static double o,ra%unajDoprinos(Ku!omo,il a){
if ((a.ku,ika.a & 700) ?? (a.ku,ika.a $ 10000)){
Ss!em.out.prin!ln("Lu,ika.a je van 2rani%a");
return 0;
'
else{
if (a.ku,ika.a & 1000) return 178.8;
if ((a.ku,ika.a $= 1000) >> (a.ku,ika.a & 1700))return -00;
if ((a.ku,ika.a $= 1700) >> (a.ku,ika.a & -800))return -80;
if (a.ku,ika.a $ -800) return 716.6;
NN;va poslednja re!urn komanda nema nikakvu Gunk%iju
NNali je morala ,i!i napisana da ,i *ava pro!uma%ila
NNda %e me!oda da vra!i neku vrednos! %ak iako se ne
NNi.vrsi nijedna @H nared,a.
return 0;
'
'
static double o,ra%unaj;si2uranje(Ku!omo,il a){
if ((a.sna2a & -0) ?? (a.sna2a $ 1000)){
Ss!em.out.prin!ln("Sna2a je van 2rani%a");
return 0;
'
else{
if (a.sna2a & 88) return 6000;
if ((a.sna2a $= 88) >> (a.sna2a & C8))return 7800;
if ((a.sna2a $= C8) >> (a.sna2a & 180))return C600;
if (a.sna2a $ 180) return =000;
NN;va poslednja re!urn komanda nema nikakvu Gunk%iju
NNali je morala ,i!i napisana da ,i *ava pro!uma%ila
NNda %e me!oda da vra!i neku vrednos! %ak iako se ne
NNi.vrsi nijedna @H nared,a.
return 0;
'
'
static void ispisiSve1roskove(Ku!omo,il a){
NNFema po!re,e da se ponovo pise kod .a i.ra%unavanje
NNdoprinosa i osi2uranja+ dovoljno je po.va!i me!ode
NNkoje ve% pos!oje u okviru klase i ispisa!i re.ul!a!
NNkoje vra!e.
double doprinos = obracunajDoprinos(a);
double osi2uranje = obracunajOsiguranje(a);
Ss!em.out.prin!ln("Doprinosi suM "#doprinos);
Ss!em.out.prin!ln(";si2uranje i.nosiM "#osi2uranje);
'
'
class 1es!1roskovi:e2is!ra%ije {
?A
public static void main(S!rin234 ar2s) {
Ku!omo,il au!o = new Ku!omo,il();
au!o.marka = ")er%edes";
au!o.model = "K 1C0";
au!o.ku,ika.a = 19=0;
au!o.sna2a = =8;
NN@spisivanje !roskova na ekranu. @spisa%e se !roskovi
NNdoprinosa i osi2uranja pose,no. ;va me!oda je s!a!i%ka
NNpa nije po!re,no ini%ijali.ova!i o,jeka! da ,i se po.vala.
1roskovi:e2is!ra%ije.ispisiSveTroskove(au!o);
double ukupno = 1roskovi:e2is!ra%ije.obracunajDoprinos(au!o) #
1roskovi:e2is!ra%ije.obracunajOsiguranje(au!o);
Ss!em.out.prin!ln("Ekupni !roskovi suM "#ukupno);
'
'
?H

You might also like