UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Gjennomgang av en tenkt eksamensoppgave

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Gjennomgang av en tenkt eksamensoppgave

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

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

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

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

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

Endret litt som ukeoppgave i INF1010 våren 2004

PRØVEEKSAMEN (rettet versjon 27/11)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

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

Oblig4 - forklaringer. Arne og Ole Christian

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

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

INF1000 oppgaver til uke 38 (17 sep 23 sep)

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

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

UNIVERSITETET I OSLO

Forelesning inf Java 4

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

Inf 1000 høst 2005 Løsningsforslag ordinær eksamen

INF1000: noen avsluttende ord

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

INF1010 Sortering. Marit Nybakken 1. mars 2004

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

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

Blokker og metoder INF1000 (Uke 6) Metoder

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

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

Eksamen IN1010/INF1010 våren 2018

Ukeoppgaver INF1000: 12. feb 16. feb

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

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

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 Løsningsforslag

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

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

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

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

PRØVEEKSAMEN (rettet versjon 27/11)

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

UNIVERSITETET I OSLO

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

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

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Forelesning inf Java 5

Transkript:

PRØVEEKSAMEN INF1 - H6 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1 Grunnkurs i objektorientert programmering Dato: Torsdag 3. november 6 Tid for prøveeksamen : 14.-17. Oppgavesettet er på : 14 sider Vedlegg : Ingen Tillatte hjelpemidler : Alle trykte og skrevne Pizza serveres kl 17 18 i kantina i Biologibygningen (bak Sophus Lies auditorium, på andre siden av bilveien). Ønsker du drikke til må du bringe dette selv. Oppgaven gjennomgås i auditorium 1 i Georg Sverdrups hus (rett bak Sophus Lies auditorium) kl 1815-. Les gjennom hele oppgaven før du begynner å løse oppgaven. Kontroller 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. 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. På eksamen må du huske å skrive såpass hardt at besvarelsen blir mulig å lese på alle gjennomslagsarkene (det er ikke gjennomslagsark på denne prøveeksamen). Ikke bruk datamaskin når du løser prøveeksamen det er bare å lure seg selv siden poenget er at denne prøven skal være så lik en ordentlig eksamen som mulig. Oppgave 1 (1 poeng) Er disse programsetningene lovlige i Java? JA NEI int i, j = i+1; int j = 3, while (j-->) {i = j; int[]int[] int = new int[8]int[9]; boolean[] b = null; boolean[] b = new boolean[true]; boolean[] b = false; int 1X = (int) (true == false); double x = (int) 3.5; int j = 5, k = (int)(j/.5); boolean c = (true!= true) && false;

Oppgave (1 poeng) - - a) Hvor mange ganger blir INF1 skrevet ut av følgende løkke: int i = 1; while (++i < 1) { System.out.println( INF1 ); Svar:... b) Hvor mange ganger blir INF1 skrevet ut av følgende løkke: int i=1, j=1; do { System.out.println( INF1 ); i = i + 1; j = j + i; while (j * i < 1); Svar:... c) Hvilken verdi får variabelen resultat her? int resultat = ; for (int i=; i<1; i=i+1) { for (int j=i; j<i+1; j++) { resultat++; Svar:... d) Hvilken verdi får variabelen resultat her? int resultat = ; for (int i=; i<1; i++) { for (int j=; j<1; j++) { if (i == j-1) { resultat++; Svar:... e) Hva blir skrevet ut på skjermen her? String s1 = 1 + + 3 ; String s = 1 + + 3 ; String s3 = 1 + + 3; if (s1.equals(s)) {System.out.println("A"); if (s1.equals(s3)) {System.out.println("B"); if (s.equals(s3)) {System.out.println("C"); Svar:...

-3- Oppgave 3 (1 poeng) Anta at følgende er deklarert i en metode i et program: int[][] tabell = new int[1][1]; Anta at arrayen tabell er fylt opp med verdier (positive og negative) som er lest fra en fil. Hvilke av alternativene under vil alltid gi som resultat at max inneholder maksimumsverdien i tabell? JA NEI int k = ; int max = ; while (k < tabell.length) { if (max < tabell[k]) max = tabell[k]; k++; int max = tabell[][]; for (int i=; i<1; i++) { for (int j=; j<1; j++) { if (max < tabell[i][j]) max = tabell[i][j]; int max = tabell[][]; for (int i=; i<1; i++) { for (int j=; j<1; j++) { if (max < tabell[i][j] && max < tabell[j][i]) { max = Math.max(tabell[i][j], tabell[j][i]); int max = tabell[][]; for (int i=; i<1; i++) { for (int j=i; j<1; j++) { int m = Math.max(tabell[i][j], tabell[j][i]); max = Math.max(max, m); int[] maxv = new int[1]; for (int i=; i<1; i++) { maxv[i] = tabell[i][]; for (int j=1; j<1; j++) { if (maxv[i] < tabell[i][j]) { maxv[i] = tabell[i][j]; int max = maxv[]; for (int i=; i<1; i++) { if (max < maxv[i]) max = maxv[i];

-4 - Oppgave 4 (1 poeng) Anta at en trekant har sidekanter med lengde henholdsvis a, b og c. Da er arealet til trekanten gitt ved formelen A = ( s a) ( s b) ( s c), der s=(a+b+c)/. Skriv ferdig metoden under som beregner og returnerer dette arealet. Du kan bruke Math.sqrt(x) til å beregne kvadratroten av x. Svar: double finnareal (double a, double b, double c ) { Oppgave 5 (1 poeng) Betrakt følgende metode: int div(int teller, int nevner){ int antall = ; int rest = teller; while(rest >= nevner) { rest = rest nevner; antall++; return antall; Hvilken verdi returneres fra metodekallet div(9, 3)? Svar:...

-5 - Oppgave 6 (1 poeng) Et T-baneselskap driver 6 linjer (Sognsvann, Østerås,..) og eier en rekke T-banevogner. Disse vognene er fordelt på et antall tog, slik at hvert tog har -5 vogner (alltid like mange og alltid de samme vognene for et gitt tog). Hvert tog har fast tilhørighet til en av linjene. En linje har fra 8 til holdeplasser, og en holdeplass kan deles av opptil 6 linjer (f.eks. Majorstua). En enkeltreise foregår på et bestemt tog og har to tilhørende holdeplasser (holdeplass for påstigning og holdeplass for avstigning). Tegn et UML- klassediagram med klassene T-baneselskap, Vogn, Tog, Linje, Holdeplass og Enkeltreise. Gi navn på forbindelsene (assosiasjonene) mellom klassene som nevnt ovenfor, og gi antall i hver ende av assosiasjonene.

-6 - Oppgave 7 (3 poeng) Myndighetene i Ruritania vil kartlegge hvilke personer i landet som har forbindelse med hverandre. Vi antar for enkelhets skyld at personer er entydig identifisert ved sitt navn. En forbindelse består av to navn og en tekstlig beskrivelse av hva slags type forbindelse det er snakk om (f.eks. kjærester eller treningskamerater ). Hver forbindelse skal representeres med et objekt av klassen Forbindelse. Programmet nedenfor består av de tre klassene NettverkMain, Nettverk og Forbindelse. Programmet skal først lese tekstfilen forbindelser.txt som inneholder informasjon om endel forbindelser. Når filen er lest, skal programmet be om og lese inn navnet på en person. Deretter skal programmet skrive ut navnene på alle de som vedkommende har forbindelse til, samt hva slags typer forbindelser det er snakk om. Her er strukturen til programmet: import easyio.*; class NettverkMain { public static void main(string[] args) { Nettverk nett = new Nettverk(); nett.lesfil( forbindelser.txt ); nett.finnforbindelser(); class Nettverk { Forbindelse[] f = new Forbindelse[1]; int antall = ; // Her skal det ligge to objektmetoder: // lesfil og finnforbindelser class Forbindelse { String navn1; // Den ene personen i forbindelsen String navn; // Den andre personen i forbindelsen String type; // Beskrivelse av typen forbindelse, feks kjærester // Her skal det ligge en konstruktør a) Lag først konstruktøren i klassen Forbindelse. Konstruktøren skal ha tre parametre (en for hver av objektvariablene i klassen) og skal benytte parameterverdiene til å initiere objektvariablene. Svar:

-7 - b) Lag metoden lesfil som skal ligge i klassen Nettverk og som blir kalt på fra main-metoden i klassen NettverkMain. Metoden lesfil skal lese en tekstfil som inneholder en linje for hver forbindelse. Hver linje består av to navn og en beskrivelse av hva slags type forbindelse det er snakk om: <navn1> ; <navn> ; <type forbindelse> <navn1> ; <navn> ; <type forbindelse>... <navn1> ; <navn> ; <type forbindelse> Merk at feltene på hver linje er atskilt av semikolon (hvert felt kan dermed leses med inword(";")). Hver forbindelse skal representeres med et objekt av klassen Forbindelse, og du skal legge hver forbindelse inn på første ledige plass i arrayen f. Svar:

-8 - c) Lag metoden finnforbindelser som skal ligge i klassen Nettverk og som blir kalt på fra mainmetoden i klassen NettverkMain. Metoden finnforbindelser skal be om og lese inn et navn fra terminal og deretter skrive ut på skjerm navnene på alle de personene som hun/han har forbindelse til og hva slags type forbindelser det er snakk om. Svar:

-9 - Oppgave 8 (3 poeng) I Ruritania må alle personer som eier TV betale TV-lisens. Lisenskontoret har ansvaret for å kreve inn disse pengene, og de har mistanke om at endel lurer seg unna lisensbetalingen. De har naturligvis en oversikt over alle personer som betaler TV-lisens, og denne oversikten ligger på filen Abonnenter.txt hvor det er en linje for hver registrert betaler: <fødselsnummer> <fødselsnummer>... <fødselsnummer> Lisenskontoret har ingen oversikt over alle personer som eier en TV, så de må gjette seg til hvem det er som eier TV og ikke betaler lisens. Nå har de skaffet seg en oversikt over alle som betaler strømregning, og den oversikten ligger på filen Strom.txt hvor det er en linje for hver registrert betaler: <fødselsnummer> <etternavn> <fornavn> <adresse> <fødselsnummer> <etternavn> <fornavn> <adresse>... <fødselsnummer> <etternavn> <fornavn> <adresse> De fire feltene på hver linje er atskilt av blanke tegn, og det er ingen blanke tegn i de tre første feltene på hver linje (det fjerde feltet - adressen - vil imidlertid normalt inneholde noen blanke tegn). Din oppgave blir nå å benytte de to filene til å lage en ny fil Mistenkte.txt med navn og adresse til de strømabonnentene som ikke er registrert som TV-lisensbetalere (lisenskontoret regner med at de fleste av disse har TV og dermed lurer seg unna lisensbetalingen, og de skal derfor oppsøkes av inspektører). Du skal ta utgangspunkt i følgende uferdige program: import easyio.*; import java.util.*; class Suspekte { public static void main(string[] args) { Analyse ana = new Analyse(); ana.lesabonnenter( Abonnenter.txt ); ana.laglisteovermistenkte( Strom.txt, Mistenkte.txt ); class Analyse { // Her skal du legge inn programkode (se oppgaven) Oppgaven din består altså i å fullføre programmet ovenfor. I klassen Analyse må du deklarere nødvendige objektvariabler, og du må skrive objektmetodene lesabonnenter (som skal lese filen Abonnenter.txt ) og laglisteovermistenkte (som skal lese filen Strom.txt og lage filen Mistenkte.txt som beskrevet ovenfor). (Se neste side for svarfelt).

-1 -

-11 -

-1 -

-13- Oppgave 9 (15 poeng) Betrakt oppgaveteksten til oppgave 8 og vurder den opp mot Lov om behandling av personopplysninger. Er det tillatt å lage dette systemet, og hvis ikke, referer til den bestemmelsen ( ) som gjør dette systemet ulovlig å ta i bruk.

-14 - Oppgave 1 (15 poeng) [Litt vanskelig] Du skal skrive en sorteringsmetode for en heltallsarray arr som bare inneholder tall mellom og 99. Du skal bruke følgende sorteringsprinsipp: Løp først gjennom arrayen arr og tell opp (i en annen array antall av lengde 1) hvor mange ganger hver av verdiene, 1,,..., 99 forekommer. Gå deretter igjennom arrayen antall og skriv inn i arrayen arr fra starten og nedover: først så mange - ere du fant, deretter så mange 1-ere,..., og til slutt så mange 99-ere du fant. Da vil det i arr stå en sortert rekkefølge av tall som er sorteringen av arr. Eksempel som illustrerer prosessen: antall arr 3 4 1.. arr Til venstre ser vi den opprinnelige (usorterte) arrayen arr. I midten ser vi hvordan arrayen antall ser ut etter opptellingen. I posisjon står det, fordi verdien forekommer to ganger i arr. I posisjon 1 står det, fordi verdien 1 forekommer null ganger i arr, osv. Til høyre ser vi den endelige, sorterte arrayen arr. NB: Du får ingen poeng for å skrive av sorteringsmetoden i læreboka. 3 void sorter (int[] arr) {