UNIVERSITETET I OSLO

Like dokumenter
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

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I)

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 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

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

UNIVERSITETET I OSLO

Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

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

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

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; }

Forelesning inf Java 4

INF1000: noen avsluttende ord

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

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

UNIVERSITETET I OSLO

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Forelesning inf Java 5

Forelesning inf Java 5

Oblig4 - forklaringer. Arne og Ole Christian

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

Høgskolen i Telemark EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

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

PRØVEEKSAMEN (rettet versjon 27/11)

Gjennomgang av en tenkt eksamensoppgave

Gjennomgang av en tenkt eksamensoppgave

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

INF1000: Forelesning 7

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

UNIVERSITETET I OSLO

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

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Blokker og metoder INF1000 (Uke 6) Metoder

INF1000 (Uke 6) Mer om metoder, tekster

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Rep: Metoder. INF1000 (Uke 6) Mer om metoder, tekster. Rep: Metoder. 3 typer variable: Klassevariable. Java-programmene så langt i kurset:

UNIVERSITETET I OSLO

INF1000 : Forelesning 4

INF1000: Forelesning 7. Konstruktører Static

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

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

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

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Teorifagb, hus 3, og og Adm.bygget, Aud.max og B.

INF1000 (Uke 4) Mer om forgreninger, While-løkker

Oppgave 1 - Kortsvarsoppgave. INF1000 eksamen V05. Oppgave 1 (c) Oppgave 1 (b) Svar: a = 9, b=10

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

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

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

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

TDT4100 Objektorientert programmering

INF 1000 høsten 2011 Uke september

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

Transkript:

