UNIVERSITETET I OSLO

Like dokumenter
Prøveeksamen høsten 2012

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

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2008

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009

UNIVERSITETET I OSLO

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 h2006

UNIVERSITETET I OSLO

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

UNIVERSITETET I OSLO

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

INF1000 Prøveeksamen Oppgave 7 og 9

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

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

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

Oblig4 - forklaringer. Arne og Ole Christian

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

Endret litt som ukeoppgave i INF1010 våren 2004

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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).

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000

UNIVERSITETET I OSLO

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000

EKSAMENSOPPGAVE I INF-1100

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

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

EKSAMEN I EMNET INF100/INF100-F Grunnkurs i programmering (Programmering 1) Fredag 16. desember 2005 Tid: 09:00 14:00

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

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

UNIVERSITETET I OSLO

Oblig4 - forklaringer. Arne og Ole Christian

Informasjon Prøveeksamen i IN1000 høsten 2018

Repetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

INF1000 Eksamen 2014 (modifisert)

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

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

UNIVERSITETET I OSLO

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

løsningsforslag-uke5.txt

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

b) 10 2 = 20 c) 5 1 = 5.

Det matematisk-naturvitenskapelige fakultet

INF1000: noen avsluttende ord

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

UNIVERSITETET I OSLO

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

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Prøveeksamen inf november Arne Maus og Ole Christian Lingjærde

INF1000 : Forelesning 4

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

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

