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


Java programiranje 1 i 2, Rezime od Informatika

Osnove java programiranja

Tipologija: Rezime

2015/2016

Učitan datuma 10.06.2016.

nenad_micic
nenad_micic 🇸🇷

5

(1)

1 dokument

1 / 156

Toggle sidebar

Ova stranica nije vidljiva u pregledu

Ne propustite važne delove!

bg1
1
JAVA PROGRAMIRANJE
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
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Delimični pregled teksta

Preuzmite Java programiranje 1 i 2 i više Rezime u PDF od Informatika samo na Docsity!

JAVA PROGRAMIRANJE

1. Uvod

1. Uvod - kako po č eti programirati u JAVA jeziku

Cilj ovog poglavlja je napisati i pokrenuti jednostavnije Java programe.

SADRŽAJ

  1. O predmetu.
  2. Programi i programski jezici.
  3. Neki jednostavni Java programi.
  4. Objekti i metode.
  5. Konstrukcija programa.
  6. Metoda System.out.println.
  7. Kako prevesti i pokrenuti java program.
  8. Pisanje Java programa.
  9. Kako raditi na računalu.
  10. Zadaci za prvo poglavlje.

1. O predmetu

Sadržaj ovog predmeta je pisanje objektno orijentiranih programa u Java jeziku.

Java je :

  • programski jezik
  • vrlo velika biblioteka programskih rutina
  • izvršna okolina za izvođenje programa.

Java biblioteka programskih rutina sastoji se od tisuća klasa. Postoje klase za rad s datotekama, klase za rad s 3D grafikom, klase za pristup bazama podataka, animaciju web stranica, itd. Moglo bi se reći da se u bibliotekama nalazi veći dio onoga što će vam ikada zatrebati u programiranju. Možda ste se dosad susreli s JavaScript jezikom za web stranice. JavaScript nije Java jezik! Ovaj predmet se zbog ograničenog broja sati ipak mora ograničiti na osnove jezika te na manji dio osnovnih klasa.

Kao dodatnu literaturu možete koristiti knjige:

  1. Beginning Java 2, SDK 1.4 Edition by, Ivor Horton ISBN:0764543652 Wrox Press 2003.
  2. Java , Čukman, Tihomir , Alfej
  3. Java: Programiranje za Internet i World Wide Web , Dario Sušanj, Znak, Zagreb, 1997.

Ako dosad niste programirali bit će potrebno uložiti značajan trud u savladavanje gradiva. Java jezik zajedno s ogromnim bibliotekama namijenjen je profesionalnim programerima. Štoviše Java biblioteke se stalno proširuju i mijenjaju.

Naučiti programirati u bilo kojem jeziku nije moguće bez praktičnog rada na računalu.

Stoga je od vrlo velike važnosti da primjere sa satova pokušate realizirati na računalu tijekom vježbi.

Ako ste dosad programirali u nekom programskom jeziku mogao bi vam prvi uvodni dio biti vrlo jednostavan. Međutim kako lekcije budu išle broj novih sadržaja i znanja će se povećavati.

Potrudite se zadatke odraditi sami. Nemojte kopirati programski kod od kolega. Osim što varate nastavnika varate i sami sebe.

1. Uvod

Postoje brojne razvojne okoline u kojima je moguće pisati, prevoditi i izvršavati programe. Za potrebe ovog predmeta zadržat ćemo se na najjednostavnijem sustavu koji je ujedno i podloga i za druge kompleksnije razvojne okoline. Sustav se naziva Software Development Kit (SDK). Može se naći na stranicama

java.sun.com

Ove stranice održava kompanija Sun Microsystems koja je odgovorna za razvoj Jave. Verzija Java okoline u trenutku pisanja ovog teksta je 1.5. U ovom predmetu koristit ćemo prethodnu 1.4 verziju.

Instalacija Java okoline se u najkraćim crtama obavlja na slijedeći način:

  • Pokreni Java 2 SDK installer (datoteka j2sdk-1_***-win.exe), odaberi mjesto instalacije i instaliraj.
  • Dodaj u PATH varijablu operativnog sustava mjesto instalacije (npr. C:\jdk1.4.2\bin). Način dodavanja je ovisan korištenom operativnom sustavu.
  • Provjeri (ukloni) CLASSPATH varijablu (-classpath command-line prekidač je bolji način).

Detaljniji (aktualniji) opis instalacije može se naći na stranicama java.sun.com.

3. Primjeri jednostavnih Java programa

