UNIVERSITETET I OSLO

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

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

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

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

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

Det matematisk-naturvitenskapelige fakultet

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

INF Uke 10. Ukesoppgaver oktober 2012

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

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

INF1000: noen avsluttende ord

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)

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

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

UNIVERSITETET I OSLO

Oblig4 - forklaringer. Arne og Ole Christian

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 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

UNIVERSITETET I OSLO

PRØVEEKSAMEN (rettet versjon 27/11)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Endret litt som ukeoppgave i INF1010 våren 2004

Løsningsforslag INF desember 2007

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

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

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

UNIVERSITETET I OSLO

IN1000 Obligatorisk innlevering 7

INF1000 oppgaver til uke 38 (17 sep 23 sep)

UNIVERSITETET I OSLO

Oblig 4Hybelhus litt mer tips enn i oppgaven

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgave01.java class Bongo { 2 public static void main(string[] args){ 3 int[][][]bongo = new int[2][3][4]; 4 5 // SVAR: 24 6 } 7 } 8

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

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

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

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

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

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

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

Eksamen IN1010/INF1010 våren 2018

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

INF1000 Prøveeksamen Oppgave 7 og 9

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

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

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

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

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

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.

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

Informasjon Prøveeksamen i IN1000 høsten 2018

UNIVERSITETET I OSLO

INF 1000 høsten 2011 Uke september

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet prøveeksamen Prøveeksamen i : INF1000 Grunnkurs i objektorientert programmering Prøveeksamensdag : Torsdag 22. november 2007 Tid for prøveeksamen : 14 17 Oppgavesettet er på : 14 sider Vedlegg : Ingen Tillatte hjelpemidler : Alle trykte og skrevne Den virkelige eksamen vil ha en forside som dette. BOKMÅL 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 bingo? int[][] bingo = new int[2][]; bingo[0] = new int[10]; bingo[1] = new int[20]; Svar:...

Oppgave 2 (20 poeng) Er disse programsetningene lovlige i Java? JA NEI int x = 4 / 2.0; boolean t = (3.14 == 3); float[] f = new int[10]; int i, j, k, l, m=0; long heltall = 10/2; int[3] tre = {1, 2, 3; String false = "" + true; double pi = (double) ("3" + ".14"); boolean a, b, c==(1==3/2); int[] heletall = {(int) 1.25, (int)2.5, (int)3.75; Oppgave 3 (16 poeng) a) Hvor mange ganger blir INF1000 skrevet ut av følgende løkke: for (int i=2; i<6; i+=2) { System.out.println("INF1000"); Svar:... ganger b) Hvor mange ganger blir INF1000 skrevet ut av følgende løkke: for (int j=1; j < 10 ; j = j+1 ) { for (int i = j-2; ++i < j++; j = i+1) System.out.println("INF1000"); Svar:... ganger c) Hvor mange ganger blir INF1000 skrevet ut av følgende løkker: for (int i=0; i < 2; i++){ for (int j=1; j < 3; j++){ for(int k=0; k < 4; k++){ System.out.println("INF1000"); Svar:... ganger d) Hvor mange ganger blir INF1000 skrevet ut av følgende løkke: int k = 10; while (k-- > 10 - k) System.out.println("INF1000 "); Svar:... ganger

Oppgave 4 (4 poeng) Anta at følgende kodelinjer utføres: int tre = 3, to = 2; double trehalve = tre/to; int hvaerjeg = ++to + to++; if(trehalve-1>0) hvaerjeg+=7; hvaerjeg += hvaerjeg++ + 3; Hva er verdien til variabelen hvaerjeg rett etterpå? Svar:... Oppgave 5 (20 poeng) Skriv ferdig metoden under, som beregner og returnerer volumet V av en kasse i kubikktommer ut fra kassens lengde, bredde og høyde i centimeter. Formelen du skal bruke er: V=l*b*h, og hvor l er lengden, b er bredden og h er høyden til kassa. Dersom en av de tre variablene (l, b, h) er mindre eller lik 0 skal metoden returnere verdien 0.0. I tillegg trenger du å vite at 1 tomme er 2.54 centimeter. Svar: double kassevolumikubikktommer(int lengde, int bredde, int hoyde){

Oppgave 6 ( 20 poeng) Skriv ferdig metoden under, som med utgangspunkt i en array med heltall (heltall) og en øvre grense (grense), finner alle de verdiene i arrayen heltall som er mindre eller lik grensen og returnere en ny array med alle de verdiene (men ikke de som er over grensen). Dersom metoden blir kalt, for eksempel slik plukkutundergrensen(new int[]{9, 1, 7, 8, 2, 3, 7); så skal resultatet være en ny array som inneholder tallene: {1, 7, 2, 3 Svar: int[] plukkutundergrensen ( int [] heltall, int grense ){

Oppgave 7 (10 poeng) Anta at følgende program kjøres: class Tall{ public static void skriv(string tall){ int i=0; while(tall.charat(i++) == '0'){ tall = tall.substring(i, tall.length()); System.out.print (tall); System.out.print (", "); public static void main(string[] args){ String stor = "0110110"; String liten = "0011001"; skriv(stor); skriv(liten); Hva skriver programmet ut? Svar:... Oppgave 8 (15 poeng) Anta at vi har denne metoden: public int beregn(boolean[] tall){ int verdi=0; for(int i=0; i<tall.length; i++){ if(tall[i]){ int x = 1; for(int j=i;j<tall.length-1; j++){ x *= 2; verdi+=x; return verdi; Anta videre at vi har arrayen: boolean[] tall = new boolean[]{true, false, true, true ; Hva returneres fra metodekallet beregn(tall)? Svar:...

Oppgave 9 (20 poeng) Under Formel 1 -løp lagrer lagene enormt mange parametere fra bilene og det som hender rundt bilene. Det måles og lagres temperaturer, omdreininger, osv for bilen, lufttrykk for dekkene, puls, for føreren, hvor lang tid laget bruker på å skifte hjul, og mye annet. Du skal hjelpe et Formel 1 -lag med å lage et dataprogram som skal analysere disse dataene og dere skal starte med å tegne et UML-klassediagram for lagets datasystem. Systemet er organisert rundt en bil. En bil har fire hjul og naturligvis bare én fører. Motoren behøver ikke ha noen sensorer, men kan ha mange. Når bilen kommer inn til vedlikehold (pit stop) er det fra 4 til 10 personer som overhaler bilen. Tegn et UML-klassediagram med de 7 (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å forholdet mellom disse klassene. Svar:

Oppgave 10 (60 poeng) Gunnar Grei driver DVDsjappa AS hvor han leier ut DVDer. Nå vil Gunnar ha et enkelt datasystem for utleie, og du skal hjelpe han å lage deler av dette. Han har to filer med samme format over filmene, Ledig.txt og Utleid.txt over henholdsvis de ledige og de utleide filmene. Formatet på filen er slik at det er én linje per film med flg. data for hver film: <nr> <Utleid til/ledig> <språk> <type film> <Tittel mm> Hvor: <nr> <utleid til> <språk> <type film> <tittel mm> er en fortløpende nummerering av hver DVD-film Gunnar har inneholder enten ordet LEDIG eller e-postadressen til den som har leid denne DVDen, Engelsk, Norsk, Svensk, Dansk eller Urdu Drama, Action, Komedie, Erotisk eller Barnefilm filmtittelen etterfulgt av regissør eller de viktigste skuespillerne. Her er eksempel på to filmer, Løver for lam (som ikke er utleid) og Du levande, utleid til arnem@ifi.uio.no (den første er da på Ledig.txt den andre er på : Utleid.txt ): 4101 LEDIG Engelsk Drama Løver for lam, med Meril Streep og Tom Cruise 4114 arnem@ifi.uio.no Svensk Drama Du levande, regi: Roy Anderson Oppgaven din skal være å lage utlånsdelen av systemet. Først leses filen Ledig.txt inn og så spørres neste bruker om e-postadresse, om hvilke type film de ønsker og om de ønsker noe spesielt språk (eller om det er likegyldig). Deretter skal systemet gå gjennom de filmene fra Ledige.txt som passer til brukerens ønske (type film + eventuelt språk) og for hver av disse som tilfredstiller brukerens krav spørre om brukeren ønsker å leie denne eller ikke. På det spørsmålet kan brukeren gi tre svar: ja, nei eller ferdig (hvor ferdig betyr at brukeren nå ikke ønsker få presentert flere valg, men vil leie de han/hun eventuelt hittil har valgt.) Systemet skal så skrive ut tre filer: Bestilling.txt, med e-postadressen til brukeren etterfulgt av numrene til de filmene vedkommende nå har leid. Ledige.txt oppdateres med å skrives ut på nytt med de leide filmene fjernet (men med de øvrige filmene som ikke er utleid) og Utleid.txt med de tidligere utleide filmene og i tillegg med de filmene som nå leies og med e-postadressen til brukeren i utleid til -feltet. (Vi ser at dette systemet mangler et program for retur av DVDer, men det skal du ikke skrive nå). Vi setter få krav til løsningen din foruten at den minst skal ha to klasser: DVDSystem og BrukerModul (men sannsynligvis flere). Konstruktøren i BrukerModul kalles med Ledige,txt og Utleid.txt som parametere.

Svar: import easyio.*; import java.util.*; class DVDSystem { public static void main(string [] args) { BrukerModul b = new BrukerModul( Ledige.txt, Utleid.txt ); class BrukerModul { BrukerModul (String ledige, String utleid) {

Oppgave 11 (15 poeng) Litt vanskelig Anta at følgende program utføres: class Liste { Liste neste; String tekst; Liste(Liste neste, String tekst){ this.neste = neste; this.tekst = tekst; void skrivut(){ if(neste!= null) neste.skrivut(); System.out.print(tekst + " "); public static void main(string args[]){ Liste l = new Liste( new Liste(new Liste(new Liste(null, "A"), "B"), "C"), "D"); l.skrivut(); Tegn først opp for deg selv og finn ut hvor mange objekter av klassen Liste vi får laget fra 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) I denne oppgaven skal du bidra til å lage en versjon av matematikeren John Horton Conways Game of Life. Game of Life er et eksempel på en simulasjon og man kan for eksempel se på det som en simulering av hvordan en populasjon med dyr eller bakterier utvikler seg over flere generasjoner. Spillet starter med et rutenett hvor noen ruter (som vi kaller celler) er i live (Vi må merke disse på en eller annen måte), og noen er døde. Spillet har ingen spillere og det er mulig å la spillet gå i uendelig mange runder. For hver runde bestemmes hva som skal gjøres med cellene ut ifra 4 regler. Det kan bli flere eller færre levende celler fra en runde til en annen. Man kan starte med en utgangsposisjon hvor for eksempel annenhver celle lever, eller hvor man har en klynge med levende celler i et hjørne og se hvordan det utvikler seg. Hver celle har inntil 8 naboceller, de rett ved siden av på 4 sider, samt de fire inntill ruten diagonalt. Cellene inntil kanten av brettet har naturligvis færre naboer. Reglene for hva som skjer med rutene i rutenettet er som følger: En levende celle med færre enn to levende naboer dør av ensomhet En levende celle med flere enn tre levende naboer dør av trengsel En levende celle med to eller tre levende naboer forblir uendret. En død celle med nøyaktig tre levende naboer kommer til live Vi kan løse dette problemet med en todimensjonal matrise av typen boolean, hvor en død celle representeres med verdien false og en levende celle med verdien true. Programmet går i en hovedløkke hvor den først tegner (skriver ut) brettet på skjermen slik det ser ut nå, så lager

brettet for neste runde ut fra de fire reglene og til slutt i løkken venter programmet et par sekunder (så man får tid til å se brettet før det blir tegnet over). Du skal skrive de to metodene lagnesterunde og antallnaboer som til sammen skal lage neste runde. Du skal skrive lagnesterunde slik at den kaller antallnaboer. lagnesterunde skal lage en ny array med brettet for neste runde basert på denne rundens brett, de fire reglene og antallet naboer for de enkelte cellene, som den får fra å kalle metoden antallnaboer for cellen. Husk at du ikke vet størrelsen på arrayen før funksjonen blir kalt. Du skal ikke skrive funksjonene som tegner ut brettet (skriv) eller som venter (vent). To hint: Du trenger to arrayer i lagnesterunde. Og, pass på kantene av rutenettet i antallnaboer. Vi demonstrerer Game of Life på gjennomgangen i kveld! Svar: class GameOfLife{ boolean celler[][]; GameOfLife(boolean[][] celler){ this.celler = celler; void spill(){ while(true){ skriv(celler); celler = lagnesterunde(celler); vent(1000); boolean[][] lagnesterunde(boolean[][] celler){ // Denne skal skrives!

int antallnaboer(int x, int y, boolean[][] celler){ // Og denne skal skrives!

Oppgave 13 (20 poeng) Gunnar Grei kjent fra oppgave 8 har nå en lys ide. Hver måned får han en liste over de nye DVDene til DVDsjappa AS, med angivelse av type film, språk, regissør og skuespillere. Hvis han nå samlet opp de bestillingsfilene han lager, kunne han finne ut hva kundene hans var interessert i, og sende en e-post til dem når det kom en ny film av en type de minst hadde leid før. Hadde f.eks Siri Snill leid nesten bare barnefilmer ville hun hver måned få oversikt om de nye barnefilmene, mens Karsten Steroid, som mest leide erotiske filmer, ville få e-post om månedens nye DVDer av det slaget. Du skal nå ikke lage systemet, men vurdere Gunnars lyse ide etter Lov om persondata og begrunne dine kommentarer til om dette er tillatt ved både å vise til konkrete paragrafer og skrive din egen vurdering om hvorfor disse paragrafene eventuelt kommer til anvendelse. Svar: