Java i objektno orijentirano programiranje

March 14, 2017 | Author: Tchuxy | Category: N/A
Share Embed Donate


Short Description

Knjiga iz informatike za 4. razred prirodoslovno-matematičke gimnazije. Autor: Predrag Brođanac, V. gimnazija ...

Description

Java i objektno orijentirano programiranje

Predrag Brođanac

Sadržaj 1. Osnovni pojmovi ..................................................................................................... 3 1.1 Program, programiranje, programski jezik..................................................... 4 1.2 Povijest programskih jezika ............................................................................. 6 1.2.1 Strojni jezici ............................................................................................. 6 1.2.2 Simbolički jezici....................................................................................... 6 1.3 Tehnike pisanja programa ................................................................................ 8 2. Uvod u Javu .............................................................................................................. 9 2.1 Programski jezik Java......................................................................................10 2.2 Izvršavanje Java programa .............................................................................11 2.3 BlueJ razvojno okruženje ...............................................................................13 2.4 Elementi Jave...................................................................................................20 2.5 Tipovi podataka...............................................................................................22 2.5.1 Jednostavni tipovi podataka ................................................................23 2.5.1.1. Cjelobrojni tipovi podataka.........................................................23 2.5.1.2. Znakovni tip podataka.................................................................23 2.5.1.3. Realni tip podataka.......................................................................24 2.6 Deklaracija varijabli.........................................................................................25 2.7 Operatori ........................................................................................................26 2.7.1 Aritmetički operatori ............................................................................26 2.7.2 Relacijski operatori ...............................................................................27 2.7.3 Logički operatori...................................................................................28 2.7.4 Prioritet operatora.................................................................................29 2.7.5 Izračunavanje mješovitih izraza ..........................................................29 2.8 Prvi programi...................................................................................................31 3. Naredbe grananja ...................................................................................................33 3.1 if, if/else naredba..................................................................................34 3.2 switch/case naredba...............................................................................36 4. Petlje ........................................................................................................39 4.1 for petlja ........................................................................................................40 4.2 while petlja ...................................................................................................44 4.3 do/while petlja ...........................................................................................47 5. Složeni tipovi podataka .........................................................................................50 5.1 Niz ....................................................................................................................51 5.1.1 Višedimenzionalni nizovi.....................................................................53 5.2 String .................................................................................................................57 6. Objektno orijentirano programiranje ..................................................................59 6.1 Drugačiji pristup programiranju....................................................................60 6.2 Klasa i objekt ...................................................................................................61 6.3 Kreiranje objekta iz klase ...............................................................................66 6.3.1 Pristup elementima klase......................................................................67 2

Java i objektno orijentirano programiranje

6.4 Nasljeñivanje klasa ..........................................................................................69 7. Programi u Javi.......................................................................................................74 7.1 Klasa i program ...............................................................................................75 7.2 Metoda main ....................................................................................................76 7.3 Izvršavanje Java programa iz komandnog prompta ...................................79 8. Elementi grafičkog korisničkog sučelja ...............................................................80 8.1 O grafičkom korisničkom sučelju .................................................................81 8.2 Prozor i njegovi dijelovi .................................................................................82 8.3 Okviri za tekst i gumbi ...................................................................................84 8.3.1 Okviri za tekst .......................................................................................84 8.3.2 Gumbi ....................................................................................................84 9. Dogañaji .................................................................................................................88 10. Iznimke ....................................................................................................................94 10.1 Što je iznimka..............................................................................................95 10.2 Hvatanje iznimki u Javi..............................................................................95 10.3 Procesiranje iznimki ...................................................................................98 11. Složeniji elementi grafičkog korisničkog sučelja ..............................................102 11.1 Kvadratići za odabir opcija......................................................................102 11.2 Kružići za odabir opcija ...........................................................................103 11.3 Područja za tekst.......................................................................................104 11.4 Trake za pomicanje ..................................................................................105 11.5 Padajuće liste .............................................................................................106 11.6 Izbornici.....................................................................................................107 12. Unos i ispis podataka...........................................................................................111 12.1 Streamovi...................................................................................................112 12.1.1 Bajtovni streamovi..............................................................................113 12.1.2 Znakovni streamovi............................................................................113 12.2 Standardni ulaz i izlaz...............................................................................113 12.3 Tekstualne datoteke..................................................................................116 12.3.1 Čitanje podataka iz datoteka..............................................................116 12.3.2 Spremanje podataka u datoteke ........................................................119 13. Dijaloški prozori...................................................................................................122 13.1 Dijaloški prozori za otvaranje/spremanje dokumenata.......................124 13.2 Poruke, potvrde i jednostavan unos.......................................................126 13.2.1 Metoda showMessageDialog...................................................127 13.2.2 Metoda showConfirmDialog...................................................128 13.2.3 Metoda showInputDialog........................................................129 13.2.4 Metoda showOptionDialog .....................................................130 13.3 Klasa Color i odabir boja .....................................................................131 13.4 Klasa Font...............................................................................................133 14. Klasa Graphics................................................................................................135 14.1 Metode klase Graphics.......................................................................137 14.2 Crtanje grafa funkcije ...............................................................................143 15. Java appleti ............................................................................................................148 3

15.1 Primjer appleta ..........................................................................................149 15.2 Integriranje appleta u web stranicu ........................................................151 15.3 Prosljeñivanje parametara appletu iz web browsera.............................155 16. I još dva primjera .................................................................................................160 16.1 Telefonski imenik .....................................................................................161 16.2 Chat ............................................................................................................161

4

Java i objektno orijentirano programiranje

1 Osnovni pojmovi  Program, programiranje, programski jezik…  Povijest programskih jezika  Tehnike pisanja programa

5