U Javi program iste funkcionalnosti kao C program koji ispisuje "Hello World!" izgleda ovako:

public class Hello { /* napiši jednostavnu poruku na ekran*/ public static void main(String[] args) { System.out.println(″Hello, World!″); } }

Ako niste vidjeli dosada neki Java program ovaj jednostavni program izgledat će vam konfuzno. Cilj ovih početnih sati predavanja je da vam se objasni struktura ovako jednostavnih programa.

Svaki Java program sadrži naredbe (statements). Svaka naredba opisuje neku operaciju koju računalo treba izvršiti. Operacija može biti ispis neke informacije na ekranu, može biti neka računska operacija, provjera položaja miša na ekranu, itd. Računalo jednostavno izvršava naredbu po naredbu.

U programu koji je gore napisan nalazi se samo jedna naredba: System.out.println("Hello, World!");

Kad se ta naredba izvrši na ekranu će se pojaviti slijedeći ispis: Hello, World!

Java ima različite načine pisanja poruka po ekranu bilo da pišemo po prozoru, na web stranicu, itd. U ovome slučaju koristimo jednu Java metodu koja se naziva System.out.println. Rezultat izvršavanja bit će ispis poruke u najjednostavnijem obliku prozora kojeg nazivamo konzola (ili DOS prozor u Windows OS). Konzola dopušta samo jednostavan ispis teksta , redak po redak.

Slijedi program s dvije naredbe koje su tiskane podebljano (ne koristimo podebljane fontove u Java programima).

public class Hello { /* napiši jednostavnu poruku na ekran*/

public static void main(String[] args) { System.out.println("Hello, World!"); System.out.println("See you later."); } }

1. Uvod

Kada pokrenemo ovaj program izvršit će se obje naredbe jedna za drugom. Prvo će se na ekranu ispisati u jednoj liniji Hello, World! , a nakon toga u drugoj liniji See you later. Oba programa imaju formu:

public class Hello { /* komentar. */ public static void main(String[] args) {

Naredbe

Ne postoji ograničenje na broj naredbi u programu. Može ih biti na tisuće. Ostatak ovog jednostavnog programa može se promatrati kao pakiranje. Ovo pakiranje ćemo objasniti poslije. Sad ćemo se zadržati na opisu objekata koji su neizostavni dio svakoga pa i najjednostavnijeg Java programa.

4. Objekti i Metode

Razmotrimo naredbu koja ispisuje poruku: System.out.println(″Hello, World!″);.

Gdje su tu objekti? Poznavalac Java jezika vidjet će dva objekta. Prvi je objekt System.Out , a drugi sami niz

znakova ″Hello, World!″. Java cijelo vrijeme radi s objektima. U Java biblioteci definirano je mnogo vrsta različitih objekata koje možemo koristiti u svojim programima.

Možemo i kreirati objekte prema našim potrebama. Npr. pišemo program koji će pratiti koji su studenti na FESB-u prijavljeni na koji predmet. Tada ćemo napisati takav program koji će pokretanjem:

