UNIVERSITETET I OSLO

Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Enkle generiske klasser i Java

UNIVERSITETET I OSLO

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag K O N T I N U A S J O N S E K S A M E N. EKSAMENSDATO: 11. august 1995 TID:

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen IN1010/INF1010 våren 2018

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Endret litt som ukeoppgave i INF1010 våren 2004

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Faglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten.

UNIVERSITETET I OSLO

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF Uke 10. Ukesoppgaver oktober 2012

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1000 Prøveeksamen Oppgave 7 og 9

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Gjennomgang av eksamen H99

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

UNIVERSITETET I OSLO

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

København 20 Stockholm

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen iin115, 14. mai 1998 Side 2 Oppgave 1 15 % Du skal skrive en prosedyre lagalle som i en global character array S(1:n) genererer alle sekvenser

Seminaroppgaver IN1010, uke 2

UNIVERSITETET I OSLO

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

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

UNIVERSITETET I OSLO

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE. Antall sider (Inkl forsiden): 8. Alle trykte og håndskrevne

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

INF1000: noen avsluttende ord

Algoritmer og Datastrukturer

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Obligatorisk oppgave 4 i INF1010, våren 2014: "Leger og resepter" Versjon 1.1

Algoritmer og Datastrukturer

INF1000: noen avsluttende ord

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Algoritmer og Datastrukturer

INF1000 Eksamen 2014 (modifisert)

UNIVERSITETET I OSLO

Eksamensoppgave i IFUD1025 Programmering i Java og IINI4013 Programmering i Java

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

Introduksjon til objektorientert programmering

UNIVERSITETET I OSLO

Oblig4 - forklaringer. Arne og Ole Christian

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 18. august 2005 Tid for eksamen: 0900 1500 Oppgavesettet er på 6 sider. Vedlegg: Tillatte hjelpemidler: INF1010 Objektorientert programmering ingen Alle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Sluttkarakteren er et veiet gjennomsnitt av karakterene på alle deloppgavene. For hver deloppgave kan man maksimalt få så mange poeng som vekten angir. Merk at summen av vektene på oppgavene i dette oppgavesettet er mer enn 100. Det er et uttrykk for at det er mye å gjøre, og at man ikke må løse alt korrekt for å oppnå beste karakter. Det holder å oppnå 100 poeng (av 130 mulige). Det er antagelig lurt å lese hele oppgaveteksten før du begynner å svare på oppgavene. Hvis du synes oppgaven er uklar eller ufullstendig på noe punkt, lag, og skriv ned i besvarelsen din, dine egne fornuftige forutsetninger og presiseringer. Biler og parkeringsplasser (vektsum 65) Oppgave 1 (vekt 5) En parkeringsplass har plass til en bil. Er parkeringshus inneholder mange parkeringsplasser som enten er ledige, eller så står det en bil der. Noen av bilene er handicapbiler, mens noen andre biler er busser. Basert på opplysningene gitt over, tegn et UML-klassediagram. Oppgave 2 (vekt 10) Klassen PHus (parkeringshus) skal inneholde en tabell (array) som peker ut alle parkeringsplassene i huset, og konstruktøren til klassen skal ha antall plasser som parameter. En parkeringsplass (klassen PPlass) er kjennetegnet av en lengde og en bredde (i hele centimeter), og disse skal være parametre til konstruktøren. Om plassen er opptatt skal en peker angi hvilken bil som står der. En bil er kjennetegnet av et registreringsnummer, en høyde, en lengde og (Fortsettes på side 2.)

Eksamen i INF1010, 18. august 2005 Side 2 en bredde, og alle fire skal være parametre til konstruktøren. En handicapbil er en bil som i tillegg inneholder en handicapidentifikasjon (et heltall), mens en buss er en bil som i tillegg inneholder et antall sitteplasser. Disse er også parametre til konstruktørene. Skriv først klassene PHus, PPlass og Bil. Skriv deretter subklassene HandicapBil og Buss. Inkluder i klassene den datastrukturen som er beskrevet så langt i oppgaven, men ikke skriv noen metoder ennå. Du kan anta at alle konstruktører alltid kalles med riktige parametre. Oppgave 3 (vekt 5) En minibuss er en buss med maksimalt 16 sitteplasser. Skriv subklassen Minibuss til klassen Buss. Lag et egendefinert unntak som kastes hvis det gjøres et forsøk på å lage en minibuss med mer enn 16 passasjerer. Du kan anta at de andre parametrene til konstruktøren er riktige. Oppgave 4 (vekt 15) Noen parkeringsplasser er spesiallaget for handicapbiler, andre for busser. En handicapparkeringplass (klassen HCPPlass) er en parkeringsplass kun for handicapbiler. En bussparkeringsplass (klassen BussPPlass) er en parkeringsplass kun for busser. Skriv klassene HCPPlass og BussPPlass og metoden boolean parker(bil bln) i klassen PPlass og alle dens subklasser. Metoden skal returnere true hvis det er lov og mulig å sette bilen der, false ellers. For at det skal være mulig å sette bilen der må plassen være ledig og stor nok. For busser og personbiler betyr det at kjøretøyets mål er 20 cm mindre enn parkeringsplassen både i bredde og lengde, mens for handicapbiler må plassen være 100 cm bredere enn bilen. På en bussparkeringsplass har bare busser lov å parkere. På vanlige parkeringsplasser har alle biler, unntatt busser, lov å parkere. Pass spesielt på å få konstruktørene riktig og at alle parker-metodene skal ha den samme parameteren Bil bln. Oppgave 5 (vekt 10) I klassen PHus skal du ikke skrive metoder for å opprette parkeringsplasser. Du kan anta at dette alt er gjort og at hele tabellen er full av pekere til (forskjellige) parkeringsplasser. Du skal i denne oppgaven skrive metoden int parker(bil bl) i klassen PHus. Denne metoden går gjennom tabellen og finner en ledig parkeringsplass som er stor nok, og der denne bilen har lov å parkere. Du skal deklarere et egendefinert unntak som skal kastes hvis det ikke finnes noen ledig plass. Er det plass skal metoden reservere plassen til denne bilen og returnere indeksen til parkeringsplassen i tabellen. (Fortsettes på side 3.)

Eksamen i INF1010, 18. august 2005 Side 3 Oppgave 6 (vekt 5) Skriv grensesnittene Reservert og HoydeBegrenset. En ting som er reservert må kunne gi navnet på den eller det som har reservert tingen (en String). En ting som er høydebegrenset må kunne fortelle om høyeste tillatte høyde (et heltall). Oppgave 7 (vekt 10) Noen parkeringsplasser er reservert og noen har en høydebegrensning (alle som er under tak). En reservert parkeringsplass er identifisert med registreringsnummeret til den bilen som har lov å stå der. En høydebegrenset parkeringsplass angir høyeste høyde (i cm) på biler som kan stå der. En kombinasjon av en eller flere av disse egenskapene med de typene parkeringsplasser vi allerede har definert, gir mange mulige subklasser. Du skal bare skrive en av disse subklassene her, nemlig klassen Hc_Hb_Res som er en reservert handicapplass med høydebegrensning. Lag konstruktøren til klassen slik at alle variable blir initialisert. Du skal ikke skrive metoden parker i denne klassen. Oppgave 8 (vekt 5) Hvis metoden parker er programmert riktig i alle parkeringsplassene, ville det ikke være mulig å feilparkere en bil. Du skal i denne oppgaven anta at det finnes andre metoder som også oppdaterer datastrukturen i klassen PHus, slik at det er mulig å feilparkere biler. Skriv metoden HashMap finnikkereservert() i klassen PHus som går gjennom alle parkeringsplassene og samler alle biler som står på en reservert plass, men ikke har lov å stå der. Slutt på oppgave om parkeringsplasser. (Fortsettes på side 4.)

Eksamen i INF1010, 18. august 2005 Side 4 Telefonnummer (vektsum 65) Resten av oppgavesettet kan løses helt uavhengig av oppgavene ovenfor. På telefontastene er det både siffer og bokstaver. Bokstavtastene har du sikkert brukt hvis du har skrevet SMS-meldinger. Uansett telefontype, vil man finne at det er samme tall og bokstaver som står sammen på en tast, f.eks. vil man alltid finne bokstavene t, u og v sammen med tallet 8. For å identifisere denne tasten, snakker vi vanligvis om 8-tasten, men det er like presist å snakke om t-tasten, u-tasten eller v-tasten. Slik knyttes de tre bokstavene t, u og v til sifferet 8. For de andre bokstavene er det tilsvarende: ABC 2 DEF 3 GHI 4 JKL 5 MNO 6 P QRS 7 T UV 8 W XY Z 9 Legg merke til at det fra bokstav til tall finnes kun én mulighet, mens det til et tall knyttes flere (3 eller 4) bokstaver. Dette systemet kan brukes for lettere å huske telefonnummer. I stedet for nummeret kan man huske et ord med like mange bokstaver som nummeret har siffer, og som er slik at ordet svarer til nummeret. Et eksempel: Firmaet Skohuset vil gjerne ha telefonnummeret 75648738, fordi s 7, k 5, o 6, h 4, u 8, s 7, e 3, t 8 Da kan man taste S K O H U S E T istedet for 7 5 6 4 8 7 3 8. For de fleste av oss er ord lettere å huske enn nummer. Merk at til et ord svarer bare ett tall, mens et tall svarer til mange tekststrenger, hvorav noen kan være ord i et språk. F.eks. svarer tekstsrengen pil til tallet 745, mens nummeret 745 svarer til 36 forskjellige tekststrenger: sil, sik, sij, shl, shk, shj, sgl, sgk, sgj, ril, rik, rij, rhl, rhk, rhj, rgl, rgk, rgj, qil, qik, qij, qhl, qhk, qhj, qgl, qgk, qgj, pil, pik, pij, phl, phk, phj, pgl, pgk og pgj. Bare noen av disse tekststrengene er ord. I eksemplet over er sil, sik, rik og pil norske ord. For flere siffer i nummeret, blir kombinasjonene mange fler. Selskapet Teleuqb har bedt deg som java-programmerer om å lage et program som lager en oversikt over hvilke telefonnummer som svarer til virkelige ord. Problemet er i første omgang: Gitt et telefonnummer, svarer nummeret til et eller flere uqbarske ord? Til hjelp for å vite hva som er ord på uqbarsk, har selskapet allerede laget en klasse Uqbarsk som bl.a. inneholder metoden erord. Denne metoden returnerer true hvis parameteren tkststr er et ord på uqbarsk. Se programskissen lenger ned. (Fortsettes på side 5.)

Eksamen i INF1010, 18. august 2005 Side 5 Du skal lage klassen Nummer, som gitt et telefunnummer med fra 1 til 14 siffer, lager en liste over uqbarske ord som nummeret svarer til. I Nummer skal det være en metode genererord som lager alle tekststrenger som svarer til dette nummeret. Metoden skal sjekke om en generert tekststreng er et ord. Hvis tekststrengen er et ord, skal den legge ordet i en enkel enveis pekerliste. Resultatet av et kall på genererord er at nummeroblektet skal ha en (mulig tom) liste over alle ord som svarer til nummeret. class Ord { String ordet; Ord neste; // Ord som kan kjedes i en enkel // liste vha pekeren neste. Denne // klassen skal du bruke som den er } Ord (String s){ ordet = s; neste = null; } class Nummer { char [] ordkand; // array for å generere ordkandidater <andre deklarasjoner> Nummer (String tlfnr) {...} void leggordtilliste(string nyttord) {...} void genererord(...) {...} } // end class Nummer class Uqbarsk { // Denne klassen // skal du ikke lage... public boolean erord (char [] tkststr) {... }; public boolean erstartpaaord (char [] tkststr) {... };... } Oppgave 9 Figur, datastruktur og konstruktør i Nummer (vekt 15) Tegn en figur av datastrukturen i et objekt av klassen Nummer. Ta også med datastruktur som du får bruk for i senere oppgaver. Lag konstruktøren i Nummer. Den skal programmeres slik at uttrykket new Nummer(tlfnr), der tlfnr bare består av tegnene {0,1,2,3,4,5,6,7,8,9}, lager et nummerobjekt og (Fortsettes på side 6.)

Eksamen i INF1010, 18. august 2005 Side 6 oppretter og eventuelt initialiserer datastrukturen. Konstruktøren skal ikke generere tekststrengene som svarer til telefonnummeret. Oppgave 10 leggordtilliste (vekt 10) Lag metoden leggordtilliste (String ord) {...} som legger teksstrengen ord inn i en enkeltkjedet pekerliste. Rekkefølgen i listen er uvesentlig. Hint: String har en konstruktør String( char[] tekst ). Oppgave 11 Rekursiv generering av ord (vekt 25) Lag den rekursive metoden genererord som genererer alle mulige teksstrenger som svarer til nummeret. Bruk metoden erord gitt i klassen Uqbarsk til å bestemme om en generert tekststreng er er et uqbarsk ord. Hvis den er det brukes medtoden leggordtilliste for å legge ordet inn i ordlisten. Det spiller ingen rolle i hvilken rekkefølge ordene genereres og legges i listen. Men rekkefølgen har betydning for hvor lett neste oppgave lar seg løse. Oppgave 12 Avskjæring (vekt 15) Gitt metoden erstartpaaord i klassen Uqbarsk som returnerer verdien true hvis parameteren er en teksstreng som representerer starten på et ord, og false hvis ikke. F.eks. vil metoden returnere true hvis ordet objekt er et ord på uqbarsk og ord har verdien, o, ob, obj, obje, objek eller objekt. Bruk dette til å foreta avskjæringer slik at genererord ikke fortsetter å bygge opp teksstrenger der vi kan fastslå at ingen ord starter med den tekstsekvensen som er bygget opp så langt. Programmer på nytt eller vis tydelig hvordan du må forandre genererord for å få til dette. Skriv ut de delene av metoden som blir endret. Det holder og skissere de delene som forblir uendret. Oppgavesett slutt. Lykke til! Stein Michael Storleer og Stein Gjessing