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

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

INF Uke 10. Ukesoppgaver oktober 2012

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

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: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

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

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

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

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

INF1010 Sortering. Marit Nybakken 1. mars 2004

UNIVERSITETET I OSLO

INF1000 oppgaver til uke 38 (17 sep 23 sep)

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

UNIVERSITETET I OSLO

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

Løsningsforslag til eksamen i INF1000 våren 2006

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

INF1000 Metoder. Marit Nybakken 16. februar 2004

UNIVERSITETET I OSLO

løsningsforslag-uke5.txt

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

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

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

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

IN1000 Obligatorisk innlevering 7

UNIVERSITETET I OSLO

Løsningsforslag INF desember 2007

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

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

Blokker og metoder INF1000 (Uke 6) Metoder

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

INF1000 Behandling av tekster

Forelesning inf Java 5

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Forelesning inf Java 5

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

UNIVERSITETET I OSLO

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

INF1000 Prøveeksamen Oppgave 7 og 9

Seminaroppgaver IN1010, uke 2

UNIVERSITETET I OSLO

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

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

Oblig4 - forklaringer. Arne og Ole Christian

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

INF1000 undervisningen INF 1000 høsten 2011 Uke september

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

Feilmeldinger, brukerinput og kontrollflyt

INF1000 (Uke 6) Mer om metoder, tekster

Innlesning fra tastatur med easyio. INF1000 høst Vi må først skrive i toppen av programmet: import easyio.*;

INF Løsning på seminaropppgaver til uke 8

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Eksempel: Body Mass Index (BMI)

UNIVERSITETET I OSLO

INF1000: Forelesning 6. Klasser og objekter del 1

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Klasser, objekter, pekere og UML. INF gruppe 13

Oversikt. INF1000 Uke 3. Repetisjon Program. Repetisjon Program. Litt repetisjon Program Variabler og Uttrykk Presedens Matematiske funksjoner

INF1000: Forelesning 7

Transkript:

