You are on page 1of 16

PANEVROPSKI UNIVERZITET APEIRON

FAKULTET POSLOVNE INFORMATIKE

Vanredne studije
Smjer IT menadment

Predmet
PRINCIPI PROGRAMIRANJA

Java programski jezik (zadaci)


(seminarski rad)

Predmetni nastavnik
Prof. dr Zoran . Avramovi, dipl.in.elek.

Student
Mladen Despot
186-14/VPI

Januar 2016

1. Sadraj

1. Sadraj ................................................................................................................................... 2
2. Uvod ...................................................................................................................................... 3
3. Operatori ................................................................................................................................ 5
4. Upravljake naredbe .............................................................................................................. 7
4.1. Naredbe uslova................................................................................................................ 7
4.2. Naredbe ciklusa ............................................................................................................... 8
4.3. Naredbe skoka ................................................................................................................. 8
5. Nizovi .................................................................................................................................. 13
6. Literatura ............................................................................................................................. 16

2. Uvod
Java programski jezik nastao je 1995 godine, iz korporacije Sun Microsystems,
Inc.Koncipiran je 1992, a njegov prvobitni naziv je bio Oak, ali kasnije je promjenjen u ime
Java i kao takav postoji i danas.
Java je vei dio svojih osobina nasljedila od jezika C i C++, pa u u nastavku rei neto
o ovim jezicima.
C jezik je bio velika prekretnica u svijetu programiranja i mnogi smatraju da predstavlja
poetak modernog doba u raunarskim jezicima.On je standardizovan 1989 godine, i ako je
ranije bio koriten.Prije njega programeri su morali da biraju u kojem jeziku ele programirati,
jer je skup osobina bio favorizovan u odnosu na drugi.Npr. jezik Fortran moe se koristiti za
pisanje programa u nauci, dok on nije dobar za pisanje sistemskih programa.Basic program je
jednostavan, ali se ne moe koristiti za pisanje nekih sloenijih programa.U asembleru su se
mogli pisati sloeni programi, ali je bio veoma komplikovan i veoma teak za shvatanje.C jezik
je postao moan, efikasan program koji se lako ui i savlauje.Iako je C jedan od najboljih
svjetskih jezika on ima ogranienja to se tie sloenosti.Kada program naraste izmeu par
desetina ili stotina hiljada redova postaje veoma sloen i teak za praenje.Zbog toga nastaje
jezik C++ koji savlauje ovu prepreku i omoguava programeru da shvate sloene programe i
da njima upravljaju.C++ proiruje jezik C dodavajui mu objekto orjentisane osobine.Osnovni
razlog uspjeha jezika C++, je taj to on obuhvata sve prednosti, osobine i svojstva jezika
C.Kako je i dalje sve vie rasla elja da se programski jezici pomjere za jo jedan stepenik
unaprijed, pojavio se jezik Java koji objedinio sintaksu jezika C i mnoge od objektno
orjentisanih osobina jezika C++.Java nije napravljena da zamjeni jezik C++, ve da rjei
odreeni skup problema.
Java kao jezik ima mnoge prednosti koje ih razlikuju od drugih jezika.Te prednosti se
najvie ogledaju u prenosivosti i bezbjednosti.Java jezik je nezavisan od platforme na koji se
koristi, to znai da se moe koristiti na svim operativnim sistemima, a pri korienju itaa
Weba koji podrava Javu, moemo nesmetano da preuzimamo izvrne datoteke, bez bojaznosti
da raunar zarazimo virusom.To to omoguava bezbjednost i prenosivost se ogleda u
generisanju izvrnog koda tj. bajt koda.On predstavlja skup instrukcija koji u toku izvravanja
programa tumai javina virtuelna maina.Za razliite platforme potrebno je samo da se instalira
odreena virtualna maina i moi e se izvravati svaki java program..Takoe to to java
programe ne izvrava procesor nego JVM ini ih i bezbjednim, jer nedozvoljava virusima i
drugim neeljenim efektima da remeti okolni sistem.
Sama Java je koncipirana na objektno orjentisano programiranje i ono ini njenu
sr.Takvim pristupom se programi orjentiu oko skupa podataka, i skupa naina pristupa tih
podataka, dok je kod jezika C proceduralno orjentisan pristup, to prestavlja izvravanje
programa kao niz uzastopnih koraka.Kada program postane vei i sloeniji, proceduralno
orjentisani pristup nailazi na potekoe, dok objektno orjentisani prevazilazi te
potekoe.Mehanizmi za ostvarivanje objektno orjentisanih programa su kapsuliranje (povezuju
naredbe i podatke sa kojima rade i titi od spoljnih uticaja), nasleivanje (proces kojim jedan
3

objekat dobija svojstvo drugog) i polimorfizam (opti nain pristupa za rad sa grupom srodnih
aktivnosti tj. jedan nain pristupa, vie metoda).

