racunalni tvo 1 / 3. uvod v javo - vladimir batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf ·...

22
The Brick Testament / Deuteronomy 21:22 Raˇ cunalniˇ stvo 1 5. Primeri Vladimir Batagelj Univerza v Ljubljani FMF, matematika razliˇ cica: 15. april 2007 / 23 : 12

Upload: others

Post on 01-Mar-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

'

&

$

%

The Brick Testament / Deuteronomy 21:22

Racunalnistvo 15. Primeri

Vladimir BatageljUniverza v LjubljaniFMF, matematika

razlicica: 15. april 2007 / 23 : 12

Page 2: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 2'

&

$

%

Kazalo1 Primeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

5 Pregled krmilnih stavkov v javi . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

21 Izpopolnjevanje razredov – podrazredi . . . . . . . . . . . . . . . . . . . . . . . 21

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 4: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 2'

&

$

%

Vislice1.java

Najbrz ste ze kdaj igrali vislice. Poskusimo jih sprogramirati.

Osnovna zamisel igre je:

izberi nakljucno besedo;ugibaj.

Recimo, da imamo besede pripravl-jene na datoteki besede.sit.V prvi vrstici je napisano stevilobesed, v naslednjih pa v vsaki poena beseda.Predelajmo program vrstice zaizbor nakljucne besede.

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 5: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 3'

&

$

%

Vislice2.java

Razdelajmo se ugibanje. Zamisel je naslednja:

ponavljaj dokler igralec ne ugane ali je obesen:izpisi vprasanje;zahtevaj novo crko;preveri odgovor in posodobi stanje.

Trenutno poznavanje neznanebesede predstavimo z nizomvzorec. Spocetka je vzorec

sestavljen iz toliko vprasajev,kolikor je crk v besedi. V niziizbrane si zabelezimo zeuporabljene crke. Igralec lahkougiba le krat krat.

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 6: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 4'

&

$

%

Vislice3.java

Razdelajmo se preverjanje odgov-ora. Ce se vnesena crka znak na-haja v besedi, jo vstavimo na us-trezna mesta v nizu vzorec.Beseda je odkrita, ce je enakanizu vzorec.Risanje vislic je prepusceno zadomaco vajo.

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 7: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 5'

&

$

%

Pregled krmilnih stavkov v javi

Pogojni ali odlocitveni stavek ima dve obliki

in

Kadar sta stavka stavekRes in stavekLaz zdruzena stavka, po-drejenost nakazemo z zamikanjem

ali

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 8: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 6'

&

$

%

Pogoji

Pogoj je izraz, ki ima logicno vrednost. Do sestavin pogojev pridemo zuporabo predikatov in relacij. V razredu Character imamo npr. predikateisDigit, isLetter, isUpperCase in isLowerCase.

import java.lang.Character;

String s = "Nova Gorica";

System.out.println(Character.isLowerCase(s.charAt(0)));

Te lahko z operacijami && – in, || – ali in ! – ni povezemo v sestavljenepogoje. Operaciji in in ali se izracunavata leno (lazy evaluation) – ce izvrednosti levega clena izraza lahko dolocimo njegovo vrednost, vrednostidesnega clena ne racunamo. Pri sestavljanju pogojev si pomagamo z logiko(npr. De Morganova zakona) in enakovrednostmi kot je npr. !(a<b) ≡a>=b .

Vcasih se pogojnemu stavku lahko izognemo z operacijami kot sta min inmax ali stavkom pogoj ? izrazRes : izrazLaz; .

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 9: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 7'

&

$

%

. . . Pogoji

Realnih stevil ne primerjamo na enakost.

Pri nizih primerjava if (niz1 == niz2) ... primerja enakost kazalcev nepa nizov (vrednosti). Pravilno je if (niz1.equals(niz2)) ...

Podobno ima izraz niz1.compareTo(niz2) negativno vrednost, ce je niz1 (poabecedi) pred nizom niz2; vrednost 0, ce sta niza enaka; in pozitivno vrednost, ce jeniz1 za nizom niz2.

