JAVA PROGRAMIRANJE - GRANANJE U PROGRAMU
Sledeće
Petlje u Javi >| |
Video lekcije
Video 1: Grananje u programu
Logički podaci
To su podaci čija vrednost je rezultat nekog logičkog izraza i može imati dva stanja:
true-tačno
false-netačno
Za tip ovih podatka se koristi službena reč JAVA jezika boolean
true-tačno
false-netačno
Za tip ovih podatka se koristi službena reč JAVA jezika boolean
Logički podaci i izrazi
Logičke relacije tj. izrazi su izrazi koji su zapravo rezultati nekih poređenja, i koriste sledeće operatore:
<,>,<=,>=,!,!=,==
manje od”
“veće od”
“manje ili jednako”
“veće ili jednako”
“negacija”
“nije jednako”
“jednako”
<,>,<=,>=,!,!=,==
manje od”
“veće od”
“manje ili jednako”
“veće ili jednako”
“negacija”
“nije jednako”
“jednako”
Logički podaci i izrazi-primeri.
int a=10,b=8,c;
boolean d;
c=a+b; //celobrojni izraz
c=a>b; //netačno
d=a>b; //ispravno i iznosi // true
d=!(a>b); //false
boolean d;
c=a+b; //celobrojni izraz
c=a>b; //netačno
d=a>b; //ispravno i iznosi // true
d=!(a>b); //false
Logički podaci i složeniji izrazi
Da bi povezali više manjih logičkih izraza koristimo operatore:
“&&” – Logičko “i”
“||” – Logičko “ili”
“&&” – Logičko “i”
“||” – Logičko “ili”
Složeniji logički izraz koji je dobijen povezivanjem dva prosta logička izraza sa “&&” će biti tačan samo ako su oba prosta izraza tačna tj:
true && true = true
true && false = false
false && true = false
false && false = false
true && true = true
true && false = false
false && true = false
false && false = false
Složeniji logički izraz koji je dobijen povezivanjem dva prosta logička izraza sa “||” će biti tačan ako je bar jedan od prostih izraza tačan tj:
true || true = true
true || false = true
false || true = true
false || false = false
true || true = true
true || false = true
false || true = true
false || false = false
Logički podaci i složeniji izrazi-primeri
Pretpostavimo da imamo sledeći kod:
int a, b, c;
a=10, b=4, c=2;
boolean d,e;
a=10, b=4, c=2;
boolean d,e;
Tada je:
d = (a==0) && (b>c) /* d=false && true; d = false; */
e=(a==0) ||(b>c) /* e=false || true; e=true; */
e=(a==0) ||(b>c) /* e=false || true; e=true; */
Logički podaci se koriste kao skretnica kod grananja u programu. Ako imamo logičku promenljivu b:
Naredba if
Naredba if je elementarni logički izraz. Njegov najjednostavniji oblik je:
Izraz može biti bilo koji izraz koji daje vrednost true (tačno) ili false (netačno). Ako je vrednost izraza true, onda se izvršava iskaz koji sledi, u suprotnom ne.
Izraz može biti bilo koji izraz koji daje vrednost true (tačno) ili false (netačno). Ako je vrednost izraza true, onda se izvršava iskaz koji sledi, u suprotnom ne.
if (izraz) iskaz;
Izraz može biti bilo koji izraz koji daje vrednost true (tačno) ili false (netačno). Ako je vrednost izraza true, onda se izvršava iskaz koji sledi, u suprotnom ne.
Primer: Ispravnost unetih podatka
Tekst zadatka:
a)Učitati cele brojeve a i b i odrediti količnik a/b;
b)Za učitanu vrednost poluprečnika kruga izračunaj njegovu površinu
a)Učitati cele brojeve a i b i odrediti količnik a/b;
b)Za učitanu vrednost poluprečnika kruga izračunaj njegovu površinu
rešenje:
a) Pretpostavimo da su a i b uneti preko dijaloga za unos. Pretpostavimo takođe, da će rezultat biti smešten u promenljivu koju ćemo označiti sa c. Ako bez uslova hoćemo da izračunamo količnik napisali bi smo:
c=a/b;
Ovo je tačno za svaki ceo broj izuzev za b=0;
Da bi smo izuzeli slučaj kad je b=0 moramo da naredbu c=a/b ubacimo u telo if naredbe gde će se ona izvršiti pod određenim uslovom:
a) Pretpostavimo da su a i b uneti preko dijaloga za unos. Pretpostavimo takođe, da će rezultat biti smešten u promenljivu koju ćemo označiti sa c. Ako bez uslova hoćemo da izračunamo količnik napisali bi smo:
c=a/b;
Ovo je tačno za svaki ceo broj izuzev za b=0;
Da bi smo izuzeli slučaj kad je b=0 moramo da naredbu c=a/b ubacimo u telo if naredbe gde će se ona izvršiti pod određenim uslovom:
if (b != 0)
{
{
c=a/b;
}Izraz b!=0(b različito od nule) je uslov. To je u stvari logički izraz koji će vratiti true ako je b stvarno različito od nule ili false ako nije.
Naredba koje se izvršava u telu if u ovom slučaju nije morala da bude obuhvaćena vitičastim zagradama pošto je samo jedna, dok u slučaju da usovno treba da bude izvršeno više od jedne naredbe vitičaste zagrade bi bile obavezne. Dakle, u ovom primeru je moglo i ovako da bude napisano:
Naredba koje se izvršava u telu if u ovom slučaju nije morala da bude obuhvaćena vitičastim zagradama pošto je samo jedna, dok u slučaju da usovno treba da bude izvršeno više od jedne naredbe vitičaste zagrade bi bile obavezne. Dakle, u ovom primeru je moglo i ovako da bude napisano:
if (b != 0) c=a/b;
b)Slično kao u primeru pod a), ako bi bez uslova računali vrednost promenljive P koja predstavlja površinu kruga poluprečnika r naredba bi bila:
P=Math.PI*r;
Da bi proverili da je učitana vrednost poluprečnika r pozitivan broj koristićemo if naredbu:
P=Math.PI*r;
Da bi proverili da je učitana vrednost poluprečnika r pozitivan broj koristićemo if naredbu:
if (r > 0) P=Math.PI * r;
U ovim primerima naredbe se izvršavaju samo ako je uslov u maloj zagradi tačan(true). Ako je netačan naredba se jednostavno ne izvršava.
Postoji često potreba za alternativnom varijantom tj. da postoji i naredba koja će se izvršiti ako je uslov netačan. Npr. u prethodno opisanom primeru, ako uslov r>0 nije ispunjen mogla bi se ispisati poruka da r nije ispravno uneto. Za alternative se koristi klauzula else tako da nardba sada izgleda:
Postoji često potreba za alternativnom varijantom tj. da postoji i naredba koja će se izvršiti ako je uslov netačan. Npr. u prethodno opisanom primeru, ako uslov r>0 nije ispunjen mogla bi se ispisati poruka da r nije ispravno uneto. Za alternative se koristi klauzula else tako da nardba sada izgleda:
if (r > 0) P=Math.PI * r;
else (r > 0) System.out.println(“Vrednost poluprečnika mora biti pozitivna”);
else (r > 0) System.out.println(“Vrednost poluprečnika mora biti pozitivna”);
Primer 2:
if (broj % 2 != 0) //proverava se da li je broj neparan
++ broj;//ako je neparan, neka postane paran
++ broj;//ako je neparan, neka postane paran
Ovaj iskaz se može napisati i na neki drugi način, ali se preporučuje ovakva forma.
if (broj % 2 != 0) ++ broj;
//ovako ne bi trebalo, mada je moguće
Ako je potrebno da se kao rezultat iskaza if izvrši više iskaza, a ne samo jedan kao u prethodnom primeru, mogu se uporebiti vitičaste zagrade.
if (izraz)
{
{
iskaz1; iskaz2; ...
}Primer 3
if (broj % 2 != 0) //proverava se da li je broj neparan
{
{
++ broj; //ako je neparan, neka postane paran
System.out.println(“Broj je pretvoren u paran i njegova vrednost je sada”+ broj);
}System.out.println(“Broj je pretvoren u paran i njegova vrednost je sada”+ broj);
Ako je izraz ocenjen kao tačan, izvršavaju se svi iskazi izme|u vitičastih zagrada, a ako nije, ne izvršava se nijedan.
Klauzula else
Osnovni iskaz if može da se proširi klauzulom else.
if (izraz) iskaz1;
else iskaz2;
else iskaz2;
Iskaz ili iskazi koji slede iza klauzule else se izvršavaju samo u slučaju da izraz u klauzuli if nije tačan. Ako je potrebno da se u klauzuli else izvrši više iskaza takođe se mogu uporebiti vitičaste zagrade.
if (izraz)
{
else
{
{
iskaz1;...
}else
{
iskaz2; ...
}Klauzula else if
Ukoliko prilikom donošenja oluke postoji više mogućnosti, može se upotrebiti klauzula else if.
if (izraz1) iskaz1;
else if (izraz2) iskaz2;
else if (izraz3) iskaz3;
else iskaz4;
else if (izraz2) iskaz2;
else if (izraz3) iskaz3;
else iskaz4;
Ako je vrednost izraza izraz1 ocenjena kao tačna, izvršava se iskaz1. Ako izraz nema vrednost true, proverava se vrednost izraza izraz2. Ako je njegova vrednost tačna, izvršava se iskaz iskaz2. Posle izvršenja iskaza iskaz2 program se nastavlja kodom koji sledi iza celog iskaza if. Ako vrednost izraza izraz2 nije true, proverava se vrednost izraza izraz3 itd. Ako nijedan od izraza u klauzulama else if nije ocenjen kao tačan (true), izvršava se iskaz (iskaz4) iza klauzule else, ako ona postoji.
public class Test {
public static void main(String[] args) {
}
//Boodovi na testu
int rezultatTesta=76;
char ocena;
if (rezultatTesta>90)
{
else if (rezultatTesta>80)
{
else if (rezultatTesta>70)
{
else if (rezultatTesta>60)
{
else
{
System.out.println(“Broj je pretvoren u paran i njegova vrednost je sada”+ broj);
}int rezultatTesta=76;
char ocena;
if (rezultatTesta>90)
{
ocena='A';
}else if (rezultatTesta>80)
{
ocena='B';
}else if (rezultatTesta>70)
{
ocena='C';
}else if (rezultatTesta>60)
{
ocena='D';
}else
{
ocena='F';
}System.out.println(“Broj je pretvoren u paran i njegova vrednost je sada”+ broj);
Kao što vidite vrednost promenljive rezultatTesta može da zadovolji više od jednog uslova, jer je 76 >= 70, a takođe je i rezultatTesta >= 60. Ocena je ipak C, zato što se izvršava samo prvi blok koda koji pripada izrazu rezultatTesta >= 70. Kada se izvrši taj blok, kontrola programa prelazi na kod iza iskaza if, u ovom slučaju na iskaz System.out… Izrazi koji slede iza izraza koji je bio zadovoljen se ne proveravaju, a samim tim se i ne izvršava pripadajući kod.
Izlaz iz programa je: Ocena = C;
Iskazi if mogu biti ugneždeni. U okviru jednog if iskaza može da se nađe drugi, u okviru tog drugog, treći itd. Evo kako to izgleda:
Izlaz iz programa je: Ocena = C;
Iskazi if mogu biti ugneždeni. U okviru jednog if iskaza može da se nađe drugi, u okviru tog drugog, treći itd. Evo kako to izgleda:
if (izraz1)
{
{
if (izraz1-1)
{
else iskaz1-1;
}{
if (izraz1-1-1) iskaz1-1-1;
}else iskaz1-1;
Sledeće
Petlje u Javi >| |