Kandidatnummer: NYNORSK UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Fredag 1. desember 2006 Tid for eksamen : 14.30 17.30 Oppgåvesettet er på : 13 sider Vedlegg : Ingen Tillatne hjelpemiddel : Alle trykte og skreve Les nøye gjennom kvar oppgåve før du tek til å løyse ho. Kontroller og at settet med oppgåver er komplett før du startar å skrive ned svara dine. Dersom du saknar opplysningar i oppgåva, kan du sjølv legge dine eigne vurderingar til grunn og gjere rimelege føresetnader, så lenge dei ikkje bryt med ånda i oppgåva. Gjer i så fall greie for dei føresetnadene du gjer. For kvar oppgåve er det gitt eit maksimalt tal med poeng du kan få viss du svarar heilt rett. Summen av poenga er 138, slik at t.d. 10 poeng svarar til omlag 13 minutt og 8 poeng omlag 10 min. (viss du reknar med å kome gjennom alt). Pass på at du brukar tida di riktig. Svara dine skal skrivast på desse oppgåvearka, og ikkje på særskilte ark. Dette gjeld både i spørsmål der du kryssar av svaret og spørsmål der du skal skrive programkode. I dei oppgåvene der det skal skrivast programkode, tilrår vi at du fyrst skriv ein kladd på eige ark før du fører svaret inn på desse oppgåvearka på plassen som er sett av for det. Nokre av spørsmåla er fleirvalsoppgåver. På desse oppgåvene får du poeng etter kor mange korrekte svar du gir. Du får ikkje poeng dersom du let vere å svare på eit spørsmål, eller dersom du kryssar av begge svaralternativa. Om du har sett eit kryss i ein avkryssingsboks og så finn ut at du ikkje ønska å krysse av der, kan du skrive "FEIL" rett til venstre for den aktuelle avkryssingsboksen. Oppgåve 1 (8 poeng) Er disse programsetningane lovlege i Java? JA NEI int[][] a = new int[100]; int[3][5] tabell = new int[3][5]; char teikn = @ ; String tekst = 1 + 2 + 3 + kr ; String[] s = { Siri ; String[] s = new String; double svar = 2 * svar; for (int i=0; int i<10; int i+=2) {System.out.print(i);

Oppgåve 2 (10 poeng) - 2 - Gå ut frå at vi har denne metoden: boolean erlike(string s, String t) { if (s.length() == t.length()) { int antall = 0; for (int i=0; i<s.length(); i++) { boolean b1 = s.charat(i) == * t.charat(i) == * ; boolean b2 = s.charat(i) == t.charat(i); if (b1 b2) { antall++; return (antall == s.length()); else { return false; Kryss av kva verdien til variabelen like er i kvart av desse tilfella: TRUE FALSE boolean like = erlike( ABC, ABC* ); boolean like = erlike( HEI, H*I ); boolean like = erlike( E*sam*n, Eks*m*n ); boolean like = erlike( ***, AAA ); boolean like = erlike(, ); Oppgåve 3 (6 poeng) a) Kor mange int-verdiar er det plass til i kvar av desse arrayane? int[] sauer = new int[9]; int[][] hester = new int[10][11]; int[][] geiter = new int[9][9]; Svar:... b) Kor mange gonger vert INF1000 skreve ut av desse løkkene: for (int j=10; j<100; j=j+10 ) { for (int i=j-1; i<j+3; i++) { System.out.println( INF1000 ); Svar:...

- 3 - Oppgåve 4 (9 poeng) Kva er verdien av variabelen resultat i kvart av desse tilfella? a) int resultat = 1; for (int i=0; i<4; i++) { resultat = 2 * (i + resultat); Svar:... b) int resultat = 0; for (int i=0; i<5; i++) { for (int j=i; j<5; j++) { resultat += 1; Svar:... c) int resultat = 0; for (int i=1; i<4; i++) { int prod = 1; for (int j=1; j<=i; j++) { prod = prod * i; resultat += prod; Svar:... Oppgåve 5 (10 poeng) Gå ut frå at programmet Reknemaskin.java ser slik ut: class Reknemaskin { public static void main(string[] args) { // Sjå oppgåveteksta class Analyse { int a; int b; Analyse(int a, int b) { this.a = a; this.b = b; double sum(double[] x) { double svar = 0; for (int i=a; i<b; i++) { svar += x[i]; return svar;

- 4 - La innhaldet av main-metoden være eitt av alternativa i punktane 1-5. Finn dei alternativa som går feil (med feil forstår vi anten kompilator-feil eller kjøyrefeil). Kva er verdien til resultat for dei alternativa som ikkje går feil? 1. double[] y = {2.0, 3.0, 4.0; double resultat = Analyse.sum(y); Svar:... 2. Analyse ana = new Analyse(); double[] y = {2.0, 3.0, 4.0; double resultat = ana.sum(y); Svar:... 3. Analyse ana = new Analyse(0, 3); double[] x = {1, 2, 3, 4; double resultat = ana.sum(x); Svar:... 4. Analyse ana = new Analyse(1, 5); double[] verdiar = new double[3]; verdiar[0] = 3; verdiar[1] = 5; verdiar[2] = 8; double resultat = ana.sum(verdiar); Svar:... 5. Analyse ana1 = new Analyse(0, 3); Analyse ana2 = new Analyse(4, 6); double[] tall = {1, 2, 3, 4, 5, 6, 7, 8; double resultat = ana1.sum(tall) + ana2.sum(tall); Svar:... Oppgåve 6 (10 poeng) Skriv ferdig metoden nedanfor, som ut frå ein array med vindobservasjonar for eit antall dagar tel opp og returnerar antal dagar med vindstyrke over 10.7 m/s (= kuling eller meir). Elementa i arrayen er vindstyrke for kvar sin dag, rekna i meter per sekund (m/s). Svar: int antalldagarmedmykjevind(double[] vind) {

- 5 - Oppgåve 7 (20 poeng) Eit sjukehus har eit antall avdelingar. På kvar avdeling er det tilsett eit antal legar og sjukepleiarar. Ein lege/sjukepleiar kan ikkje være tilsatt på meir enn ei avdeling. Ein pasient som leggs inn på sjukehuset vert innskriven på ei avdeling der ho/han på eit gitt tidspunkt vert behandla av null eller fleire legar og av null eller fleire sjukepleiarar. Ein lege eller ein sjukepleiar handsamer høgst ein pasient om gongen. Lag eit UML-klassediagram mellom klassene Sjukehus, Avdeling, Lege, Sjukepleiar og Pasient med assosiasjonar som nemnd ovanfor. Skriv namn på assosiasjonane og tal på kvar side av deim. Svar:

- 6 - Oppgåve 8 (20 poeng) Nedanfor er skissa til eit program som fyrst les ei fil med informasjon om nokre kontaktar (ein kontakt vert utgjord av eit namn, ei adresse og eit telefonnummer). Programmet skal så gå i løkke og be brukaren om eit namn og skrive ut all kontaktinformasjon knytta til dette namnet. import easyio.*; import java.util.*; class TelefonregisterMain { public static void main(string[] args) { Telefonregister tr = new Telefonregister(); tr.lesfråfil( kontakter.txt ); tr.snakkmedbrukar(); class Telefonregister { HashMap h = new HashMap(); // Her skal det liggje to objektmetoder: lesfråfil og snakkmedbruker class Kontakt { String namn, adresse, tlf; // Her skal det ligge ein konstruktør og ein utskriftsmetode a) Lag fyrst konstruktøren i klassen Kontakt. Konstruktøren skal ha tre parametre (ein for kvar av objektvariablane i klassen) og skal nytte parameterverdia til å initiere objektvariablane. Svar: b) Lag utskriftsmetoden i klassen Kontakt. Metoden skal heite skrivut og skal ikkje ha parametre eller returverdi. Den skal skrive verdiane til dei tre objektvariablane i klassen ut på skjermen. Svar:

- 7 - c) Lag metoden lesfråfil som skal liggje i klassen Telefonregister og som vert kalla frå main-metoden i klassen TelefonregisterMain. Metoden lesfråfil skal ha eit filnamn som parameter og skal lese frå denne fila som du kan gå ut frå inneheld informasjon om eit antall kontaktar. Fila er ei tekstfil som inneheld fyrst tre liner for den fyrste kontakten, deretter tre liner for den neste kontakten, osv. Dei tre linene for ein kontakt inneheld namn, adresse og telefonnummer (i den ordninga). Kvar kontakt skal bli representert med eit objekt av klassen Kontakt, og du skal nytte konstruktøren frå punkt a) når du opprettar nye Kontakt-objekt. Programmet skal leggje kontaktane inn i HashMapen h (med namn som søkeord). Svar:

- 8 - d) Lag metoden snakkmedbrukar som skal ligge i klassen Telefonregister og som blir kalla frå mainmetoden i klassen TelefonregisterMain. Metoden snakkmedbrukar skal innehelde ei evig løkke der kvart gjennomløp er at programmet ber om og leser inn eit namn frå terminal og deretter skriver ut på skjerm (ved hjelp av metoden skrivut) all informasjon knytta til dette namnet (eller ei feilmelding hvis namnet er ukjend). Svar:

- 9 - Oppgåve 9 (30 poeng) LabFix er eit medisinsk laboratorium som gjer analysar av pasientprøver (blodprøver, urinprøver, osv). Kvar førespurnad til laboratoriet kjem frå ein bestemt lege og gjelder ein bestemt pasient, og førespurnad gjeld eit vilkårleg antall prøver på pasienten. Når laboratoriet har gjort sine analysar, lager dei ei fil Pasient.txt knytta til desse testene for denne pasienten. Fila har denne strukturen: <lege-id> <legens adresse> <pasient-id> <pasientens namn> <prøve-id> <prøvens resultat> <prøve-id> <prøvens resultat>... <prøve-id> <prøvens resultat> Dei to øvste linene gir generelle opplysningar om legen og pasienten. Deretter kjem det ei line for kvar av prøvane som er gjort på pasienten. Kvar av disse linene består av ein prøve-id (ein kode som eintydig identifiserer kva prøve det er) etterfølgd av eit prøveresultat (et desimaltall som angir resultatet av analysen). Du kan gå ut frå at dei to felta på kvar line i fila er skilde av blanke teikn, og at det ikkje er blanke teikn i nokre av ID ane. Di oppgåve er å lage eit program som les fila ovenfor og som lager ei ny fil KommentertPasient.txt. Denne skal innehalde all informasjon i fila Pasient.txt, men den skal i tillegg innehalde ein kommentar på slutten av kvar prøveresultat-line som angir (1) det fulle namnet på prøva og (2) om prøva sin verdi er normal, for låg eller for høg. Til å gjere dette har du også ei anna fil som heiter Laboratorieverdiar.txt. Den inneheld ei line for kvar type prøve LabFix kan analysere: <prøve-id> <prøvas fulle namn> <min> <max> <prøve-id> <prøvas fulle namn> <min> <max>... <prøve-id> <prøvajs fulle namn> <min> <max> der felta på kvar line er skilt med blanke teikn (det er ingen andre blanke teikn enn dette). Her er min den lågaste normale og max den høgaste normale verdien for denne prøva. Du skal ta utgangspunkt i følgjande programskisse: import easyio.*; import java.util.*; class LabFix { public static void main(string[] args) { Analyse ana = new Analyse(); ana.leslabdata( Laboratorieverdier.txt ); ana.lagkommentertpasientfil( Pasient.txt, KommentertPasient.txt ); class Analyse { // Her skal du leggje inn programkode (sjå oppgåva)

- 10 - Oppgåva di blir å skrive ferdig programmet på føregåande side. I klassen Analyse må du deklarere naudsynte objektvariablar, og du må skrive objektmetodane leslabdata (som skal lese fila Laboratorieverdiar.txt ) og lagkommentertpasientfil (som skal lese fila Pasientar.txt og lage fila KommentertPasient.txt som gitt ovanfor). Du må óg deklarere desse metodane med rette parametre slik at kalla som vert gjorde i main-metoden vert riktige. Svar: (svarfeltet held fram på neste side)

- 11 - (svarfeltet held fram på neste side)

- 12 - Oppgåve 10 (15 poeng) Sjå på oppgåveteksten til oppgåve 9 og vurdér den opp mot Lov om behandling av personopplysninger. a) Er dette systemet tillate, og kan i så fall LabFix berre sette i gang og lage dette systemet etter å ha meld frå om det til Datatilsynet? LabFix synest at dette systemet er fint, men vil helst nytte dei data dei har samla inn til litt meir. Konkret planleggjar dei å lage eit system for marknadsdsføring som mellom anna skal ha to oppgåver: b) Det skal lagast ein månadens ti-på-topp liste over dei mest brukte testane. Lista skal sendast ut til alle legar som nyttar LabFix til å gjere analysar. c) Dei legane som i ein måned ikkje brukar meir enn to av testane på månadens-ti-på-topp liste vert tilskrive særskilt, der dei får tilbod om 20% rabatt neste månad på dei ti testane på lista. Vurdér og b) og c) opp mot Lov om behandling av personopplysninger, og nemn i alle dine svar kva for paragrafar du meiner kjem inn i kvart høve med grunngjevnad.