INF Forelesning 10

Like dokumenter
Oppramstyper (enum) - motivasjon

Oversikt II. Innhold. INF1000 (Uke 12) Oversikt I. Sortering. Lære å lage proff programvare ved å lage. en generell klasse for sortering

Innhold. INF1000 (Uke 12) Sortering og eksamensoppgaver. Oversikt II. Oversikt I. Om sortering. Litt om dokumentasjon av kode. Deler av eksamen H03

INF1000-seminar lørd. 3 nov kl

Holde orden på objekter

Oppramstyper, HashMap og Innstikksortering, litt

Holde orden på objekter - HashMap

UML-diagrammer av programmene våre. Objekt-diagrammer. Et helt enkelt studentregister med kurs, studenter og registeret

INF Forelesning 10. Eksempler på Hashmap Oppramstyper Innstikksortering Javadoc

INF1000 (Uke 12) Sortering

Oppramstyper, HashMap og Innstikksortering, litt. 6. oktober 2009, Arne Maus Inst. for informatikk, UiO

Uke 8 - Oppramstyper, HashMap og Innstikksortering, litt javadoc. 17. oktober 2013, Arne Maus Inst. for informatikk, UiO

MED SVARFORSLAG UNIVERSITETET I OSLO

Kapittel 4 Tall og algebra Mer øving

Læringsmål og pensum. Forberdring vha preallokering. Oversikt

Terminprøve Matematikk for 1P 1NA høsten 2014

Brøkregning og likninger med teskje

Matematikk Øvingsoppgaver i numerikk leksjon 8 Numerisk integrasjon

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 13. desember HINDA / 98HINDB / 98HINEA ( 2DA / 2DB / 2EA ) TID:

! " ##$ % 4 2, &/ ( & +, )-. &* &/ ),* 0, 1 1 ( &/ 2& &, & &/ &,, &/" 2 &/ 2 ) *

( & ( &/ 2& , )-. &* &/ ),* 0, &/ 2 ) *

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Pensumoversikt - kodegenerering. Maskinen det oversettes til. Kodegenerering del 2: tilleggsnotat, INF5110 v2006

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Løsningsforslag til Obligatorisk oppgave 2

STATISTIKK, KOMBINATORIKK OG SANNSYNLIGHET

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Faktorisering. 1 Hva er faktorisering? 2 Hvorfor skal vi faktorisere? Per G. Østerlie Senter for IKT i utdanningen 11.

Microsoft PowerPoint MER ENN KULEPUNKTER

x 1, x 2,..., x n. En lineær funksjon i n variable er en funksjon f(x 1, x 2,..., x n ) = a 1 x 1 + a 2 x a n x n,

Generelt om oblig 3. Oppgaveteksten kort sammendrag. Deloppgaver/menyvalg 15/03/2010. INF1000 Forelesning 9

INF1010 våren januar. Objektorientering i Java

IKT-trapp for Lade skole

IN1010 våren januar. Objektorientering i Java

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

a 5 (2 + 8) d 5 (2 + 8) 4 g b 3 5 (2 + 8) e h 3 ( ) j Begrunn hvorfor du ikke får samme svar på oppgave b og g.

Kapittel 4 Kombinatorikk og sannsynlighet. Løsninger til oppgaver i boka. Løsninger til oppgaver i boka

Numerisk derivasjon og integrasjon utledning av feilestimater

Bioberegninger - notat 3: Anvendelser av Newton s metode

FASIT, tips og kommentarer

Kapittel 8 TUTORIALS-CASES

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).

Kom i gang med Tett på Smartbok! Vi veileder deg steg for steg!

Get filmleie. Brukerveiledning

Leger. A. Om din stilling. Klinisk stilling: Turnuslege Assistentlege Overlege. B. Om din erfaring med bruk av datamaskin. 1 Eier du en datamaskin?

Eksempeloppgaver 2014 Løsninger