3. Operatori
Java sadi mnogo operatora koji se mogu podjeliti u etiri grupe : aritmetiki operatori,
operatori nad bitovima, operatori poreenja i logiki operatori.
Aritmetiki operatori se koriste u matematikim izrazima, kao to su: sabiranje (+),
oduzimanje (-), mnoenje (*), djeljenje(/), ostatak pri djeljenju (%), uveanje za jedaninkrement (++), umanjenje za jedan-dekrement (--), itd.
Operatori sa bitovima rade sa pojedinanim bitovima svojih operanada, a neki od njih
su: konjukcija (&), disjunkcija (|), pomjeranje udesno (>>), pomjeranje uljevo (<<), negacija
nad bitovima (~), itd.
Operatori poreenja utvruju odnos jednog operanda prema drugom, kao to su: jednako
(==), razliito (!=), vee (>), manje (<).Rezultat ovih operacija je logika vrijednost (tip
boolean, true ili false), a najee se koriste u izrazima uslova if i u razliitim petljama.
Logiki operatori rade samo sa operandima tipa boolean.Oni kombinuju vrjednosti tipa
boolean, da bi rezultat bio takoe boolean.Tako imamo: logika konjukcija (&), logika
disjunkcija (|), kratkospojena diskjunkcija (||), kratkospojena konjukcija (&&), ! (logika unarna
negacija), ?: (uslov dodjele), itd.

Zadaci
Primjer br.1 Izraunavanje obima i povrine kruga.

public class Obim_i_povrsina {


public static void main(String[] args)
{
System.out.print("Ucitajte poluprecnik kruga: ");
double r=Citaj.Double()1,o,p;
o=2*r* Math.PI;
p=r*r;
System.out.println("Obim kruga je= " + o);
System.out.println("Povrsina kruga je= " + p);
}
}

Kako uitavanje podataka sa standarnog ulaza u programskom jeziku Java nije standarno, koristio sam klasu Citaj, za uitavanje podataka sa
standarnog ulaza, koju sam preuzeo sa Elektrotehnikog fakulteta u Beogradu.
1

Primjer br.2 Izraunavanje povrine trougla preko tjemena.


public class povrsina {
public static void main(String[] args)
{
System.out.println("Unesite vrijednosti tjemena");
System.out.print ("Prvo tjeme: ");
double x1=Citaj.Double(), y1=Citaj.Double();
System.out.print ("Drugo tjeme: ");
double x2=Citaj.Double(), y2=Citaj.Double();
System.out.println("Trece tjeme: ");
double x3=Citaj.Double(), y3=Citaj.Double();
double a=Math.sqrt (Math.pow(x2-x3, 2)+ Math.pow(y2-y3,2));
double b=Math.sqrt (Math.pow(x3-x1, 2)+ Math.pow(y3-y1,2));
double c=Math.sqrt (Math.pow(x2-x1, 2)+ Math.pow(y2-y1,2));
double s=(a+b+c)/2;
System.out.println("Povrsina trougla je: " + Math.sqrt(s*(s-a)*(s-b)*(s-c)));
}
}

4. Upravljake naredbe
Upravljake naredbe se u programskim jezicima koriste za kontrolisanje toka programa i
njegovo grananje na osnovu promjena stanja programa.Javine upravljake naredbe se dijele na:
naredbe uslova, naredbe ciklusa i naredbe skoka.

4.1. Naredbe uslova


Naredbe uslova omoguavaju da se promjeni tok izvravanja programa na osnovu
rezultata izraunavanja nekog izraza.Java ima dvije naredbe uslovljavanja i to: if i switch.Opti
oblik naredbe if je:
if (uslov) naredba 1;
else naredba 2;
Naredba else nije obavezna, a uslov moe biti neki prost ili sloen iskaz.Naredba if radi
na sledei nain: ako je uslov taan izvrava se naredba 1.Inae se izvrava naredba 2.
Naredba if se moe nai i unutar druge naredbe if ili else i ta se pojava naziva
ugnjedeno uslovljavanje.Opti oblik if-else-if uslovljavanja je:
if (uslov) naredba;
else if (uslov) naredba;
...
else naredba;
Naredba switch omoguava grananje u vie smjerova.Na osnovu vrijednosti odreenog
izraza, izvrava se usmjeravanje na izvravanje odreenog koda.Opti oblik naredbe switch je:
switch (izraz)
{
case vrijednost1: naredbe; break;
case vrijednost 2: naredbe; break;

case vrijednost n: naredbe; break;


default: naredbe;
}
Naredba switch radi na sledei nain: vrjednost izraza se poredi sa svakom vrijednou i
ako doe do poklapanja izvravaju se set naredbi koji sljedi naredbu case.Ako se ni jedna
konstanta ne poklopi izvrava se naredba default, koja nije obavezna.Naredba break se koristi
kao zavretak niza naredbi, koja takoe nije obavezna.Ako je izostavimo izvri e se sledea
naredba case.