Program, programiranje, programski jezik… Jeste li se ikada zapitali što se u računalu dogaña od trenutka kada pomaknete miša po stolu do trenutka dok se pomakne pokazivač miša na monitoru računala? Kako računalo na osnovu sličice na koju smo kliknuli "zna" koji program treba pokrenuti? Prisjetimo se da je računalo ureñaj sastavljen od niza meñusobno povezanih elektroničkih komponenata, čija je osnovna zadaća omogućiti pamćenje i efikasnu obradu podataka. Računalo kao skup fizičkih komponenata nam neće biti od velike pomoći. Ukoliko ga ne opremimo odgovarajućim programima, pomak miša po stolu mu neće značiti ništa, čak štoviše neće niti prikazati pokazivač miša na ekranu. Dakle, da bismo računalo pretvorili u pomagalo moramo ga opskrbiti odgovarajućim programima. Da bismo mogli slušati glazbu potreban nam je odgovarajući program koji će nam to omogućiti. Kao što možemo primijetiti programi su vrlo bitni za rad računala, stoga ćemo se mi ovdje baviti upravo time, pisanjem programa. Što je to u stvari program? Program je niz naredbi koje su pisane tako da ih računalo razumije i može ih izvesti a koje rješavaju neki problem. Unutar programa se nalaze detaljne upute računalu kako treba reagirati na odreñenu akciju korisnika. Posao oko pripreme i pisanja programa zovemo programiranje, a programiranjem se bave programeri. Kao što znamo računalo sve podatke čuva u digitalnom obliku. Dakle da bi računalo razumjelo program on mora biti napisan kao niz nula i jedinica. Prvi programi su se uistinu tako i pisali. Za takve programe kažemo da su napisani u strojnom jeziku. Takvo programiranje bilo je izuzetno mukotrpno. Danas je programiranje znatno pojednostavljeno. Programi se pišu u nekom od mnoštva programskih jezika. Programski jezik je skup pravila riječi i simbola pomoću kojih se pišu programi, tj. pomoću kojih se detaljno opisuju koraci rješavanja nekog problema. Zadatak programskog jezika je napisani program prevesti u jezik strojni jezik koji računalo razumije. Program – niz naredbi koje rješavaju neki zadatak a pisane su tako da ih računalo može razumjeti. Programiranje – posao oko pripreme i pisanja programa. Programer – osoba koja se bavi programiranjem. Programski jezik – skup pravila riječi i simbola pomoću kojih se pišu programi. Strojni jezik – osnovni jezik računala; jezik nula i jedinica Već smo rekli da računalo sve podatke čuva u digitalnom obliku tj. kao niz nula i jedinica. Znamenka nula ili 1 se naziva binarna znamenka odnosno bit. Niz od 8 bitova nazivamo bajt (byte). Postavlja se pitanje kako je moguće slova, slike, zvuk,… pretvoriti u bitove? Jedan od načina kako se npr. znakovi zapisuju u digitalnom obliku je ASCII kôd (American Standard Code for Information Interchange). ASCII kôdom je moguće kodirati ukupno 128 znakova, koji u tom slučaju imaju kôdove od 0 do 127. Slovo A se u ASCII tablici nalazi na 65. mjestu, B na 66. mjestu,… Mala slova započinju na 97. mjestu,… Osim ASCII kôda često je u upotrebi i tzv. prošireni ASCII kôd, pomoću kojega je moguće zapisati ukupno 256 različitih znakova. Prvih 128 znakova proširenog ASCII kôda isti su kao i kod ASCII kôda i oni su jednaki za sve zemlje. Sljedećih 128 znakova nije standardizirano i tu se nalaze specijalni znakovi za pojedine zemlje. Kod nas se tu nalaze slova Č, Ć, Ž,… Kod oba navedena kôdiranja znakovi se zapisuju pomoću 8 bitova (kod ASCII kôda je prvi bit uvijek 0) i to tako da se redni broj znaka pretvori u binarni zapis. Tako je binarni kôd slova A 01000001,… Osim dva navedena, postoji još niz drugih načina kôdiranja. Jedan od nama značajnijih je tzv. unicode, pomoću kojega je moguće kôdirati ukupno 65536 znakova. Ovaj način kôdiranja nam

6

Java i objektno orijentirano programiranje ja bitan jer ga koristi Java. Prvih 128 znakova isto je kao i kod ASCII kôda, a za zapis jednog znaka koristi se 16 bitova (2 bajta). Bit – osnovna jedinica podataka sadrži jednu binarnu znamenku (0 ili 1). Bajt (B) – niz od 8 bitova. Kilobajt (KB) – 1024 bajta. Megabajt (MB) – 1024 kilobajta Gigabajt (GB) – 1024 megabajta ASCII kôd – jedan od načina kodiranja znakova, pomoću kojega je moguće kodirati ukupno 128 različitih znakova. Prošireni ASCII kôd – omogućava kôdiranje 256 različitih znakova Unicode – omogućava kodiranje 65536 različitih znakova (koristi ga Java)

7

Povijest programskih jezika Čitava povijest programskih jezika moguće je svrstati u dvije osnovne kategorije:  strojni jezici  simbolički jezici Strojni jezici Programi pisani u strojnom jeziku pisani su tako da ih računalo može neposredno izvršavati bez prijašnjeg prevoñenja. Program se sastoji od niza binarnih znamenaka. Programiranje na strojnom jeziku je izuzetno naporan i mukotrpan posao. Mogućnosti pogreške su vrlo velike. Svako računalo ima svoj strojni jezik. Program napisan na jednom računalu ne može se izvršavati na drugom računalu, često čak niti na različitim računalima istog proizvoñača. Simbolički jezici Kao što smo rekli, programiranje u strojnom jeziku nije niti malo ugodan posao. Prvi korak prema nešto naprednijim programskim jezicima bilo je napraviti programski jezik koji će naredbe strojnog jezika zamijeniti riječima, čime će pamćenje i pisane naredbi biti znatno pojednostavljeno. Kao rezultat toga nastao je assembler. Svaka naredba assemblera je u stvari sinonim za odreñenu naredbu strojnog jezika. U tablici 1-1 dan je primjer naredbi u assembleru i nekom strojnom jeziku. Assembler

LOAD STOR MULT ADD SUB

Strojni jezik

00100100 00100010 00100110 00100101 00100011 Tablica 1-1 Naredbe zapisane u assembleru i nekom strojnom jeziku

Nakon što napišemo program u assebmleru, zadaća assemblera je taj program prevesti u strojni jezik kako bi ga računalo moglo izvršiti. Assembler je još poznat i kao niži simbolički jezik. Iako pojednostavljeno, programiranje u assembleru je i dalje dosta nespretno. Stoga se pojavljuju tzv. viši programski jezici. Viši programski jezici su više orijentirani programeru. Programiranje je daljnje pojednostavljeno. Unutar kategorije viših programskih jezika postoje dvije osnovne potkategorije:  proceduralni jezici – u središtu ovakvih programskih jezika nalazi se postupak odnosno procedura kako nešto napraviti. U tu kategoriju spada većina danas poznatih programskih jezika Pascal, C, Java,…  neproceduralni jezici – za razliku od proceduralnih jezika kod kojih je težište stavljeno postupak kako nešto napraviti, kod neproceduralnih jezika je težište stavljeno na ono što želimo dobiti a ne zamaramo se postupkom kako ćemo to dobiti. U ovu skupinu spadali bi jezici kao što su Excel, SQL,… Ovi su jezici još više orijentirani prema programeru. Osnovni nedostatak ovakvih jezika leži u činjenici da su ograničeni na rješavanje samo jedne klase problema (Excel – tablični proračuni, SQL – rad s bazama podataka,…)

8

