Docsity
Docsity

Pripremite ispite
Pripremite ispite

Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u


Nabavite poene za preuzimanje
Nabavite poene za preuzimanje

Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan


Školska orijentacija
Školska orijentacija


PROGRAMSKI JEZIK Java sa rešenim zadacima, Rezime od Programiranje

Ova knjiga predstavlja udžbenik za programski jezik Java za široki krug čitalaca. Knjigu mogu da koriste i početnici u programiranju, ali poznavanje osnovnih pojmova iz objektno orijentisanog programiranja i programskih jezika C/C++ ili C# znatno olakšava da se savlada materija iz ove knjige.

Tipologija: Rezime

2017/2018

Učitan datuma 05.09.2018.

joovann
joovann 🇸🇷

4.4

(7)

3 dokumenti

1 / 53

Toggle sidebar

Ova stranica nije vidljiva u pregledu

Ne propustite važne delove!

bg1
Kraus: Knjiga Java.doc i 04.03.13 00:48
Laslo Kraus
PROGRAMSKI JEZIK
Java
sa rešenim zadacima
AKADEMSKA MISAO
Beograd, 2013
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35

Delimični pregled teksta

Preuzmite PROGRAMSKI JEZIK Java sa rešenim zadacima i više Rezime u PDF od Programiranje samo na Docsity!

Laslo Kraus

PROGRAMSKI JEZIK

Java

sa rešenim zadacima

AKADEMSKA MISAO

Beograd, 2013

Laslo Kraus

PROGRAMSKI JEZIK JAVA SA REŠENIM ZADACIMA

Recenzenti Dr Igor Tartalja Mr Đorđe Đurđević

Lektor Anđelka Kovačević

Korice Zorica Marković, akademski slikar

Izdavač AKADEMSKA MISAO Bul. kralja Aleksandra 73, Beograd

Štampa Planeta print, Beograd

Tiraž 300

ISBN 86-7466-???-?

NAPOMENA: Fotokopiranje ili umnožavanje na bilo koji način ili ponovno objavljivanje ove knjige - u celini ili u delovima - nije dozvoljeno bez prethodne izričite saglasnosti i pismenog odobrenja izdavača.

Predgovor

Ova knjiga predstavlja udžbenik za programski jezik Java za široki krug čitalaca. Knjigu mogu da koriste i početnici u programiranju, ali poznavanje osnovnih pojmova iz objektno orijentisanog programiranja i programskih jezika C/C++ ili C# znatno olakšava da se savla- da materija iz ove knjige. Programski jezik Java izložen je u obimu koji može da zadovoljava i naprednije nepro- fesionalne programere. Od ogromne standardne biblioteke klasa, koja prati jezik Java , objašnjeni su samo delovi koji su potrebni za efikasno programiranje pri rešavanju većine problema relativno visoke složenosti. Jedini način da se nauči neki programski jezik jeste da se pišu programi na njemu. Ova knjiga je u potpunosti podređena tom osnovnom načelu. Uvodno poglavlje 1 sadrži i informacije korisne pre svega za početnike: osnovne poj- move objektno orijentisanog programiranja, glavne osobine programskog jezika Java i načina obrade programa u tekstualnom i grafičkom okruženju. U poglavlju 2 obrađeni su podaci koji su predmet obrade u programima. Objašnjen je pojam tipa podataka, načini definisanja i korišćenja skalarnih brojčanih, znakovnih i logičkih podataka. Da bi što pre mogli da se pišu potpuni programi u ovom poglavlju je obrađena i ulazna i izlazna konverzija brojčanih podataka. Naime, programi koji ne vrše čitanje početnih podataka i ispisivanje rezultata nemaju nikakvu upotrebnu vrednost. Poglavlje 3 je posvećeno operatorima i načinima sastavljanja izraza pomoću njih. Tu su obrađeni operatori jezika Java koji čitaocu s prosečnim matematičkim obrazovanjem ne bi trebalo da budu strani. Prikazivanje nekih specifičnijih operatora je odloženo za kasnije. Kao proširenje skupa operatora dat je i pregled važnijih standardnih bibliotečkih funkcija koje postoje u jeziku Java. Odabrane su funkcije koje se odnose na opštepoznate pojmove iz matematike i na obradu već objašnjenih tipova podataka. U poglavlju 4 prikazane su naredbe koje predstavljaju jedinične obrade u programima. Pored prostih naredbi obrađene su složene naredbe jezika Java koje omogućavaju sa- stavljanje složenih programa na efikasan i pregledan način: uslovno izvršavanje (selekcije), višestruko izvršavanje (ciklusi) delova programa i upravljačke naredbe (skokovi). Iz matematike dobro poznati nizovni tipovi: vektori, matrice i višedimenzionalni nizovi obrađeni su u poglavlju 5. Izučavanje objekto orijentisanog programiranja počinje u poglavlju 6 o klasama. Klase su složeni tipovi podataka koji programerima omogućuju modeliranje objekata iz realnog života. Sastoje se od polja čije vrednosti čine stanja primeraka klasa i metoda koje definišu