Kom i gang med Panorama Smartbok! Vi veileder deg steg for steg!

Temahefte nr. 1. Hvordan du regner med hele tall

Løsningsforslag til ukeoppgaver i INF3110/4110

Sem 1 ECON 1410 Halvor Teslo

Løsningsforslag til avsluttende eksamen i HUMIT1750 høsten 2003.

1 Tallregning og algebra

... JULEPRØVE 9. trinn...

Eneboerspillet. Håvard Johnsbråten

EVALUERINGS- RAPPORT NOTAT SAMMENDRAG X X Helge Hugdahl 18

Oppgave 2 Betydningen til hvert enkelt siffer er bestemt av sifferets plassering eller posisjon. Tallet 4321 betyr

Kvalitetssikring av elektronisk pasientjournal - Skjema 1

Øvingsforelesning 9: Minimale spenntrær. Daniel Solberg

Kom i gang med Perspektiver Smartbok! Vi veileder deg steg for steg!

Forelesning inf Java 5

Snarveien til. MySQL og. Dreamweaver CS5. Oppgaver

Forelesning inf Java 5

Matematikk Øvingsoppgaver i numerikk leksjon 9 Numerisk integrasjon

Mer øving til kapittel 3

R1 kapittel 7 Sannsynlighet. Kapitteltest. Oppgave 1. Oppgave 2. Oppgave 3. Del 1 Uten hjelpemidler. Løsninger til oppgavene i boka

Nøtterøy videregående skole

MAT 1110: Løsningsforslag til obligatorisk oppgave 2, V-06

UNIVERSITETET I OSLO

Del 2. Alle oppgaver føres inn på eget ark. Vis tydelig hvordan du har kommet frem til svaret. Oppgave 2

Læringsmål og pensum. Funksjoner hittil (1) Oversikt. Læringsmål Anonyme og rekursive funksjoner Funksjoner som inn-argumenter Subfunksjoner

1. Separatorer (skilletegn) i easyio

Sensorveiledning Oppgaveverksted 4, høst 2013 (basert på eksamen vår 2011)

Løsningsforslag Kollokvium 6

Eksamen høsten 2015 Løsninger

UNIVERSITETET I OSLO

3.7 Pythagoras på mange måter

Mer øving til kapittel 2

2-komplements representasjon. Binær addisjon. 2-komplements representasjon (forts.) Dagens temaer

S1 kapittel 1 Algebra Løsninger til oppgavene i læreboka

Løsningsforslag til obligatorisk oppgave i ECON 2130

ALTERNATIV GRUNNBOK BOKMÅL

Problemløsning eller matematiske idéer i undervisningen?

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

Les Produktsikkerhetsguide før du kobler til maskinen. Les deretter Hurtigstartguide for korrekt konfigurering og installering.

Basisoppgaver til 2P kap. 1 Tall og algebra

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

6 Brøk. Matematisk innhold Brøk i praktiske situasjoner Brøk som del av en mengde. Utstyr Eventuelt ulike konkreter, som brikker og knapper

... JULEPRØVE

YF kapittel 8 Rom Løsninger til oppgavene i læreboka

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

5: Algebra. Oppgaver Innhold Dato

LØSNINGSFORSLAG(Sensor) I TMA4140 og MA0302

... ÅRSPRØVE

NORSK SCHNAUZER BOUVIER KLUBB S HELSE- OG GEMYTTUNDERSØKELSE 2004

UNIVERSITETET I OSLO

Integrasjon Skoleprosjekt MAT4010

Regn i hodet. a) 15 : 3 = b) 24 : 6 = c) 36 : 4 = d) 48 : 8 = Regn i hodet. a) 21 : 3 = b) 28 : 7 = c) 49 : 7 = d) 64 : 8 =

YF kapittel 6 Lengder og vinkler Løsninger til oppgavene i læreboka

DEL 1 Uten hjelpemidler

addisjon av 2 og 3. Vi skriver da i alt: 2+3= og etter at likhetstegnet er skrevet så gir matcad oss svaret.