Java i objektno orijentirano programiranje Kao i kod nižih simboličkih jezika, programe napisane u nekom višem simboličkom jeziku potrebno je prevesti na strojni jezik. Općenito postoje dva načina na koji se jezici prevode na strojni jezik:  kompajliranje – čitav program se prevede na strojni jezik a tek potom se izvrši, poznatiji kompajleri bili bi: Pascal, C,…  interpetiranje – naredba po naredba programa se prevodi i odmah izvršava, poznatiji interpreteri su: ASP, PHP, Basic,… Java ne spada nije u potpunosti niti komplajler niti interpreter. Više govora o prevoñenju programa pisanih u Javi bit će u nastavku. Program napisan u višem programskom jeziku naziva se izvorni program (source code). Nakon prevoñenja izvornog programa dobiva se izvršna verzija programa (executable program). programski jezici

strojni jezici

simbolički jezici

niži simbolički jezici

viši simbolički jezici

proceduralni

neproceduralni

Slika 1-1 Shematski prikaz programskih jezika Primjer 1 – 1: Dio programa, koji računa zbroj dva broja (c=a+b), zapisan u strojnom jeziku, assembleru i Javi. Strojni jezik

Assembler

Java

00100100 00010001 00100101 00010010 00100010 00010011

LOAD a ADD b STOR C

c = a + b;

Strojni jezici – jezici kod kojih se naredbe pišu isključivo pomoću binarnih znamenaka. Programi napisani u strojnom jeziku mogu se direktno očitavati u memoriju računala. Assembler – niži simbolički jezik kod kojeg svaka naredba predstavlja odgovarajuću naredbu u strojnom jeziku. Proceduralni jezici – jezici kod kojih programer odreñuje na koji će se način rješavati neki problem. Neproceduralni jezici – jezici kod kojih se programiranje svodi na opisivanje rezultata koji se želi dobiti a ne programira se način na koji se dolazi do rješenja. Kompajler (compiler) – program koji prevodi čitav program na strojni jezik a tek potom se program izvršava.

9

Interpreter – program koji prevodi naredbu po naredbu izvornog programa te ju odmah izvršava. Izvorni program (source code) – program pisan u nekom višem simboličkom jeziku, naredbe su pisane u onom obliku u kojem ih piše programer Izvršni program (executable program) – program koji se dobije prevoñenjem izvornog koda na strojni jezik a koji se može izvršavati na računalu.

Tehnike pisanja programa Sve do prije nekoliko godina većina je programskih jezika bazirala na tzv. strukturnom programiranju. Zadani problem se dijeli na manje probleme koji se zatim neovisno rješavaju i ponovo spajaju kako bi se došlo do rješenja zadanog problema. Strukturno programiranje karakterizira nastojanje da se programer usredotoči na način kako će riješiti neki problem, a da pri tome ne treba puno voditi računa kako će se pojedina naredba izvesti na razini samog hardvera. Programi se rastavljaju na potprograme (funkcije i procedure), koji se tada po potrebi mogu pozivati u različitim dijelovima programa. Strukturno programiranje poznato je još i kao topdown, odnosno modularno programiranje. Najpoznatiji strukturni programski jezici su Pascal, C, Basic… U posljednjih nekoliko informatika se razvija toliko brzo da se javlja potreba za novim načinom programiranja koje će biti još efikasnije. Osnovni cilj je napraviti program čiji će se dijelovi moći ponovo upotrijebiti u drugim programima. Kao posljedica toga javlja se drugačiji način programiranja a to je objektno-orijentirano programiranje. Prvi korak pri rješavanju problema kod objektno-orijentiranog programiranja je unutar zadanog problema identificirati važne dijelove koje nazivamo objekti. Sljedeći korak je pronaći odnose izmeñu objekata. Želimo li npr. napisati program koji će simulirati vožnju automobila, osnovni objekti koji će karakterizirati taj problem bit će automobil i vozač. Sljedeći korak bio bi odrediti neka osnovna svojstva objekata. U našem bi primjeru neka svojstva automobila bila marka automobila, maksimalna brzina, ubrzanje,… dok bi za vozača neka od svojstava mogla biti ime i prezime, visina, težina,… Nadalje nam preostaje definirati neke operacije nad objektima. Neke od operacija mogle bi biti povećavanje brzine, koćenje,… Kao što se može primijetiti na danom primjeru, za svaki su objekt definirane neke osnovne karakteristike koje ga opisuju – svojstva, te operacije koje se nad njim mogu izvršavati – metode. Programski jezici koji omogućavaju objektno-orijentirano programiranje zovu se objektno orijentirani programski jezici. Svi noviji programski jezici su više ili manje objektno-orijentirani. Java je u potpunosti objektno orijentirani programski jezik. I u ovom je trenutku jedan od najboljih izbora za učenje objektno-orijentiranog programiranja. Pascal i C su isto na neki način objektno-orijentirani, u njima je isto moguće kreirati objekte, dodjeljivati im svojstva,… no u osnovi su ti jezici strukturni i sama priroda im nije objektno-orijentirana.

10

Java i objektno orijentirano programiranje

Zadaci za vježbu 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.

Što je program? Objasni pojam programiranje. Što je programski jezik? Objasni pojam kodiranje. Koja je razlika izmeñu ASCII i Unicode koda? Objasni razliku izmeñu strojnih i simboličkij programskih jezika. Koji je najpoznatiji niži simbolički jezik? Navedi neke više programske jezike. Objasni razliku izmeñu kompajliranja i interpretiranja. Navedi nekoliko kompajlera i nekoliko interpretera. Koje su dvije najčešće tehnike pisanja programa? Objasni!

11

2 Uvod u Javu      

Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi

12

Java i objektno orijentirano programiranje

Programski jezik Java Krajem 1990 godine skupina programera tvrtke SUN krenula je u kreiranje jedinstvenog programskog jezika čije će se aplikacije moći izvršavati ne samo na računalima već i na ostalim ureñajima koji u sebi sadrže mikročipove (televizor, perilica rublja, toster, …). Nakon nepunih 5 godina svjetlo dana je ugledao novi programski jezik poznat pod imenom Java. Java je danas poznata kao programski jezik čije se aplikacije mogu izvršavati na Internetu, na računalima različitih proizvoñača i različitih operativnih sustava. To znači da se ista aplikacija može izvršavati na PC-u, Mac-u, … odnosno ista se aplikacije može izvršavati pod operativnim sustavom Windows, Unix, Linux,… Svjedoci smo da se danas Java aplikacije izvršavaju na Internetu, mobilnim telefonima ali i mnogim drugim ureñajima. Java je jednostavan, u potpunosti objektno-orijentirani programski jezik. Sintaksa Jave podsjeća na sintaksu C-a odnosno C++-a. No isto tako, kako zbog potpune objektno-orijentiranosti ali i niza drugih karakteristika dosta razlikuje od njih. Prema nekim autorima poznavanje jezika kao što su C odnosno C++ može biti čak otežavajuće za učenje Jave jer programer u početku koristi ono što već zna iz drugih jezika i teško usvaja mogućnosti koje mu nudi Java. Kod Jave razlikujemo dvije vrste "programa":  

aplikacije (application) apleti (applet)

Aplikacija je program koji se nalazi na računalu korisnika i izvršavaju se kada ih korisnik pokrene. Klasični primjeri aplikacija bili bi npr. Warcraft III, Microsoft Word,…Da bi se Java aplikacije mogle izvršavati na računalu korisnika računalo mora imati instaliran Javin izvršni program (Java Virtual Machine), koji može pokrenuti aplikaciju pisanu u Javi. Većina današnjih operativnih sustava u sebi imaju ugrañen Java Virtual Machine. Za razliku od aplikacije, aplet je svojevrsna Internet aplikacija koja se izvršava u pregledniku (Internet Explorer, Netscape Navigator,…). Apleti su u stvari aplikacije koje "žive" na Internetu i pokreću se učitavanjem stranice na kojoj se nalaze. Zbog činjenice da se izvršavaju na Internetu apleti su daleko siromašniji u svojim mogućnostima. Kao i ostale Internet aplikacije apleti najčešće nemaju mogućnost pisati po tvrdom disku korisnika. Ne mogu upotrebljavati sve resurse korisnikovog računala, ali imaju jednu veliku prednost a to je činjenica da se nalaze na Internetu i bez instaliranja su dostupne svim korisnicima Interneta. Aplikacija – program koji se samostalno izvršava na računalu korisnika Applet – "mali program" koji se izvršava na Internetu, izvršava se unutar nekog od Web preglednika (Internet Explorer, Netscape Navigator,…)

13

Izvršavanje Java programa Kao što smo već napomenuli programi pisani u Javi mogu se izvršavati ne samo na različitim operativnim sustavima već i na različitim ureñajima. Zbog toga se programi pisani u Javi izvršavaju malo drugačije nego što je to uobičajeno. Kao i kod ostalih programskih jezika, programer u odabranom editoru piše kôd programa sljedeći pravila Jave. Takav program, naziva se izvorni program (source program ili source code). Svaki program napisan u Javi u stvari predstavlja jednu klasu (class) čije se ime navodi u izvornom programu. Tako napisani izvorni program potrebno je spremiti u tekstualni dokument pod imenom ime_klase.java, pri čemu je ime klase ime klase koje smo naveli u izvornom programu. Nakon što je izvorni program napisan i spremljen slijedi druga faza a to je prevoñenje programa (kompajliranje) u tzv. bajt-kôd (bytecode) oblik programa. Prilikom prevoñenja programa prevoditelj analizira sintaksnu i semantičku ispravnost programa. U kôdu traži elemente Jave te ih interpretira i prevodi u univerzalni bajt-kôd, koji će se moći izvršavati neovisno o operativnom sustavu i u tome i jest osnovna razlika izmeñu Jave i ostalih programskih jezika. Kod ostalih se programskih jezika kompajliranjem stvara kôd specifičan za odgovarajući operativni sustav. Windows Java kompajler izvorni program

Windows JVM bajt-kôd

Unix Java kompajler

Unix JVM

Slika 2-1 Kompajliranje Javi programa na različitim operativnim sustavima Windows kompajler

izvršni program (Windows)

Unix kompajler

izvršni program (Unix)

izvorni program

Slika 2-2 Standardno kompajliranje programa na različitim operativnim sustavima Ukoliko prilikom prevoñenja prevoditelj naiñe na izraze ili dijelove koje ne zna interpretirati prijavit će odgovarajuću grešku i kompajliranje neće biti uspješno završeno. Krajnji rezultat kompajliranja je datoteka pod imenom ime_klase.class. Nakon kompajliranja programa, program je spreman za pokretanje. Program se pokreće pokretanjem datoteke .class. Java apleti se pokreću pomoću Web preglednika odnosno

14

Java i objektno orijentirano programiranje pomoću odgovarajućeg programa koji omogućava pokretanje apleta – AppletViewer. Samo izvršavanje Java programa i nije tako jednostavno. Naime, prilikom pisanja programa programer najčešće koristi neke već gotove dijelove kôda. Npr. koristi već gotove naredbe za unos podataka s tipkovnice, ispis podataka na ekran, kreiranje korisničkog sučelja,… koje programeru znatno olakšavaju posao. Java u tu svrhu sadrži svoj Java development kit (JDK). Java development kit u osnovi sadrži niz gotovih klasa koje su vrlo korisne prilikom programiranja. Nakon što je program kompajliran, on se i dalje referencira na gotovi kôd iz JDK-a. Taj dio kôda nalazi se unutar tzv. biblioteka (library). Biblioteke su u Javi organizirane u pakete (package) koji su u stvari skupovi već gotovih klasa. Povezivanje bajt-kôda kreirane aplikacije s dijelovima odgovarajućih biblioteka zadaća je programa koji nazivamo linker. Sada možemo detaljnije objasniti izvršavanje programa pisanih u Javi. Najprije se bajt-kôd napisanog programa povezuje s odgovarajućim bibliotekama a potom se učitava u radnu memoriju računala. Učitavanje programa u radnu memoriju računala automatski izvršava program poznat kao loader. Kao što smo već spomenuli program je u stvari niz instrukcija koje se izvršavaju. Isto smo tako rekli da se računalo razumije samo naredbe napisane u strojnom jeziku. Naš program se i dalje nalazi u bajt-kôdu. Prevoñenje naredbi iz bajt-kôda u strojni jezik obavit će interpreter. Interpreter je još jedan u nizu programa čija je zadaća prevoditi naredbu po naredbu u strojni jezik računala i potom ju izvršiti. Kao što smo već rekli bajt-kôd Java programa može se izvršavati na različitim operativnim sustavima. Jedino što je potrebno da bi se bajt-kôd izvršio na nekom računalu je Java Virtual Machine (JVM). Java Virtual Machine razumije bajt-kôd te omogućava prevoñenje programa na strojni jezik računala. izvorni program

kompajler

bajt-kôd

biblioteke

linker

loader

interpreter

naredbe u strojnom jeziku

Slika 2-3 Izvršavanje programa pisanih u Javi Izvorni program (source program, source code) – program napisan u nekom višem programskom jeziku. Bajt-kôd – optimizirani skup naredbi kreiranih tako da se mogu izvršavati na bilo kojem operativnom sustavu. Nastaje kompajliranjem izvornog programa. AppletViewer – program koji omogućava pokretanje apleta izvan Web preglednika Java development kit (JDK) – programska oprema za pisanje programa u Javi

15

Biblioteka (library) – skup svih klasa koje su već definirane i koje se mogu pozivati unutar programa Paket – skup meñusobno povezanih klasa Linker – program koji povezuje bajt-kôd s već gotovim klasama iz JDK Loader – program koji učitava izvršni program u radnu memoriju računala Interpreter – program koji prevodi jednu po jednu naredbu iz bajt-kôda u strojni jezik računala te ju izvršava. Java Virtual Machine – izvršni sustav za izvršavanje Java bajt-kôda na nekom računalu.