Oppgave (2 poeng) a) Hvor mange int-verdier er det plass til i arrayen bingo? int[][] bingo = new int[2][]; bingo[] = new int[]; bingo[] = new int[2]; INF Løsningsforslag prøveeksamen høst 27 bingo int[][] int[] 22. november 27 22. november 27 Oppgave 2 (2 poeng) float og long i oppgave 2: De kom med ved et uhell. Beklager! På eksamen vil vi bare bruke double og int Er disse programsetningene lovlige i Java? JA NEI int x = 4 / 2.; boolean t = (3.4 == 3); float[] f = new int[]; int i, j, k, l, m=; long heltall = /2; int[3] tre = {, 2, 3; String false = "" + true; double pi = (double) ("3" + ".4"); boolean a, b, c==(==3/2); int[] heletall = {(int).25, (int)2.5, (int)3.75; 22. november 27 22. november 27

Oppgave 3 (6 poeng) a) Hvor mange ganger blir INF skrevet ut av følgende løkke: for (int i=2; i<6; i+=2) { System.out.println("INF"); 2 ganger Svar:... ganger b) Hvor mange ganger blir INF skrevet ut av følgende løkke: for (int j=; j < ; j = j+ ) { for (int i = j-2; ++i < j++; j = i+) System.out.println("INF"); 5 ganger Svar:... ganger. Oppgave 3 forts b) Hvor mange ganger blir INF skrevet ut av følgende løkke: for (int i=; i < 2; i++){ for (int j=; j < 3; j++){ for(int k=; k < 4; k++){ System.out.println("INF"); Svar:... 6 ganger ganger. d) Hvor mange ganger blir INF skrevet ut av følgende løkke: int k = ; while (k-- > - k) System.out.println("INF "); 5 ganger Svar:... ganger. 22. november 27 22. november 27 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->) hvaerjeg+=7; hvaerjeg += hvaerjeg++ + 3; Hva er verdien til variabelen hvaerjeg rett etterpå? 5 Svar:... tre to trehalve hvaerjeg 3 2 - - 3 2. - 3 4. 6 3 4. 6 3 4. 5 Oppgave 5 (5 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 skal metoden returnere verdien.. I tillegg trenger du å vite at tomme er 2.54 centimeter. 22. november 27 22. november 27

Oppgave 6 (2 poeng) double kassevolum(int lengde, int bredde, int hoyde){ if(lengde<= bredde <= hoyde<=) return.; 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 return lengde*bredde*hoyde/2.54/2.54/2.54; plukkutundergrensen(new int[]{9,, 7, 8, 2, 3, 7); så skal resultatet være en ny array som inneholder tallene: {, 7, 2, 3 22. november 27 22. november 27 int[] plukkutundergrensen ( int [] heltall, int grense ){ int[] res = null; int ant = ; for(int i=;i<heltall.length;i++){ if(heltall[i]<=grense)ant++; res = new int[ant]; ant = ; for(int i=;i<heltall.length;i++){ if(heltall[i]<=grense) res[ant++] = heltall[i]; return res; Oppgave 7 ( poeng) Anta at følgende program kjøres: class Tall{ public static void skriv(string tall){ int i=; while(tall.charat(i++) == ''){ tall = tall.substring(i, tall.length()); System.out.print (tall); System.out.print (", "); public static void main(string[] args){ String stor = ""; String liten = ""; skriv(stor); skriv(liten); Hva skriver programmet ut?, Svar:... i tall. kall - 2. kall - 22. november 27 22. november 27

Oppgave 8 (5 poeng) Anta at vi har denne metoden: public int beregn(boolean[] tall){ int verdi=; for(int i=; i<tall.length; i++){ if(tall[i]){ int x = ; for(int j=i;j<tall.length-; 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:... i j x verdi - 2 4 2 8-8 8-8 2-8 2 2 2 8 2-2 3-3 - 22. november 27 Oppgave 9 (2 poeng) Under Formel -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 -lag med å lage et dataprogram som skal analysere disse dataene og dere skal starte med å tegne et UMLklassediagram 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 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. 22. november 27 Oppgave (5 poeng) Hjul 4 sitter på Person organisert føres System Bil Fører rundt av drives av Motor 4.. overhaler..* overvåkes av Sensor 22. november 27 Anta at følgende program utføres: class Liste { tekst: D Liste neste; String tekst; Liste(Liste neste, String tekst){ this.neste = neste; tekst: C this.tekst = tekst; void skrivut(){ tekst: B if(neste!= null) neste.skrivut(); System.out.print(tekst + " "); public static void main(string args[]){ tekst: A 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? A B C D Svar :... 22. november 27

Oppgave 2 (3 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: Reglene 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 22. november 27 22. november 27 Rutenettet (x,y) (x-,y+) 3 naboer levende nabo (x+,y) (x,y) (x-,y+) x y (x+,y) 8 naboer 2 levende naboer Skallet class GameOfLife { boolean celler[][]; GameOfLife(boolean[][] celler){ this.celler = celler; void spill(){ while(true){ skriv(celler); celler = lagnesterunde(celler); vent(); (x+,y) boolean[][] lagnesterunde(boolean[][] celler){ // Skulle skrive denne... (x,y) (x-,y+) 5 naboer 2 levende naboer int antallnaboer(int x, int y, boolean[][] celler){ // Og denne... 22. november 27 22. november 27

Lage runde boolean[][] lagnesterunde(boolean[][] celler){ boolean[][] nyeceller = new boolean[celler.length][celler[].length]; for(int x=;x<celler.length; x++){ for(int y=;y<celler[x].length; y++){ int ant = antallnaboer(x, y, celler); if(celler[x][y]){ if(ant<2) nyeceller[x][y] = false; else if(ant>3) nyeceller[x][y] = false; else nyeceller[x][y] = true; else { if(ant==3) nyeceller[x][y] = true; return nyeceller; Antall naboer int antallnaboer(int x, int y, boolean[][] celler){ int ant = ; if(x>= && y>=) if(celler[x-][y-]) ant++; if(x>=) if(celler[x-][y]) ant++; if(x>= && y<celler.length-) if(celler[x-][y+]) ant++; if(y>=) if(celler[x][y-]) ant++; if(y<celler.length-) if(celler[x][y+]) ant++; if(x<celler.length- && y>=) if(celler[x+][y-]) ant++; if(x<celler.length-) if(celler[x+][y]) ant++; if(x<celler.length- && y<celler.length-) if(celler[x+][y+]) ant++; return ant; 22. november 27 22. november 27