UNIVERSITETET I OSLO

Like dokumenter
UNIVERSITETET I OSLO

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

INF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Eksamen IN1010/INF1010 våren 2018

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

Enkle generiske klasser i Java

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010, 21. januar Klasser med parametre = Parametriserte klasser = Generiske klasser

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

UNIVERSITETET I OSLO

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010 våren januar. Objektorientering i Java

UNIVERSITETET I OSLO

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

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Obligatorisk oppgave 4: Lege/Resept

UNIVERSITETET I OSLO

Seminaroppgaver IN1010, uke 2

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

UNIVERSITETET I OSLO

INF Innleveringsoppgave 6

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

IN1010 våren januar. Objektorientering i Java

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Informasjon Prøveeksamen i IN1000 høsten 2018

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

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Eksamen

Med Svarforslag UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. 3 sider (side 6, 7 og 8, rives ut, fylles ut og leveres)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Gjennomgang av eksamen H99

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

INF106 Objektorientert programmering

INF1000 Prøveeksamen Oppgave 7 og 9

GJØVIK INGENIØRHØGSKOLE

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Prøveeksamen 2010 Eksamensdag: 26. mai 2010 Tid for eksamen: 00.00 06.00 Oppgavesettet er på 7 sider. Vedlegg: ingen Tillatte hjelpemidler: 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 når man tar hensyn til deloppgavenes prosentmessige vekt. Det er antagelig lurt å lese hele oppgaveteksten (på hver del) 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. Del A Kjøretøy og båter (40%) Anta at vi har klassene Bat (båt) og Kjoretoy (kjøretøy) som beskrevet under. Legg merke til at en båt er kjennetegnet av et båtnummer (batnr) som er et heltall, mens et kjøretøy er kjennetegnet av et kjøretøynummer (kjnr) som er en tekst (String). class Bat { private int batnr; Bat (int nr) {batnr = nr;} public int hentbatnr() {return batnr;} } class Kjoretoy { private String kjnr; Kjoretoy (String nr) {kjnr = nr;} public String hentkjnr() {return kjnr;} } (Fortsettes på side 2.)

Eksamen i INF1010, 26. mai 2010 Side 2 Oppgave 1 Skriv subklassen SeilBat (seilbåt). En seilbåt er i tillegg til at det er en båt, kjennetegnet av en størrelse på seilet (seilareal). Når en seilbåt opprettes skal (i tillegg til nummeret) seilarealet være parameter. På samme måte som f.eks. nummeret kan hentes ut av objekter av klassene Bat og Kjoretoy, skal seilarealet kunne hentes ut av seilbåter. Oppgave 2 Skriv grensesnittet (interface) Motorisert. Noe som er motorisert er kjennetegnet av et antall hestekrefter (anthk). Oppgave 3 Skriv subklassene MotorKjoretoy og MotorBat med de opplagte betydningene (motorisert kjøretøy og motorisert båt). Når et motorkjøretøy eller en motorbåt opprettes, skal også (i tillegg til nummeret) antall hestekrefter være parameter. Oppgave 4 Lag et grensesnitt (interface) Element, som gjør at objekter kan settes inn i en enkelkjedet liste. Husk: For å sette ting inn i en enkeltkjedte liste trengs bare en peker til neste objekt i listen. Husk også at et grensesnitt (interface) bare kan ha metoder. Les gjerne de neste oppgavene (5, 6 og 7) før du svarer på denne oppgaven. Oppgave 5 Skriv en klasse FIFO med metoder med navn settinn og taut, som setter inn og tar ut objekter av en enkel liste i FIFO-rekkefølge (FIFO: First Inn, First out, dvs. at det elementet som tas ut er det som har ligget lengst i listen). Alle objekter som spiller rollen Element skal kunne settes inn og tas ut (dvs. alle objekter som implementerer grensesnittet Element). Klassen skal inneholde en peker som heter forste som peker på det objektet i listen som har ligget der lengst, og en peker som heter siste som peker på det objektet i listen som ble satt inn sist. Når både forste og siste peker på null er listen tom. Ta ut av en tom liste returnerer null. Oppgave 6 Skriv subklassen ListbarMK (Listbart MotorKjøretøy) som beskriver motorkjøretøyer som kan settes inn i FIFO-listen over, og subklassen ListbarMB (Fortsettes på side 3.)

Eksamen i INF1010, 26. mai 2010 Side 3 (Listbar MotorBåt) som beskriver motorbåter som kan settes inn i en FIFOliste. Oppgave 7 Skriv klassen MotorFIFO som en subklasse av klassen FIFO. Klassen MotorFIFO skal bare kunne inneholde objekter som både spiller rollene Element og Motorisert. Du skal redefinere metoden settinn på enkleste måte for å sikre dette. Dvs. hvis metoden settinn prøver å sette inn noe som ikke spiller rollen Motor, skal ingen ting skje (objektet blir ikke satt inn). Du skal også skrive metoden finnstorst som går gjennom listen og finner objektet med flest hestekrefter. Metoden skal returnere en peker (av typen Motorisert) til dette objektet. Oppgave 8 De som bruker klassen MotorFIFO liker ikke at settinn ikke gir noen beskjed når man prøver å sette inn et objekt som ikke er motorisert. Du skal derfor skrive en subklasse til klassen MotorFIFO som skal hete GodMotorFIFO. Klassen GodMotorFIFO skal inneholde metoden settinnmotorisert med en parameter av typen Motorisert. Metoden settinnmotorisert skal kaste et egendefinert unntak hvis det objektet som forsøkes settes inn ikke også spiller rollen Element. Deklarer det egendefinerte unntaket, og skriv klassen GodMotorFIFO med metoden settinnmotorisert. Oppgave 9 Lag et hovedprogram (main) som oppretter et listbart motorisert kjøretøy med nummer DE12345 og 150 hestekrefter, og en listbar motorbåt med nummer 654321 og 100 hestkrefter. Legg disse to objektene inn i en FIFOliste av typen GodMotorFIFO. Resten av programmet du skriver under skal virke uansett i hvilken rekkefølge du setter de to objektene inn i FIFO-listen. Skriv koden som setter inn, slik at om objekter som settes inn ikke er av typen Element så vil unntaksbehandlingen skrive Ikke element (ved hjelp av System.out.println). Kall så på metoden finnstorst, og skriv ut maksimalt antall hestekrefter i listen, også ved hjelp av System.out.println. Ta til slutt ut et element av listen og skriv ut nummeret (et heltall hvis det er en båt og en String hvis det er et kjøretøy), også ved hjelp av System.out.println. Slutt på del A om kjøretøy og båter (Fortsettes på side 4.)

Eksamen i INF1010, 26. mai 2010 Side 4 Del B Et program for å finne beste sammensetning av et stafettlag (60%) I denne oppgaven skal du skrive deler av et program som skal brukes for å finne hvilke utøvere (lagsammensetning eller stafettlag) som skal settes på de ulike etappene i en stafett. Problemet som skal løses, er å finne det beste laget for stafetten ved å velge en utøver til hver etappe slik at lagets totaltid blir minst mulig. En stafett har et bestemt antall etapper. Alle utøvere prøver en eller flere etapper, og den tiden de bruker på etappen noteres (i objekter av klassen Etappetid, se nedenfor). En utøver kan bare brukes til en etappe, og kun til etapper der det finnes etappetider for utøveren. I del 1 løses oppgaven ved hjelp av en metode som prøver alle mulige lagsammensetninger. I del 2 gjøres det samme ved hjelp av tråder. (Det finnes lurere måter å gjøre dette på, men det bryr vi oss ikke om i denne oppgaven.) Del 1 Vi definerer fire klasser: Et objekt av klassen Utøver inneholder navnet til en utøver. Et objekt av klassen Etappetid har en peker til en utøver og en etappetid for denne utøveren på den etappen som objektet tilhører. I tillegg inneholder objektet en peker til neste etappetidobjekt. Et objekt av klassen Etappe inneholder et etappenummer, en peker til neste etappeobjekt, og en peker til (det første objektet i) en liste av etappetidobjekter med informasjon om alle etappetider for denne etappen. Et objekt av klassen Stafett har en peker til (det første objektet i) en liste av alle etappene i stafetten, som er sortert etter etappenummer. Oppgave 10 Tegning av datastrukturen Tegn datastrukturen til et stafettobjekt med en liste med 5 etapper, og for hver etappe en liste av etappetidobjekter. Tegn også noen utøverobjekter, og gjør det klart hvordan disse er forbundet med de andre objektene i figuren. Oppgave 11 Klassedefinisjonene Skriv programkoden som definerer de fire klassene Stafett, Etappe, Etappetid og Utøver med variablene du trenger. (oppgave slutt) (Fortsettes på side 5.)

Eksamen i INF1010, 26. mai 2010 Side 5 Metoden finnbestestafettlag skal fungere som hovedmetode ved å kalle på metoden stafettid. stafettid genererer alle mulige sammensetninger av lag (ved rekursivt å kalle på seg selv i neste etappe). For hver gang stafettid har et forslag til et nytt lag (alle etapper har fått en utøver og en tid) kalles metoden nyttmuligstafettlag som sørger for å bevare det hittil beste laget med tilhørende totaltid. Til slutt skriver finnbestestafettlag ut resultatet. stafettid lager forslag til stafettlag ved (rekursivt) å prøve alle mulige kombinasjoner av utøvere for etappene. Metoden har to parametre. Den første parameteren er totaltiden så langt, det vil si summen av etappetidene for de forutgående etappene, og den andre inneholder informasjon om hvilke utøvere som er valgt til disse tidligere etappene (og som derfor ikke kan brukes i denne eller følgende etapper). Anta at stafettid er kalt i et objekt med etappenummer 3. Første parameter angir summen av de 2 forutgående tilordnede etappetidene for de 2 utøverne som som andre parameter angir. Metoden skal etter tur velge alle utøvere fra listen over etappetidobjekter (som ikke er tilordnet til de 2 første etappene) til denne etappen (etappenummer 3) og for hver av disse kalle på stafettid i neste etappeobjekt (etappenummer 4) hvis dette eksisterer. Hvis neste etappeobjekt ikke finnes har metoden kommet til siste etappe (og funnet en utøver for denne). Et nytt mulig lag er da generert. Da kalles metoden nyttmuligstafettlag som sørger for å ta vare på totaltiden og utøverlisten hvis dette er beste tid til nå. Hvordan datastrukturen initialiseres (input), skal ikke være med i programmene du lager. Du trenger ikke lage «set»- eller «get»-metoder i klassene. Oppgave 12 Datastruktur for valgte utøvere I programmet må det være en datastruktur for å holde orden på utøvere som er med i (deler av) et stafettlag og som ikke kan brukes i senere etapper. Hittil beste lagsammensetning kan tas vare på med den samme strukturen. Beskriv kort (med ord, ikke kode) hvordan du velger å ta vare på denne informasjonen. Bruk en egen klasse eller en av klassene fra javabiblioteket. Beskriv metodene du bruker til dette ved å forklare hvordan de virker og ved å beskrive parametre og eventuell returverdi. Oppgave 13 Metoden stafettid Skriv den rekursive metoden stafettid definert i klassen Etappe. (Fortsettes på side 6.)

Eksamen i INF1010, 26. mai 2010 Side 6 Oppgave 14 Metoden nyttmuligstafettlag Skriv metoden nyttmuligstafettlag i klassen Stafett. nyttmuligstafettlag blir kalt (i stafettid) når en ny kombinasjon av utøvere for alle etappene er funnet. Oppgave 15 Metoden finnbestestafettlag Skriv metoden finnbestestafettlag. Metoden skal til slutt skrive (ved hjelp av System.out.println(...)) navnene på utøverne på det beste laget i «etappeorden», samt den tilhørende stafettiden (totaltid). (Fortsettes på side 7.)

Eksamen i INF1010, 26. mai 2010 Side 7 Del 2 I oppgavene 7 og 8 skal du finne beste stafettlag ved å bruke tråder. Du skal bruke den samme datastrukturen som beskrevet over, men du skal nå ikke bruke metoden stafettid. Du skal definerer en ny klasse StafettTråd med en konstruktør som blant parametrene har de samme paramtrene som metoden stafettid. En StafettTråd skal ha en peker til et etappeobjekt, og run-metoden skal, på samme måte som programmet i del 1, gå gjennom alle mulige etappetider for denne etappen. Men istedet for å kalle stafettid rekursivt, skal run-metoden lage en ny tråd for hver mulig etappetid. På denne måten vil programmet kunne regne ut alle mulige stafettlag i parallell, hvis det er nok prosessorer.(at dette kanskje ikke er en veldig effektiv måte å løse vårt problem på skal vi ikke bry oss om her.) Til sammen skal programdelene du skriver som besvarelse av oppgavene 7 og 8 finne og skrive ut beste stafettlag ved et kall på metoden finnbestestafettlag. Men nå vil finnbestestafettlag starte med å lage den første tråden (for første etappe). Det er ikke nødvendig å skrive klassene fra del 1 på nytt. Gjør bare rede for hvor disse må forandres. Oppgave 16 Klassen StafettTråd Skriv variabeldeklarasjoner, konstruktøren og run-metoden i klassen StafettTråd. Forandre metodene finnbestestafettlag og nyttmuligstafettlag slik at de virker sammen i dette programmet. Oppgave 17 Synkronisering Skriv resten av klassen StafettTråd og eventuelt flere endringer i klassen Stafett, slik at trådene blir synkronisert og slik at beste stafettlag blir skrevet ut først når siste tråd har fullført jobben sin og beste stafettlag er funnet. Oppgavesett slutt. Lykke til! Stein Gjessing og Stein Michael Storleer