PROGRAMIRANJE 9- RAZRED
ZADACI NEKOLIKO PRIMJERA
1. Q BASIC
1.U čitati 2 cijela broja i izračunati im zbir, razliku,
proizvod i količnik. Ispisati one rezultate koji su trocifreni.
Opis rješenja:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
REM
1 PRINT "Prvi
broj: "; INPUT a PRINT "Drugi
broj: "; INPUT b proizvod = a * b razlika = a - b zbir = a + b PRINT "Zbir
je:"; zbir PRINT "Razlika
je:"; razlika PRINT "Proizvod
je:"; proizvod IF
b <> 0 THEN kolicnik =
a / b PRINT "Količnik
je:"; kolicnik ELSE
PRINT "Nije
moguće dijeliti sa 0" END
IF |
2. Učitavati realne
brojeve sve dok razlika najmanjeg i najvećeg ne pređe 100. Ispisati najmanji i
najveći broj.
Opis rješenja:
Listing programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
REM 2 REM Ucitavati
realne brojeve sve dok razlika najmanjeg i najvećeg ne pređe 100 Ispisati najmanji i najveći
broj.*/ max = 0 min = 0 WHILE (ABS(max - min) <= 100) PRINT "Unesite broj: " INPUT broj IF
(broj > max) THEN max = broj END
IF IF
(broj < min) THEN min = broj END
IF WEND PRINT "Razlika izmedju najmanjeg i najvecege je premasila
100!" END |
3
Izračunati sumu svih dvocifrenih prirodnih bojeva.
Opis rješenja:
Listing programa:
1 2 3 4 5 6 7 8 9 10 |
REM 3 Izračunati
sumu svih dvocifrenih prirodnih bojeva CLS k = 10 n = 99 s = 0 FOR i
= k TO n s = s + i NEXT i PRINT "Suma dvocifrenih brojeva iznosi", s END |
4. Učitati
koordinate 3 tačke u ravni: x1,y1; x2, y2; x3,y3. Te 3 tačke predstavljaju
tjemena trougla u ravni. Izračunati i štampati obim i površinu tog trougla. Za
površinu koristiti Heronovu formulu.
Opis rješenja:
Listing
programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
REM 4 REM Ucitati
koordinate 3 tacke u ravni: x1,y1; x2, y2; x3,y3. Te 3 tacke
predstavljaju tjemena trougla u ravni. Izracunati i
štampati obim i površinu tog trougla. Za površinu
koristiti Heronovu formulu.*/ PRINT
"Ucititi vrijednosti koordinata 3 tacke." PRINT
"Unesi vrijednost x1: "; INPUT x1 PRINT
"Unesi vrijednost y1: "; INPUT y1 PRINT
"Unesi vrijednost x2: "; INPUT x2 PRINT
"Unesi vrijednost y2: "; INPUT y2 PRINT
"Unesi vrijednost x3: "; INPUT x3 PRINT
"Unesi vrijednost y3: "; INPUT y3 a = sqrt((x2 -
x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) b = sqrt((x3 -
x2) * (x3 - x2) + (y3 - y2) * (y3 - y2)) c = sqrt((x3 -
x1) * (x3 - x1) + (y3 - y1) * (y3 - y1)) obim = a + b +
c s = obim / 2 povrsina =
sqrt(s * (s - a) * (s - b) * (s - c)) PRINT
"Obim = "; obim PRINT
"Povrsina = "; povrsina END |
5. Ispisati
najmanji 6-cifreni broj koji je djeljiv sa 3 a nije djeljiv sa 5.
Opis
rješenja:
Listing
programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
REM 23010220 REM Ispisati
najmanji 6-cifreni broj koji je djeljiv sa 3 a nije djeljiv sa 5*/ i = 100000 WHILE NOT (i
MOD 3 = 0 AND i MOD 5 <> 0) REM ponavljaj sve dok nije ispunjen uslov i
= i + 1 WEND PRINT
"Najmanji 6-cifreni broj koje je djeljiv sa 3 a nije sa 5 je: "; i END II varijanta REM 23010220 REM Ispisati najmanji
6-cifreni broj koji je djeljiv sa 3 a nije djeljiv sa 5*/ i = 100000 kraj = 0 WHILE kraj = 0 IF
(i MOD 3 = 0 AND i MOD 5 <> 0) THEN kraj
= 1 END
IF i
= i + 1 WEND PRINT
"Najmanji 6-cifreni broj koje je djeljiv sa 3 a nije sa 5 je: "; i
- 1 END |
PYTHON- Q BASIC
Učitati 3 broja.
Naći razliku trećeg i drugog te proizvod prvog i drugog.
Listing
programa:
1 2 3 4 5 6 7 8 9 |
REM 1 CLS INPUT a INPUT b INPUT c r = c - b PRINT
"razlika treceg i drugog je ", r p = a * b PRINT "proizvod
prvog i drugog je ", p |
čitati 3 broja.
Naći razliku trećeg i drugog te proizvod prvog i drugog.
Listing
programa :
1 2 3 4 5 6 7 8 9 10 11 |
# 1 a =
int(input("Unesi prvi broj")) b =
int(input("Unesi drugi broj")) c = int(input("Unesi
treci broj")) x = (c - b) y = (a * b) print
("Razlika treceg i drugog je", x) print
("Proizvod prvog i drugog je", y) |
Ispisati
rastojanje između dvije upisane vrijednosti.
Listing
programa:
1 2 3 4 5 |
REM 2 INPUT a INPUT b r = a - b IF r > 0
THEN PRINT "rastojanj izmedju vrijednosti je ", r ELSE PRINT
"rastojanj izmedju vrijednosti je ", r * (-1) |
Ispisati
rastojanje između dvije upisane vrijednosti.
Opis
programa: Rastojenje
je pozitivna vrijednost zato se treba izračunati aplsolutna vrijednost razlike
dvije vrijednosti. Za to se koristi ugrađena matematička funkcija izračunavanja
apsolutne vrijednosti Math.abs(b - a) >>.
Listing
programa:
1 2 3 4 5 6 7 |
# 2 a =
int(input("Unesi pocetnu vrijednost")) b =
int(input("Unesi krajnju vrijednost")) r = abs(a - b) print
("Rastojanje izmedju pocetne i krajnje vrijednosti je", r) |
Napisati
program za izračunavanje površine trougla:
- koristeći Heronovu formulu:
S=(a+b+c)/2, P=SQRT(S(S-a)(S-b)(S-c))
- po formuli P=a*h/2
Opis
rješenja: Program
izvodi ucitavanje stranica trougla i racunanje njegove povrsine, a drugi dio
programa izvodi ucitavanje stranice a i visine ha i takodje racuna povrsinu.
Opis
programa: Prva
naredba je REM. Druga naredba je INPUT i ona ucitava stranice. Treca naredba
racuna povrsinu po Heronovoj formuli. Cetvrta naredba PRINT ispisuje rezultat.
Peta naredba INPUT ucitava stranicu a i visinu ha. Sesta naredba racuna povrsinu
po izrazu P=a*h/2. Sedma naredba PRINT ispisuje rezultat. Osma naredba END
oznacava kraj programa.
Listing
programa:
1 2 3 4 5 6 7 8 9 |
1 REM 2 INPUT
"Unesi stranice trougla"; a,b,c 3
S=(a+b+c)/2 P=SQRT(S*(S-a)*(S-b)*(S-c)) 4 PRINT
"Povrsina trougla po Heronovoj formuli iznosi:"; P 5 INPUT
"Unesi stranicu a i visinu ha"; a,h 6 p=a*h/2 7 PRINT
"Povrsina trougla po formuli P=a*h/2 iznosi:"; p 8 END |
Opis
rješenja: Površina
trougla se izračunava tako što se prvo izračuna vrijednost poluzbira
S=(a+b+c)/2 a zatim povrišina po formuli: P=(S(S-a)(S-b)(S-c))1/2 odnosno
P=SQRT(S(S-a)(S-b)(S-c)) gdje math.sqrt je funkcija za izračunavanje kvadratnog
korijena.
Listing
programa:
1 2 3 4 5 6 7 8 |
# 3 import math a=float(input("Unesi
a")) b=float(input("Unesi
b")) c=float(input("Unesi
c")) s=(a+b+c)/2 p=math.sqrt(s*(s-a)*(s-b)*(s-c)) print
("Povrsina trougla je:",p) |
C I BASIC
Učitati 2
realna broja različita od 0. Ako su različitog predznaka sabrati ih, a ako su
istog predznaka pomnožiti ih. Rezulat štampati na ekran.
Opis
rješenja:
Listing
programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
REM 1 REM Ucitati 2
realna broja razlicita od 0. Ako su razlicitog predznaka sabrati ih, a ako su
istog predznaka pomnožiti ih. Rezulat štampati na ekran.*/ PRINT
"Prvi broj:"; INPUT a WHILE (a = 0) PRINT
"Broj mora biti razlicit od 0.Drugi broj: " INPUT
b WEND PRINT
"Drugi broj:"; INPUT b WHILE (b = 0 OR
b = a) PRINT
("Broj mora biti razliÄit od 0 i od već unesenih.Drugi broj:"); INPUT
b WEND IF ((a < 0
AND b > 0) OR (a > 0 AND b < 0)) THEN rezultat
= a + b ELSE rezultat
= a * b END IF PRINT
"Rezultat: "; rezultat |
C
#include <stdio.h>
int main
()
{
int a, b;
double rezultat;
printf("Prvi broj:
");
scanf("%d",&a);
while (a == 0) {
printf("Broj
mora biti različit od 0. Ponovi unos: ");
scanf("%d",&a);
}
printf("Drugi broj
");
scanf("%d",&b);
while (b == 0) {
printf("Broj
mora biti razlicit od 0. Ponovi unos: ");
scanf("%d",&b);
}
if ((a < 0 && b > 0) || (a > 0 && b < 0))
rezultat
= a + b;
else
rezultat
= a * b;
printf("Rezultat =
%f \n", rezultat);
return 0;
}
II varijanta
#include <stdio.h>
int main
()
{
int a, b;
double rezultat;
printf("Prvi broj:
");
scanf("%d",&a);
while (a == 0) {
printf("Broj
mora biti razlicit od 0. Ponovi unos: ");
scanf("%d",&a);
}
printf("Drugi broj
");
scanf("%d",&b);
while (b == 0) {
printf("Broj
mora biti različit od 0. Ponovi unos: ");
scanf("%d",&b);
}
if ((a * b ) < 0)
// ako su brojevi sa raličitim predznacima proizvod je < 0
rezultat
= a + b;
else
rezultat
= a * b;
printf("Rezultat =
%f \n", rezultat);
return 0;
}
Učitati prirodan
broj. Ako je neparan ispisati njegovu recipročnu vrijednost, a ako je paran
ispisati kvadrat njegovog prethodnika.
Opis
rješenja: Zadatak možemo
napisati u obliku formule:
ODD funkcija za neparan je TRUE vrijednost i u IF naredbi izvodi se THEN
Listing
programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
CLS INPUT
"Unesi broj a "; a IF a MOD 2
<> 0 THEN y =
1 / a PRINT
"Ulaz = "; a, "Rezultat = "; y ELSE y =
(a - 1) ^ 2 PRINT
"Kvadrat prethodnika broja a je"; b END IF END II varijanta CLS INPUT
"Unesi broj a "; a IF a / 2 =
INT(a / 2) THEN y =
(a - 1) ^ 2 PRINT
"Kvadrat prethodnika broja a je"; b ELSE y =
1 / a END IF PRINT
"Ulaz = "; a, "Rezultat = "; y END |
#include<stdio.h>
#include<math.h>
main()
{
float
y;
int
a;
printf("Unesi
A: ");
scanf("%d",&a);
if(a
% 2 != 0)
{
y=1/a;
printf("Rezultat
je: %f.",y);
}
else
{
y=pow(a-1,2);
printf("Rezultat
je: %f.",y);
}
return
0;
}
Učitati
koordinate 3 tačke u ravni: x1,y1; x2, y2; x3,y3. Te 3 tačke predstavljaju
tjemena trougla u ravni. Izračunati i štampati obim i površinu tog trougla. Za
površinu koristiti Heronovu formulu.
Opis
rješenja:
Listing
programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
REM 2 REM Ucitati
koordinate 3 tacke u ravni: x1,y1; x2, y2; x3,y3. Te 3 tacke predstavljaju
tjemena trougla u ravni. Izracunati i štampati obim i površinu tog trougla.
Za površinu koristiti Heronovu formulu.*/ PRINT
"Ucititi vrijednosti koordinata 3 tacke." PRINT
"Unesi vrijednost x1: "; INPUT x1 PRINT
"Unesi vrijednost y1: "; INPUT y1 PRINT
"Unesi vrijednost x2: "; INPUT x2 PRINT
"Unesi vrijednost y2: "; INPUT y2 PRINT
"Unesi vrijednost x3: "; INPUT x3 PRINT
"Unesi vrijednost y3: "; INPUT y3 a = sqrt((x2 -
x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) b = sqrt((x3 - x2)
* (x3 - x2) + (y3 - y2) * (y3 - y2)) c = sqrt((x3 -
x1) * (x3 - x1) + (y3 - y1) * (y3 - y1)) obim = a + b +
c s = obim / 2 povrsina =
sqrt(s * (s - a) * (s - b) * (s - c)) PRINT
"Obim = "; obim PRINT
"Povrsina = "; povrsina END |
C
#include <stdio.h> #include <math.h> int main
() { float a, b, c, x1, x2, x3, y1, y2, y3,
obim, s, povrsina; printf("Koordinate 3
tacke\n"); printf("Vrijednost x1:
"); scanf("%f",&x1); printf("Vrijednost y1:
"); scanf("%f",&y1); printf("Vrijednost x2:
"); scanf("%f",&x2); printf("Vrijednost y2:
"); scanf("%f",&y2); printf("Vrijednost x3:
"); scanf("%f",&x3); printf("Vrijednost y3:
"); scanf("%f",&y3); a = sqrt((x2-x1)*(x2-x1)+
(y2-y1)*(y2-y1)); // duzina stranice a b = sqrt((x3-x2)*(x3-x2)+
(y3-y2)*(y3-y2)); // duzina stranice b c = sqrt((x3-x1)*(x3-x1)+
(y3-y1)*(y3-y1)); // duzina stranice c obim = a + b +
c;
// obim trougla s = obim / 2
;
// polubom za Heronovu formulu povrsina = s *(s - a)*(s - b)*(s -
c); // sqrt(s *(s - a)*(s - b)*(s - c)); // povrsina trougla printf("Stranice: a=%f
b=%f c=%f \n", a, b, c); printf("s = %f \n", s); printf("Obim = %f \n",
obim); printf("Povrsina = %f
\n", povrsina); return 0; } |
Ispis na ekranu:
čitati 4 cijela
broja. Ako je bar jedan od njih pozitivan izračunati im proizvod i štampati ga.
Ako je bar jedan od njih negativan izračunati im zbir i štampati ga.
Opis
rješenja:
Listing
programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
REM 23010090 REM Ucitati 4
cijela broja. Ako je bar jedan od njih pozitivan izracunati im proizvod i
Å¡tampati ga. Ako je bar jedan od njih negativan izracunati im zbir i
Å¡tampati ga.*/ PRINT
"Prvi broj: "; INPUT a PRINT
"Drugi broj: "; INPUT b PRINT
"Treci broj:"; INPUT c PRINT
"Cetvrti broj:"; INPUT d IF (a > 0 OR
b > 0 OR c > 0 OR d > 0) THEN rezultat
= a * b * c * d PRINT
"Proizvod: "; rezultat ELSE PRINT
"Svi su negativni." END IF IF (a < 0 OR
b < 0 OR c < 0 OR d < 0) THEN rezultat
= a + b + c + d PRINT
"Zbir: "; rezultat; "" ELSE PRINT
"Svi su pozitivni." END IF IF (a = 0 AND b
= 0 AND c = 0 AND d = 0) THEN PRINT
"Svi su 0"; END IF END |
int main
()
{
int a, b, c, d;
double rezultat;
printf("Prvi broj:
");
scanf("%d",&a);
printf("Drugi broj
");
scanf("%d",&b);
printf("Treći broj:
");
scanf("%d",&c);
printf("Cetvrti
broj ");
scanf("%d",&d);
if (a > 0 || b > 0 || c > 0 || d > 0) {
// barem jedan broj pozitivan
rezultat
= a * b * c * d;
printf("Proizvod
= %f \n", rezultat); // proizvod: a*b*c*d
}
if (a < 0 || b < 0 || c < 0 || d < 0) {
rezultat
= a + b + c + d;
printf("Suma
= %f \n", rezultat); // suma: a+b+c+d
}
if (a==0 && b==0 && c==0 &&
d==0) // svi brojevi nula
printf("Svi
brojevi su nule!");
return 0;
}
Napiši program za
rješavanje slijedećeg izraza: C+++
Opis rješenja: Nazivnik mora biti različit od nule
2x-1<>0.
Listing programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> using namespace std; main() { float x,y; cout<<"Unesite x: "<<endl; cin>>x; if((2*x-1)!=0) { y=(3*x+8)/(2*x-1); cout<<y<<endl; } else { cout<<"izraz nije definisan"<<endl; } system("PAUSE"); } |
PYTHON
# 1
# Razlomak
x=float(input("Unesite broj: "))
if 2*x-1 != 0:
print((3*x+8)/(2*x-1))
else:
print("Izraz nije
definisan")
Zavisno o
upisanoj vrijednosti časa 0-23 ispisati poruku:
Sati |
Poruke |
0 - 8 |
Dobro jutro |
9 - 18 |
Dobar dan |
19 - 23 |
Dobro veče |
Opis
rješenja: Rješenje
možemo posmatrati na slijedeći način:
Listing
programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include
<cmath> #include
<iostream> using namespace
std; main() { int
x; cout<<"Unesite
broj easova :"<<endl; cin>>x; if((x>=0)&&(x<=8)) cout<<"dobro
jutro"<<endl; else if((x>=9)&&(x<=18)) cout<<"dobar
dan"<<endl; else cout<<"dobro
vece"<<endl; system
("pause>0 "); return
0; } |
x = int(input("Unesi
vrijeme"))
if x
> 0 and x < 9:
print ("Dobro jutro")
if x
> 8 and x < 19:
print ("Dobar dan")
if x
> 19 and x < 24:
print ("Dobro vece")
Učitati 4 cijela
broja. Ako je bar jedan od njih pozitivan izračunati im proizvod i štampati ga.
Ako je bar jedan od njih negativan izračunati im zbir i štampati ga.
Opis
rješenja:
Listing
programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/*23010090
Učitati 4 cijela broja. Ako je bar jedan od njih pozitivan izračunati im
proizvod i štampati ga. Ako je bar jedan od njih negativan izračunati im zbir
i štampati ga.*/ #include
<cstdlib> #include
<iostream> using namespace
std; int main() { int
a, b, c, d; cout
<< "Unesite 4 cijela broja "; cin
>> a >>b >>c >>d; if
(a > 0 || b > 0 || c > 0 || d > 0) cout <<
a*b*c*d << endl; if
(a < 0 || b < 0 || c < 0 || d < 0) cout <<
a+b+c+d << endl; if
(a==0 && b==0 && c==0 && d==0) cout <<
"Svi brojevi su nule! " << endl; system("PAUSE"); return
EXIT_SUCCESS; } |
a=int(input("Unesi broj ")) b=int(input("Unesi broj ")) c=int(input("Unesi broj ")) d=int(input("Unesi broj ")) if a>0 or
b>0 or c>0 or
d>0: p=a*b*c*d print("Proizvod
je ", p) else: print("Svi su
negativni") if a
< 0 or b < 0 or
c < 0 or d
< 0: z=a+b+c+d print("Zbir
je ", z) else: print("Svi su
pozitivni") |
Ispis na ekranu:
JAVA
Započnimo ovaj
uvod u Javu od osnovnih pitanja kao što su: šta je Java, gdje se koristi, koji
tipovi aplikacija su kreirani u Javi i zašto koristiti Javu.
Šta
je Java?
Java je programski jezik i platforma.
Java je robustan, siguran i objektno-orijentisan programski jezik visokog
nivoa.
Platforma: Svako hardversko ili softversko
okruženje u kojem program radi se naziva platforma. Pošto Java ima svoje
sopstveno runtime okruženje (JRE) i API, ona se naziva platformom.
Java
primjer
Pogledajmo jedan primjer Java programa. Detaljan opis hello java primjera ćemo
dati kasnije.
Listing
programa:
1 2 3 4 5 6 7 8 |
class
Simple{ public
static void main(String args[]){ System.out.println("Hello
Java"); }
} Ispis na
ekranu: Hello Java |
Gdje
se koristi?
Prema kompaniji Sun, 3 milijarde uređaja koristi Javu. Postoji mnogo uređaja
gdje se Java trenutno koristi. Navešćemo neke od njih:
1.
Desktop
aplikacije kao što su acrobat reader, media player, antivirus itd.
2.
Web
aplikacije.
3.
Enterprise
aplikacije kao što su bankarske aplikacije.
4.
Mobilni
uređaji.
5.
Ugrađeni
(Embedded) sistemi.
6.
Smart
Card
7.
Robotika
8.
Igre
itd.
Tipovi
Java aplikacija
Postoje uglavnom 4 tipa aplikacija koje se mogu kreirati pomoću Java
programiranja:
1)
Samostalne (Standalone) aplikacije
Poznate su takođe i kao desktop aplikacije ili window-based aplikacije. To su
aplikacije koje moramo instalirati na svakoj mašini kao što su media player,
antivirus itd. AWT i Swing se koriste u Javi za kreiranje samostalnih
aplikacija.
2) Web aplikacije
Aplikacija koja radi na serverskoj strani i kreira dinamičke stranice, se
naziva web aplikacija. Trenutno, servlet, jsp, struts, jsf itd. tehnologije se
koriste za kreiranje web aplikacija u Javi.
3) Enterprise aplikacije
To su aplikacije koje se distribuiraju u oblastima kao što je bankarstvo i sl.
One imaju prednost visokog nivoa sigurnosti, tzv. load balancing-a (u
računarstvu, load balancing poboljšava distribuciju radnih
sati preko višestrukih računarskih resursa, kao što su računari, računarski
klasteri, mrežni linkovi, centralne procesne jedinice ili disk drajvovi.
Optimizuje upotrebu resursa, minimizuje vrijeme i smanjuje preopterećenje
svakog pojedinog resursa), i klasterovanja. U Javi, EJB se koristi za kreiranje
enterprise aplikacija.
4) Mobilne aplikacije
To su aplikacije koje su kreirane za mobilne uređaje. Trenutno, Android i Java
ME se koriste za kreiranje mobilnih aplikacija.
Može se navesti mnogo
karakteristika Jave. One su takođe poznate i kao “java buzzwords”. Sljedeće
karakteristike Jave su jednostavne i lake za razumijevanje:
1.
Jednostavnost
2.
Objektna orijentisanost
3.
Platformna nezavisnost
4.
Sigurnost
5.
Robustnost
6.
Arhitekturna neutralnost
7.
Prenosivost
8.
Dinamičnost
9.
Interpretiranost
10.
Visoke performanse
11.
Višenitnost
(Multithread)
12.
Distribuiranost
Jednostavnost
Prema kompaniji Sun, jezik Java je jednostavan zato što:
- ima sintaksu koja je zasnovana na C++ (pa je za programere
lakše da ga nauče nakon C++).
- je uklonio mnogo zbunjujućih i/ili rijetko korištenih
karakteristika napr. eksplicitne pointere, preopterećenje operatora itd.
- nema potrebe za uklanjanjem nereferenciranih objekata
jer sadrži tzv. Automatsko sakupljanje smeća (Automatic Garbage
Collection).
Objektna orijentisanost
Objektna orijentisanost znači da se softver organizuje kao kombinacija
različitih tipova objekata koji uključuju i podatke i ponašanje.
Objektno-orijentisano programiranje (OOP) je metodologija koja pojednostavljuje
razvoj i održavanje softvera tako što obezbjeđuje određena pravila.
Osnovni koncepti OOP su:
1.
Objekt
2.
Klasa
3.
Nasljeđivanje
4.
Polimorfizam
5.
Apstrakcija
6.
Enkapsulacija
Platformna nezavisnost
Platforma je hardversko ili softversko okruženje u kojem program radi. Dakle,
postoje dva tipa platformi: softverski zasnovane i hardverski zasnovane. Java
obezbjeđuje softverski zasnovanu platformu. Java platforma se razlikuje od
većine drugih platformi u smislu da je to softverski zasnovana platforma koja
radi na drugim hardverski zasnovanim platformama. Ona ima dve komponente:
1.
Runtime okruženje
2.
API (Application
Programming Interface)
Java kod se može
pokrenuti na različitim platformama napr. Windows, Linux, Sun Solaris, Mac/OS
itd. Java kod se prvo kompajlira, a onda konvertuje u tzv. bytecode. Ovaj
bytecode je platformno nezavisan kod i može se pokrenuti na različitim
platformama. Ovaj princip se naziva Write Once Run Anywhere (WORA), tj. napiši
jednom pokreni svuda.
Slika 1.
Sigurnost
Java je sigurna zato što:
- nema eksplicitnih pointera
- programi se pokreću unutar tzv. “vreće s pijeskom u
virtualnoj mašini” (Virtual Machine Sandbox)
Slika 2.
- Classloader – poboljšava
sigurnost razdvajajući paket za klase lokalnog fajl sistema od onih koje
su uvezene iz mrežnih izvora.
- Bytecode Verifikator – provjerava fragmente koda na ilegalni kod koji
može narušiti pristupna prava objektima.
- Security Manager – određuje
kojim resursima klasa može pristupiti, napr. čitanje i pisanje po lokalnom
disku.
Ove sigurnosti
obezbjeđuje jezik Java. Neke sigurnosti se takođe mogu obezbijediti preko
aplikacionog developera kroz SSL, JAAS, kriptografiju itd.
Robustnost
Robustan jednostavno znači snažan. Java koristi snažno upravljanje memorijom.
Odsustvom pointera izbjegavaju se sigurnosni problemi. U Javi postoji
automatsko sakupljanje otpadaka (garbage collection). Takođe, u Javi postoje
mehanizmi rukovanja izuzecima (exception handling) i provjere tipa (type
checking). Sve ove stavke čine Javu robustnom.
Arhitekturna neutralnost
Nema karakteristika zavisnih od implementacije napr. veličina primitivnih
tipova je utvrđena.
Prenosivost
Moguće je prenijeti Java bytecode na bilo koju platformu.
Visoke performanse
Java je brža od tradicionalne interpretacije pošto je bytecode
"blizak" izvornom kodu, ali ipak je nešto sporija od kompajliranih
jezika (napr. C++).
Distribuiranost
Moguće je kreirati distribuirane aplikacije u Javi. RMI i EJB se koriste za
kreiranje distribuiranih aplikacija. Moguće je pristupati fajlovima pozivanjem
metoda iz bilo koje mašine na internetu.
Višenitnost
(Multi-threading)
Nit (thread) je poput zasebnog programa koji se izvršava konkurentno. Moguće je
pisati Java programe koji rade na mnogim zadacima odjednom tako što se definišu
višestruke niti. Glavna prednost višenitnosti (multi-threadinga) je da on
dijeli istu memoriju. Niti su važne za multimediju, Web aplikacije itd.
Postoji mnogo
razlika i sličnosti između C++ programskog jezika i Jave. Ovdje je data lista
glavnih razlika između C++ i Jave:
Indeks
poređenja |
C++ |
Java |
Platformna
nezavisnost |
C++ je
platformno zavisan. |
Java je
platformno nezavisna. |
Uglavnom se
koristi za |
C++ se uglavnom
koristi za sistemsko programiranje. |
Java se
uglavnom koristi za aplikaciono programiranje. Široko se koristi u window,
web, enterprise i mobilnim aplikacijama. |
Goto |
C++ podržava
goto naredbu. |
Java ne
podržava goto naredbu. |
Višestruko
nasljeđivanje |
C++ podržava
višestruko nasljeđivanje. |
Java ne
podržava višestruko nasljeđivanje kroz klasu. To se može postići preko
interfejsa u Javi. |
Preopterećenje
operatora |
C++ podržava
preopterećenje operatora. |
Java ne
podržava preopterećenje operatora. |
Pointeri
(pokazivači) |
C++ podržava
pointere. Moguće je napisati pointer program u C++. |
Java podržava
pointer interno. Ali nije moguće napisati pointer program u Javi. To znači da
Java ima ograničenu podršku za pointer. |
Kompajler i
Interpreter |
C++ koristi
samo kompajler. |
Java koristi i
kompajler i interpreter. |
Call by Value i
Call by reference |
C++ podržava i
call by value i call by reference. |
Java podržava
samo call by value. Ne postoji call by reference u Javi. |
Strukture i
Unije |
C++ podržava
strukture i unije. |
Java ne
podržava strukture i unije. |
Podrška za niti
(Thread) |
C++ nema
ugrađenu podršku za niti. Zavisi od biblioteka treće strane za podršku niti. |
Java ima
ugrađenu podršku za niti. |
Dokumentacioni
komentar |
C++ ne podržava
dokumentacioni komentar. |
Java podržava
dokumentacioni komentar (/** ... */) za kreiranje dokumentacije za Java
izvorni kod. |
Virtualne
ključne riječi |
C++ podržava
virtualne ključne riječi tako da možemo odlučiti hoćemo li redefinisati
(override) funkciju. |
Java nema
virtualnih ključnih riječi. Možemo redefinisati sve ne-statičke metode po defaultu.
Drugim riječima, ne-statičke metode su virtualne po defaultu. |
Neoznačeni
pomak u desno >>> |
C++ ne podržava
>>> operator. |
Java podržava
>>> operator koji piše nule na vrhu za negativne brojeve. Za
pozitivne brojeve, on radi isto kao >> operator. |
Stablo
nasljeđivanja |
C++ uvijek
kreira novo stablo nasljeđivanja. |
Java uvijek
koristi jedno stablo nasljeđivanja zato što su sve klase djeca klase Obj |
ZADACI JAVA I Q
BASIC
avisno o upisanoj
vrijednosti časa 0-23 ispisati poruku:
Opis rješenja:
Listing programa:
1 2 3 4 5 6 7 8 9 10 11 12 |
REM P07211067; CLS PRINT "Koje je vrijeme?" INPUT x IF (x
>= 0) AND (x
<= 8) THEN PRINT
"Dobro jutro" ELSEIF (x >= 9) AND
(x <= 18) THEN PRINT "Dobar dan" ELSE PRINT "Dobro vece" END IF END |
package zadatak;
import java.util.Scanner;
public class P07211067 {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
System.out.print("Ukucajte
broj proteklih casova: ");
int x = input.nextInt();
if ((x >= 0) && (x <= 8)) //&& - logicko i II-
logicko ili
System.out.println("Dobro
jutro");
else
if ((x >= 9) && (x <= 18))
System.out.println("Dobar
dan");
else
System.out.println("Dobro
vece");
}}
Napiši program za
rješavanje slijedećeg izraza:
Opis
rješenja: Nazivnik
mora biti različit od nule 2x-1<>0.
Listing
programa:
1 2 3 4 5 6 7 8 |
# 07212002 # Razlomak x=float(input("Unesite
broj: ")) if 2*x-1 != 0: print((3*x+8)/(2*x-1)) else: print("Izraz
nije definisan") |
package zadatak;
import
java.util.Scanner;
public class
P07212002 {
public
static void main(String[] args) {
Scanner
input = new Scanner (System.in);
System.out.println("Izraz");
System.out.print("Broj
");
double
x = input.nextInt();
if
(2*x - 1 != 0)
System.out.println("Rezultat
je "+ (3*x + 8)/(2*x - 1));
else
System.out.println("Nije
moguce dijeliti sa nulom");
}}
8.7.. Učitati prirodne brojeva K i
M sa tastature. Od broja K ispisati M neparni brojeva. Opis
programa: Petlja
sadrži provjeru da li broj neparan - ispisuje ga i uvećava brojač za 1.
Izlazak iz pelje je kad se ispiše željeni broj (m) neparnih brojeva Listing
programa:
|
package Zadatak;
import
java.util.Scanner;
public class P08702103
{
public
static void main(String[] args) {
Scanner
input = new Scanner(System.in);
System.out.print("Od
broja k= ");
int
k = input.nextInt();
System.out.print("Željeni
broj m= ");
int
m = input.nextInt();
int
i, br;
i
= k; // početna vrijednost
br
= 0; // brojač - početna vrijednost
while
(br < m) {
if
(i % 2 != 0) {
System.out.println(i);
// ispis
br
= br + 1; // brojač
}
i++;
// napredovanje kroz petlju
}
}
}
Nema komentara:
Objavi komentar