Upload
nguyendiep
View
335
Download
20
Embed Size (px)
Citation preview
1
Uvod u programiranje i
softverski paketi
Univerzitet u Nišu
Građevinsko-arhitektonski fakultet
II čas
Milan Gocić
oktobar, 2014.
- Azbuka programskog jezika Java -
Skup znakova
Skup znakova (engl. character set) koji se
koristi u jeziku Java čine velika i mala slova
engleskog alfabeta, deset decimalnih cifara i
veći broj znakova interpunkcije.
U Javi pravi se razlika između malih i velikih
slova kako u službenim delovima programa
tako i unutar običnih tekstova.
2
2
Leksički elementi Jave
3
Leksički
elementi
Beli simboli
Tokeni
Leksički elementi jezika (leksemi) su leksičke celine
koje imaju neki smisao u jeziku.
Beli simboli
Beli simboli su znaci koji se ne vide na
ekranu, a služe za uređivanje teksta:
blanko znaci,
vertikalni/horizontalni tabulatori,
znak za prelaz u novi red, itd.
4
3
Tokeni su elementi programskog jezika koji imaju
sintaksno i semantičko značenje u kôdu.
Sintaksno značenje: značenje u smislu pravilnog
formiranja "rečenica" u kôdu: zna se kako se
ispravno piše određena "naredba", zna se gde se
otvara a gde se zatvara obična zagrada, a gde
vitičasta itd. Izvorni kôd programa mora da
zadovoljava stroga pravila u smislu forme, pa
sintaksno značenje ima upravo taj smisao.
Semantičko značenje se odnosi na smisao koji ima
određeni token ili niz tokena: da li želimo da
uporedimo vrednost dve promenljive, ili pak da
dodelimo jednoj vrednost druge, itd. Može se reći da
se ovde, za razliku od forme, radi o suštini onoga
što želimo od programa.
Tokeni
5
Podela tokena (znakova)
6
4
Identifikator
Identifikator je oznaka ("reč") koja nešto, šta god,
označava (identifikuje).
Formalno, identifikator u Javi počinje slovom,
znakom "_" ili znakom "$", a nadalje sledi niz
simbola iz skupa {<slovo>, <cifra>,_,$}.
Java identifikator imena je osetljiv na veličinu slova (engl. case sensitive)
Ne sme biti ključna reč
Primeri za identifikator: i, j, pro, y10, _x, $cifra...
7
Literali
Literal je vrednost koja se eksplicitno prikazuje u programu.
Koristi se za prikaz konstanti.
LITERAL
Numerički
Logički
Znakovni
null
8
5
Numerički literali
Mogu biti:
CELOBROJNI
int (25, -89)
long (685845L, -265487l)
REALNI
float (1.23F, -5.6f)
double (151.2, 2.3E-6, 1.2e-5)
Celobrojni numerički literali se mogu zadavati u:
dekadnom brojnom sistemu
oktalnom BS (dodajemo nulu ispred: 0235, 0457)
heksadekadnom BS (dodajemo ispred "0x“:
0X45A, 0x5BB). 9
Slajd br. 10
Napomena Za zapis
u dekadnom brojnom sistemu: 25
u oktalnom brojnom sistemu: 025
u heksadekadnom brojnom sistemu: 0x25
važi:
25 ≠ 025 ≠ 0x25
6
Numerički literali
Celobrojni literali su, by default, tipa int, osim ako:
njihova vrednost prevaziđe opseg tipa int,
opseg tipa int u Javi je: od -231 do +231-1
ili ako se posebno naglasi da su oni tipa long, a
to se postiže dodavanjem slova "l" ili "L" iza
broja.
Numeričke konstante (literali) realnog tipa Java
automatski shvata kao double.
Naglašavanje da je u pitanju tip float se radi tako što
se iza broja doda slovo "f" ili "F".
11
Logički literali
Logički literali su vrednosti "da" i "ne", odnosno
"istinito" i "neistinito".
Oni mogu biti dodeljivani samo promenljivama
logičkog tipa.
Njihov zapis u Javi je: "istinito" se zapisuje kao true, a
"neistinito" se zapisuje kao false.
12
7
Znakovni literali
Literal znakovnog tipa je bilo koji znak (slovo,
broj...), ili niz znakova.
Ako se znakovna konstanta sastoji samo od
jednog znaka on se omeđuje apostrofima: 'a'.
Ako se sastoji od niza znakova, omeđuje se
klasičnim navodnicima: "abc".
13
Upravljački znakovi
Simbol Opis
\b oznaka za povratak unazad – backspace (BS)
\f oznaka za stranicu unapred – form feed (FF)
\n oznaka nove linije – new line (NL)
\r oznaka za povratak na početak reda (CR)
\t oznaka za horizontalni tabulator – (HT)
\v oznaka za vertikalni tabulator – (VT)
\” oznaka za dvostruki navodnik
\‘ oznaka za jednostruki navodnik
\\ oznaka za znak \ - backslash
‘\ooo‘ znak kojim je ASCII kôd zapisan oktalnim ciframa
‘\xhh‘ znak kojim je ASCII kôd zapisan heksadekadnim
ciframa
14
8
Referentni literal: null
Dodeljuje se automatski svakoj promenljivoj bilo kog referentnog tipa (klase, interfejsi i nizovi).
Kada se u Javi definiše promenljiva tipa neke klase, kao na primer:
String s;
za nju se u startu ne rezerviše nikakav memorijski prostor.
Smatra se da ta promenljiva ima vrednost null – što je upravo ova konstanta.
15
Primer
Napisati program za štampanje
R.br. X Y Z
1 2.5 3.6 4.9
package informatika;
public class Zaglavlje {
public static void main(String[] args) {
System.out.print("\tR.br.\tX\tY\tZ\n");
System.out.println("\t1\t2.5\t3.6\t4.9");
}
}
16
9
Ključne reči jezika Java
Ključne reči (rezervisane ili službene reči) programskog jezika su reči (nizovi znakova, ali ne
pod navodnicima ili apostrofima) koji imaju unapred
definisano sintaksno i semantičko značenje u
programu.
Koncept zaštite ključnih reči (prisutan kod svih viših
programskih jezika) znači da se ključne reči ne mogu
koristiti kao identifikatori.
Gotovo svi editori vrše naglašavanje ključnih reči, čime
programeru stavljaju do znanja da su reči
prepoznate kao ključne, odnosno da nema grešaka u
kucanju. Nagalašavanje obično podrazumeva
bojenje tih reči (nakon što su prepoznate) u plavo ili
ljubičasto. 17
Ključne reči jezika Java
To su zapravo naredbe (instrukcije) programskog
jezika, uključujući i nazive primitivnih tipova
podataka i nekih operatora i pišu se malim slovima.
Java poznaje sledeće ključne reči:
abstract default if private throws
boolean do implements protected transient
break double import public try
byte else instanceof returnshort void
case extends int static volatile
catch final interface super while
char finally long switch
class float native synchronized
const for new this
continue goto package throw
18
10
Separatori
Separatori su specijalni znaci koji ne označavaju
operaciju, a imaju funkciju da odvoje određene
logičke celine u kôdu.
U separatore spadaju: ()
omeđuju logički uslov u if, while petlji
omeđuju postavljanje brojača for petlje
{}
omeđuju jedan blok kôda
;
označavaju kraj jedne naredbe u kôdu. Naziva se i
terminator naredbi.
19
Komentari
Komentari su delovi koda koje kompajler pri
prevođenju kôda jednostavno ignoriše, a od
značaja su za programera.
Komentari se u Javi obeležavaju na sledeći
način: // komentar koji važi do kraja reda, ili
/* komentar koji može da se proteže kroz više
redova, a važi sve do znaka */
Po konvenciji, editori u gotovo svim razvojnim
okruženjima komentare boje u svetlo zeleno.
20
11
Komentari
Specijalna vrsta komentara: dokumentacioni
komentari.
Oni stoje između znakova /** i */ (razlika: prvi
ima 2 zvezdice a ne jednu).
Oni služe da ih Javin generator tehničke
dokumentacije (Javadoc) automatski uključi u
dokumentaciju o projektu koju generiše.
Tehnička dokumentacija ima poseban značaj
pri izradi projekta. 21
Primer
Napisati program za ilustraciju komentara i štampanje
stringa „Java programski jezik”.
package informatika;
public class Komentar {
/* Program napisan u programskom jeziku Java
za ilustraciju komentara */
public static void main(String[] args) {
// Prikazuje se string "Java programski jezik"
System.out.println("Java programski jezik");
}
}
22
12
Tipovi podataka
Tip podatka je pripadnost skupu koji ima zajedničke
karakteristike. Tip promenljive određuje način njenog
kodiranja, način kako ona zauzima memoriju
računara i operacije koje su nad tom promenljivom
dozvoljene. Tipovi promenljivih ili konstanti koji se
koriste u izrazima određuju tip rezultata tog izraza.
Tipovi podataka su posebno važni u Javi jer ima jako
definisanje tipa podatka (engl. strongly typed
language). To znači da svi podaci u programu
moraju imati definisan tip. Podaci bez tipa se ne
kompajliraju. 23
Tipovi podataka
24
Tip
podatka
Primitivni
(osnovni)
Referentni
13
Primitivni tip podatka
25
Primitivni tip podatka
26
Tip Vrednosti Default Veličina Opseg
byte označeni
celi brojevi
0 8 bita od -128 do 127
short označeni
celi brojevi
0 16 bita od -32768 do 32767
int označeni
celi brojevi
0 32 bita od -2147483648 do 2147483647
long označeni
celi brojevi
0 64 bita od -9223372036854775808 do
9223372036854775807
float IEEE 754 0.0 32 bita od +/-1.4E-45 do +/-3.4028235E+38,
+/-beskonačno, +/-0, NAN
double IEEE 754 0.0 64 bita od +/-4.9E-324 do
+/-1.7976931348623157E+308,
+/- beskonačno, +/-0, NaN
char Unicode
karakteri
\u0000 16 bita od \u0000 do \uFFFF
boolean true, false false 1 bit nije dostupan (NA)
14
Wrapper klase
27
Osnovni tip
podatka
Wrapper klasa
byte java.lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java.lang.Float
double java.lang.Double
char java.lang.Character
boolean java.lang.Boolean
void java.lang.Void
Maksimalne i minimalne vrednosti i statičke
metode za procesiranje osnovnih tipova podataka
nalaze se u wrapper klasama
Referentni tipovi podataka
Referentni tipovi podataka u Javi su:
klase,
interfejsi i
nizovi.
28
15
Vrednosni i referentni tipovi
podataka
Razlika između vrednosnih i referentnih tipova podataka:
Kada se deklariše promenljiva vrednosnog tipa, u
memoriji se odmah odvoji prostor za skladištenje
njene vrednosti.
Kada se deklariše promenljiva referentnog tipa, u
memoriji se ne rezerviše nikakav prostor. Prostor se
rezerviše kada se sâm objekat kreira operatorom
new. Kada se deklariše podatak tipa neke klase, ne
zna se unapred koliko će biti potrebno memorijskog
prostora za konkretan objekat, jer on ne mora biti
tipa te klase – već može biti i tipa bilo koje njene
podklase (izvedene klase).
29
Promenljive
Promenljiva je mesto u operativnoj memoriji gde može biti smeštena neka vrednost, koja se može menjati u svim fazama izvršenja programa.
Promenljiva se u kôdu predstavlja identifikatorom.
Dodela oznake tipa nekoj promenljivoj naziva se deklaracija promenljive, a ako se pod tom deklaracijom podrazumeva i rezervisanje memorijskog prostora u kojem će biti smeštena kodirana vrednost promenljive, onda se kaže da je deklaracijom izvršena i definicija promenljive.
16
Deklarisanje promenljive
Deklarisanje promenljive znači njeno
"uvođenje" u program, tako da kompajler
može da je prepozna u nastavku kôda. Promenljiva se u Javi može deklarisati na bilo
kom mestu u programu, onda kada se za njom
pojavi potreba; ali ne može se koristiti pre nego
što se deklariše.
Promenljiva se deklariše (uvodi u program) navođenjem tipa kome pripada, i u nastavku navođenjem imena promenljive:
tip_promenljive ime_promenljive;
Inicijalizacija promenljive
Inicijalizacija promenljive je deklaracija u kojoj se
određuje početna vrednost promenljive.
Opšti oblik inicijalizacije izgleda
tip_promenljive ime_promenljive = vrednost;
gde je tip_promenljive tip podatka promenljive,
ime_promenljive ime promenljive, a vrednost je
vrednost koja se dodeljuje promenljivoj i mora
odgovarati tipu podatka.
17
Primer
Primer za deklarisanje promenljivih primitivnih
tipova: byte a, b = 1; // a se ne inicijalizuje, a b se inic. na 1
int a,b; // ovde se ništa ne inicijalizuje
boolean leto = false;
Ukoliko se pri deklaraciji promenljiva ne
inicijalizuje nikakvom konkretnom vrednošću,
promenljive numeričkih tipova se automatski inicijalizuju na vrednost 0, znakovne na
'\0', a logičke na false.
Primer /*
Korišćenje Pitagorine teoreme za izračunavanje dužine hipotenuze na
osnovu dužina kateta trougla.
*/
class Pitagora {
public static void main(String args[]) {
double x, y, z;
x = 3;
y = 4;
z = Math.sqrt(x*x + y*y);
System.out.println(“Dužina hipotenuze je " +z);
}
}
Izlazni rezultat programa
Dužina hipotenuze je 5.0 34
18
Konstante
Konstante su izrazi fiksne vrednosti.
Moraju se inicijalizovati pri definisanju.
Za deklarisanje konstanti koristi se ključna reč final
final tip_promenljive naziv_promenljive = vrednost;
Na primer, final double PI = 3.14;
Konstanta je bilo koja vrednost u kôdu. To ne mora biti samo
numerička vrednost. Java razlikuje još dva tipa vrednosti:
logičke (tačno ili netačno) i znakovne (znakovni nizovi).
35
Primer Napisati program za izračunavanje obima kruga korišćenjem deklarisane konstante
PI. Zadatak ne rešavati korišćenjem konstante PI deklarisane u klasi Math.
package informatika;
public class ObimKruga {
public static void main(String[] args) {
final float PI = 3.14159f;
float r = 5, obim;
obim = 2 * r * PI;
System.out.println("Obim kruga je " + obim + " za poluprečnik " + r);
}
}
Izlazni rezultat programa
Obim kruga je 31.415901 za poluprečnik 5.0
36