Transkript:

Oppgve Ant t du hr deklrert en HshMp: INF1000 - Forelesning 10 Eksempler på Hshmp Opprmstyper Innstikksortering Jvdoc HshMp<String,String> cdsmling = new HshMp<String,String>(); Du legger inn informsjon om CD ene dine i HshMpen med pltens tittel som nøkkel og rtistnvnet som verdi. Eksempel: cdsmling.put( Not going under, Mri Arredondo ); Skriv noen progrmsetninger som: først ber om og leser inn et rtistnvn fr tsttur deretter går gjennom HshMpen og skriver ut titlene til lle pltene du hr registrert med denne rtisten. Du kn nt t progrmsetningene plsseres slik i progrmmet t de hr tilgng til HshMpen cdsmling. In tst = new In(); System.out.print( Artistens nvn: ); String rtistnvn = tst.inword( \n ); for( String tittel:cdsmling.keyset() ){ String nvn = cdsmling.get(tittel); if (nvn.equls(rtistnvn)) System.out.println(tittel); Morl når du løper gjennom en HshMp: Hvis du bre er ute etter verdien, kn du iterere over vlues() Hvis du er ute etter både nøkkelen og verdien, kn du iterere over keyset() for å finne nøkkelen, og bruke get for å finne verdien.

Oppgve Filen SpmOrd.txt inneholder en del spm-ord (tskilt v blnke tegn). import esyio.*; import jv.util.*; clss Spm { public sttic void min (String[] rgs) { HshMp<String,String> h = new HshMp<String,String> (); Du skl lge et progrm som leser SpmOrd.txt og som deretter leser filen Epost.txt og sjekker om denne inneholder noen v spm-ordene. Progrmmet skriver til slutt ut på skjermen om filen Epost.txt inneholdt noen spm-ord eller ikke (du trenger ikke å skrive ut hvilke eller hvor mnge spm-ord filen inneholdt). Du kn nt t SpmOrd.txt mksimlt inneholder 200 ord. I denne oppgven kn du godt legge ll progrmkoden inn i minmetoden. In spmfil = new In( SpmOrd.txt ); while (!spmfil.lstitem()) { h.put(spmfil.inword(), null); In epostfil = new In( Epost.txt ); boolen funnet = flse; while (!epostfil.lstitem() &&!funnet) { if (h.continskey(epostfil.inword()) funnet = true; if (funnet) System.out.println( Spm-ord! ); else System.out.println( Ingen spm-ord ); Oppgve: Lge et psykolog-progrm Tr inndt et spørsmål/en setning fr psienten og svre som en dårlig psykolog H en fil med enkeltord, og hvis psienten bruker et v ordene, så svre med tilhørende setning Bruke en HshMp for å holde pr v ord, setning Eks: fr, Fortell meg om din fr Må h noe å si hvis vi ikke får treff: Så interessnt, fortell meg mer om dette. > hei Hei, jeg heter Sigmund, hv heter du > Jeg heter Arne Så det er ltså nvnet > J Fint, skl vi snkke om din brndom? > J og særlig om mor Fint, skl vi snkke om din brndom? > Mor sier jeg jo Lever fortstt din mor > nei Så du mener ikke det > hun slo meg ofte Vr det ofte t noen slo? > gnske ofte Interessnt. Fortell mer. > 7 8

Progrmskisse import esyio.*; import jv.util.*; clss Eliz { public sttic void min(string [] rgs) { clss Smtle { HshMp hsh = new HshMp<String,String>(); In tst = new In(); void lesfrfil() { void snkk() { import esyio.*; import jv.util.*; clss Eliz { public sttic void min (String [] rgs) { if (rgs.length!=1) { System.out.println(" bruk: >jv Eliz <fil-med-ord> "); else { Smtle sm = new Smtle(); sm.lesfrfil(rgs[0]); sm.snkk(); // end min 9 10 clss Smtle { HshMp<String,String> hsh = new HshMp<String,String>(); In tst = new In(); void lesfrfil (String filnvn) { In fil = new In(filnvn); while (!fil.lstitem()) { String søkeord = fil.inword(); String svr = fil.inline(); hsh.put(søkeord, svr); fil.close(); System.out.println ("Antll ord lest: " + hsh.size()); void snkk() { while (true) { System.out.print("> "); boolen funnetmtch = flse; do { String ord = tst.inword().tolowercse(); if (hsh.continskey(ord)) { String svr = hsh.get(ord); System.out.println(svr); funnetmtch = true; while (tst.hsnextchr() &&!funnetmtch); if (!funnetmtch) { System.out.println("Interessnt. Fortell mer."); if (tst.hsnextchr()) { tst.redline(); // Tømmer inputbufferet // end snkk 11 12

Ordfil.txt ALICE: En kunstig intelligensbsert prte-robot fr Fortell meg mer om din fr fren Hdde du et vnskelig forhold til din fr? slo Vr det ofte t noen slo? lei Du sier du er lei deg, hvorfor det mor Lever fortstt din mor penger Er du bekymret for om du hr nok penger sint Hvorfor bruker du 'sint' - er du selv sint gld Så br ikke Forklr dette nærmere vær Blir du deprimer v dårlig vær nei Så du mener ikke det j Fint, skl vi snkke om din brndom? brn Hr du brn eller brnebrn? brnebrn Hv heter de dtter Hvor gmmel er hun? hei Hei jeg heter Sigmund, hv heter du jeg Hvordn føler du deg heter Så det er ltså nvnet gjent Vil du heller snkke om din mor? 13 ALICE = Artificil Linguistic Internet Computer Entity http://lice.pndorbots.com QuickTime nd TIFF (Uncompressed) decompressor re needed to see this picture. Opprmstyper (enum) - motivsjon Jv-progrm for å registrere møtedeltkelse Vi trenger f.eks. klssene Møte og Deltker En deltker kn enten Delt på møtet Ikke delt på møtet Knskje delt på møtet Lgres som deltkersttus for hver deltker Hvordn representere i Jv? To boolen-vrible: delt, ikkedelt Delt: delt == true, ikkedelt == flse Ikke delt: delt == flse, ikkedelt == true Knskje: delt == true, ikkedelt == true Tungvint! Bruk heller enum i Jv enum å lge egne opprmstyper Brukes til å lge typer som hr et lite ntll verdier enum Sttus { DELTAR, DELTAR_IKKE, Sttus s er DELTAR DELTAR_KANSKJE; Sttus ss er DELTAR Sttus ss er DELTAR_IKKE clss EnumEks { Sttus ss er DELTAR_KANSKJE public sttic void min(string[] rgs) { Sttus s = Sttus.DELTAR; System.out.println("Sttus s er " + s); for (Sttus ss : Sttus.vlues()) { System.out.println("Sttus ss er " + ss); 15 16

enum kn h metoder; en enum virker omtrent som en klsse-deklrsjon. Sortering Lære å løse et vnskelig problem Sortering mnge metoder, her innstikksortering Sortere hv: Heltll Tekster Lære bstrksjon Når vi hr løst ett problem, kn lignende problemer løses tilsvrende Lære å lge proff progrmvre ved å lge en generell klsse (en vektøyboks) for sortering Hvordn deklrere en slik klsse Jvdoc lge dokumentsjon Testing Hvordn utvikle progrmmet 18 Sortering Hvorfor sorterer vi Mnge dttyper kn sorteres Tll Tekster (leksikogrfisk = i smme rekkefølge de ville stått i et leksikon) Tbeller v tekster eller tll Vi må h en lgoritme (fremgngsmåte) for sortering Det finns mnge metoder for sortering Dere skl lær den som er rskest når vi skl sortere få elementer, si < 50 elementer For å få noen tll i sortert rekkefølge Eks: lotto-tllene Sortere tekster (nvnelister) Sortere noen opplysninger som hører smmen. Sorterer d på en v opplysningene. Eks. Telefonktlogen: nvn, dresse, telefonnummer sortert på nvn 19 20

Vi skl først lære å sortere heltll Dette skl vi så med minimle endringer bruke til åsortere: String-rryer (tekster) Vi ønsker en klsse med to vrinter v sortering: Heltll og tekster public clss ISort { public sttic void sorter(int [] ) { public sttic void sorter(string [] ) { // end clss ISort 21 22 clss TestInnstikkSortering { Test-progrm for sortering public sttic void min ( String[] rgs) { int [] = {3,1,7,14,2,156,77; String [] nvn = {"Ol", "Kri", "Arne", "Jo"; heltlls-rry 3 1 7 14 2 156 77 // sorter heltll - skriv ut ISort.sorter(); for (int i = 0; i <.length; i++) System.out.println( [" + i +"]= " + [i]); System.out.println("\n Test tekst-sortering:"); // sorter Stringer - skriv ut ISort.sorter(nvn); for (int i = 0; i < nvn.length; i++) System.out.println("nvn[" + i +"]= " + nvn[i]); en-dimensjonl String-rry nvn "Ol "Kri "Arne "Jo"

>jv InnstikkSortering [0]= 3 [1]= 1 [2]= 7 [3]= 14 [4]= 2 [5]= 156 [6]= 77 Test tekst-sortering: nvn[0]= Ol nvn[1]= Kri nvn[2]= Arne nvn[3]= Jo Test v test-progrmmet med tomme sortering-metoder En lgoritme for å sortere heltll innstikksmetoden 3 1 7 14 2 156 77 Se på rryen ett for ett element fr venstre mot høyre Sorterer det vi hittil hr sett på, ved : Hvis det nye elementet vi ser på ikke er sortert i forhold til de vi llerede hr sett på: T ut dette elementet (gjem verdien i en vribel t) Skyv på de ndre elementene vi her sett på en-etter-en, ett hkk høyreover til elemetet i t kn settes ned på sortert plss. D er den delen vi hr sortert ett element lenger (fr venstre) Når vi hr sett på lle elementene, er hele rryen sortert Observsjon : Det første elementet er sortert i forhold til seg selv 25 26 Sorter 1 på plss i forhold til 3 7 og 14 står riktig, Sorter 2 på plss i forhold til : 1,3,7,14 steg 1 3 1 7 14 2 156 77 steg 4 1 3 7 14 2 156 77 t 1 steg 5 1 3 7 14 2 156 77 steg 2 3 3 7 14 2 156 77 t 1 steg 3 1 3 7 14 2 156 77 t 1 steg 6 1 3 7 14 2 156 77 steg 7 1 3 3 7 14 156 77 steg 8 1 2 3 7 14 156 77 flytt: 14, 7 og så 3 ett hkk til høyre

i k+1 Kode for å flytte ett element på plss : public clss ISort { 1 3 7 14 2 156 77 i 1 3 7 14 156 77 3 1 2 3 7 14 156 77 k+1 // [k +1] står på // feil plss, t den ut int t = [k + 1], i = k; // skyv [i] mot høyre ett hkk til // vi finner riktig plss til t while (i >= 0 && [i] > t) { [i + 1] = [i]; i--; // sett t inn på riktig plss [i + 1] = t; public sttic void sorter(int [] ) { for (int k = 0 ; k <.length-1; k++) { if ([k] > [k+1]) { // [k +1 ] står på feil plss, t den ut int t = [k + 1], i = k; // skyv [i] mot høyre ett hkk til // vi finner riktig plss til t while (i >= 0 && [i] > t) { [i + 1] = [i]; i--; // sett t inn på riktig plss [i + 1] = t; // end heltll-sortering >jv InnstikkSortering [0]= 1 Resultt v sortering med heltlls-metoden kodet, den ndre uten kode [1]= 2 [2]= 3 [3]= 7 [4]= 14 [5]= 77 [6]= 156 Sortering v tekster (String) "Ol "Kri "Arne "Jo" Test tekst-sortering: nvn[0]= Ol nvn[1]= Kri nvn[2]= Arne nvn[3]= Jo Vi skl sortere denne ved å bytte om på pekerne (l [0] peker på Arne,..osv) med innstikkmetoden 32

Sortere de to første elementene ved å bytte om pekere t t "Ol "Kri "Arne "Jo" t = [1]; "Ol "Kri "Arne "Jo" [1]= [0]; "Ol "Kri "Arne "Jo" t [0]= t; public sttic void sorter(int [] ) { // Sorterer heltllsrryen ''. for (int k = 0 ; k <.length-1; k++) { if ([k] > [k+1]) { int t = [k + 1]; int i = k; while (i >= 0 && [i] > t) { [i + 1] = [i]; i--; [i + 1] = t; // end heltll-sortering public sttic void sorter(string [] ) { // Sorterer String-rryen ''. for (int k = 0 ; k <.length-1; k++) { if( [k].compreto([k+1]) > 0 ){ String t = [k + 1]; int i = k; while (i >= 0 && ( [i].compreto(t) > 0) ){ [i + 1] = [i]; i--; [i + 1] = t; String s = ; String t = ; s.compreto(t) returverdi < 0 hvis s er leksikogrfisk mindre enn t returverdi = 0 hvis s og t er tekstlig like returverdi > 0 hvis s er leksikogrfisk større enn t // end String-sortering >jv InnstikkSortering [0]= 1 [1]= 2 Test med heltll og enkel String-sortering kodet [2]= 3 [3]= 7 [4]= 14 [5]= 77 [6]= 156 Test tekst-sortering: nvn[0]= Arne nvn[1]= Jo nvn[2]= Kri nvn[3]= Ol Jvdoc proff dokumentsjon v klssene Legg inn spesielle kommentrer i progrmmet ditt (over hver metode og klsse) I disse kommentrene kn mn legge HTMLkommndoer (som <br> for å få linjeskift) Kjør progrmmet jvdoc, og utomtisk hr du en fin dokumentsjon Største fordel: Kode og dokumentsjon vedlikeholdes på smme fil. 36

/** * Klsse for sortering etter 'innstikk-metoden', se * Rett på Jv - kp.5.7. * Sortering v heltllsrry, tekster og en to-dimensjonl * tekst-rry sortert etter verdiene i første kolonne.<br> * * N.B. Bre velegnet for mindre enn 100 elementer. * * Copyright : A.Mus, Univ. i Oslo, 2008 **********************************************************/ public clss ISort { /** * Sorterer heltll i stigende rekkefølge. * @prm heltllsrryen som sorteres. <br> * Endrer prmeter-rryen. ********************************************/ public sttic void sorter(int [] ) { /** * Sorterer String-rryer i stigende leksikogrfisk orden. * @prm rryen som sorteres.<br> * Endrer prmeter-rryen ********************************************/ public sttic void sorter(string [] ) { Dokumentsjon v klssen og metodene -jvdoc M:\INF1000\Isort>jvdoc pckge ISort.jv Loding source file ISort.jv... Constructing Jvdoc informtion... Stndrd Doclet version 1.5.0_02 Building tree for ll the pckges nd clsses... Generting ISort.html... Generting pckge-frme.html... Generting pckge-summry.html... Generting pckge-tree.html... Generting constnt-vlues.html... Building index for ll the pckges nd clsses... Generting overview-tree.html... Generting index-ll.html... Generting deprected-list.html... Building index for ll clsses... Generting llclsses-frme.html... Generting llclsses-nofrme.html... Generting index.html... Generting help-doc.html... Generting stylesheet.css... // end clss ISort M:\INF1000\Isort> 38