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



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

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

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

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

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

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

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

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

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Eksamensoppgave i IFUD1025 Programmering i Java

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

Eksamensoppgave i IFUD1025 Programmering i Java

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

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

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Eksamensoppgave i IFUD1025 Programmering i Java og IINI4013 Programmering i Java

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

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

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

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

Eksamensoppgave i IFUD1025 Programmering i Java

HØGSKOLEN I SØR-TRØNDELAG

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Algoritmer og Datastrukturer

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato:

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

Eksamen IN1010/INF1010 våren 2018

Oblig 4Hybelhus litt mer tips enn i oppgaven

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

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

ANTDAGER = 358; I Ifra nyttår 08 til 08 1ed julaften

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

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

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

Algoritmer og Datastrukturer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

Algoritmer og Datastrukturer

TDT4100 Objektorientert programmering

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Eksamen 22. februar 2011

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.

INF1010 Sortering. Marit Nybakken 1. mars 2004

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

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

EKSAMEN med løsningsforslag

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

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

I tillegg trengs 2 terninger.

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

Matteknologisk utdanning

HØGSKOLEN I SØR-TRØNDELAG

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

EKSAMEN. Algoritmer og datastrukturer

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

Ol Emnekode: Faglig veileder: I L~~25 A - E!8 Viho~d~.1. F ntall oppga~ forsiden): ;;;handskr~vn-;

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

Transkript:

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: Varighet: Emnekode: Emnenavn: Klasse(r): Studiepoeng: Faglærer(e): Kontaktperson (adm.) Hjelpemidler: Oppgavesettet består av: Vedlegg består av: 20. mai 2011 4 timer (9:00-13:00) LO171D NETT2011V 6 Vuokko-Helena Caseiro (tlf. +39 06 51 26 063) Ingrid Island (tlf. 73 55 95 64) Alle skrevne og trykte hjelpemidler samt godkjent kalkulator 2 oppgaver og 5 sider (inkludert forside) Ingen Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. Lykke til!

HiST Avdeling for informatikk og e-læring Side 2 av 5 Oppgave 1 ( 60 % ) Vi skal se på et brettspill for to spillere. Brettet er rundt med felter nummerert fra 0 (start) til et positivt tall max. Vi bruker knapper som penger. Hvert felt har en verdi uttrykt i knapper. Spillereglene er som følger: - Før første omgang: Spillerne stiller seg opp på felt 0. Hver spiller får utdelt like mange knapper. Ingen av spillerne eier noe felt. - Hver spiller flytter seg rundt på brettet i følge terningkast (fra max går man til 0 igjen). - Hvis spilleren lander på et ledig felt (dvs. feltet er ikke eid av noen spiller) og har nok knapper, må spilleren kjøpe feltet. Prisen er lik feltets verdi, og knappene som betales går ut av spillet. - Hvis spilleren lander på et felt som er eid av den andre spilleren, må spilleren betale en avgift lik feltets verdi til eieren. Hvis spilleren ikke har nok knapper til å kunne betale avgiften, er spillet slutt. - Spillet slutter etter et forhåndsavtalt antall omganger, eller tidligere hvis en av spillerne ikke kan betale en avgift. Den som da har størst formue i form av knapper og felter har vunnet. Eksempel: Vi har et brett med åtte felter. Hvert felt er verdt en knapp. Anna og Britta starter med fem knapper hver. De er enige om å spille høyst tjue omganger. Før første omgang: - Anna står på felt 0. Hun har fem knapper. Hun eier ingen felter. - Britta står på felt 0. Hun har fem knapper. Hun eier ingen felter. I første omgang: - Anna slår 6, lander på felt 6 og kjøper det. - Britta slår 1, lander på felt 1 og kjøper det. Etter første omgang: - Anna står på felt 6. Hun har fire knapper. Hun eier felt 6. - Britta står på felt 1. Hun har fire knapper. Hun eier felt 1. I andre omgang: - Anna slår 3, lander på felt 1 og betaler avgift for det. - Britta slår 2, lander på felt 3 og kjøper det. Etter andre omgang: - Anna står på felt 1. Hun har tre knapper. Hun eier felt 6. - Britta står på felt 3. Hun har fire knapper. Hun eier feltene 1 og 3. I tredje omgang: Du skal etterhvert skrive deler av klassene Spiller, Felt og Brettspill.

HiST Avdeling for informatikk og e-læring Side 3 av 5 a) Begynn å lage klassen Spiller med følgende objektvariabler: - navn: spillerens navn - knapper: antall knapper som spilleren eier - feltnr: feltnummeret til det feltet der spilleren er Lag også en passende Spiller-konstruktør. b) Spiller skal ha en metode for å motta knapper og annen metode for å betale knapper. Som parametre skal metodene skal ha hhv. antall knapper som skal mottas eller betales. c) Lag en Spiller-metode public int kastogflytt(brettspill spillet) for å kaste terning og flytte spilleren på spillets brett i følge terningkastet. Gjør slik: - Kast først terning: java.util.random terning = new java.util.random(); int terningkast = terning.nextint(6) + 1; // 1 terningkast 6 - Oppdater så feltnr vha. Brettspill-metoden beregnnyttfeltnr() (se deloppgave 2h). - La metoden returnere terningkast. d) Begynn å lage klassen Felt med følgende objektvariabler: - knapper: Feltets verdi uttrykt i knapper - eier: navnet til feltets eier. Hvis ingen spiller eier feltet, skal feltet ha verdien null. Lag også en konstruktør som bl.a. gir eier verdien null. e) Lag en Felt-metode public boolean erledig() som returnerer true hvis og bare hvis ingen spiller eier dette feltet. f) Lag en Felt-metode public void blikjøpt(string navn) som registrerer at feltets eier heter navn. g) Begynn å lage klassen Brettspill med objektvariabler for følgende: - alle feltene på brettet - to spillere (bruk typen Spiller) Lag også en konstruktør som bare har spillernes navn og feltverdiene som parametre. h) Lag en Brettspill-metode public int beregnnyttfeltnr(int fra, int antall) som returnerer nytt feltnummer hvis man fra feltnummer fra skal flyttes antall felter framover. Vær forsiktig hvis man blir ferdig med en runde rundt på brettet! I eksemplet går Anna fra felt 6 til felt 1 når hun i andre omgang kaster 3. En spillers samlede formue er summen av spillerens knapper og verdiene av de feltene som spilleren eier. I eksemplet er Brittas samlede formue seks knapper (4 + 1 + 1 = 6) etter andre omgang. i) Lag en Brettspill-metode public int finnsamletformue(string navn) som returnerer den samlede formuen til den spilleren som heter navn. Brettspill skal også inneholde metode(r) for selve spillingen, men dem skal ikke du lage.

HiST Avdeling for informatikk og e-læring Side 4 av 5 Oppgave 2 ( 40 % ) Vi ønsker at plantene i vårt veksthus skal vokse så raskt som mulig. Når vi unntar vanningen, har alle plantene av samme slag (f.eks. roser) like forhold, dvs. samme lys, samme temperatur mm. Vi skal eksperimentere med vanningen. Vi vil studere hver enkelt plante for seg. Vi bruker et spesielt vanningsapparat som gjør to ting samtidig: Det både vanner planten og måler plantens størrelse. Både vanndosen og plantens størrelse måles i hele milliliter (ml). Vi kan bruke vanningsapparatet på planten høyst en gang hver dag. De dagene planten blir vannet kalles vanningsdagene. Den siste vanningsdagen hittil kalles den aktuelle vanningsdagen, - det er plantens nå. Plantens intervall er antall dager (minst en) som skal gå mellom den aktuelle vanningsdagen og neste vanningsdag. Intervall lik 1 betyr at planten skal vannes dagen etter, intervall lik 2 betyr at planten skal vannes to dager etter osv. Vi teller plantens levedager fra 0 og oppover. Dag 0 er planten bitte liten, vi bruker apparatet for første gang og bestemmer intervallet og vanndosen. Vi vil følge med på plantens vanning og vekst i en måned og eventuelt gripe inn nå og da ved å endre intervallet eller dosen. Eksempel: Til venstre ser du de første dagene i en roses liv. Til høyre ser du hvordan disse dagene vil kunne programmeres vha. det du skal lage i deloppgavene 2a), 2b) og 2c). Dag 0: Rosen er 1ml og får 150 ml vann. Vi setter intervallet til 1 og dosen til 100 ml. Plante rosen = new Plante("Rose", 1, 100, 31, 1, 150); Dag 1: Rosen er 2ml og får 100 ml vann. rosen.vann(2); Dag 2: Rosen er 4ml og får 100 ml vann. rosen.vann(4); Vi endrer intervallet til 2. rosen.setintervall(2); Dag 3: Vi bruker ikke apparatet på rosen. Dag 4: Rosen er 6 ml og får 100 ml vann. rosen.vann(6); Dag 5: Vi bruker ikke apparatet på rosen. Dag 6: Rosen er 6 ml og får 100 ml vann. rosen.vann(6); Vi endrer dosen til 200 ml vann. rosen.setdose(200); Dag 7: Vi bruker ikke apparatet på rosen. Dag 8: Rosen er 12ml og får 200 ml vann. rosen.vann(12);...... Du skal i denne oppgaven lage en eneste klasse kalt Plante. a) Klassen Plante skal ha følgende objektvariabler: - navn: plantens navn - aktuellvdag: den aktuelle vanningdagen - intervall: plantens intervall - dose: hvor mye vann planten skal ha neste vanningsdag - størrelser: heltallstabell som for hver vanningsdag hittil angir hvor stor planten var den dagen - dosergitt: heltallstabell som for hver vanningsdag hittil angir hvor mye vann planten fikk den dagen

HiST Avdeling for informatikk og e-læring Side 5 av 5 Lag også en passende konstruktør. b) Lag en set-metode for å endre intervall og en set-metode for å endre dose. Metoden vann() skal være den eneste metoden for å endre aktuellvdag og innholdet i de to tabellene: c) Lag en metode public boolean vann(int størrelse) Oppdater aktuellvdag ved å legge til intervall. På denne nye aktuelle vanningsdagen skal du registrere at planten er størrelse stor og at planten blir vannet med dose. Metoden skal returnere true hvis og bare hvis alt gikk greit. Vi vil ikke være så strenge når det gjelder hvilke planter som skal anses for å være like gamle. To planter er jevngamle hvis d i / 2 ved heltallsdivisjon, der - d er differansen mellom de to plantenes aktuelle vanningsdager - i er det minste av de to plantenes intervaller Eksempel: Vi har en salat med aktuell vanningsdag 18 og intervall 5, og vi har en kaktus med aktuell vanningsdag 20 og intervall 7. Da er d = 20 18 = 2 og i = 5. Siden 2 2 = 5 / 2, er salaten og kaktusen jevngamle. d) Lag en metode public boolean erjevngamle(plante annen) som returnerer true hvis og bare hvis denne planten og annen-planten er jevngamle. Du kan få bruk for et par java.lang.math-metoder: - public static int abs(int a) returnerer absoluttverdien av tallet a (dvs. a uten eventuelt minustegn). - public static int min(int a, int b) returnerer det minste av tallene a og b. e) Lag en metode public boolean harvokstmerenn(plante annen) Metoden skal returnere true hvis og bare hvis - denne planten og annen-planten er jevngamle, og dessuten - denne planten er nå større enn annen-planten (dvs. denne plantens størrelse på dens aktuelle vanningsdag er større enn annen-plantens størrelse på annenplantens aktuelle vanningsdag). f) Lag en metode public boolean harhattstoppiveksten() Metoden skal returnere true hvis og bare hvis det har vært en vanningsdag s.a. planten ikke vokste fra denne vanningsdagen til den neste. I rose-eksemplet vokste ikke rosen fra dag 4 til dag 6.