4.2. Naredbe ciklusa


U naredbe ciklusa spadaju while, do-while i for.Ovim naredbama predstavljaju se
petlje.Petlja izvrava naredbu ili blok naredbe onoliko puta koliko je potrebno da se ispuni
odgovarajui uslov.
Petlja while je najosnovnija petlja.Njen opti oblik je:
while (uslov) {
// tijelo petlje
}
Uslov moe da bude bilo koji logiki izraz.Tijelo petlje se izvrava sve dok je uslov
taan, ako je uslov netaan izvravaju se naredbe nakon petlje.Ukoliko uslov na poetku petlje
nije taan, tjelo petlje se nee izvriti ni jedamput.
Za razliku od petlje while koja nee izviti tjelo petlje, naredba do-while izvrava tjelo
petlje makar jedamput, jer se uslovni izraz nalazi na njenom kraju.Njen opti oblik je:
do {
// tijelo petlje
} while (uslov);
U svakom ciklusu petlje prvo se izvrava tjelo petlje pa se onda provjerava
uslov.Ukoliko je izraz taan petlja e se ponoviti, u suprotom ona e se zavriti.
Naredba for ima sledei opti oblik:
for ( inicijalizacija ; uslov; iteracija )
{ // tijelo petlje;
}
Njen princip rada je sledei: pri poetku rada petlje prvo se izvrava inicijalizacija, i ona
se izvrava samo jedamput.Uglavnom je to promjenljiva koja slui kao broja ciklusa
petlje.Nakon toga se ispituje uslov, koji mora da bude logiki izraz i ako je uslov taan izvrie
se tijelo petlje, u suprotnom se petlja zavrava.Zatim se izvrava iteracija.To je izraz koji
smanjuje ili uveava petljinu promjenljivu.Nakon toga se petlja ponavlja do god ispunjava
uslov, sve dok uslov ne bude netaan.

4.3. Naredbe skoka


U naredbe skoka ubrajamo: break, continue i return naredbe.One omoguuju da se
izvravanje programa ne nastavi sa sledeom naredbom u redu, ve nekom drugom naredbom.
Naredba break ima razliite namjene.Ona slui za zavravanje niza naredbi u naredbi
switch.Zatim se koristi za izlazak iz petlje i na posljedku ona se moe koristiti kao odreena
8

varijanta naredbe goto.Kada se unutar petlje naie na naredbu break, prestaje se izvravanje
petlje i program nastavlja da se izvrava nakon nje.Kako Java ne koristi naredbu goto, Java taj
problem rijeava proirivanjem naredbe break.Pomou ovog oblika naredba break moe se
izvui iz jednog ili vise blokova naredbi, tj. ima se mogunost da se precizno odredi iz kojeg
dijela e se nastaviti izvravanje programa.Primjer:
class break {
public static void main (String args []) {
boolean t=true;
prvi: {
drugi: {
treci: { System.out.println(Prije narebe break:);
if (t) break drugi; }
System.out.println(Ovo se nee izvriti);
}
System.out.println(Ovo e se izvriti);
}}}
Ponekad je korisno da se sam rad petlje ubrza.Ako elimo da se u odreenom ciklusu
petlja nastavi preskaui ostatak naredbi u tijelu petlje, koristimo naredbu continue.Slino i
naredbi break i naredba continue moe da se koristi sa oznakom da bi ukazalo koja od petlji
treba da se nastavi.Rijetke su situacije u kojima je opravdano koristiti naredbu continue.
Naredba return se korisi za bezuslovan izlaz iz metode.Na taj nain naredba return
prekida metodu u kojoj se izvrava.

Zadaci
Primjer br.3 Napisati izraz za sumiranje brojeva manjih od n.
public class suma {
public static void main(String[] args) {
System.out.print("n = ");
int n=Citaj.Int(), s=0;
for (int i=1;i<=n;i++) //for (int i=1;i<=n;s+=i++);
s+=i;
System.out.println("Suma brojeva je: " + s);

}
}

Primjer br.4 Napisati izraz za sumiranje faktorijala brojeva manjih od n.


