Oppgave 1a. INF1000 Prøveeksamen Oppgave 1c. Oppgave 1b

Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

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

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: IT og samfunn. Uke 6, høst 2014 Siri Moe Jensen

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

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

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

INF1000: noen avsluttende ord

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

Go to use the code /10/2016. En liten undersøkelse: Mobil/ nettbrett. INF1000/ INF1001: IT og samfunn.

INF1000 Prøveeksamen Oppgave 7 og 9

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

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

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

Forelesning inf Java 4

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Seminaroppgaver IN1010, uke 2

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

IN1010 våren januar. Objektorientering i Java

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

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

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

UNIVERSITETET I OSLO

Enkle generiske klasser i Java

INF1000: Forelesning 7

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF1000: Forelesning 7. Konstruktører Static

INF1000 Behandling av tekster

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

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

Veiledningsdokument for håndtering av personopplysninger i Norge digitalt

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

Oblig 4Hybelhus litt mer tips enn i oppgaven

INF1000 : Forelesning 4

INF1000 Eksamen 2014 (modifisert)

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

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

Gjennomgang av eksamen H99

INF1010 våren januar. Objektorientering i Java

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF Ekstrainnlevering

Forelesning inf Java 5

Forelesning inf Java 5

UNIVERSITETET I OSLO

Sensur-veiledning INF1000 h 2013 (fasit) am - 6. des. 2013

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

INF1000 : Forelesning 3

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

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

HashMap. INF1000 Forelesning 9. Ulike versjoner i Java 1.4 (gammel) og Java 1.5/1.6 av HashMap. Objekter lagres med en søkenøkkel

Oblig4 - forklaringer. Arne og Ole Christian

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

INF1000 Forelesning 9. Hashmap Eksempel: Flyreservasjon

INF1010 siste begreper før oblig 2

INF Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Body Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program

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

Transkript:

Oppgave 1a Oppgave 1 Løkker (5 poeng) Oppgave 1a Institutt for informatikk INF1000 Prøveeksamen 2010 Universitetet i Oslo Hvor mange ganger blir Eksamen skrevet ut? f o r ( i n t i =10; i >=5; i --) { f o r ( i n t j =0; j <6; j ++) { System. out. println (" Eksamen "); Yttre løkke: i går fra 10 ned t.o.m. 5, dvs. 6 itereringer Indre løkke: j går fra 0 opp til 6, dvs. 6 itereringer Svar: 6 6 = 36 Prøveeksamen 2010 24. november 2010 2 / 44 Oppgave 1 Løkker (5 poeng) Oppgave 1b Oppgave 1 Løkker (5 poeng) Oppgave 1c Oppgave 1b Oppgave 1c Hvor mange ganger blir Eksamen skrevet ut? f o r ( i n t i =5; i >0; i --) { f o r ( i n t j =0; j<i; j ++) { System. out. println (" Eksamen "); Yttre løkke: i går fra 5 ned til 0, dvs. 5 itereringer Indre løkke: j går fra 0 opp til i Når i == 5 får indre løkke 5 itereringer Når i == 4 får indre løkke 4 itereringer Når i == 3 får indre løkke 3 itereringer Osv. ned t.o.m. i == 1 Svar: 5 + 4 + 3 + 2 + 1 = 15 Prøveeksamen 2010 24. november 2010 3 / 44 Hvor mange ganger blir Eksamen skrevet ut? f o r ( i n t i =0; i <5; i ++) { i n t k = 5-i; w h i l e (k > 0) { System. out. println (" Eksamen "); k --; Yttre løkke: i går fra 0 opp til 5, dvs. 5 itereringer Indre løkke: k går fra 5-i ned til 0 Når i == 0 får indre løkke 5 0 = 5 itereringer Når i == 1 får indre løkke 5 1 = 4 itereringer Når i == 2 får indre løkke 5 2 = 3 itereringer Osv. ned t.o.m. i == 4 (der indre løkke får 5 4 = 1 iterering) Svar: 5 + 4 + 3 + 2 + 1 = 15 Prøveeksamen 2010 24. november 2010 4 / 44

Oppgave 1 Løkker (5 poeng) Oppgave 1d Oppgave 2 Array og løkker (5 poeng) Oppgave 2a Oppgave 1d Oppgave 2a Hvor mange ganger blir Eksamen skrevet ut? f o r ( i n t i =0; i <10; i +=2) { f o r ( i n t k =3; k > -1; k --) { System. out. println (" Eksamen "); k --; Gitt følgende array: double [][] tall = new double [6][5]; Hvor mange double-verdier er det plass til i arrayen? Yttre løkke: i går fra 0 opp til 10 i steg på 2, dvs. 5 itereringer Indre løkke: k går fra 3 ned til -1 i steg på 2, dvs. 2 itereringer Svar: 5 2 = 10 Svar: 6 5 = 30 Prøveeksamen 2010 24. november 2010 5 / 44 Prøveeksamen 2010 24. november 2010 6 / 44 Oppgave 2 Array og løkker (5 poeng) Oppgave 2b Oppgave 2 Array og løkker (5 poeng) Oppgave 2b Oppgave 2b Løkke 1 Oppgave 2b Løkke 2 double [][] tall = new double [6][5]; Vil følgende java-kode skrive ut innholdet i alle plassene i arrayen? f o r ( i n t i =0; i< tall. length ; i ++) { f o r ( i n t j =0; j< tall [i]. length ; j ++) { System. out. println ( tall [i][j]); f o r ( i n t i= tall. length ; i >0; i --) { f o r ( i n t j= tall [i -1]. length ; j >0; j --) { System. out. println ( tall [i -1][j -1]); Svar: Ja! Svar: Ja! Prøveeksamen 2010 24. november 2010 7 / 44 Prøveeksamen 2010 24. november 2010 8 / 44

Oppgave 2 Array og løkker (5 poeng) Oppgave 2b Løkke 3 Oppgave 2b Oppgave 3 Oppgave 3 Java-syntaks (5 poeng) double [][] tall = new double [6][5]; f o r ( i n t i =0; i< tall. length ; i ++) { f o r ( i n t j=4-i; j >=0; j --) { System. out. println ( tall [i][j]); Yttre løkke: i går fra 0 opp til tall.length, dvs. 6 itereringer Indre løkke: j går fra 4-i ned t.o.m. 0 Når i == 0 skrives verdiene tall[0][4] til tall[0][0] ut Når i == 1 skrives verdiene tall[0][3] til tall[0][0] ut... Når i == 4 skrives verdien tall[0][0] ut Når i == 5 skrives ingen verdier ut... Svar: Nei! Prøveeksamen 2010 24. november 2010 9 / 44 Er disse uttrykkene lovlige programsetninger i Java? int i = false; Svar: Nei, kan ikke tilordne boolean-verdi til int-variabel enum E {A,B,C; Svar: Ja boolean ok = 3 > 2; Svar: Ja double tall = new Student("Lise"); Svar: Nei, kan ikke tilordne Student-objekt til double-variabel String[] navn = { { "Per", "Lise", { "Geir", "Liv" ; Svar: Nei, kan ikke tilordne todimensjonal String-array til endimensjonal String-arrayvariabel Prøveeksamen 2010 24. november 2010 10 / 44 Oppgave 3 Java-syntaks (5 poeng) Oppgave 4 String (5 poeng) Oppgave 3 (forts.) String[] ord = { "stein", "saks", "papir"; Svar: Ja boolean riktig = (new double[3]).length > 3; Svar: Ja class A{; Svar: Ja double pris = 124.99 kroner; Svar: Nei, uttrykket 124.99 kroner er ikke av type double (og heller ikke riktig Java-syntaks) String tegn = a ; Svar: Nei, kan ikke tilordne char-verdi til String-variabel Oppgave 4 Anta at følgende programkode kjøres: String [] navn = { " Per ", " Per " ; i f ( navn [0]. equals ( navn [1])) { navn [0] += navn [1]; navn [1] += navn [0]; i f ( navn [0] == navn [1]) { System. out. println (" Pekerlikhet "); e l s e { System. out. println (" Ikke pekerlikhet "); i f ( navn [0]. equals ( navn [1])) { System. out. println (" Like "); e l s e { System. out. println (" Ulike "); Prøveeksamen 2010 24. november 2010 11 / 44 Hva skrives ut? Prøveeksamen 2010 24. november 2010 12 / 44

Oppgave 4 (forts.) Oppgave 4 String (5 poeng) String [] navn = { " Per ", " Per " ; i f ( navn [0]. equals ( navn [1])) { navn [0] += navn [1]; navn [1] += navn [0]; if -testen evaluerer til true, siden navn[0] og navn[1] er tekstlig like Etter if -blokken er arrayen slik: navn[0] har verdien "PerPer" navn[1] har verdien "PerPerPer" Prøveeksamen 2010 24. november 2010 13 / 44 Oppgave 4 (forts.) Oppgave 4 String (5 poeng) navn[0] har verdien "PerPer" navn[1] har verdien "PerPerPer" i f ( navn [0] == navn [1]) { System. out. println (" Pekerlikhet "); e l s e { System. out. println (" Ikke pekerlikhet "); i f ( navn [0]. equals ( navn [1])) { System. out. println (" Like "); e l s e { System. out. println (" Ulike "); navn[0] og navn[1] peker ikke på samme objekt navn[0] og navn[1] er tekstlig ulike Riktig svar: Ikke pekerlikhet Ulike Prøveeksamen 2010 24. november 2010 14 / 44 Oppgave 5 Metoder (10 poeng) Oppgave 5a Oppgave 5 Metoder (10 poeng) Oppgave 5b Oppgave 5a Oppgave 5b Fra likestrømslæren har vi at vi kan regne ut motstand ved å dele spenning på strøm. Skriv ferdig metoden over slik at den returnerer motstanden på bakgrunn av double-parameterne spenning og strom. Hvis strom er lik 0 skal metoden returnere -1. double motstand ( double spenning, double strom ) { i f ( strom == 0) r e t u r n -1; r e t u r n spenning / strom ; Skriv en metode som tar to parametre, en String tekst og en int k, og som returnerer en String som inneholder de k første tegnene i tekst. Hvis k er større enn lengden til tekst, så skal hele tekst returneres. Du skal skrive hele metoden, inkludert signaturen, og du skal kun bruke String-metodene length() og charat(). Finn på et passende navn til metoden. String delstreng ( String tekst, i n t k) { i f (k > tekst. length ()) r e t u r n tekst ; String nytekst = ""; f o r ( i n t i =0; i<k; i ++) { nytekst += tekst. charat (i); r e t u r n nytekst ; Prøveeksamen 2010 24. november 2010 15 / 44 Prøveeksamen 2010 24. november 2010 16 / 44

Oppgave 5 Metoder (10 poeng) Oppgave 5c Oppgave 5 Metoder (10 poeng) Oppgave 5d Oppgave 5c Oppgave 5d Metoden under tar en parameter String[] array og skal returnere en String[] med array.length-1 plasser. Den returnerte arrayen skal inneholde alle elementene fra array utenom array[0]. Rekkefølgen på elementene skal være lik som i array. Skriv ferdig metoden. String [] fjernforste ( String [] array ) { i f ( array. length == 0) { r e t u r n n u l l ; // evt : return array ; String [] resultat = new String [ array. length -1]; f o r ( i n t i =1; i< array. length ; i ++) { resultat [i -1] = array [i]; r e t u r n resultat ; Skriv kode for en metode med en parameter int[] tall og returverdi boolean. Metoden skal returnere true hvis arrayen inneholder to tall som er like, ellers false. boolean hartoliketall ( i n t [] tall ){ f o r ( i n t i =0; i< tall. length ; i++ ) f o r ( i n t j=i +1; j< tall. length ; j++ ) i f ( tall [i ]== tall [j] ) r e t u r n t r u e ; r e t u r n f a l s e ; Prøveeksamen 2010 24. november 2010 17 / 44 Prøveeksamen 2010 24. november 2010 18 / 44 Oppgave 5 Metoder (10 poeng) Oppgave 5d Oppgave 6 UML (10 poeng) Oppgave 5d Alternativ 2 Oppgave 6 UML Mulig å løse med enkeltløkke ved bruk av HashMap boolean hartoliketall ( i n t [] tall ) { HashMap < Integer, Integer > minne = new HashMap < Integer, Integer >(); f o r ( i n t i =0; i< tall. length ; i++ ) { i f ( minne. containskey ( tall [i ])) { r e t u r n t r u e ; e l s e { minne. put ( tall [i], tall [i ]); r e t u r n f a l s e ; En bilforretning skal lage et Java-program for å holde orden på biler, selgere, kunder og salg. Bilforretningen kan ha flere selgere og flere kunder. I tillegg skal forretningen ha en oversikt over hvilke biler som er til salgs. Et salg er en avtale mellom én selger, én kunde og én bil. En selger kan selge flere biler, en kunde kan kjøpe flere biler, men en bil kan kun selges én gang. Tegn et UML klassediagram for Java-programmet. Gi navn til klassene, tegn forhold mellom dem og sett på riktig antall på hver side av forholdene. Du behøver ikke skrive inn variable og metoder i klassene i diagrammet. Prøveeksamen 2010 24. november 2010 19 / 44 Prøveeksamen 2010 24. november 2010 20 / 44

Oppgave 6 Oppgave 6 UML (10 poeng) Oppgave 7 Klasser, objekter og array (20 poeng) Oppgave 7 Klasser, objekter og array 1 1 (*) Bilforretning 1 Gitt følgende Java-klasse: c l a s s Person { String navn ; i n t tlfnr ; // tlfnr er 0 hvis pers. ikke har tlf * Selger 1 * Bil 1 1 * Salg * * Kunde 1 Person ( String navn ){ t h i s. navn = navn ; t h i s. tlfnr = 0; Person ( String navn, i n t tlfnr ){ t h i s. navn = navn ; t h i s. tlfnr = tlfnr ; boolean hartlf (){ r e t u r n ( tlfnr!= 0 ); Prøveeksamen 2010 24. november 2010 21 / 44 Prøveeksamen 2010 24. november 2010 22 / 44 Oppgave 7 Klasser, objekter og array (20 poeng) Oppgave 7 Klasser, objekter og array (20 poeng) Oppgave 7 (forts.) Oppgave 7 Lag et fullstendig program som bruker Person-klassen og som oppretter en array med lengde 1000 i konstruktøren der elementene skal være Person-objekter, oppretter et personobjekt for Ole Olsen med telefonnr 45000235 og legger inn i arrayen, oppretter et personobjekt for Kari Karlsen uten telefon og legger inn i arrayen, og går i en løkke gjennom alle objektene i arrayen og skriver ut navnene til de som ikke har telefon. Du skal bruke objektenes hartlf()-metoder når du løser oppgaven. c l a s s PersonArray { Person [] person ; i n t antperson = 0; void settinn ( Person p){ person [ antperson ++] = p; I dette tilfellet skal programmet skrive ut Kari Karlsen, men det skal virke også om vi legger flere Person-objekter inn i arrayen. Du kan anta at vi aldri vil ta objekter ut av arrayen. Prøveeksamen 2010 24. november 2010 23 / 44 Prøveeksamen 2010 24. november 2010 24 / 44

Oppgave 7 Klasser, objekter og array (20 poeng) Oppgave 8 Sortering (10 poeng) Oppgave 7 Oppgave 8 PersonArray (){ person = new Person [ 1000]; settinn ( new Person (" Ole Olsen ", 45000235) ); settinn ( new Person (" Kari Karlsen ") ); f o r ( i n t i =0; i< person. length ; i ++) { i f ( person [i]!= n u l l &&! person [i]. hartlf ()){ System. out. println ( person [i]. navn ); p u b l i c s t a t i c void main ( String [] args ){ new PersonArray (); Nye antagelser om PersonArray-klassen i Oppgave 7: Maksimalt 1000 kunder som ligger i arrayen. Alle telefonnumrene ligger i intervallet 45000000,..., 45001999. Alle personer har forskjellig telefonnummer. Du skal nå skrive en metode som returnerer en array over alle Person-objekter fra PersonArray-klassen som har telefon. Arrayen du skal returnere skal være sortert etter stigende telefonnummer. Prøveeksamen 2010 24. november 2010 25 / 44 Prøveeksamen 2010 24. november 2010 26 / 44 Oppgave 8 Oppgave 8 Sortering (10 poeng) Når du implementerer denne metoden, skal du utnytte det vi vet om intervallet som telefonnumrene ligger i ved å bruke følgende algoritme: Opprett en array temp med plass til 2000 Person-objekter. Gå gjennom arrayen med Person-objekter i PersonArray-klassen og legg alle som har telefon inn i temp slik at temp[i].tlfnr== 45000000 + i. (Hint: Legg Person-objekt p inn på posisjon temp[p.(tlfnr-45000000].) Mens du gør dette, hold orden på hvor mange objekter som ligger i temp. La en int-variabel antall lagre dette antallet. Gå gjennom temp fra indeks 0 og utover. En del av plassene i temp vil være null, men en del vil også referere til Person-objekter. Skriv Person-objektene over til en array med Person-objekter med lengde antall i den rekkefølge de besøkes når du går nedover temp. Arrayen du skriver over til fra temp vil være korrekt sortert, og metoden returnerer arrayen til slutt. Prøveeksamen 2010 24. november 2010 27 / 44 Oppgave 8 Sortering (10 poeng) Oppgave 8 Person [] hartlfsortert (){ Person [] temp = new Person [ 2000]; i n t antall = 0; f o r ( i n t i =0; i< antperson ; i ++){ Person p = person [i]; i f ( p. hartlf ()){ temp [p. tlfnr -45000000] = p; antall ++; Person [] sortert = new Person [ antall ]; i n t k =0; f o r ( i n t i =0; i <2000; i ++) i f ( temp [i]!= n u l l ) sortert [k ++] = temp [i]; r e t u r n sortert ; Prøveeksamen 2010 24. november 2010 28 / 44

Oppgave 9 I denne oppgaven skal du skrive to klasser, Medlem og Idrettslag, som skal brukes av et idrettslag til å holde orden på hvilke medlemmer som har betalt kontigent. I klassen Medlem skal medlemsnummer, navn og telefonnr lagres som String-verdier. Videre skal det lagres informasjon om hvorvidt kontigenten er betalt. Klassen skal inneholde en konstruktør med parametre String medlemsnr, String navn og String tlf, og som initialiserer de respektive verdiene i objektet. I klassen Idrettslag skal det være datastruktur for å lagre Medlem-objekter. Klassen skal i tillegg inneholde følgende metoder: En konstruktør som initialiserer datastrukturen. void leggtilmedlem(medlem m) Skal legge til Medlem m i datastrukturen. void slettmedlem(string medlemsnr) Skal slette medlemmet med medlemsnr medlemsnr. Hvis medlemmet ikke finnes, skal det ikke gjøres noen ting. Medlem hentmedlem(string medlemsnr) Skal sjekke om det finnes et medlem med medlemsnr medlemsnr. Hvis medlemmet finnes, skal riktig Medlem-objekt returneres. Hvis ikke, skal null returneres. void sok(string tekst) Skal søke gjennom alle medlemmene og sjekke om enten navn eller telefonnr er tekstlig lik søkestrengen tekst. De medlemmer som har navn eller telefonnr lik tekst skal skrives ut på skjermen med medlemsnr, navn og telefonnr. void registrerbetaling(string medlemsnr) Skal registrere at medlemmet med medlemsnr har betalt kontigenten. Hvis medlemmet ikke finnes, skal en passende feilmelding skrives ut på skjermen. Prøveeksamen 2010 24. november 2010 29 / 44 Prøveeksamen 2010 24. november 2010 30 / 44 class Medlem Klassen Medlem void skrivpurreliste() Skal skrive ut en liste på skjermen med medlemsnr, navn og telefonnr til de medlemmene som ikke har betalt kontigenten. void harliketlfnr() Skal sjekke om noen medlemmer har like telefonnr. Hvis ingen medlemmer har like telefonnr, skal en passende melding skrives ut på skjermen. Hvis det finnes medlemmer med samme telefonnr, skal det skrives ut en linje med telefonnr og deretter medlemsnr og navn på de medlemmene som har dette telefonnr. Det skal skrives ut à c n slik linje for hvert telefonnr som deles av flere medlemmer. Merk at du kun skal skrive Java-kode for det som er nevnt i teksten over. Du skal ikke skrive hverken main-metoden eller ordreløkke. c l a s s Medlem { String medlemsnr, navn, tlf ; boolean harbetalt = f a l s e ; Medlem ( String medlemsnr, String navn, String tlf ) { t h i s. medlemsnr = medlemsnr ; t h i s. navn = navn ; t h i s. tlf = tlf ; p u b l i c String tostring () { r e t u r n medlemsnr + ": " + navn + ", tlf : " + tlf ; Prøveeksamen 2010 24. november 2010 31 / 44 Prøveeksamen 2010 24. november 2010 32 / 44

Klassen Idrettslag c l a s s Idrettslag { class Idrettslag HashMap < String, Medlem > medlemmer ; Idrettslag () { medlemmer = new HashMap < String, Medlem >(); v o i d leggtilmedlem ( Medlem m) { medlemmer. put (m. medlemsnr, m); v o i d slettmedlem ( String medlemsnr ) { medlemmer. remove ( medlemsnr ); Medlem hentmedlem ( String medlemsnr ) { r e t u r n medlemmer. get ( medlemsnr ); class Idrettslag v o i d sok ( String tekst ) { f o r ( Medlem m : medlemmer. values ()) { i f (m. navn. equals ( tekst ) m. tlf. equals ( tekst )) { System. out. println (m); v o i d registrerbetaling ( String medlemsnr ) { Medlem m = medlemmer. get ( medlemsnr ); i f (m == n u l l ) { System. out. println (" Fant ikke medlem " + " med medlemsnr : " + medlemsnr ); e l s e { m. harbetalt = t r u e ; System. out. println (" Registrert betalt " + " kontigent for medlemsnr : " + medlemsnr ); Prøveeksamen 2010 24. november 2010 33 / 44 Prøveeksamen 2010 24. november 2010 34 / 44 class Idrettslag class Idrettslag v o i d skrivpurreliste () { i n t teller = 0; String utskrift = ""; f o r ( Medlem m : medlemmer. values ()) { i f (!m. harbetalt ) { utskrift += m + "\n"; teller ++; i f ( teller == 0) { System. out. println (" Alle medlemmene har " + " betalt kontigenten."); e l s e { System. out. println (" Antall medlemmer som ikke " + " har betalt kontigenten : " + teller ); System. out. println ( utskrift ); v o id harliketlfnr () { HashMap < String, String > harsjekket = new HashMap < String, String >(); i n t antdeltenr = 0; String utskrift = ""; for hvert medlem m { hvis m har tlf og tlf ikke har vært sjekket før { hvis andre har samme tlf { øk antdeltenr med 1 legg til passende tekst i utskrift-variabelen i f ( antdeltenr == 0) { System. out. println (" Ingen medlemmer deler telefonnr."); e l s e { System. out. println (" Det finnes " + antdeltenr + " delte telefonnr :"); System. out. println ( utskrift ); Prøveeksamen 2010 24. november 2010 35 / 44 Prøveeksamen 2010 24. november 2010 36 / 44

class Idrettslag for-løkka Oppave 10 Personvernloven f o r ( Medlem m : medlemmer. values ()) { i f (m. tlf. length () > 0 &&! harsjekket. containskey (m. tlf )) { harsjekket. put (m.tlf, m. tlf ); boolean deltnr = f a l s e ; String linje = " Har tlf. " + m. tlf + ": " + m. medlemsnr + "/" + m. navn ; f o r ( Medlem n : medlemmer. values ()) { i f (n!= m && n. tlf. equals (m. tlf )) { deltnr = t r u e ; linje += " " + n. medlemsnr + "/" + n. navn ; i f ( deltnr ) { antdeltenr ++; utskrift += linje + "\ n"; Petter Sprett er leder i den lokale idrettsforeninga Varild og samtidig eier av FriskSport, en av stedets to sportsbutikker. Petter vil gjerne bruke sin posisjon som leder av sportsklubben til å både gi medlemmene et bedre tilbud og hjelpe på omsetningen i sin butikk med å lage et nytt datasystem for Varild. I første runde registrerer han navn, adresse, alder, kontingentbetaling og idrettsgren de driver med for alle medlemmene i Varild. Han bruker så medlemsregisteret til å sende ut følgende. a) Et brev til alle medlemmer av Varild om at de får 8 % rabatt ved å handle i FriskSport ved framvisning av medlemskort. Prøveeksamen 2010 24. november 2010 37 / 44 Prøveeksamen 2010 24. november 2010 38 / 44 Etter ett år finner han ut at for å drive kampanje for utvalgte varer han får inn butikken, bør han utvide datasystemet i Varild. Det har også kommet en rekke innvandrere til stedet. Mange av disse har meldt seg inn i Varild, og Petter vil gjerne finne sportsprodukter som dekker deres behov. Han registrerer nå i tillegg hvilket land medlemmene er født i og kjønn for bedre å kunne sende ut brev til bare de medlemmene som er interessert i hans produkter (særlig tenker han på det cricketutstyret han nå selger). b) Som den lovlydige (?) innbygger Petter er, sender han nå en melding til Datatilsynet om utvidelsen av datasystemet, og begynner så å sende ut kampanjebrev fra butikken til noen av medlemmene om utvalgte sportsprodukter med spesialpriser (cricketutstyr, sportshijaber, slalåmutstyr osv.). Ved å sende ut slik målrettet reklame sparer Petter porto og medlemmene får bare den reklamen som passer for dem. Vurdà c r om det han gjør under a) og b) er lovlig i følge Personopplysningsloven. Hvis Petter har brutt noen av paragrafene, så nevn hvilke paragrafer han har brutt og hvorfor. Prøveeksamen 2010 24. november 2010 39 / 44 Oppgave 10 a) Her er det neppe foregått noe ulovlig i følge Personopplysningsloven. At Petter skaffer alle medlemmene en felles rabatt kan nok være innenfor det en sportsklubb kan drive med. De som nevner at 11 b- at data er samlet inn til et annet formål ikke skal nyttes til et annet formål, får også godkjent. (Petter kan godt fåproblemer innad i sportsklubben, men det er irrelevant her.) b) Her har Petter kommet i konflikt med flere paragrafer. I følge 2 nr. 8 er sensitive opplysninger bl.a. rase, etnisk tilhørighet, politiske..., osv. Han registrerer fødested (implisitt etnisk tilhørighet). Dette er sensitive data, og han skal da søke om konsesjon ( 33), ikke bare sende melding til Datatilsynet (han får neppe tillatelse). Prøveeksamen 2010 24. november 2010 40 / 44

Personopplysningsloven 2, nr. 8 Personopplysningsloven 11 Grunnkrav til behandling av personopplysninger 2. Definisjoner 8) sensitive personopplysninger: opplysninger om a) rasemessig eller etnisk bakgrunn, eller politisk, filosofisk eller religiøs oppfatning, b) at en person har vært mistenkt, siktet, tiltalt eller dømt for en straffbar handling, c) helseforhold, d) seksuelle forhold, e) medlemskap i fagforeninger. Den behandlingsansvarlige skal sørge for at personopplysningene som behandles a) bare behandles når dette er tillatt etter 8 og 9, b) bare nyttes til uttrykkelig angitte formål som er saklig begrunnet i den behandlingsansvarliges virksomhet, c) ikke brukes senere til formål som er uforenlig med det opprinnelige formålet med innsamlingen, uten at den registrerte samtykker, d) er tilstrekkelige og relevante for formålet med behandlingen, og e) er korrekte og oppdatert, og ikke lagres lenger enn det som nødvendig ut fra formålet med behandlingen, jf. 27 og 28. Prøveeksamen 2010 24. november 2010 41 / 44 Senere behandling av personopplysningene for historiske, statistiske eller vitenskapelige formål anses ikke uforenlig med de opprinnelige formålene med innsamlingen av opplysningene, jf. første ledd bokstav c, dersom samfunnets Prøveeksamen interesse 2010 i at behandlingen finner sted, 24. november klart 2010 overstiger ulempene den kan medføre 42 / 44 for den enkelte. Personopplysningsloven 33. Konsesjonsplikt (I) Personopplysningsloven 33. Konsesjonsplikt (II) Det kreves konsesjon fra Datatilsynet for åbehandle sensitive personopplysninger. Dette gjelder likevel ikke for behandling av sensitive personopplysninger som er avgitt uoppfordret. Datatilsynet kan bestemme at også behandling av annet enn sensitive personopplysninger krever konsesjon, dersom behandlingen ellers åpenbart vil krenke tungtveiende personverninteresser. I vurderingen av om konsesjon er nødvendig, skal Datatilsynet bl.a. ta hensyn til personopplysningenes art, mengde og formålet med behandlingen. Konsesjonsplikt etter første og annet ledd gjelder ikke for behandling av personopplysninger i organ for stat eller kommune når behandlingen har hjemmel i egen lov. Kongen kan gi forskrift om at visse behandlingsmåter ikke trenger konsesjon etter første ledd. For behandlingsmåter som unntas fra konsesjon kan det gis forskrift for å begrense ulemper som behandlingen ellers kan medføre for den registrerte. Den behandlingsansvarlige kan kreve at Datatilsynet avgjør om en behandling vil kreve konsesjon. Prøveeksamen 2010 24. november 2010 43 / 44 Prøveeksamen 2010 24. november 2010 44 / 44