Sadržaj

Predgovor..............................................................................................................................v

1 Uvod

1.1 O programskom jeziku Java

Programski jezik Java je viši programski jezik opšte namene koji u potpunosti podržava pa- radigmu objektno orijentisanog programiranja. Java je više od programskog jezika koji ima određenu sintaksu i semantiku. Ona je pra- vo programsko okruženje koje pomoću ogromne biblioteke standardnih programskih mo- dula podržava obrade bez kojih danas ne može da se zamisli nijedan ozbiljan program. Tu spadaju komunikacija sa korisnikom preko prozora, višenitna obrada, rad preko Interneta , troslojna arhitektura rada s bazama podataka itd. Standardi programskih jezika do pojave jezika Java te elemente nisu obuhvatali. Svaki proizvođač je uvodio nestandardna rešenja za njih, ograničavajući time prenosivost programa s jedne na drugu platformu. Programski jezik Java je srodnik jezika C++ koji je direktni potomak jezika C. Pogramski jezik C pojavio se početkom 1970-tih godina i u osnovama je promenio dotadašnji, nesistematizovani, stil programiranja. Kroz podršku za strukturirano programi- ranje obezbedio je da mogu da se napišu, razumeju i održavaju znatno veći programski sistemi nego pre. Pošto se u centru pažnje nalaze postupci koji se primenjuju na podatke, ta tehnika programiranja naziva se i proceduralno programiranje. Pošto su jezik C projektovali programeri koji su i sami pisali programe, drugi programe- ri su ga rado prihvatili i uskoro je postao jedan od najrasprostranjenijih programskih jezika, koji se koristi i danas. Za autora jezika C smatra se Denis Riči ( Dennis Ritchie ) iz Belovih laboratorija ( Bell Laboratories ).

Početkom 1980-tih godina računarski programi narasli su do takvih veličina da su se tehnike proceduralnog programiranja pokazale neefikasnim. Rešenje se našlo u paradigmi objektno orijentisanog programiranja , kod koje se u centru pažnje nalaze podaci (objekti) na koje se primenjuju neki postupci. Od programskih jezika koji su projektovani da podrža- vaju nove tehnike programiranja najveći uspeh je imala nadogradnja jezika C , koja je danas poznata pod imenom C++ (++ je u jeziku C operator povećavanja!). Preko 95% jezika C usvojeno je bez izmena i u jeziku C++. C++ je hibridni jezik u smislu što, pored novijeg objektno orijentisanog programiranja, podžava i starije proceduralno programiranje. Za autora jezika C++ smatra se Bjarn Strostrup ( Bjarne Stroustrup ).

2 1 Uvod

Početkom 1990-tih godina pojavila se potreba za programima koji su u prevedenom obliku nezavisni od platforme, tj. mogu da se izvršavaju na bilo kom računaru bilo kog proizvođača. Radilo se prvenstveno o programima za potrebe industrijske elektronike za upravljanje kućnim aparatima. Postojeći viši programski jezici bili su, bar teorijski, prenosivi na nivou izvornog teksta programa. Taj tekst morao zasebno je da se prevede u izvodljivi oblik za svaku vrstu ra- čunara. To bi u uslovima naraslog broja različitih platformi tražilo izradu velikog broja prevodilaca sa višeg programskog jezika na mašinski jezik računara. Trebalo je projektovati programski jezik koji omogućava da prevedeni oblik programa bude nezavisan od platfor- me na kojoj se izvršava. Zbog toga je grupa programera u firmi Sun Microsystems, Inc. s Džemsom Gazlingom ( James Gosling ) na čelu započela projektovanje novog programskog jezika koji je trebalo da bude lak za korišćenje, pouzdan i nezavisan od platforme na nivou prevedenog oblika. Taj jezik se u početku zvao Oak (hrast), a ime Java dobio je 1995. godine. Nekako baš u vreme razvijanja jezika Java počelo je intenzivno širenje Interneta i posebno njegove usluge World Wide Web za pružanje najraznovrsnijih informacija, organi- zovanih u takozvane "veb stranice", sa specijalnih servera do proizvoljnih klijenata širom sveta. Veb stranice su u početku bile statične: sadržavale su samo tekstove i slike (u počet- ku nepokretne, kasnije i pokretne). Za dinamični sadržaj, koji podrazumeva i interakciju s klijentima, trebalo je u veb stranice ugraditi male programe. Ti programi, pošto bi se izvr- šavali na računaru klijenta, morali su biti nezavisni od platforme i bezbedni da ne naprave štetu na klijentskom računaru. Programski jezik Java imao je upravo te osobine, pa je današnju popularnost stekao kroz takozvane aplete ( applets ), male programe koji se ugrađuju u veb stranice. U međuvre- menu apleti kao dinamični sadržaj veb stranica prevaziđeni su, ali i nove tehnologije pro- gramiranja za Internet u velikoj meri se oslanjaju na jezik Java. Kao programski jezik opšte namene, Java se koristi i za izradu samostalnih programa koji se nazivaju aplikacije.

Programski jezik Java nema zvaničan standard. Kao de facto standard uzima se specifi- kacija koju je u početku publikovala firma Sun Microsystems, Inc ., a u novije vreme firma Oracle , koja je kupila firmu Sun. Jezik je još u intenzivnom razvoju i publikovan je veći broj izdanja. Prvo izdanje je bila verzija 1.0, ali je ubrzo zamenjena verzijom 1.1 koja nije donela bitne izmene. Verzija 1. donela je značajne izmene i od tada se jezik skraćeno zove Java 2, a punim imenom Java J2SE ( Java 2 Platform Standard Edition ). Sledile su verzije 1.3 i 1.4 koje su donele manje izmene. Verzija 1.5 donela je ogromne promene, pa da bi se to naglasilo, ta verzija je proglašena verzijom 5 ( Java J2SE 5 ). Aktuelna verzija u vreme pisanja ove knjige je 7.

1.2 Uvod u objektno orijentisano programiranje

U svakom računarskom programu mogu da se uoče dve grupe elemenata: naredbe i podaci. Naredbe određuju šta se radi, a podaci čime se radi. Organizacija programa može da bude orijentisana ka jednoj od ove dve grupe elemenata.

Klasičan stil programiranja okrenut je prema postupcima i naziva se proceduralno programiranje ( procedural programming ). Po tom modelu program se sastoji od niza uzastopnih koraka. Logičke celine koraka mogu da se ostvaruju u obliku modula koji se

2 Podaci

Podaci su predmet obrade u programima. U vom poglavlju su uvedeni osnovni pojmovi o podacima u programiranju i prikazani su prosti tipovi podataka koji se koriste u jeziku Java.

2.1 Elementi jezika Java

Skup znakova ( character set) koji se koristi u jeziku Java čine mala i velika slova engle- skog alfabeta, mala i velika slova većine alfabeta sveta, deset decimalnih cifara i veći broj znakova interpunkcije. Pravi se razlika između malih i velikih slova kako u službenim delo- vima programa tako i unutar običnih tekstova. U nastavku teksta pod pojmom slova podrazumevaju se mala i velika slova bilo kog al- fabeta, a pod pojmom cifre decimalne cifre. Mada jezik Java predviđa upotrebu slova svih alfabeta, u službenom delu jezika koriste se samo slova engleskog alfabeta. Takođe, postoje radna okruženja koja ne podržavaju upo- trebu slova bilo kog alfabeta. Ona obično podržavaju upotrebu slova engleskog alfabeta i, eventualno, još jedne grupe alfabeta. Na primer: latinična slovazapadno evropskih jezika, latinična slova istočnoevropskih jezika ili ćirilična slova.