  • za svakog studenta kreirati jedan objekt studenta
  • za svaki predmet također jedan objekt predmeta.

Svaki objekt studenta sadržavat će određene podatke poput osobnih podataka studenta i liste upisanih predmeta. Objekt predmeta može sadržavati naziv predmeta i druge podatke vezane za predmet.

U isto vrijeme kad definiramo izgled objekata trebamo i definirati koje će se operacije izvršavati nad tim objektima. Što se tiče objekta student , bit će nam potrebne operacije kreiranja objekta studenta, ažuriranja liste predmeta koje je student upisao, operacije ispisa podataka o studentu na ekran, itd. Te operacije koje se izvršavaju nad objektom nazivaju se metode.

Dosad smo već vidjeli primjer metode. Njen puni naziv je: System.out.println

Ovaj naziv označava metodu println koja pripada objektu System.out. System.out je objekt čiji je zadatak da primi poruku koju treba prikazati na ekranu. Zamislimo ga kao osobu kojoj dajemo što treba ispisati na ploči.

Println metoda je operacija koja se izvršava nad porukom. tako nam izraz:

System.out.println(″Hello, World!″);

kaže:

koristi println metoda za slanje poruke ″Hello, World!″ objektu System.out, koji će je prikazati na ekranu.

Svaki objekt pripada klasi (class) koja specificira od kojih podataka se objekt sastoji i koje metode posjeduje. Npr. svi nizovi znakova pripadaju klasi koja se naziva String. Klase String i System.Out definirane su u klasama koje pripadaju Java bibliotekama. Možemo kreirati i svoje klase npr. klasu Student i klasu Predmet.

Koji je odnos klasa-objekt? Kažemo da je objekt instanca od klase. Jednostavno, klasa je opis objekta napisan u kodu. Možemo je promatrati kao kalup ili skicu prema kojoj se u tijeku izvršavanja programa kreiraju objekti.

1. Uvod

U našim primjerima klasa se sastoji od samo jednog člana, metode nazvane main, koju svo već opisali. Općenito program se sastoji od jedne ili više definicija klasa od kojih svaka sadržava jednu ili više metoda.

Java programeri koriste konvenciju po kojoj naziv klase započinje velikim slovom, a naziv metode malim slovom. U ovome predmetu ćemo se nastojati strogo pridržavati navedene konvencije. Općenito bilo koji naziv u Javi ( identifikator ) sa;injen je od slova, znamenki i mora počinjati sa slovom. Za potrebe ove definicije se simboli valuta poput £ i $, i povlaka (‘_’) računaju kao slova. Duljina naziva nije ograničena.

Na slijedećoj slici prikazan je naš program koji se sastoji od dvije naredbe razdvojen okvirima koji nam pokazuju što je klasa, što je metoda a što su naredbe.

klasa Hello metoda main

public class Hello { public static void main(String[] args) { System.out.println(″Hello, World!″);

System.out.println(″See you later.″);

} naredbe(izrazi)

6. Metoda System.out.println

System.out.println je prva metoda iz Java biblioteke koji smo upotrijebili. Ova metoda će ispisati niz znakova na konzolu (DOS prozor). Naziv println je skraćenica za ‘print line’.

Mjesto na ekranu na kojemu će se ispisati slijedeći znak označeno je na ekranu s malom treptajućom linijom nazvanom kursor. System.out.println metoda ima tu osobinu da ispisom teksta pomiče kursor na početak slijedeće linije. Ako želimo da kursor ostane na prethodnoj liniji koristit ćemo metodu System.out.print.

Drugi način određivanja kad želimo ispis u novoj liniji je korištenje para znakova \n u nizu znakova svaki put kad je potrebno da ispis krene u novu liniju. Npr. :

System.out.print(″Hello, World!\nSee you later\n″)

će ispisati Hello, World! , nakon toga pomaknuti kursor u novu liniju gdje će ispisati See you later. , i nakon toga pomaknuti kursor na novu liniju. Ta će naredba imati isti rezultat kao i par naredbi:

System.out.println(″Hello, World! ″);

System.out.println(″See you later. ″)

7. Kako prevesti i pokrenuti Java program

Pretpostavimo da želite izvršiti program iz prvog primjera:

class Hello

{ /* napiši jednostavnu poruku na ekran*/

public static void main(String[] args)

{ System.out.println(”Hello, World!”);

1. Uvod

Prvo morate biti pristupiti računalo na koje je instalirana podrška za Javu odnosno Java SDK.

A. Ukucajte program i pohranite ga u datoteku Hello.java.

Možete koristiti bilo koji tekst editor za unos koda, npr. Notepad. Korisno je imati i neki sofisticiraniji Java editor npr. JedPlus. Takvi editori nam mogu omogućiti korisne funkcije poput sintaksnog naglašavanja ili

automatskog uvlačenja teksta. Moguće je iz takvih editora pozvati i operacije prevođenja i izvršavanja.

Ako se vaš program sastoji od samo jedne klase potrebno ga je pohraniti u datoteku koja ima isti naziv kao i klasa uz dodanu ekstenziju ‘.java’. kako se naš jednostavni program sastoji od samo jedne klase nazvane Hello, datoteku moramo nazvati Hello.java.

B. Otvori DOS prozor i postavi trenutni direktorij na direktorij gdje je datoteka s programom.

Sve naredbe koje slijede tipkaju se u ovaj prozor. Poruke prevodioca i sve što će program ispisati odvija se također u ovome prozoru. Postoje i drugi načini koje ćemo obraditi na vježbama, ali ovo je općeniti način koji radi na svim računalima.

U ovome trenutku bit će otvorena dva prozora. Jedan s editorom (npr. Notepad), a drugi s DOS prozorom koji služi za interakciju s Java sustavom. U tom DOS prozoru prevodimo i izvršavamo program.

C. Korištenje JDK za prevo đ enje programa u Hello.java datoteci.

Za prevođenje programa treba utipkati:

javac Hello.java

Ako dobijete poruku da sustav ne može naći javac (Java prevodilac) znači da ili nije pravilno postavljena PATH varijabla sustava ili nije instaliran JDK.

Ako nema grešaka u programu prevodilac će proizvesti bytecode verziju vašeg programa u datoteci nazvanoj Hello.class.

Ako prevodilac nađe greške poput tipkanja Class umjesto class ili izostavljanja znaka ; na kraju naredbe, odbit će prevođenje i izvijestiti o pronađenim greškama. To nazivamo greškom prevo đ enja (compiler error). Najčešće je poruka o grešci takva da je jednostavno naći mjesto u kodu gdje smo učinili pogrešku. Ponekad iz poruke nije jasno odakle potječe greška i tada je potrebno pažljivo pregledati kod. Početnici često pogriješe tražeći grešku baš u liniji gdje je to prevodilac javio. Međutim , greška se može nalaziti i negdje prije!

Ako postoje greške kod prevođenja potrebno ih je otkloniti u editoru. nakon otklanjanja grešaka ne zaboravite snimiti datoteku.

A. Korištenje JDK za pokretanje prevedene verzije programa koja se nalazi u Hello.class

datoteci.

Nakon što je prevodilac proizveo bytecode verziju programa Hello.class, možete ga pokrenuti u Java Virtual machine tipkanjem:

java Hello

Ne tipkajte .class ekstenziju. JDK pretpostavlja da ste mislili na Hello.class.

1. Uvod

System.out.printline(″See you latef.″); } )

Jedina greška koju prevodilac neće javiti je pogrešno pisanje unutar niza znakova See you latef. Ta greška će biti očigledna tek nakon izvršavanja programa.

Zbog svega navedenog nije se praktično oslanjati na prevodilac u otkrivanju grešaka. To je prije svega dugotrajan proces jer je potrebno svaki put nakon ispravljene greške proći kroz faze prevođenja i izvršavanja. Međutim to više vrijedi za iskusne programere nego za početnike kojima će prevodilac često biti neprocjenjiva pomoć u otklanjanju pogrešaka.

Osim što je Java prevodilac razlikovanjem velikih i malih slova zna biti dosta nezgodan u drugim pogledima je vrlo liberalan. Uopće mu nije bitan prostorni raspored vašeg koda tj. upotreba praznina i novih redova.

Slijedeći primjer bi se trebao prevesti bez greške iako je vrlo teško čitljiv:

public class Hello{public static void main(String[] args){System.out.println(″Hello, World!″);System. out.println(″See you later.″);}}

Iz ovoga je na prvi pogled teško ustanoviti da se program sastoji od jednog metoda koji sadrži dvije naredbe. Čak će se i slijedeći primjer pravilno prevesti:

public class Hello public static void main (String[] args) { System. out. println ( ″Hello, World!″ ); System.out. println( ″See you later.″ ); } }

Sve dok ne spojite neke riječi poput classHello, ili ne razdvojite cla ss, prevodilac se neće buniti..

Prevodilac prema svemu navedenom je vrlo fleksibilan u korištenju razmaka i novih redova. Međutim bilo tko bude čitao vaš program (i vi sami) poželjet će mnogo uredniji i jasniji kod. Zato je praznine uputno koristiti da bi se dobio jasniji kod. Ako pogledate na originalni kod gore modificiranih programa, vidjet ćete da postoje neka pravila u pisanju. Npr. metoda main je pomaknuta tri mjesta unutar u odnosu na prethodni redak. To nazivamo uvla č enje koda (indentation). Ako ima više metoda unutar klase, stavljamo razmak između svake. Primijetite i da vitičaste zagrade imaju konvenciju o smještaju. Vidjet ćemo tijekom ovoga predmeta kako postupati s pojedinim elementima koda. Osim urednosti koja omogućava razumijevanje koda, drugi rezultat je pisanje koda s manje grešaka.

1. Uvod

9. Kako rješavati zadatke

Zadaci koji su navedeni na kraju svakog poglavlja prestavljaju zadatke koji će se javiti i na ispitu. Stoga nastojte zadatke samostalno rješavati jer je to najefikasniji način za usvajanje gradiva.Podloga za rješavanje zadataka jeste sadržaj svakog poglavlja. Štoviše, tu ćete naći i dijelove izvornog koda koji će vam koristiti u rješavnju zadataka.

Na računalu na kojemu dobijete korisnički račun kreirajte direktorij JProg. Unutar tog direktorija za svako poglavlja otvorite direktorij Pn gdje je n broj poglavlja. Dakle za prvo poglavlje otvorite direktorij P1. Kada završite poglavlje 1 unutar direktorija P1 trebali biste imati slijedeće datoteke:

Hello.java , Hello.class

ImeUOkviru.java, ImeUOkviru.class

Gresnik.class , Gresnik.java

Inicijali.class , Inicijali.java

10. Zadaci za prvo poglavlje

Za ovo poglavlja zadana su tri jednostavna problema tj. pisanje tri jednostavna programa..