BlueJ razvojno okruženje Da bismo započeli programirati u Javi potreban nam je u najmanju ruku Java interpreter koji će izvorni program prevesti u bajt-kôd. Izvorni program moguće je napisati u bilo kojem editoru. Programiranje u nekom običnom editoru nije baš ugodno. U običnom editoru nije vidljiva razlika izmeñu naredbi programskog jezika, komentara, ili teksta koji se ispisuje, što može znatno otežati programiranje. Stoga danas za većinu jezika postoje okruženja za pisanje programa tzv. razvojna okruženja. Razvojna okruženja čine programiranje "ugodnijim". Editori razvojnih okruženja najčešće različitim bojama označavaju ključne riječi, komentare, varijable,… Novija su razvojna okruženja još inteligentnija pa na osnovu prvih nekoliko znakova predviñaju unos, što znatno može olakšati posao programeru. Većina današnjih velikih informatičkih tvrtki nudi razvojna okruženja za Javu. Borland je npr. napravio JBuilder, Microsoft je napravio J++, Sun je napravio Java Workshop,… Većina ovih okruženja je komercijala i cijena im je nerijetko dosta visoka. Naše će razvojno okruženje u ovoj knjizi biti BlueJ. BlueJ je razvojno okruženje koje korisniku omogućava da "razmišlja na objektni način". Osim toga izuzetno je pogodan za kontrolu izvršavanja pojedinog dijela programa. No imajmo na umu i jedan bitan detalj a to je činjenica da je BlueJ besplatan i dostupan svima na Internetu. BlueJ razvojno okruženje napisan je u Javi što omogućava njegovo izvršavanje na svim operativnim sustavima. Razvojno okruženje – skup programa koji programiranje u nekom programskom jeziku čine ugodnijim. Najčešće u sebi imaju ugrañen editor za pisanje programa, omogućavaju kompajliranje programa, omogućavaju kontrolu izvršavanja programa,… BlueJ – besplatno Java razvojno okruženje namijenjeno prvenstveno učenju objektnoorijentiranog programiranja u Javi.

Prije instalacije BlueJa na računalo potrebno je instalirati Java 2 runtime (JDK). JDK i BlueJ nalaze se na CD-u u prilogu ove knjige. Pokretanjem BlueJ aplikacije na ekranu će se pojaviti sučelje koje će nam omogućiti pisanje programa.

16

Java i objektno orijentirano programiranje

Slika 2-3 Sučelje BlueJ razvojnog alata Nakon što smo pokrenuli program za početak ćemo otvoriti novi projekt. Novi projekt ćemo otvoriti tako da u izborniku Project odaberemo New Project.

Slika 2-4 Kreiranje novog projekta Nadalje ćemo u prozoru koji se otvori upisati ime projekta. BlueJ će potom kreirati poseban direktorij s upisanim imenom te će otvoriti novi prozor za upravo kreirani projekt.

17

Slika 2-5 Prozor kreiranog projekta Sljedeći korak je dodavanje klase u projekt. Klasu ćemo u ovom trenutku poistovjetiti s programom. Više riječi o klasama bit će u sljedećim poglavljima. Novu ćemo klasu kreirati tako da kliknemo na gumb New Class… koji se nalazi pri vrhu lijevog dijela prozora. U prozoru koji se otvori upišemo ime klase.

Slika 2-6 Prozor za kreiranje klase Nakon što smo kliknuli na gumb OK prozor će se zatvoriti i u postojećem prozoru će se pojaviti još jedna sličica koja će predstavljati upravo kreiranu klasu, a pri vrhu sličice će se nalaziti ime klase (zbroj).

18

Java i objektno orijentirano programiranje

Slika 2-7 Kreirana klasa je dodana u projekt Ovime definicija klase nije gotova. Štoviše definicija klase tek slijedi. Stoga ćemo kliknuti desnim gumbom miša na sličicu klase zbroj i u izborniku odabrati Open Editor ili jednostavno 2 puta kliknuti lijevim gumbom miša na ime klase.

Slika 2-8 Pokretanje editora za definiranje klase U editoru koji se je otvorio nalazi se već upisan dio klase koju želimo kreirati. Za početak ćemo izbrisati sadržaj prozora i upisati sljedeći kôd: public class zbroj { public static int zbroj(int x, int y) { 19

return x + y; } }

Slika 2-9 Izgled prozora nakon što upišemo kôd klase Sljedeći je korak kompajliranje ovako programa. Da bismo program kompajlirali lijevim ćemo gumbom miša kliknuti na gumb Compile u gornjem izborniku prozora. Prije samog kompajliranja program će se spremiti. Ukoliko kompajler nije naišao na greške u kôdu, u donjem će se dijelu prozora pojaviti poruka: Class compiled - no syntaks errors Ponovo ćemo se vratiti na prozor u kojem su prikazane sve klase našeg projekta (Slika 2-8) te ćemo desnim gumbom miša kliknuti na sličicu klase zbroj te ćemo iz izbornika odabrati int zbroj(x, y). Time ćemo u stvari pokrenuti metodu zbroj() klase zbroj.

Slika 2-10 Pokretanje metode zbroj() Budući da metoda zbroj() ima dva ulazna parametra (varijable) (x i y) te vraća njihov zbroj, otvorit će se novi prozor unutar kojeg ćemo upisati vrijednosti za parametre x i y.

20

Java i objektno orijentirano programiranje

Slika 2-11 Okvir za definiranje vrijednosti parametara metode Klikom na gumb OK otvorit će se novi prozor u kojem će se nalaziti vrijednost koju metoda vraća. Budući da naša metoda računa zbroj brojeva x i y rezultat će, za unesene vrijednosti 4 i 5 biti 9.

Slika 2-12 Rezultat izvršavanja metode Jednom kreiranu klasu moguće je ponovno otvarati i po potrebi mijenjati te izvršavati. Klasu ćemo otvoriti tako da u izborniku Project odaberemo Open Project.

Slika 2-13 Otvaranje postojećeg projekta

21

U prozoru koji se otvori odaberemo ime projekta koji želimo otvoriti.

Slika 2-14Odabiranje projekta koji želimo otvoriti Na kraju ćemo kliknuti na gumb Open i pojavit će se prozor u kojem će se nalaziti sve klase odabranog projekta.

Slika 2-15 Prozor s klasama odabranog projekta Pojmove kao što su klasa, metoda,… s kojima smo se ovdje susreli detaljno ćemo objasniti u nastavku knjige. Za sada će za nas klasa biti program a metodu možemo zamisliti kao manji program unutar velikog programa. Metoda ima svoje ulazne parametre, to su u stvari podaci koji su metodi potrebni da bi riješila neki problem. U opisanom primjeru imali smo jednu metodu zbroj() koja je računala zbroj dvaju prirodnih brojeva. Da bi metoda mogla izračunati zbroj dva broja treba znati koji su to brojevi, stoga je imala dva ulazna parametra, brojeve x i y.

22

Java i objektno orijentirano programiranje

Elementi Jave Da bismo uspješno programirali u nekom programskom jeziku trebamo dobro vladati njegovim sintaksnim i semantičkim pravilima, ključnim riječima te specijalnim znakovima. Sintaksa jezika odnosi se na naredbe programskog jezika, objašnjava kako izgledaju ispravno napisani izrazi (naredbe),... Semantika se odnosi na značenje naredbi, tj. što ta naredba radi. Specijalni znakovi su znakovi koji imaju svoje značenje unutar programskog jezika. Neki od specijalnih znakova dani su sljedećom tablicom: Kategorija

Specijalni znakovi

matematički + - * / interpunkcijski . , ? ; relacijski < >= == != Tablica 2-1 Najčešće korišteni specijalni znakovi u Javi Kao što postoje simboli koji imaju svoje specijalno značenje, tako postoje i riječi koje imaju specijalno značenje, koje nazivamo rezervirane riječi (keywords). Neke od njih su: class, public, private, static, int, float, boolean,... Kao što smo mogli primijetiti u primjeru iz zadnjeg poglavlja, pri samom kreiranju klase, morali smo joj dodijeliti ime (zbroj), nadalje smo metodi isto tako morali dodijeliti ime (zbroj), a dodatno smo imenovali i parametre (varijable) u metodi (x, y). Općenito ćemo sva takva i slična imena zvati identifikatori. Identifikatori u Javi mogu se sastojati od slova engleske abecede, znamenaka i znakova "_" i "$", pri čemu znamenka ne može biti na prvom mjestu. Duljina identifikatora (broj znakova) u Javi nije ograničena. Ovdje je isto tako bitno napomenuti da je Java case sensitive jezik, što znači da se velika i mala slova razlikuju (npr. Zbroj i zbroj su dva različita identifikatora). Primjer 2 – 1: Sljedeći identifikatori su korektno napisani: prvi $2 _treci$a Primjer 2 – 2: Primjeri neregularnih identifikatora: 1a – na prvom mjestu se ne smije nalaziti znamenka zbroj brojeva – sadrži razmak kuća – nedozvoljeni znak ć Kako bismo se u vlastitom kodu uspješno snalazili i nakon nekog vremena, odnosno kako bismo olakšali razumijevanje koda svima onima koji će ga kasnije čitati, koristit ćemo komentare. Općenito je namjena komentara da se unutar njih stavljaju objašnjenja koda ili neke napomene za izmjene programa. Želimo li u komentar staviti samo jednu liniju koda, na početku te linije ćemo staviti //. //komentar Više linija koda ćemo staviti u komentar tako da na početku prve linije koda stavimo /*, te iza posljednjeg znaka stavimo */.

23

/* komentar1 komentar2 komentar3 */ Npr. //ovo je komentar ili /* ovo je komentar */

24

Java i objektno orijentirano programiranje

Tipovi podataka U osnovi kod Jave razlikujemo dvije kategorije tipova podataka: − objektni tipovi podataka − neobjektni tipovi podataka Objektni tipovi podataka definirani su klasama i o njima će biti govora nešto kasnije. Neobjektni (jednostavni) tipovi podataka i shematski su prikazani na sljedećoj slici: byte

short cjelobrojni int

long

znakovni

char

float realni double

logički

boolean

Slika 2-16 Jednostavni tipovi podataka

25

Jednostavni tipovi podataka Cjelobrojni tip podataka Unutar cjelobrojnog tipa podataka postoji nekoliko podtipova. Podtipovi se razlikuju s obzirom na raspon vrijednosti za koje su definirani, što neposredno utječe na količinu memorije koju zauzimaju. Raspon vrijednosti i količina memorije potrebne za spremanje jedne varijable dani su sljedećom tablicom: Tip podataka byte short int long

Raspon vrijednosti

Zauzeće memorije (bitovi) -128 do 127 8 -32768 do 32767 16 -2147483648 do 2147483647 32 -922337203684547758808 do 922337203684547758807 64 Tablica 2-2 Cjelobrojni tipovi podataka

Znakovni tip podataka Tip podataka char namijenjen je radu s znakovima. Vrijednosti koje ovaj tip podataka može primiti su bilo koji znak iz tzv. Unicode skupa znakova. Znakovi se navode unutar jednostrukih navodnika npr. 'A', '0', '+', '%',... Osim ovakvih znakova, tip podataka char sadrži i neke znakove koji postoje na tipkovnici, ali za njih ne postoji posebna oznaka (npr. tipka tab). Takvi znakovi sastoje se od oznake "\" i odgovarajućeg znaka. Neki od takvih oznaka dani su u sljedećoj tablici: Znak \' \" \\ \r \n \t \b

Opis jednostruki navodnik dvostruki navodnik kosa crta "\" prelazak u novi red (carriage return) prelazak u novi red (line feed) horizontalni tabulator backspace Tablica 2-3 Neki od specijalnih znakova

26

Java i objektno orijentirano programiranje

Realni tip podataka Kao što mu i ime govori, ovaj ćemo tip podataka koristiti pri radu s realnim vrijednostima. Java brojeve prikazuje u tzv. eksponencijalnom obliku. Kod takvog prikaza broj se sastoji od sljedećih elemenata: − jednoznamenkasti cijeli broj − decimalna točka − 6 decimala − znak "E" − eksponent Primjer 2 – 3: Primjer zapisa realnih brojeva u eksponencijalnom obliku broj eksponencijalni zapis objašnjenje 315.46 3.154600E2 315.46 = 3.1546 · 102 0.02 2.000000E-2 0.02 = 2 · 10-2 -3.14 -3.140000E0 -3.14 = -3.14 · 100 Osnovni podtipovi realnog tipa podataka su dani su sljedećom tablicom: Tip podataka

Raspon vrijednosti

float double

-3.4 · 1038 do 3.4 · 1038 -1.7 · 10308 do 1.7 · 10308

Zauzeće memorije (bitovi) 32 64

Tablica 2-4 Realni tipovi podataka Osim po rasponu vrijednosti i količini memorije koju zauzimaju, ovi se tipovi podataka razlikuju i s obzirom na preciznost, tj. s obzirom na broj bitnih decimalnih znamenaka. Broj decimalnih znamenaka koje će se uzimati u obzir kod float tipa podataka je 6 ili 7, odnosno 15 kod double. Logički tip podataka Logički tip podataka (boolean) može sadržavati samo dvije vrijednosti true ili false (istina ili laž). Memorija potrebna za pohranjivanje vrijednosti tipa boolean je 1 bit.

27