Poleg metode toString() naj bi vse spodobno napisane zvrsti poznale tudimetodi equals in compareTo.

Stavek Zvrst pred = null; pove, da predmet pred ni definiran. To

preverimo z if (pred == null) ... .

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 10: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 8'

&

$

%

Verizni pogoji

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 11: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 9'

&

$

%

Pozor !!!

Kaj zahteva del programa

Kot smo ze v uvodu omenili, pomeni

Ce bi zeleli zapisati drugo moznost, bi morali stavekRes dati v zaviteoklepaje

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 12: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 10'

&

$

%

Nastevne zvrsti

Java pozna tudi nastevne zvrsti

public enum DanvTednu {PON, TOR, SRE, CET, PET, SOB, NED }

DanvTednu danes = DanvTednu.PON;

if (danes == DanvTednu.NED)

...

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 13: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 11'

&

$

%

Razvejitveni stavek switch

vi so konstante, izraz in vi so lahko le zvrsti int, char, boolean alinastetja.

stavkij se praviloma konca s stavkom break;, sicer se izvajanjenadaljuje na naslednji moznosti. stavkij je lahko tudi prazen stavek.

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 14: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 12'

&

$

%

Zanka while

neskoncna zanka

redkeje se uporablja

ce ni gotovo, da se zanka konca, vpeljemo stevec ponovitev in izvajanjeprekinemo, ce preseze razumno mejo. Lahko jo nadomestimo tudi sstavkom for.

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 15: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 13'

&

$

%

Zanka for

v pogoju nikoli ne preverjamo na enakost – vselej na neenakost.

{

zacetek;

while (pogoj) {

stavek;

sprememba;

}

}

Doseg indeksne spremenljivke – vse spremenljivke vpeljane v stavku forso v njem lokalne – po izteku stavka izginejo.

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 16: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 14'

&

$

%

Stavka break in continue

v zankah lahko uporabljamo tudi (oznacena) stavka break in continue.

continue; zahteva, da se izvajanje nadaljuje na zacetku zanke.

break; zahteva, da se izvajanje nadaljuje za krmilnim ali zdruzenimstavkom, ki ga vsebuje.

for(c :s) stavek

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 17: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 15'

&

$

%

Predpostavke

Predpostavke zapisemo z:

Ce je preverjanje predpostavk vkljuceno in je pogoj lazen, se sprozi napaka.

Preverjanje lahko vkljucimo/izkljucimo s stikaloma

-enableassertions ali -ea

in

-disableassertions ali -da

java -ea:MojRazred -ea:paket -da:paket.ToNe MojRazred

DrJava: Edit/Preferences/Miscellaneous/Enable Assert

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 18: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 16'

&

$

%

Prekinitve

Prekinitve: napake (Error) in izjeme (Exception)

Throwable

Error

Exception

IOException

EOFException

FileNotFoundException

MalformedURLException

UnknowHostException

...

RunTimeException

ArithmeticException

IllegalArgumentException

NullPointerException

...

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 19: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 17'

&

$

%

Uporaba izjem

Ce pride do izjeme, za katero obstaja ustreznistavek catch, se izvrsijo pripadajoci stavki.Ko enkrat vstopimo v try, se stavki, ki pripadajofinally, zagotovo izvrsijo – tudi, ce pride doizjeme.Na izjemah lahko uporabimo metodigetMessage() in printStackTrace().

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 20: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 18'

&

$

%

Prestrezanje napake AssertionError

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 21: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 19'

&

$

%

Lastne izjeme

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6

Page 22: Racunalni tvo 1 / 3. Uvod v Javo - Vladimir Batageljvlado.fmf.uni-lj.si/vlado/rac1/rac05.pdf · 2007. 4. 15. · V. Batagelj: Racunalniˇ stvo 1 / 5. Primeriˇ 6 Pogoji Pogoj je izraz,

V. Batagelj: Racunalnistvo 1 / 5. Primeri 20'

&

$

%

Branje s spleta

Spredaj moramo dodati se

Univerza v Ljubljani, FMF, matematika s s y s l s y ss * 6