public class faktorijali {
public static void main(String[] args) {
System.out.print("n = ");
int n=Citaj.Int() ,s=0, p;
for (int f=1,i=1;i<=n;i++)
{
f*=i;s+=p;
}

System.out.println("Suma brojeva je: " + s);


}
}
Primjer br.5 Odreivanje datuma za naredni dan.
public class dani {
public static void main(String[] args) {
while (true) {
System.out.println("Ucitaj vrijednosti dana, mjeseca i godine");
int d=Citaj.Int(),m=Citaj.Int(),g=Citaj.Int();
if (d==0 ||m==0 || g==0) break;
switch (m)
{

case 1:case 3: case 5:case 7:case 8:case 10:case 12:


if (d<31) d++; else if (m==12 && d==31) { d=1;m=1; g++; } else d++;break;
case 2: if (g%4==0 && g != 100 || g % 400 ==0) { if (d<29) d++; else {d=1;m++;} }
else
{
if (d<28) d++; else {d=1;m++;}}break;
case 4:case 6:case 9:case 11: if (d<30) d++;else {d=1;m++;}break;
default :System.out.println("Greska"); break;

}
System.out.println("Naredni datum je " + d +" " + m + " "+ g);
}}
}
10

Primjer br.6 Napisati sve savrene brojeve manje od n.

public class savrseni {


public static void main(String[] args) {
int n=Citaj.Int();
int broj=1;
while (broj<=n)
{
int savrsen =0;
for (int i=1;i<=broj/2;i++)
{
if (broj%i==0) {savrsen+=i;}
}
if (savrsen==broj) {System.out.println(broj + " "); broj++;}
else broj++;
}}}
Primjer br.7 Napisati program koji ispisuje brojeve koji imaju sledeu zavisnost, a manji su od
n:
broj/2=x1(1)
broj/3=x2(2)
...
broj/10=x9(9)

public class djeljivost {


public static void main(String[] args) {
System.out.print("Unesi n= ");
int n=Citaj.Int();
int broj=1;
while (broj<n)
{
int brojac=2,i,jed=1;
for (i=1;i<10;i++)
if (broj % brojac == i)
{
brojac++;jed++; }
if (jed==i) {
System.out.println(broj + " ");
broj++;
} else broj++; }}}

11

Primjer br.8 Napisati program za rijeavanje kvadratne jednaine.