Leksički simboli ( tokens ) su nedeljivi nizovi znakova. U jeziku Java dele se na identifi- katore, konstante, ključne reči, operatore i separatore. Leksički simboli mogu da se pišu, uz nekoliko izuzetaka, spojeno ili međusobno razdvojeno proizvoljnim brojem „belih” znako- va. Beo znak između leksičkih simbola je neophodan, ako bi se njegovim izostavljanjem dobio drugi postojeći leksički simbol.

U bele znakove ( white spaces ) spadaju znak za razmak, tabulacija, vertikalna tabulaci- ja, prelazak u novi red i prelazak na novi list.

U širem smislu, u bele znakove se ubrajaju i komentari. Komentari ( comments ) su proi- zvoljni tekstovi koji su namenjeni čitaocu teksta programa radi lakšeg razumevanja namene i funkcionisanja programa. Te tekstove prevodilac zanemaruje.

14 2 Podaci

U jeziku Java postoje tri vrste komentara:

  • Komentari započeti sa // obavezno traju do kraja reda i tu se završavaju. Zgodni su za kratke komentare iza službenih elemenata s početka reda.
  • Komentari stavljeni između /* i */ mogu da se stave između bilo koja dva leksička simbola (kao i beli znakovi) i mogu da se protežu i kroz više redova. Mogu da posluže kao kratki umeci unutar redova ili da sadrže duža objašnjenja.
  • Komentari stavljeni između /** i */ su takozvani dokumentacioni komentari. Sadržaj takvih komentara program javadoc iz kompleta JDK koristi za sasta- vljanje dokumentacije programa. Mada i dokumentacioni komentari mogu da se umeću unutar redova, oni se obično protežu na više redova. Naredbe ( statements ) su nizovi leksičkih simbola. Dele se na deklarativne i izvršne naredbe. Deklarativnim naredbama ( declarative statements ) definišu se neki elementi pro- grama (podaci, funkcije, klase itd.), izvršnim naredbama ( executive statements ) izvode se elementarne obrade.

Programi su nizovi naredbi pomoću kojih se ostvaruju složene obrade podataka. Jezik Java ne postavlja nikakve uslove za raspoređivanje naredbi po redovima teksta programa. Jedna naredba može da se proteže u više redova i u jednom redu može da bude više naredbi. Osnovno načelo treba da bude što veća preglednost teksta celokupnog programa.

2.2 Identifikatori

Identifikatori ( identifiers ) služe za označavanje svih vrsta elemenata programa: podataka, simboličkih konstanti, tipova podataka koje definiše programer, potprograma i oznaka koje služe kao odredišta za naredbe skokova. Identifikatori mogu da se sastoje od slova, cifara, znaka podvučeno (_) i znaka dolar ($). Prvi znak u identifikatoru ne sme da bude cifra. Upotrebu znaka $ treba izbegavati. On je rezervisan za identifikatore koje razni alati za generisanje programskih tekstova generišu automatski. Pravi se razlika između malih i velikih slova. To znači da su q i Q dva različita identifi- katora. Identifikatori mogu da budu proizvoljno dugački. Ključne reči ( keywords ) jezika Java su rezervisane reči ( reserved words ) i ne mogu da se koriste kao identifikatori. Te ključne reči su: abstract assert boolean break byte case catch char class continue const default do double else enum extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while Reči const i goto su uvrštene u ključne reči, mada se ne koriste u jeziku Java , jer njihova pojava u programu u bilo koje neslužbene svrhe mogla bi da zbuni programere koji su ranije koristili jezike C i C++.

16 2 Podaci

Podaci mogu da budu prosti ili složeni. Podaci prostih tipova ( primitive types ) ili prosti podaci ( primitive data) ne mogu da se rastave na manje elemente koji bi mogli nezavisno da se obrađuju. Zato se kaže da oni nemaju strukturu. Nazivaju se i nestrukturirani podaci ili skalarni podaci. U jeziku Java , prosti podaci su brojčani, znakovni i logički podaci. Podaci složenih tipova ( compound types ) ili složeni podaci ( compund data) sastoje se od nekoliko elemenata koji mogu da se nezavisno obrađuju. Elementi složenih podataka mogu da budu prosti, ali i sami mogu da budu složeni. Na taj način je broj različitih slože- nih tipova podataka, koji mogu da se izvode, polazeći od prostih tipova podataka, neograni- čen. Pošto složeni podaci imaju određenu strukturu nazivaju se i strukturirani podaci. U jeziku Java , složeni podaci su nizovi i klase.

Prema načinu uskladištavanja i pristupanja, podaci se dele na vrednosne i pokazane. Promenljiva vrednosnog tipa ( value type ) sadrži vrednost podatka koga predstavlja (sli- ka 2.1.a). Pod vrednošću promenljive podrazumeva se vrednost sadržanog podatka. Opera- cije nad promenljivom obrađuju taj, neposredno, sadržani podatak. Promena vrednosti jed- ne promenljive nikad ne utiče na vrednost druge.

Promenljiva pokazanog tipa ( reference type ) sadrži samo adresu mesta (pokazivač – pointer , reference ) u memoriji gde se nalazi vrednost predstavljenog podatka (slika 2.1.b). Pod vrednošću promenljive podrazumeva se vrednost pokazanog podatka, a ne vrednost ne- posredno sadržanog pokazivača. Operacije nad promenljivom obrađuju pokazani podatak, a ne neposredno sadržani pokazivač. Više promenljivih mogu da pokazuju na fizički isti podatak. U tom slučaju promena vrednosti jedne promenljive promeniće i vrednost ostalih promenljivih koje predstavljaju (pokazuju na) isti podatak. Na primer, na slici 2.1.b promenljive b i c predstavljaju isti niz brojeva. Ako se promeni vrednost broja b 2, promeni- će se i vrednost broja c 2. U jeziku Java prosti tipovi su vrednosni, a složeni tipovi pokazani tipovi podataka. U nastavku ovog poglavlja obrađeni su prosti tipovi podataka u jeziku Java.

2.4 Brojčani tipovi

Brojčani tipovi ( numeric types) podataka jesu prosti tipovi za koje su definisane aritmetičke operacije. Među njima posebno se razlikuju celobrojni i realni tipovi.

Slika 2.1 – Vrednosni i pokazani podaci

a) vrednosni b) pokazani

x: (^8) y: (^2)

a: 5 0 2 7 9 34 b: 7 9 2 6 8 z: 5 c:

3 Operatori

Operatori predstavljaju radnje koje se izvršavaju nad operandima dajući pri tome određeni rezultat. Izrazi ( expressions ) su proizvoljno složeni sastavi operanada i operatora. Opšti oblik izraza u jeziku Java je:

konstanta ili promenljiva ili operator izraz ili izraz operator ili izraz operator izraz ili izraz? izraz : izraz ili ( izraz ) Najjednostavniji izraz se sastoji od jedne konstante ili od jedne promenljive. Složeniji izrazi se dobijaju primenom operatora na operande. Pošto operandi mogu da budu rezultati ranijih izračunavanja u gornjem opštem obliku su obeleženi sa izraz.

Operatori mogu da se primenjuju na jedan operand (unarni operatori) ili na dva operan- da (binarni operatori). U jeziku Java postoji i jedan operator s tri operanda (ternaran opera- tor). Unarni operatori mogu da stoje ispred operanda (prefiksni operatori) ili iza operanda (postfiksni operatori). Binarni operatori uvek stoje između svoja dva operanda (infiksni operatori). Upotreba ternarnog operatora ?: označava se stavljanjem znaka pitanja između prvog i drugog operanda i dve tačke između drugog i trećeg operanda. Na kraju, izraz po potrebi i po želji može da se stavlja unutar para oblih zagrada (). Njihova uloga je da izdvoje deo složenog izraza kao neku manju celinu i da time utiču na redosled izračunavanja operatora.

Rezultat izračunavanja može biti:

  • promenljiva – nešto što je u memoriji ( lvrednost u jezicima C/C++ ),
  • vrednost,
  • ništa – označava se sa void (može biti samo rezultat metoda koje su tako obe- ležene – §6.4.1.1, 103). Postoje operatori za koje neki od operanada mora da bude promenljiva. Ako pri objašnja- vanju pojedinih operatora nije posebno naglašeno, operandi ne moraju da budu promenljive.