Deklaracija varijabli Kao što smo već rekli, varijable su u stvari "oznake" za memorijske lokacije na koje ćemo privremeno pohranjivati podatke tijekom izvršavanja programa. Prije pohranjivanja vrijednosti trebamo odrediti koji tip vrijednosti ćemo pohraniti na odgovarajuću lokaciju, te rezervirati (alocirati) prostor. To sve ćemo napraviti deklaracijom varijabli. Opći oblik deklaracije varijabli u Javi je: tip ime_varijable; gdje je tip bilo koji tip podataka (int, float, boolean, char,...). Ukoliko se istovremeno deklarira više varijabli istog tipa, one se meñusobno odvajaju zarezom. Primjer 2 – 4: Primjeri deklaracija varijabli: int n; float a, b; char c; boolean t; Neki programski jezici deklariranjem varijable automatski postavljaju na neku početnu (inicijalnu) vrijednost, tj. inicijaliziraju ih na neku vrijednost. Npr. u Pascalu će varijabla tipa byte deklariranjem biti inicijalizirana na vrijednost 0. Kod Jave to nije slučaj. Kod Jave vrijednosti varijable nakon deklaracije ne moraju biti inicijalizirane, i ukoliko to ne napravimo eksplicitno a u programu koristimo takve varijable prilikom kompajliranja će se pojaviti greška. Varijabli ćemo pridružiti vrijednost operatorom "=". Primjer 2 – 5: Primjeri pridruživanja vrijednosti varijablama: n = 2; x = 3.14; c = 'c'; t = false; Prilikom pridruživanja vrijednosti varijablama valja voditi računa da vrijednost koja se pridružuje varijabli bude istog tipa kao i varijabla. Vrijednost varijable moguće je inicijalizirati na neku vrijednost i prilikom deklaracije varijabli. U takvim slučajevima će deklaracija varijable imati sljedeći oblik: tip ime_varijable = vrijednost; Primjer 2 – 6: Primjer deklaracije varijabli gdje se varijable inicijaliziraju neposredno iza deklaracije int i = 3; float x = -8.17; 28

Java i objektno orijentirano programiranje char c = 'y', d = 'n'; Isto tako je prilikom deklariranja varijabli i njihovog inicijaliziranja, moguće koristiti i izraze koji će varijabli inicijalno pridružiti vrijednost tog izraza. Kod ovakve inicijalizacije trebamo voditi računa da su sve varijable, koje koristimo s desne strane znaka jednakosti inicijalizirane. Primjer 2 – 7: Primjer deklaracije varijabli gdje se varijable inicijaliziraju neposredno iza deklaracije i to dodjeljivanjem vrijednosti izraza. int i = 3; int j = i*2;

Operatori Osnovni cilj programiranja je na osnovu ulaznih podataka dobiti potrebne rezultate. Da bismo iz ulaznih podataka dobili rezultate trebamo nad podacima izvršiti odgovarajuće manipulacije. Manipulacije nad podacima izvršit ćemo pomoću operatora. Operatore u Javi dijelimo u nekoliko osnovnih kategorija: − − − −

aritmetički operatori; relacijski operatori; logički operatori; bitovni operatori.

S obzirom na koliko se podataka operator primjenjuje razlikujemo dvije vrste operatora: − unarni operatori – primjenjuju se samo na jednu vrijednost (npr. operator ++, koji povećava vrijednost varijable za 1); − binarni operatori – primjenjuju se na dvije vrijednosti (npr. operator + za zbrajanje dvaju brojeva). Aritmetički operatori U Javi je moguće koristiti sljedeće aritmetičke operatore: Operator + * / % ++ -+= -= *= /= %=

Znaćenje zbrajanje oduzimanje množenje dijeljenje ostatak cjelobrojnog dijeljenja povećava vrijednost varijable za 1 smanjuje vrijednost varijable za 1 povećavanje vrijednosti varijable za odreñeni broj analogno kao += analogno kao += analogno kao += analogno kao += Tablica 2 – 5 Aritmetički operatori

29

Primjer 2 – 8: Koja će biti vrijednost varijable x nakon djelovanja odgovarajućih operatora, ako je x cjelobrojna varijabla čija je vrijednost postavljena na 5? a) b) c) d) e)

x++; x = x + 3; x = x / 2; x = x % 3; x *= 3;

Rješenja: a) 6 b) 8 c) 2 (budući da je x cjelobrojna varijabla operator / se tumači kao operator cjelobrojnog dijeljenja) d) 2 (5 cjelobrojno podijeljeno s 3 je 1 i 2 je ostatak) e) 15 Relacijski operatori Relacijski operatori koristi se za odreñivanje odnosa izmeñu dviju vrijednosti. Relacijski operatori dani su sljedećom tablicom: Operator == != > >= < , =, = 0) return true; else return false; }

Primjer 3 – 4: Napišimo metodu koja će unositi iznos bruto plaće u kunama. Procedura treba vraćati iznos poreza na plaću, ako je poznato da je do iznosa od 5000 kn porez 15%, za iznos od 5000 do 10000 je porez 25%, te je za iznos iznad 10000 porez 35%. Rješenje:

42

Java i objektno orijentirano programiranje

switch/case naredba Često puta kod grananja nailazimo na više disjunktnih uvjeta. Korištenje if naredbe u takvim slučajevima može biti nespretno. Osim if naredbe, Java nam, kao i većina ostalih programskih jezika, nudi i naredbu switch. Opći oblik ove naredbe je: switch (izraz) { case v_1: naredba_1; break; case v_2: naredba_2; break; ... case v_n: naredba_n; break; } Shematski prikaz switch naredbe je:

uvjet

Da

naredba_1

Da

naredba_2

v_1 Ne v_2 Ne... Da v_n

naredba_n

Slika 3 – 3 Shematski prikaz switch naredbe Pri čemu su: − izraz – bilo koji izraz čija je vrijednost ordinalnog tipa (najčešće cjelobrojni ili znakovni tip) − v_1, v_2,... v_n – vrijednosti odgovarajućeg tipa (isti kao izraz) − naredba_1, naredba_2,... naredba_n – naredba koja se izvršava ukoliko vrijednost izraza odgovara odgovarajućoj vrijednosti.

43