UNIVERSITETET I OSLO

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

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

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

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

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Onsdag 21. November 2012 Tid for prøveeksamen : 12-16 Oppgavesettet er på: 5 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. 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. Det er naturligvis fullt mulig å bruke en PC når du løser denne oppgaven. Vi vil imidlertid fraråde deg dette, ettersom poenget med prøveeksamen er å trene til den virkelige eksamen og skape en situasjon som ligger så tett opp til den virkelige eksamen som mulig. Oppgave 1 (10 poeng) Er disse programlinjene lovlige i Java? JA NEI double x = (int) (2+null); String s = 3.141 + 5 ; String s = 3.141 + 2.718; double i = 0++; String[] t = { a, b, c ; double z = (double) 3.14 ; while (3 < 10) {System.out.println( 3<10 ) String s = 10 + 20 + 30 + 40 ; double[][] x = double[4][11]; int i = 0; System.out.print( i =, i); Oppgave 2 (20 poeng) a) Hvor mange ganger blir «X» skrevet ut her: for (int i=498; i<1499; i++) { 1

b) Hvor mange ganger blir «X» skrevet ut her: int i = 0; int j = 100; while (i < j++) { i = i + 2; c) Hva mange ganger blir «X» skrevet ut her? for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { for (int k=0; k<10; k++) { if (i == k) { System.out.print("X"); d) Hvor mange ganger blir «X» skrevet ut her: int[] k = {2,3,5,7,11,13; for (int i=0; i<5; i++) { for (int j=k[i]; j<k[i+1]; j++) { Oppgave 3 (5 poeng) Anta at følgende metode er definert (arrayene x og y antas å ha samme lengde): int konv (int[] x, int[] y) { int z = 0; for (int i=0; i<z.length; i++) { z += x[i] * y[y.length-i-1]; return z; og at følgende programsetninger utføres (anta at de er plassert slik at metoden over er synlig): int[] x = {1,2,3; int[] y = {4,5,6; System.out.println("Verdi: " + konv(x,y)); Hva skrives ut i siste linje ovenfor? 2

Oppgave 4 (15 poeng) Skriv ferdig metoden String expand(string s, int[] k) {... som har som argument en tekststreng s og en heltallsarray k som skal ha samme lengde som antall tegn i s. Metoden skal returnere en tekststreng med samme tegn som i s (og i samme rekkefølge), men hvor hvert tegn forekommer like mange ganger som angitt i arrayen k. Eksempel på bruk: int[] k = {2,3,1,5; String txt = expand( ABCD, k); System.out.println(txt); Det som skrives ut overfor er da AABBBCDDDDD. Du kan anta at arrayen k har riktig lengde og trenger ikke å håndtere feilsituasjoner. Oppgave 5 (20 poeng) Firmaet Lur & Drei har spesialisert seg på å selge såkalte helsepiller og har samlet inn data over et helt år som viser hvor mange piller de solgte hver av dagene i året. Disse dataene ligger i en array int[][] antallpiller = new int[12][31]; Hver rad svarer til en måned (jan, feb,..., des) og hver kolonne svarer til en dag (1, 2, 3,..., 31). Dermed er f.eks. antallpiller[0][0] antall piller som ble solgt 1. januar, mens antallpiller[11][30] er antall piller som ble solgt 31. desember. De datoene som ikke finnes (f.eks. 30. februar) inneholder verdien -1. For enkelhets skyld kan du tenke deg at det også er deklarert en array String[] maaned = {"Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"; Begge arrayene ovenfor er deklarert som objektvariabler i toppen av klassen som vi tenker oss skal brukes til å implementere systemet, og du kan fritt referere til dem når du programmerer nedenfor. Din oppgave er å skrive en metode som kan kalles slik: skrivoversikt(); og som skriver ut på skjermen en passe overskrift, og deretter en linje pr måned som angir hvor mange piller det ble solgt den måneden og gjennomsnittlig antall piller solgt pr dag den måneden (avrundet til nærmeste heltall). Til slutt skal metoden skrive ut hvilken måned det ble solgt flest piller (eller en av dem, hvis det er flere). Utskriften kan se omtrent slik ut: Salgsstatistikk for Lur & Drei --------------------------------------- Januar : 5323 piller (gjennomsnitt: 172 piller pr dag) Februar : 2533 piller... Desember: 6233 piller Det ble solgt flest piller i juli (8363 piller). 3

Oppgave 6 (20 poeng) Brutopia er en stat som ledes av en troika (= gruppe på tre). Lederne er alltid innbyggere i landet. Brutopia har ialt 7 delstater, og hver av disse er igjen delt opp i et antall fylker (antallet fylker varierer fra 1 for den minste delstaten til 5 for den største). Hver delstat ledes av en regjering som består av 5-15 innbyggere fra delstaten. Hvert fylke har en fylkesstyre som består av 4 innbyggere i fylket. Hvert fylke har en befolkning på inntil 500.000 innbyggere. Hver av delstatene i Brutopia kan danne handelsallianser med så mange andre delstater i Brutopia som de ønsker. Tegn et UML-klassediagram med de følgende (Java-) klassene som kan brukes til å lage en UMLmodell av Brutopia: Troika, Stat, Delstat, Fylke, Delstatsregjering, Fylkesstyre, Innbygger og Handelsallianse. Gi navn på relasjonene mellom disse klassene slik det er beskrevet ovenfor og plassér antall på begge sider av hvert forhold. Gjør egne forutsetninger ved behov, men forklar isåfall disse. Oppgave 7 (60 poeng) Forelesereren i et begynnerkurs i programmering med Java har sett seg lei på at noen studenter kopierer andres besvarelser når de skal levere obligatorisk oppgave. For å foreta en første screening av alle oppgavene bestemmer hun seg for å få laget et program som sammenlikner hver oppgave med alle øvrige og regner ut en "avstand" mellom hvert par av oppgaver. Hvis avstanden er under en fastsatt grense, skal programmet rapportere dette, slik at foreleseren kan sjekke manuelt hvor like oppgavene egentlig er. Det er nå din oppgave å lage dette fullstendige programmet for foreleseren. Programmet skal først lese filen "Oppgaver.txt" som inneholder en rekke filnavn (atskilt av linjeskift). For eksempel kunne filen ha følgende innhold: Oblig2-per.java Oblig2-joanna.java Oblig2-vilde.java Deretter skal filen sammenlikne hver av filene med alle de øvrige. Med eksemplet overfor får vi ialt tre sammenlikner (den første mot de to neste, og den andre mot den siste) siden rekkefølgen ikke skal spille noen rolle. Sammenlikningen av to filer skal være basert på antall forekomster av spesielle tekststrenger i tekstene. Disse tekststrengene ligger i filen "Nokkelord.txt" (atskilt av blanke og/eller linjeskift). For eksempel kunne filen ha følgende innhold: int double String { ( new class Her er det ialt syv tekststrenger (eller nøkkelord) som skal benyttes ved sammenlikningen, men antallet kan variere. Selve sammenlikningen skal bestå i å ta (for hvert nøkkelord) differansen mellom antall forekomster i den ene filen og antall forekomster i den andre filen, og så summere opp absoluttverdiene av disse differansene over alle nøkkelord. Hvis dette resulterer i verdien 0 betyr det at hvert nøkkelord forekommer nøyaktig like mange ganger i de to filene som sammenliknes. Hvis verdien er større en 0, avviker de to filene fra hverandre i antall forekomster av minst ett nøkkelord. 4

Konkret: Programmet du skal skrive, bør begynne med å lese filen med alle nøkkelordene og legge disse inn i et String-array eller en HashMap slik at du senere kan slå opp et vilkårlig ord og finne ut om det er identisk med ett av nøkkelordene. Deretter leser du inn alle filene som skal sammenliknes, og under innlesingen av en fil teller programmet opp hvor mange ganger hvert av nøkkelordene forekommer. Du skal anta at alle forekomster av nøkkelord er atskilt med blanke og/eller linjeskift fra omkringliggende tekst i filen. For å ta vare på den innleste informasjonen skal du benytte følgende klasse: class Oppgave { String filnavn; // Navnet på filen som oppgaven lå i int[] antall; // Antall forekomster av hver nøkkelord Oppgave (int k) { antall = new int[k]; <her kan du legge inn mer> Du lager ett objekt av denne klassen for hver fil som skal leses, og fyller inn i antall-arrayen etterhvert som programmet treffer på nøkkelord i teksten som leses. Pekere til alle objektene kan du lagre i en Oppgave-array (som du kan anta er maksimalt 100 lang). Etter at alle filene er lest (og informasjon er fylt inn i Oppgave-objekter), skal du foreta den parvise sammenlikningen av filer. Det gjør du greiest med en dobbelt (nestet) løkke, og selve sammenlikningen gjøres greiest ved at du deklarerer en objektmetode i klassen Oppgave som foretar sammenlikningen: int finnavstand (Oppgave opg) { <regn ut avstanden til oppgaven opg> Etterhvert som sammenlikningene gjøres, skrives avstandene mellom oppgavene ut med en passende fortekst som sier hvilke oppgaver som sammenliknes. Marker med * alle par som har avstand < 10. Oppgave 8 (20 poeng) Brutopia har innført akkurat samme Lov om behandling av personopplysninger som i Norge, og du skal bruke denne loven til å vurdere følgende situasjon. På et bibliotek i Brutopia vil de lage et lite informasjonssystem om sine lånetagere, hvor de i tillegg til navn og adresse, vil lagre følgende opplysninger: Låntagernes alder, telefonnummer og epost-adresse. Hvilke bøker og videoer de har lånt de siste fem årene. En tilhørende klassifikasjon av de bøkene og videoene som er lånt, med kommentarer om hvilken type mennesker som pleier å låne disse bøkene. Biblioteket har dårlig råd og håper å selge disse opplysningene til ulike firmaer som driver direktereklame via epost. Ved at de ulike låntagerne kan klassifiseres etter hvilke bøker de leser, håper biblioteket å tjene relativt godt på dette opplegget. Drøft om dette er greie opplysninger som biblioteket har rett til å samle inn eller om han må søke Datatilsynet i Brutopia om lov til dette. Begrunn svaret med å vise til konkrete paragrafer som du mener er relevante for dette registeret og de opplysningene biblioteket ønsker å samle inn, og hvorfor de ulike paragrafene du nevner er relevante. 5