public class jednacina {
public static void main(String[] args) {
System.out.print("Ucitaj vrijednosti jednacine:");
double a=Citaj.Double(),b=Citaj.Double(),c=Citaj.Double();
double x1,x2,y1,y2;
if (a!=0) {
double d=((Math.pow(b, 2))-(4*a*c));
if (d>0) {
System.out.println("Jednacina ima realna rjesenja: ");
x1=(-b+Math.sqrt(d))/(2*a);
x2=(-b-Math.sqrt(d))/(2*a);
System.out.println("Rijesenja realne jednacine su: x1= " + x1 + " x2=" + x2 ); }
else if (d<0) {
System.out.println("Jednacina ima kompleksna rjesenja: ");
x1=-b/(2*a);
y1=Math.sqrt(-d)/(2*a);
x2=x1;
y2=-y1;
System.out.println("Rijesenja kompleksne jednacine su: x1= " + x1 + " y1=" + y1 + "
x2=" + x2 + " y2=" + y2 ); }
else if (d==0) {
System.out.println("Jednacina ima dvostruka rjesenja: ");
x1=x2=-b/(2*a);
System.out.println("Rijesenja dvostruke jednacine su: x1= " + x1 + " x2=" + x2); }}
else if (b!=0) {
System.out.println("Jednacina ima linearna rjesenja: ");
x1=-c/b;
System.out.println("Rijesenja linearne jednacine su: x1= " + x1); }
else System.out.println("Greska"); }}

12

5. Nizovi
Niz prestavlja grupu promjenljivih istog tipa koji se koriste pod istim imenom.Mogui
su nizovi svih tipova, sa jednom ili vie dimenzija.Odreenom elementu niza se moe pristupiti
preko njegovog indeksa.Kada elimo da napravimo niz moramo prvo da definiemo
promjenljivu niza eljenog tipa.Opti oblik deklaracije niza je:
tip naziv[ ];
Tip definie osnovni tip niza i on odreuje tip podataka svakog elementa koji sainjava
niz.
Da bi smo napravili niz, potrebno je da deklariemo promjenljivu eljenog tipa.Zatim,
pomou rezervisane rijei new rezerviemo memoriju koja e sadrati niz i niz dodjelimo
promjenljivoj niza.Npr:
int dani_u_sedmici[7];
dani_u_sedmici=new int[7];
Deklarisanje promjenljive moemo izvesti istovremeno sa dodjeljivanjem memorije
nizu, npr:
int dani_u_sedmici[]=new int[7];
Pri deklarisanju nizovi se mogu i inicijalizovati.Inicijalizator niza je lista izraza
razdvojena zarezima unutar vitiastih zagrada.Zarezi razdvajaju vrijednosti elemenata
niza.Kada zadamo poetne vrijednosti, automacki pravimo niz koji je dovoljno prostran da
obuhvati sve elemente, tako da nema potrebe da koristimo rezervisanu rije new.
Postoje jednodimenzionalni i viedimenzionalni nizovi u programskom jeziku Java.

Zadaci
Primjer br.9 Napisati program za ispisivanje srednje vrijednosti niza brojeva koji su djeljivi sa
3, a manji su od n.
public class Srednja_vrijednost {
public static void main(String[] args) {
while (true){
System.out.print("Ucitaj vrijednost n= ");
int n=Citaj.Int();
if (n<=0) break;
double niz[]=new double[n];
System.out.print("Ucitaj vrijednosti niza= ");
for (int i=0;i<n;i++)
13

niz[i]=Citaj.Int();
double s=0;int br=0;
for (int i=0;i<n;i++)
if (niz[i]%3==0) {
s+=niz[i];br++;}
System.out.println("Srednja vrijednost brojeva djeljivih sa tri je = " + (s/br));
}}}
Primjer br.10 Napisati program za nalaenje najmanje vrijednosti elemenata niza, koji su
manji od n.
public class najmanji_u_nizu {
public static void main(String[] args) {
while (true) {
System.out.print("n=");
int n=Citaj.Int();
double niz[]=new double [n];
for (int i=0;i<n;i++)
niz[i]=Citaj.Double();
double min=niz[0];
for (int i=1;i<n;i++)
if(niz[i]<min) min=niz[i];
System.out.println("Najmanja vrijednost niza je " + min);
}}}
Primjer br.11 Napisati program za nalaenje fuzije dva niza koji su ureeni po neopadajuem
redosljedu, u trei, na isti nain ureen niz.
public class fuzija {
public static void main(String[] args) {
System.out.print("Ucitajte broj elemenata prvog niza ");
int ia=0,ib=0,ic=0;
int n1=Citaj.Int();
System.out.print("Ucitajte broj elemenata drugog niza ");
int n2=Citaj.Int();
int niz1[]=new int [n1];
int niz2[]=new int [n2];
int niz3[]=new int [n1+n2];
System.out.print("Ucitajte elemente prvog niza ");
for (int i=0;i<n1;i++)
niz1[i]=Citaj.Int();
System.out.print("Ucitajte elemente drugog niza ");
for (int i=0;i<n2;i++)
niz2[i]=Citaj.Int();
while (ia<n1 && ib< n2) {
if (niz2[ib]>niz1[ia]){ niz3[ic]=niz1[ia];ic++;ia++;}
14

else { niz3[ic]=niz2[ib];ic++;ib++ ;}}


while (ia<n1) {niz3[ic]=niz1[ia]; ic++;ia++;}
while (ib<n2) {niz3[ic]=niz2[ib]; ic++;ib++;}
for (int i=0;i<(n1+n2);i++)
System.out.print(niz3[i] +" " ); }}

Primjer br.12 Napisati program za meusobnu zamjenu najveeg i namanjeg elementa u


matrici.
public class obrtanje {
public static void main(String[] args) {
System.out.println("Ucitaj m:");
int m=Citaj.Int();
System.out.println("Ucitaj n: ");
int n=Citaj.Int();
int a [][]=new int [m] [n];
for (int i=0;i<m;i++)
for (int j=0;j<n;j++)
a[i][j]=Citaj.Int();
int min=a[0][0],max=a[0][0],p,imin=0,imax=0,jmin=0,jmax=0;
for (int i=0;i<m;i++) {
for (int j=0;j<n;j++)
{if (a[i][j]<min) { min=a[i][j]; imin=i;jmin=j;}
if (a[i][j]>max) { max=a[i][j]; imax=i;jmax=j;}}}
p=a[imax][jmax];
a[imax][jmax]=a[imin][jmin];
a[imin][jmin]=p;
for (int i=0;i<m;i++){
for (int j=0;j<n;j++)
System.out.print(a[i][j]+ " " );
System.out.println(); }}}

15

6. Literatura
1. Herbert Schildt (2005).Java J2SE 5: kompletan prirunik.Beograd: Mikro knjiga;
2. www.google.com , Januar 2016;

16

You might also like