Odnosno, ako je vrijednost izraza izraz jednaka v_1 izvršava se naredba_1, ukoliko je vrijednost izraz jednaka v_2 izvršava se naredba_2,... Naredba break općenito služi za prekidanje nekog niza naredbi (najčešće izlazak iz petlje). Možda nije sasvim jasno koja je ovdje uloga naredbe break. Radi se o sljedećem. Ukoliko ne bismo stavili naredbu break nakon naredba_1, te ako bi vrijednost izraza izraz bila jednaka v_1, izvršila bi se naredba_1, ali i sve naredbe iza nje, naredba_2 itd. Stoga koristimo naredbu break da bismo, nakon što se odgovarajuća naredba izvrši, izašli iz switch naredbe. Općenito ćemo switch naredbu koristiti kada imamo više od 2 uvjeta kod grananja. Korištenje switch naredbe uglavnom se može zamijeniti if naredbom Napomena: Primijetimo izraz kod switch naredbe uvijek dolazi unutar zagrada – (). "Tijelo" switch naredbe pišemo unutar vitičastih zagrada – {}. Prije nego započnemo rješavati sljedeći primjer reći ćemo par riječi o još jednom tipu podataka: String. O tipu podataka String detaljnije ćemo govoriti u nastavku. Na String ćemo u ovom trenutku gledati kao na složeni tip podataka, čije su vrijednosti riječi – niz od jednog ili više znakova. Vrijednosti tipa String se pišu unutar dvostrukih navodnika ("). Napomena: Primijetimo da se vrijednosti tipa String pišu unutar dvostrukih navodnika ("), za razliku od tipa char, gdje se vrijednosti pišu unutar jednostrukih navodnika ('). Deklaracija varijable tipa String identična je deklaracije bilo koje druge varijable nekog jednostavnog tipa (char, int,...). Primjer 3 – 5: Napišimo metodu čiji će ulazni parametar biti jednoznamenkasti prirodan broj n. Metoda treba vraćati broj n ispisan riječima. Rješenje: Dani problem ćemo za usporedbu riješiti na dva načina: pomoću if i pomoću switch naredbe: //rješenje pomoću if naredbe public static String broj1(int n) { String s = ""; if (n == 0) s = "Nula"; else if (n == 1) s = "Jedan"; else if (n == 2) s = "Dva"; else if (n == 3) s = "Tri"; else if (n == 4)

44

Java i objektno orijentirano programiranje s = "Četiri"; else if (n == 5) s = "Pet"; else if (n == 6) s = "Šest"; else if (n == 7) s = "Sedam"; else if (n == 8) s = "Osam"; else if (n == 9) s = "Devet"; return s; } //rješenje pomoću switch naredbe public static String broj2 (int n) { String s = ""; switch (n) { case 0: s = "Nula"; break; case 1: s = "Jedan"; break; case 2: s = "Dva"; break; case 3: s = "Tri"; break; case 4: s = "Četiri"; break; case 5: s = "Pet"; break; case 6: s = "Šest"; break; case 7: s = "Sedam"; break; case 8: s = "Osam"; break; case 9: s = "Devet"; break; } return s; }

45

Zadaci za vježbu 1. Objasni if naredbu. 2. Što će pisati u varijabli n nakon sljedećeg dijela programa: int k = 3, n; if (k < 0) n = 3*k; else n = k * k;

3. Što će pisati u varijabli n nakon izvršavanja sljedećeg dijela programa: int k = 5, n; if (k < 0) n = 2 * k + 3; else if (k >= 0 && k < 10) n = - Math.abs (k * k - 5 * k - 7); else n = k * k - k + 3;

4. Napiši metodu čiji će ulazni parametar biti prirodan broj n. Metoda treba vračati true ako je broj paran, inače će vračati false. ulaz izlaz true 4 5. Napiši metodu čiji će ulazni parametar biti prirodni brojevi n i m. Metoda treba vraćati veći od brojeva n i m. ulaz izlaz 6 4 6 6. Za godinu ćemo reći da je prijestupna ako je djeljiva s 4 i nije djeljiva sa 100 ili je djeljiva s 400. Napiši metodu čiji će ulazni parametar biti godina n, a metoda će vračati odgovarajuću poruku ("Godina je prijestupna" odnosno "Godina nije prijestupna"). ulaz izlaz 2004 Godina je prijestupna 7. Napiši metodu čiji će ulazni parametri biti tri prirodna broja (a, b i c). Ukoliko učitani brojevi zadovoljavaju nejednakost trokuta (zbroj bilo koja dva broja je manji od trećeg), metoda treba vraćati opseg trokuta čije su duljine stranica a, b i c, odnosno poruku "Uneseni brojevi ne mogu biti duljine stranica trokuta". ulaz izlaz 6.0 3 4 5

46

Java i objektno orijentirano programiranje 8. Napiši metodu čiji će ulazni parametri biti tri prirodna broja (a, b i c). Ukoliko stranice zadovoljavaju nejednakost trokuta, metoda treba ispisati je li trokut jednakostraničan, jednakokračan ili raznostraničan. ulaz izlaz Trokut je jednakokračan 4 3 3 9. Napiši metodu koja će unositi datum roñenja neke osobe te današnji datum (datum se unosi kao tri broja – dan, mjesec, godina). Metoda treba vračati točnu starost te osobe (u danima). ulaz izlaz 10308 6 1 1977 28 3 2005 10.

Što će pisati u varijabli n nakon izvršavanja sljedećeg dijela programa: int n = 0, k = 4; switch (k) { case 1: n = 5 break; case 2: n = 4 break; case 3: n = 3 break; case 4: n = 2 break; case 5: n = 1 break; }

11.

* k; * k; * k; * k; * k;

Napiši metodu čiji će ulazni parametri biti dva prirodna broja n i m te jednu od operacija +, -, * ili /. Metoda treba vraćati prirodan broj koji se dobije primjenom operacije nad varijablama n i m. ulaz izlaz 8 3 5 +

12.

Napiši metodu čiji će ulazni parametar biti prirodan broj n. Metoda treba vračati i n , pri čemu je i imaginarna jedinica za koju vrijedi: i 2 = −1 . ulaz izlaz i 5

47

13.

Napiši metodu čiji će ulazni parametri biti dvoznamenkasti prirodan broj n. Metoda treba vratiti broj n ispisan riječima. ulaz izlaz dvadeset tri 23

14.

Napiši metodu koja će unositi datum u 21 stoljeću (dan, mjesec i godina) i ispisivati na koji dan u tjednu dolazi taj datum. Napomena: Poznato je da je 1. siječnja 2001. bio ponedjeljak. ulaz izlaz srijeda 30 3 2005

48

Java i objektno orijentirano programiranje

4 Petlje  for petlja  while petlja  do/while petlja

49

for petlja Petlje ćemo općenito koristiti kada neki dio programa, niz naredbi, trebamo ponoviti više puta. Općenito for petlju koristimo kada unaprijed znamo koliko puta trebamo izvršiti neki dio programa. U Javi for petlja ima nešto općenitiji oblik i možemo ju koristiti i u nekim slučajevima kada ne znamo unaprijed koliko puta trebamo izvršiti neki dio programa. Opći oblik for petlje je: for (kon_var = poc_vrij; uvjet; promj_kon_var) naredba; ili dijagramom toka bi to izgledalo ovako:

kon_var = poc_vrij

Ne

uvjet Da naredba

... promj_kon_var Slika 4 – 1 Shematski prikaz for petlje pri čemu je: − kon_var – kontrolna varijabla; − uvjet – najčešće je oblika kon_var >(=,
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF