UNIVERSITETET I OSLO

Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Løsningsforslag INF desember 2007

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

Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1000 Uke 14. Løsningsforslag - prøveeksamen. Institutt for Informatikk Fredrik Sørensen og Arne Maus

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgave 2 (20 poeng) float og long i oppgave 2:

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

PRØVEEKSAMEN (rettet versjon 27/11)

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

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

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

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

INF1000: noen avsluttende ord

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

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

UNIVERSITETET I OSLO

PRØVEEKSAMEN (rettet versjon 27/11)

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

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Løsningsforslag ukeoppg. 3: sep (INF Høst 2011)

UNIVERSITETET I OSLO

GJØVIK INGENIØRHØGSKOLE

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Oblig4 - forklaringer. Arne og Ole Christian

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

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

Forelesning inf Java 4

EKSAMENSOPPGAVE I INF-1100

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

INF1010 Sortering. Marit Nybakken 1. mars 2004

UNIVERSITETET I OSLO

Oblig 4Hybelhus litt mer tips enn i oppgaven

K O N T I N U A S J O N S E K S A M E N

INF1000: Forelesning 7

Eksamen IN1010/INF1010 våren 2018

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

Det matematisk-naturvitenskapelige fakultet LØSNINGSFORSLAG

Gjennomgang av eksamen H99

Gjennomgang av en tenkt eksamensoppgave

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

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

Gjennomgang av en tenkt eksamensoppgave

Transkript:

Kandidatnummer: UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet eksamen Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Mandag 3. desember 2007 Tid for eksamen : 09 12 Oppgavesettet er på : 12 sider Vedlegg : Ingen Tillatte hjelpemidler : Alle trykte og skrevne Les nøye gjennom hver oppgave før du løser den. For hver oppgave er angitt det maksimale antall poeng du kan få hvis du svarer helt riktig. Summen av poengene er 252, slik at f.eks 4 poeng tilsvarer omlag 3 minutter og 10 poeng omlag 7 min. (hvis du regner med å komme igjennom alt). Pass på at du bruker tiden din riktig. Kontroller også at oppgavesettet er komplett før du begynner å besvare det. Dersom du savner opplysninger i oppgaven, kan du selv 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 forutsetningene og antagelsene du gjør. Dine svar skal skrives på disse oppgavearkene, og ikke på separate ark. Dette gjelder både spørsmål med avkrysningssvar og spørsmål hvor du bes om å skrive programkode. I de oppgavene hvor det skal skrives programkode, anbefales det at du først skriver en kladd på eget ark før du fører svaret inn i disse oppgavearkene på avsatt plass. Noen av spørsmålene er flervalgsoppgaver. På disse oppgavene får du poeng etter hvor mange korrekte svar du gir. Du får ikke poeng hvis du lar være å besvare et spørsmål, eller dersom du krysser av begge svaralternativer. Hvis du har satt et kryss i en avkrysningsboks og etterpå finner ut at du ikke ønsket å krysse av der, kan du skrive "FEIL" like til venstre for den aktuelle avkrysningsboksen. Husk å skrive såpass hardt at besvarelsen blir mulig å lese på alle gjennomslagsarkene, men ikke legg andre deler av eksamensoppgaven under når du skriver. Oppgave 1 (2 poeng) a) Hvor mange int-verdier er det plass til i arrayen hester? int[][] hester = new int[10][5]; Svar:...

