UNIVERSITETET I OSLO

Like dokumenter
Anta at følgende programsetninger utføres. Hva skrives ut på skjermen? Hva skrives ut her (skriv nøyaktig de karakterene som printes, og bare de)?

INF1000 Prøveeksamen Oppgave 7 og 9

Oppgave 1.1 (1 poeng) Oppgave 1.2 (2 poeng) Oppgave 1.3 (2 poeng) 1.1

UNIVERSITETET I OSLO

INF1001 Prøveksamen Løsningsforslag

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

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

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

INF Løsning på seminaropppgaver til uke 8

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

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

UNIVERSITETET I OSLO

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

Endret litt som ukeoppgave i INF1010 våren 2004

Eksamen høsten 2003 Den store bøygen i INF1000 er de obligatoriske oppgavene.

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

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

UNIVERSITETET I OSLO

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

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

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

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

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

Forelesning inf Java 4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

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

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

UNIVERSITETET I OSLO

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

UNIVERSITETET I OSLO

INF1000: Forelesning 7

UNIVERSITETET I OSLO

Læreboken på 45 minutter

UNIVERSITETET I OSLO

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

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Oblig4 - forklaringer. Arne og Ole Christian

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

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

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

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Det matematisk-naturvitenskapelige fakultet

INF1000: Forelesning 7. Konstruktører Static

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

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

Løsningsforslag til eksamen i INF1000 våren 2006

INF1000 Eksamen 2014 (modifisert)

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

UNIVERSITETET I OSLO

Gjennomgang av eksamen H99

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

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

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

UNIVERSITETET I OSLO

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

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

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

PRØVEEKSAMEN (rettet versjon 27/11)

Transkript:

Kandidatnummer: Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1000 Grunnkurs i objektorientert programmering Prøveeksamensdag : Tirsdag 10. november 2015 Tid for eksamen : (f eks) 10:15 til 14:15 4 timer Oppgavesettet er på : 7 sider (elektronisk versjon) Vedlegg : Ingen Tillatte hjelpemidler : Alle trykte og skrevne 1. Kontroller at oppgavesettet er komplett, og les nøye gjennom oppgavene før du løser dem. 2. Du kan legge dine egne forutsetninger til grunn og gjøre rimelige antagelser, så lenge de ikke bryter med oppgavens "ånd". Gjør i så fall rede for disse forutsetningene og antagelsene. 3. Poengangivelsen øverst i hver oppgave angir maksimalt antall poeng.sammenlagt gir alle oppgavene maksimalt 100 poeng. Unngå å bruke en stor del av tiden din på oppgaver som gir deg få poeng. 4. Svarene skal skrives på gjennomslagspapir. Skriv hardt nok til at besvarelsen blir mulig å lese på alle gjennomslagsarkene, og ikke legg andre deler av eksamensoppgaven under når du skriver. 5. Du beholder selv underste ark etter levering av de to øverste til eksamensinspektøren. Nummerer sidene, og husk å skrive kandidatnummeret ditt på besvarelsen. 1

Oppgave 1 (5 poeng) a) Hva er verdien til tall etter at følgende kode er utført? int tall = (3*4)-2; tall = tall-1; b) Anta at følgende programsetninger utføres. Hva skrives ut på skjermen? int a = 10; int b = 1; for (int i = b; i<a; i=i+2) { b = b+i; System.out.println(b); c) Hva skrives ut her? String serie = "0"; for (int i=5; i<10; i++) { serie = serie + i; System.out.println ("serie = " + serie); Oppgave 2 (6 poeng) a) Gitt følgende kode. Hva returneres fra metodekallet metode (32, 6)? int metode (int n, int m) { int x = 0; for (int i=n; i>=0; i=i-m) { x=i; return x; 2

b) Anta at følgende program utføres: class Studentregister { public static void main (String[] args) { Student s = new Student ("Ole"); Student p = new Student ("Marit"); System.out.println (s.faanavn() + " og " + p.faanavn()); class Student { private String navn = Grete ; public Student (String navn) { this.navn = navn; String faanavn() { return navn; Hva blir utskriften på skjermen? Svar med nummer for riktig alternativ. 1. Grete og Grete 2. Ole og Johan 3. Marit og Marit 4. navn og navn 5. Ole og Marit 6. s.faanavn() og p.faanavn() 7. Marit og Ole 8. Ingen av alternativene over Oppgave 3 (4 poeng) a) Skriv binærtallet 1000 1011 som et desimaltall. b) Skriv desimaltallet 39 som et heksadesimalt tall. c) Skriv summen av de to binærtallene 110 og 100 som et binærtall. d) Skriv det heksadesimale tallet 2E som et desimaltall. Oppgave 4 (5 poeng) Skriv ferdig metoden under. Metoden skal returnere det tallet som verken er størst eller minst av de tre tallene i parameterne a, b og c. Du kan anta at alle tallene har forskjellige verdier. double median (double a, double b, double c) {... Oppgave 5 (7 poeng) Du skal skrive en metode med en int-array som parameter og som returnerer en int-array. Metoden skal opprette en ny int-array som er dobbelt så lang som den i parameteren, kopiere over verdiene i parameter-arrayen til annenhver plass (fra og med indeks 0) i den nye arrayen. De øvrige verdiene i den nye arrayen skal være 0. Til slutt skal metoden returnere den nye arrayen. 3

Oppgave 6 (10 poeng) Følgende kode leser inn fra tekstfil hvor mye henholdsvis Peter og Pål har hatt i ferieutgifter. Koden kjører og gir riktig svar, men det er en del unødvendige gjentakelser. Du skal skrive en ny statisk metode i klassen FerieUtgifter som kan kalles for å erstatte det som er av felles funksjonalitet. Denne metoden skal kunne kalles fra metoden main slik at det modifiserte programmet skriver ut det samme som det opprinnelige, men med mindre gjentakelser i koden. Merk forøvrig at formålet med oppgaven utelukkende er å vise at man behersker fornuftig introdusering av metoder, så det er ikke nødvendig vurdere eventuelle andre aspekter ved oppgaven eller koden. import java.util.scanner; import java.io.file; public class FerieUtgifter { public static void main(string[] args) throws Exception { String fnpeter = "Peter.txt"; Scanner scannerpeter = new Scanner(new File(fnPeter)); int totpeter=0; int utgiftpeter; while (scannerpeter.hasnextline() ){ utgiftpeter = Integer.parseInt(scannerPeter.nextLine()); totpeter += utgiftpeter; System.out.println("Peter har brukt: " + totpeter); String fnpaul = "Paul.txt"; Scanner scannerpaul = new Scanner(new File(fnPaul)); int totpaul=0; int utgiftpaul; while (scannerpaul.hasnextline() ){ utgiftpaul = Integer.parseInt(scannerPaul.nextLine()); totpaul += utgiftpaul; System.out.println("Paul har brukt: " + totpaul); 4

Oppgave 7 (47 poeng) Herr Glum lager en julekalender til barna sine hvert år. Kalenderen inneholder en gave for hver dag i desember, frem til og med julaften 24.12. Det går på omgang mellom barna hvem som får lov å åpne dagens gave når alle har åpnet en gave hver, er det førstemann sin tur igjen. Nå ønsker herr Glum seg et program som kan hjelpe ham med holde rede på hvilke barn som får hvilke gaver, og hvor mye gavene hvert barn får, har kostet. Programmet skal kunne lese inn data om gavene fra en fil som herr Glum oppdaterer etter hvert som han handler inn gaver i tiden før desember. Filen inneholder 48 linjer, 2 for hver gave: Én linje med navn på gaven (en tekststreng), deretter én linje med prisen (et heltall). Du skal hjelpe ham å skrive dette programmet i Java. a) Skriv en klasse Gave med to variabler som forteller hva som er i gaven, og hvor mye den har kostet. Klassen skal ha en konstruktør med parametere som angir verdier for objektvariablene. Foruten konstruktøren skal klassens grensesnitt omfatte tre metoder: En som returnerer gavepris; en som returnerer gavenavn; og en metode tostring som returnerer gavens navn og verdi som en String. b) Klassen Barn skal ha en datarepresentasjon for barnets navn, alle gavene barnet har åpnet, og totalverdien av gaver barnet har åpnet. Grensesnittet til klassen skal være en konstruktør med barnets navn som parameter, en metode for avlesing av totalverdien av alle gaver barnet har mottatt, en metode apnegave som legger til en ny gave og oppdaterer totalverdien av gaver barnet har fått, og en metode skrivbarn som skriver ut på terminal barnets navn, en linje for hver av barnets gaver og til slutt totalverdien av barnets gaver. Skriv klassen Barn med alt innhold. Vi skal i de senere oppgavene utvide programmet, som skal inneholde en klasse Julekalender med blant annet følgende innhold: private Gave [] kalender; // pekere til en gave for hver dag private Barn [] apnere; // pekere til hvert av barna i familien private int nesteapner; // holder rede på hvem sin tur det er til å åpne private int dag; // holder rede på hvilken dag som skal åpnes neste gang Julekalender (String[] barnenavn, String filnavn) // Konstruktør private void lesgavefil (String filnavn) // leser inn gaver med pris fra fil void nydag () // åpner en ny gave og oppdaterer datastrukturen void gaveoversikt (); // Skriver en oversikt over barna, deres åpnede gaver og // totalpris per barn på skjermen c) Skriv metoden lesgavefil i klassen Julekalender, som leser inn alle gavene fra filen oppgitt i parameteren og legger disse inn i kalenderen. Filformatet er beskrevet ovenfor. d) Skriv konstruktøren til klassen Julekalender. Konstruktøren skal opprette objekter for alle barna i familien og opprette selve julekalenderen med gaver. e) Skriv metoden nydag i klassen Julekalender. Husk å oppdatere nesteapner. f) Skriv metoden gaveoversikt i klassen Julekalender. g) Tegn et UML klasse-diagram som viser programmets klasser med attributter og metoder, og deres relasjoner. 5

h) Vi skal nå utvide klassen Julekalender med historikk fra tidligere år. I første omgang er hensikten å redusere sjansen for at et barn får samme gave flere år på rad. Du kan anta at gavenavn er entydige. Klassen Juklekalender er utvidet med objektvariabel og metoder som vist nedenfor. Du skal skrive metoden avvergetlike som beskrevet nedenfor, og utvide metoden nydag med kall på avvergetlike. Dersom avvergetlike returnerer false, skal du skrive ut en beskjed på terminalen. Beskriv eventuelle andre behov for endringer i metoder du allerede har skrevet. /* HashMap historikk inneholder Gave-objekter for alle gaver som har vært delt ut tidligere år. Nøkkel er en String bestående av navn på barnet som fikk den, konkatenert (sammensatt) med navnet på gaven.*/ private HashMap<String,Gave> historikk = new HashMap<>(); /* Metoden leshistorikk leser inn all historikk om tidligere utdelte gaver fra filen Historikk.txt, og bygger opp HashMap en historikk som beskrevet over. Denne metoden skal du ikke skrive selv. */ void leshistorikk(string filnavn) throws Exception { /* Metoden avvergetlike prøver å avverge at en barn får en gave det har fått i tidligere år. Den kalles hver dag før metoden apnegave. Dersom gaven og barnet som står for tur sammenfaller med noe som er gitt tidligere år, byttes gaven som står for tur med gaven for neste dag i kalenderen. I de tilfeller denne strategien ikke kan hindre at et barn får en gave det har fått før, skal metoden returnere false. Dersom barnet ikke har fått gaven som står for tur tidligere, eller du klarer å avverge det ved å bytte, skal metoden returnere true: */ private boolean avvergetlike () { /* Metoden skrivhistorikk lagrer årets gaver på fil sammen med tidligere historikk. Metoden skal ikke skrives av deg: */ void skrivhistorikk (String filnavn) { 6

Oppgave 8 (10 poeng) I spillet Yatzy får man poeng for ulike kombinasjoner av verdier på fem terninger. En av kombinasjonene som gir poeng kalles "hus" og krever at tre at terningene viser én verdi (er like) og at de to resterende terningene viser en annen (lik) verdi. Altså at man blant de fem terningene har tre like og to like. Det beste huset man kan ha er tre seksere og to femmere. a) Skriv en metode boolean bestehus(int[] t) som tar inn en array av type int som parameter, og returnerer true dersom arrayen t består av tre verdier 6 og to verdier 5 (i vilkårlig rekkefølge). Ellers skal den returnere false. Du kan anta at du alltid får inn en array av lengde 5, der hver verdi er større eller lik 1 og mindre eller lik 6. Altså skal følgende kode føre til at variabelen b får verdien true: int[] terninger = {5,6,6,5,6; boolean b = bestehus(terninger); b) Skriv en metode boolean hus(int[] t) med samme parameter og returverdi som i a), men der metoden returnerer true for alle terningkombinasjoner som er hus (ikke bare hus av tre seksere og to femmere). Oppgave 9 (6 poeng) a) Er dette en personopplysning? Begrunn med henvisning til Personopplysningsloven. Mann, født 1990. Mangler fast bopæl. Straffedømt for narkotikabruk. b) Nevn tre sentrale hensyn til informasjonssikkerhet som ifølge Personopplysningsloven skal ivaretas ved behandling av personopplysninger. c) Som ledd i arbeidet mot forsikringssvindel har norske forsikringsselskaper fått konsesjon for lagring av følgende opplysninger om sine skadeoppgjør i et felles, sentralt skaderegister: Forsikringstakers fødselsnummer, saksnummer, bransjekode, selskap, skadetype, dato, saksbehandlers initialer og skadeland. Konsesjonen omfatter ikke tillatelse til registrering av sensitive personopplysninger. Diskuter om noen av opplysningene konsesjonen omfatter kan komme til å omfatte sensitive personopplysninger slik at spesiell varsomhet bør utvises ved registrering av disse i det felles registeret. 7