  1. Ukucaj, prevedi i pokreni slijedeći Hello program koji ispisuje dvije linije na ekran:

/* Autor: Ime Prezime */

class Hello

/* jednostavan ispis na ekran. */

public static void main(String[] args)

{ System.out.println(″Ciao, Svite!″); System.out.println(″Vidimo se kasnije !″);

  1. Napišite program s nazivom klase ImeUOkviru. Program treba ispisati vaše ime u okviru poput slijedećega: +--------+ | Ivan | +--------+

Uputa: nije svejedno kako ćete nazvati datoteku s kodom!

3.Ukucaj i pokreni slijedeći program te analiziraj pogreške koje će javiti prevodilac. ukucajte ga sa svim pogreškama!

public Class Gresnik {

/* Write a simple message on the screen.

public static viod main(string[] args)

{ System.out,println('Alo, Svijete!");

System.out.printline("Vikimo se kasnije.");

Zatim ispravite pogrešaka koliko možete i pokušajte natjerati program da radi kako bi trebao.

2.Brojevi i znakovni nizovi

i prikazati rezultat 59500. Primijetite da možemo ispisivati brojeve koristeći System.out.print na isti način na koji smo koristili kod ispisivanja znakovnih nizova.

U Java programu slijedeći operatori mogu se koristiti u aritmetičkim izrazima:

  • zbrajanje (addition) − oduzimanje (subtraction) (koristi se i za minus predznak) ∗ množenje (multiplication) / dijeljenje (division) % ostatak (remainder)

U Javi (i većini drugih programskih jezika višeg nivoa) brojevi su cjelobrojni ili brojevi u pokretnom zarezu (integers or floating-point numbers). Ove dvije vrste vrijednosti pohranjuju se u memoriji na različite načine. Ako vrijednost napišemo bez decimalne točke , npr. 4 ona će biti tretirana kao cjelobrojna vrijednost. Ako je napišemo s decimalnom točkom npr. 4.0 bit će tretirana kao broj u pokretnom zarezu. Uvijek trebamo koristiti cijele brojeve kad to možemo. Računanja s njima su brža, koriste manje memorije i nisu podložni greškama zaokruživanja poput brojeva s pokretnim zarezom.

Operator dijeljenja , / , u stvari ima dva značenja. Ako ga koristimo s cijelim brojevima tada znači cjelobrojno dijeljenje. Npr. 11 / 4 = 2, (−11) / 4 = −2. Ako se koristi s dva broja s pokretnim zarezom onda znači normalno dijeljenje. Npr. 10.5 / 2 = 5.25. Operator ostatka koristi se samo s cijelim brojevima. Npr. 11%4 = 3 and (−11)%4 = −3.

Ako Javi damo da izračuna izraz m%n gdje je n jednak nuli , Java će prijaviti run-time grešku.

kada procesira složenije izraze Java se drži standardnog prioriteta operatora pa npr. izraz 3+4∗5 znači isto kao i 3+(4∗5).

Kada se izračunava izraz sa više operatora istog prioriteta u nizu, izraz se računa s lijeva nadesno. Npr. 3/4/5 znači isto kao i (3/4)/5, na kao 3/(4/5) što bi proizvelo grešku (Zašto?).

2. Varijable

Slijedeći primjer je druga verzija programa prvog primjera. Ovaj primjer koristi varijable tj. naziv koji znači vrijednost. Program izračunava ukupan račun u dva odvojena koraka. PRIMJER 2

public class Racun

{ /* Izracunaj ukupni racun za 2 kg jabuka po 12 kn 3kg krumpira po 2kn i 50lipa i 2 kg bresaka po 14 kn */

public static void main(String[] args) { int total =2∗ 1200 + 3 ∗250 + 2*1400; System.out.print("Racun je: "); System.out.print(total/100); System.out.print(" kn i "); System.out.print(total%100); System.out.println(" lipa."); } }

Izraz: int total =2∗ 1200 + 3 ∗ 250 + 2*1400;

kaže: kreiraj varijablu total koja će sadržavati vrijednost izraza 2 ∗1200 + 3∗250 + 2*1400 (=59500). Riječ int na početku pokazuje da je tip vrijednosti koju varijabla total može pohraniti je cjelobrojna vrijednost.

2.Brojevi i znakovni nizovi

Ovaj izraz se naziva deklaracija varijable (ili definicija varijable).

Izraz: System.out.print(total/100);

kaže: ispiši vrijednost naznačenu kao total/100. Radi se o cjelobrojnom dijeljenju čija je vrijednost 85 i ta će vrijednost biti ispisana.

Izraz: System.out.print(total%100);

kaže: ispiši ostatak dijeljenja total sa 100. U ovome slučaju je to 50.

Ukupan ispis na ekran bi trebao biti:

Racun je: 59 kn i 50 lipa.

Ovaj primjer smo mogli realizirati i bez varijable s upotrebom slijedeće dvije naredbe:

System.out.print((2∗ 1200 + 3∗ 250 + 2*1400)/100);

System.out.print((2∗ 1200 + 3∗ 250 + 2*1400)%100);

Upotrebom varijable izbjegli smo dvostruko računanje ukupnog broja lipa. U ovako malom promjeru to je mala ušteda, ali u realnim primjerima mogu se postići značajne uštede.

Drugi razlog upotrebe varijabli je da se jasno označe vrijednosti koje se koriste u računu tako da je jasnije što se u programu radi. Za nazive varijabli možete koristiti bilo koji naziv koji već nije upotrebljen za nešto drugo. U praksi upotrebljavaju se opisni nazivi koji odgovaraju ulozi varijable.

U slijedećoj verziji programa broju kilograma pojedinog artikla dani su očiti nazivi jabuka, krumpir, breskva. Usput , prihvaćena je konvencija da nazivi varijabli uvijek počinju s malim slovom.

PRIMJER 3

public class Racun

{ /* Izracunaj ukupni racun za 2 kg jabuka po 12 kn 3kg krumpira po 2kn i 50lipa i 2 kg bresaka po 14 kn */

public static void main(String[] args) { int jabuka = 2; int krumpir = 3; int breskva = 2;

int total = jabuka1200 + krumpir250 +breskva*1400;

System.out.print("Racun je: "); System.out.print(total/100); System.out.print(" kn i "); System.out.print(total%100); System.out.println(" lipa."); } }

Ovaj program daje izlaz isto kao i prethodni. Upotreba varijabli omogućava bolje razumijevanje koda bilo vama ili nekome drugome koji će nakon vas modificirati kod. U programiranju postoji pojam "magični broj". To su razne konstante u programu za koje prije ili kasnije se zaboravi što znače.

2.Brojevi i znakovni nizovi

nazivamo dodjeljivanje vrijednosti .Ovaj izraz mijenja vrijednost postoje ć e varijable.

Kadgod Java obavlja dodjeljivanje ono se obavlja u dva koraka:

(1) Prvo se računa vrijednost s desne strane od znaka ‘=’. (2) Zatim se ta vrijednost sprema u varijablu naznačenu s lijeve strana izraza

Moguće je mijenjati vrijednost spremljenu u varijablu, ali nije moguće mijenjati tip (type) varijable.

Moguće je deklarirati varijablu bez specificiranja njene inicijalne vrijednosti. Ako Java izvrši slijedeći izraz:

int total;

kreirat će varijablu tipa int i dati joj naziv total, ali neće spremiti nikakvu vrijednost u istu. Vrijednost varijabli će biti potrebno dodijeliti kasnije u programu. U međuvremenu nije moguće znati što sadrži varijabla total. U njoj će biti neki bitovi koji su ostali u memoriji otprije. Kažemo da vrijednost varijable ‘nije definirana’.

Opći oblik deklaracije varijable je dakle:

deklaracija (s inicijalnom vrijednosti)

TIP NAZIV = IZRAZ ;

Npr. TIP može biti double, NAZIV može biti eura, a IZRAZ može biti 64.45.

dakle double eura = 64.45;

deklaracija (bez inicijalne vrijednosti)

TIP NAZIV ;

dodjeljivanje

NAZIV = IZRAZ ;

Java omogućava deklaracije varijabli u kojima se istovremeno deklarira više varijabli odjednom.

Primjer: kreiranje varijabli w, x, y i z, i dodjeljivanje inicijalnih vrijednosti varijablama x i z.

int w, x = 1, y, z = 2;

Često je nekoj varijabli potrebno samo nadodati neku vrijednost i postoji skraćeno pisanje za takav tip operacije.

Npr. za dodati 3 ∗jabuka varijabli total pisat ćemo slijedeći izraz:

total += 3 ∗jabuka;

Slično možemo koristiti simbol −= kada želimo oduzeti vrijednost od varijable , ∗= kada želimo pomnožiti varijablu s izrazom , itd.

Općenito izraz:

2.Brojevi i znakovni nizovi

x OP= y; ekvivalentan je izrazu x = x OP y;

gdje je OP bilo koji binarni operator

Jedan od najčešćih slučajeva promjene vrijednosti varijable je povećavanje za jedan. Možemo pisati:

x = x+1; ili kraće x += 1; ili još kraće x++;

Slično za oduzimanje 1od x, pišemo x--.

4. Brojevi s pokretnom zarezom (Floating-point)

Naziv 'broj s pokretnim zarezom' proizlazi iz načina pohrane takvih brojeva u memoriji.

U Javi tip double se najčešće koristi za brojeve u pokretnom zarezu. Vrijednost tipa double zauzima 64 bita. to omogućava veoma velik opseg vrijednosti, približno ±1.8×10308, što izraženo preko preciznosti iznosi 15 značajnih znamenki. Naziv double je skraćenica za ‘double precision floating-point’. Java posjeduje i drugi tip za rad s brojevima s pokretnim zarezom koji se naziva float. Taj tip podataka zauzima samo 32 bita tako da predstavlja ekonomičnije korištenje memorije, ali ima samo pola preciznosti tipa double te ekvivalentno manji opseg od oko ±3.4× 1038.

Broj s pokretnim zarezom može se pisati s decimalnom točkom, npr. 14.56 ili 14.0. Može biti pisan i s eksponentom, npr. 14.56E-12.

Java sadržava niz metoda koje računaju širok opseg matematičkih funkcija koje koriste double vrijednosti. Sve su statičke metode (ne pripadaju nijednom objektu) iz klase Math koja se nalazi u Java biblioteci. Kadgod koristite statičku metodu koja pripada klasi biblioteke potrebno je kao prefiks naziva metode staviti i naziv klase.

Math.sin(x) sinus od x Math.cos(x) cosinus od x Math.tan(x) tanges od x Math.exp(x) ex Math.log(x) prirodni logaritam od x Math.abs(x) apsolutna vrijednost od x Math.floor(x) najveći cijeli broj ≤ x Math.ceil(x) najmanji cijeli broj ≥ x

U svakoj od metoda parametar x je tipa double , a rezultat je tipa double.

Java se neće buniti ako nađe vrijednost tipa int na mjestu gdje je predviđen tip double. Kadgod se to dogodi Java će konvertirati cijeli broj u odgovarajući broj s pokretnim zarezom

Razmotrite slijedeće izraze:

int m = 3; int n = 4; double x = m∗n;

Kada Java bude izvršavala treći izraz. izračunat će m*n koristeći cjelobrojnu aritmetiku te rezultat privremeno spremiti kao 32-bitnu vrijednost odnosno cijeli broj 6. Zatim će tu vrijednost konvertirati u 64-bitni broj u pokretnom zarezu (6) te ga spremiti u varijablu x.

Što će biti rezultat izvršavanja slijedećeg izraza:

double x = m/n;

2.Brojevi i znakovni nizovi

U ovom dijelu napisati ćemo takav program.

Dosada smo u primjerima prikazivali informacije na ekranu koristeći println i print metode koje pripadaju objektu System.out.

Objekt System.out ima pristup ekranu i može proslijediti na njega bilo koje brojeve ili stringove koje mu damo kao parametre. Isto je točno kada čitamo s tipkovnice. U tom slučaju trebamo objekt koji je spojen na tipkovnicu i koji ima metode kojima možemo pristupiti znakovima koje kucamo na tipkovnici.

U Javi postoji takav objekt i naziva se System.in. Nažalost posjeduje veoma limitiran broj metoda. Posjeduje jednu metodu read koji će pročitati sve što korisnik upiše, ali ga je teško koristiti jer čita samo jedan karakter.

Nije teško konstruirati klasu s boljim setom metoda. U ovome tečaju koristit ćemo jednu klasu nazvanu ConsoleReader.

Kad je želimo koristiti u programu na početku programa napišemo:

ConsoleReader in = new ConsoleReader(System.in);

Primijetite da se radi o deklaraciji varijable. Ova deklaracija kreira novi objekt tipa klase ConsoleReader koji može pristupiti System.in objektu koji je spojen na tipkovnicu. U isto vrijeme kreira se varijabla in tipa ConsoleReader koja označava taj objekt.

Kad se izvrši ta naredba objekt koji nam je potreban odsad je prisutan u memoriji i njegove metode možemo pozivati koristeći njegov naziv in. (Možemo ga i drukčije nazvati)

ConsoleReader objekt posjeduje tri korisne metode:

in.readInt() vraća int vrijednost.

To će biti cijeli broj koji korisnik utipka. Npr. izraz :

int broj = in.readInt(); //će kreirati varijablu broj i pridružiti joj vrijednost koja se ukuca s tastature.

in.readDouble(); // vraća double vrijednost.

in.readLine(); // vraća string. Sastojat će se od znakova koje korisnik ukuca do kraja linije.

Ovo je nova verzija programa za preračun maraka u eure.

Započinje se kreiranjem ConsoleReader objekta, koji je označen sa in. Tada traži od korisnika da utipka vrijednosti maraka i pfeniga. Naredbe koje čitaju vrijednosti naznačene su podebljano (ne i u stvarnom kodu programa).

PRIMJER 5

public class Mjenjacnica { /* Ucitaj iznos u markama i preracunaj u eure */ public static void main(String[] args) {

ConsoleReader in = new ConsoleReader(System.in); System.out.println("Unesi iznose eura i centa"); System.out.print("Iznos u eurima ="); int eura = in.readInt(); System.out.print("Iznos u centima ="); int centa = in.readInt();

centa = 100*eura + centa;

2.Brojevi i znakovni nizovi

double kuna = centa * 0.0751; System.out.print("Kuna: "); System.out.print(kuna);

Na ekranu bi trebalo nakon svega pisati (ono što korisnik ukuca je ovdje naznačeno podebljano)

Unesi iznose eura i centa Iznos u eurima = 110 Iznos u centima = 55 Kuna: 830.

ConsoleReader objekt nije robustan. Npr. ako unesete dva broja u jednu liniju ili ako unesete slova umjesto broja program će javiti run-time grešku.

Prije pokretanja bilo kojeg programa koji koristi klasu ConsoleReader potrebno je da istu imate u istome direktoriju kao i program u kojem je koristite.

Pretpostavimo da želite koristiti primjer 5. Prvo ćete primjer ukucati u datoteku s istim nazivom kao i klasa dakle Mjenjacnica2.java. U isti direktorij kopirajte i datoteku ConsoleReader.java. Tada prevedite i pokrenite Mjenjacnica2 na uobičajen način. Kada Java prevodilac vidi da java koristi ConsoleReader klasu, automatski će je prevest.

6. Znakovni niz - string.

Nadalje ćemo se koristiti izrazom string. String je jedan od najčešće korištenih tipova podataka u Javi.

Niz znakova ( literal string) možemo napisati kao niz znakova zatvorenih u dvostruke navodnike poput slijedećeg:

″Jedan dan″

Literal stringovi mogu biti proizvoljne duljine, te uključivati bilo koji znak. Čak možete imati i string bez karaktera. Takav string nazivamo prazan string i zadaje se kao "".

String može sadržavati kontrolne znakove (control characters). Ti znakovi znače stvari poput novog reda, tabulatora, ... Ako ispisujete string korištenjem System.out.println metode i ako ta metoda naiđe na kontrolni karakter npr. na newline kontrolni karakter ona će tada pomaknuti kursor na novi red.

Ako želite uključiti kontrolni karakter u literalni string, potrebno je korištenje \ karaktera nakon kojega slijedi slovo. ‘\’ se naziva escape karakter. Koristi se i za uvođenje određenih karaktera u string poput " koji bi inače značio kraj stringa. Slijedi lista najznačajnijih kombinacija karaktera:

\n novi red (newline) \t tabulator – pomak (tab) \b nazad (backspace) \r return – pomak na početak slijedeće linije \f line feed – pomak na slijedeću liniju bez odlaska na početak \ \ znak \′ ′ znak \″ ″ znak

Npr. izraz

System.out.print(″Jedan\ndan″);

napisat će ‘Jedan’ u jednu liniju te ‘dan’u slijedeću liniju.