Oppgave 2 (20 poeng) Er disse programsetningene lovlige i Java? JA NEI float x = 3 / 2; int x = 3 / 2; int[]boolean[] s = new int[8]boolean[9]; int i =1, j=i+3, while( j-->0) i = j; long[] boolean = new boolean[12]; boolean[] x = new boolean[0]; int XX = (int) (3.1415); double x = (int) 33.5; String[3] a = {"1", "2", "3"; int[][] a = new int[][10]; Oppgave 3 (16 poeng) a) Hvor mange ganger blir INF1000 skrevet ut av følgende løkke: for (int i=1; i<6; i++) { System.out.println("INF1000"); Svar:... ganger b) Hvor mange ganger blir INF1000 skrevet ut av følgende løkke: int k = 1; while (++k < 10) System.out.println("INF1000 "); Svar:... ganger c) Hvor mange ganger blir INF1000 skrevet ut av følgende løkker: for (int j=1; j < 10 ; j = j+1 ) { for (int i = j; ++i < j+1; j = i) { System.out.println("INF1000"); Svar:... ganger d) Hvor mange ganger blir INF1000 skrevet ut av følgende løkke: int k = 1; while (++k +1 < 9 ) System.out.println("INF1000"); Svar:... ganger

Oppgave 4 (4 poeng) Anta at følgende kodelinjer utføres: int en = 1, to=2, tre=3; int fire = en++ + ++to - --tre; int svar = fire + 3*tre + 2*to + 1*en; Hva er verdien til variabelen svar rett etterpå? Svar:... Oppgave 5 (20 poeng) Skriv ferdig metoden under, som beregner og returnerer volumet V av en kule ut fra radius i 3 kula og π. Formelen du skal bruke er: 4 V = π r, og hvor π = 3.1415926 og r er radius i 3 kula. (Hint: Pass på at du ikke tar feil av heltalls- og flyttallsdivisjon.) Svar: double kulevolum( double radius ){ Oppgave 6 ( 20 poeng) Skriv ferdig metoden under, som med utgangspunkt i en array med priser for et fat med olje for flere av dagene i en måned, finner gjennomsnittsprisen den måneden og returnerer denne gjennomsnittsprisen. Problemet er at for noen av dagene mangler det priser og da står det -1.0 på vedkommende plass i steden for en virkelig pris (som vi antar alltid er et positivt tall). Gjennomsnittsprisen er definert som summen av alle virkelige priser delt på antallet slike priser som er oppgitt i arrayen. Prisene i arrayen er gitt som flyttall i US dollar, og svaret ditt om gjennomsnittsprisen skal være i norske kroner. Du skal regne med en dollarkurs på kr. 5,28 (dvs. 1 US dollar er verdt kr. 5,28).

Svar: double gjennomsnittoljeprisinorskekroner( double [] oljepris ){ Oppgave 7 (10 poeng) Anta at følgende kodelinjer utføres: String s = "nittennittini"; String t = s.substring(6,13); int pos = t.indexof("ni"); Hva er verdien til variabelen pos rett etterpå? Svar:...

Oppgave 8 (15 poeng) int rest(int n, int m){ int k = 0; while(n >= m) { n-=m; while ( n-- > 0) { k++; return k; Hva returneres fra metodekallet rest(41,7)? Svar:... Oppgave 9 (20 poeng) Det nærmer seg jul og Julenissen har fått det veldig travelt. Han har også mistet helt oversikten over alle verdens barn og deres ønsker. Det er noe han trenger når julekvelden kommer. Alvene har fått i oppdrag å lage et datasystem for Julenissen som holder orden på informasjonen Julenissen trenger Julekvelden. Din oppave er å hjelpe alvene med å tegne et UML-klassediagram for Julenissens datasystem. Hele verden består av 5 verdensdeler. Julenissen klarer ikke å besøke alle verdensdelene selv (Beklager hvis vi ødelegger julegleden for noen!) så på julekvelden er det fra 10-100 alver som dekker hver verdensdel for Julenissen. I hver verdensdel bor det ingen eller flere snille barn. Et snilt barn behøver ikke ha noen ønsker, men Julenissen oppfyller ikke mer enn 5 ønsker. Det er ikke plass til slemme barn i Julenissens datasystem. Tegn et UML-klassediagram med de 5 (Java-)klassene som kan brukes til å representere dette problemet. Gi navn både på disse klassene og på relasjonene mellom dem og plasser antall på begge sider av forholdet mellom disse klassene. Svar:

Oppgave 10 (60 poeng) Alle studentene ved Universitetet i Tlön i landet Uqbar går opp i fra 1 til 5 eksamner hvert semester, og siden alle studentene har ulike innloggingsnavn på universitetets dataanlegg, registreres alle studentenes eksamensresultater (A-E og F) med dette brukernavnet (eks. Studenten Arno Mår har brukernavnet arnom ). Alle resultatene for én eksamen registreres på en fil (også de som får F). Navnet på denne fila er kursnavnet etterfulgt av.res (eks. eksamensresultatene for INF1000 blir lagret på filen INF1000.res for MAT1000 på fila: MAT1000.res, osv). På en slik fil er det en linje per student som gikk opp til eksamen på formatet: <brukernavn> <karakter> Eks: Hvis Arno Mår fikk E på INF1000 og strøk på MAT1000, vil det være en linje på fila: INF1000.res som følger: arnom E og en linje på fila: MAT1000.res som følger: arnom F Navnene på alle eksamnensfilene for inneværende semester ligger på en egen fil: AlleEksamene.txt med en linje for hvert filnavn (f.eks MAT1000.res). Oppgaven til det systemet du skal lage er å sende en eneste e-post til hver student som har tatt eksamen dette semesteret med alle eksamensresutatene til den studenten det semesteret. Da skal Arno Mår motta en e-post med tittel Dine 2 eksamensresultater dette semesteret og selve meldinga i e-posten vil være: Hei arno, du fikk E i INF1000, og du fikk F i MAT1000. Hilsen eksamenssystemet ved Universitetet i Tlön. Til å hjelpe seg å sende e-post har noen laget pakken easyepost, som bla. inneholder en klasse Epost som har en metode (som ikke er static): boolean sendenepost(string brukernavn,string tittel,string melding) som opplagt sender en e-post med tittel: tittel og innhold/melding: melding til: brukernavn (metoden legger selv på det lokale tillegget i adressen slik at dette blir en fullstendig e-postadresse: brukernavn@ifi.uitl.uq ). Returverdien fra metoden er om e- postsystemet fant at denne brukeren eksisterte eller ikke. Systemet ditt skal skrive ut en feilmelding på skjermen hvis det får et feilaktig/ikke-eksisterende brukernavn. Vi setter få krav til løsningen din uten at den minst skal ha to klasser: Eksamenssystem og SendEposter (men sannsynligvis flere). Programmet går først i en løkke og for hver eksamensfil på AlleEksamene.txt kaller en metode som leser denne og som for hver student på denne eksamensfila, greier å bevare eksamensresultatet og hvilken eksamen og hvilken student dette gjelder. Når så denne metoden er kalt for alle eksamene, skal en annen metode kalles som for hver student som er registret med eksamen dette semesteret, først bygger opp en melding til vekommende og så kaller sendenepost-metoden i klassen Epost for å få sendt denne meldinga.

Svar: import easyio.*; import easyepost.*; import java.util.*; class Eksamenssystem { public static void main(string [] args) { SendEposter s = new SendEposter("AlleEksamene.txt "); s.sendmeldinger(); // end Eksamenssystem class SendEposter { SendEposter (String eksamensfil) {

Oppgave 11 (15 poeng) Litt vanskelig Anta at følgende program utføres: class Tre { Tre venstre; Tre hoyre; String tekst; Tre(String tekst){ this.tekst = tekst; Tre(String tekst, Tre venstre, Tre hoyre){ this.tekst = tekst; this.venstre = venstre; this.hoyre = hoyre; void skrivut(){ if(this.venstre!= null) this.venstre.skrivut(); System.out.print(" " + this.tekst + " "); if(this.hoyre!= null) this.hoyre.skrivut(); public static void main(string[] args) { Tre a = new Tre("A"); Tre b = new Tre("B"); Tre c = new Tre("C", a, b); Tre d = new Tre("D"); Tre e = new Tre ("E", c, d); c.skrivut(); System.out.print(" *** "); e.skrivut(); Tegn først opp for deg selv og finn ut hvor mange objekter av klassen Tre vi får laget av de ulike setningene i main og hvilke verdier klassevariablene til disse har. Svar så på spørsmålet: hva skriver programmet ut på skjermen? Svar:... Oppgave 12 (30 poeng) Du skal skrive to metoder finnminindeks og sorter som tilsammen sorterer en array a etter følgende prinsipp: Vi finner først indeksen i arrayen a hvor det minste elementet i a er. Så lar vi det elementet og elementet i a[0] bytte plass. Så finner vi det minste elementet i resten av a dvs i plass 1,2,.., og lar det elementet og a[1] bytte plass,...osv til hele arrayen a er sortert. Brukeren får da sortert en array ved å kalle på metoden sorter. N.B. Du får ingen poeng for å skrive av sorteringsmetoden i læreboka.

Svar: int finnminindeks (int[] a, int start, int end) { void sorter (int[] a){

Oppgave 13 (20 poeng) Landet Uqbar har innført akkurat samme Lov om behandling av personopplysninger som i Norge og du skal bruke denne loven til å vurdere følgende: Eksamenssystemet ved Universitetet i Tlön i Uqbar vil nå bruke de data som ligger på filene i Oppgave 10 til å lage et rapporteringssystem til Lånekassa i Uqbar om hvilke studenter som ikke har god nok studieprogressjon ved ikke å stå i minst 3 eller flere eksamener dette semesteret. De vil for hver slik student sende en epost til Lånekassa om hvor få eksamener disse studentene har tatt. Du skal ikke skrive kode for det, men derimot skrive en vurdering om det er tillatt for Universitetet i Tlön i Uqbar etter bestemmelsene i Lov om behandling av personopplysninger å sende slike beskjeder om studenter som ikke jobber bra nok til Lånekassa, og hvor studentene vil få redusert lån neste semester. Begrunn svaret med å vise til konkrete paragrafer som du mener er relevante, og hvorfor de er det: