INF1010 Eksamenstips Løsningsforslag prøveeksamen del 1.
michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 2
Les igjennom hele oppgaven. Les igjennom hele oppgaven en gang til, marker i teksten ting som er uklart eller du ikke forstår, så du er klar til å spørre når faglærer kommer. Bruk faglærer når han kommer. Du får ikke trekk for dumme spørsmål. Spør bare om ting i oppgaveteksten. Ikke pek på hva du har gjort, det kan ikke faglærer kommentere. michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 3
Bestem en omtrentlig rekkefølge av deloppgavene ved å ta hensyn til hvilke programdeler som bygger på hverandre. Tenk «top-down». Ta de enkleste deloppgavene først. «Bottom up». Tegn figurer! Før dem gjerne inn, selv om det ikke er spurt etter dem. Blir du stående fast, gå over til en deloppgave som kanskje bør løses først. Begynn på nytt ark for hver deloppgave og programmer gjerne i parallell. Når detaljene blir vanskelige, tenk og besvar top-down. Det er bedre med en fornuftig programskisse enn ingenting. michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 4
Prøveeksamen Først alene Alle kollokvierom (med greske bokstaver) er reservert 14.30-16.15. Diskuter forståelse av oppgaven Spør lærer som kommer rundt særlig om dette Gjennomgang løsningsforslag her starter 16.15 michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 5
class Bat { private int batnr ; public Bat ( int nr ) { batnr = nr ; public int hentbatnr ( ) { return batnr ; class Kjoretoy { private String kjnr ; public Kjoretoy ( String nr ) { kjnr = nr ; public String hentkjnr ( ) { return kjnr ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 6
class SeilBat extends Bat { private double seilareal ; SeilBat ( int nr, double areal ) { super ( nr ) ; seilareal = areal ; public double hentseilareal ( ) { return seilareal ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 7
interface Motorisert { int anthk ( ) ; // Antall Hestekrefter ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 8
class MotorBat extends Bat implements Motorisert { private int hestekrefter ; MotorBat ( int nr, int hk) { super ( nr ) ; hestekrefter = hk; public int anthk ( ) { return hestekrefter ; // antall Hestekrefeter ; class MotorKjoretoy extends Kjoretoy implements Motorisert { private int hestekrefter ; MotorKjoretoy ( String nr, int hk) { super ( nr ) ; hestekrefter = hk; public int anthk ( ) { return hestekrefter ; // antall HesteKrefeter ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 9
interface Element { /* * *Returnerer peker t i l neste element i listen, null hvis ingen flere * */ Element hentneste ( ) ; /* * * Setter ny verdi på nestepekeren. * */ void settneste ( Element nyneste ) ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 10
class FIFO { // protected gir tilgang i subklasser protected Element forste = null, siste = null ; public void settinn ( Element ny) { if ( siste == null ) forste = siste = ny; else { siste. settneste (ny ) ; siste = ny; public Element taut ( ) { if ( forste == null ) return null ; else { Element denne ; denne = forste ; forste = forste. hentneste ( ) ; // Tester t i l f e l l e t der det var bare ett element i l i s t a if ( forste == null ) siste = null ; return denne ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 11
class ListbarMK extends MotorKjoretoy implements Element { private Element neste ; public ListbarMK ( String nr, int hk) { super ( nr,hk ) ; // l i t t trekk uten konstruktør public Element hentneste ( ) { return neste ; public void settneste ( Element nyneste ) { neste = nyneste ; class ListbarMB extends MotorBat implements Element { private Element neste ; public ListbarMB ( int nr, int hk) { super ( nr,hk ) ; // l i t t trekk uten konstruktør public Element hentneste ( ) { return neste ; public void settneste ( Element nyneste ) { neste = nyneste ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 12
class MotorFIFO extends FIFO { public void settinn ( Element ny) { i f (ny instanceof Motorisert ) super. settinn (ny ) ; public Motorisert finnstorst ( ) { int max = 0; int verdi ; Element storst = null ; Element denne = forste ; while (denne!= null ) { verdi = ( ( Motorisert )denne ). anthk ( ) ; i f ( verdi > max) { max = verdi ; storst = denne; denne = denne. hentneste ( ) ; return ( ( Motorisert ) storst ) ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 13
class MotorFIFOUnntak extends Exception { class GodMotorFIFO extends MotorFIFO { public void settinnmotorisert ( Motorisert ny) throws MotorFIFOUnntak { i f (ny instanceof Element ) settinn ( ( ( Element )ny ) ) ; else throw new MotorFIFOUnntak ( ) ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 14
class INF1010V06A { public static void main ( String [ ] args ) { ListbarMK lbil1 = new ListbarMK ( "DE12345", 150); ListbarMB lbat1 = new ListbarMB(654321, 100); Element el1 ; Motorisert m1; GodMotorFIFO ko = new GodMotorFIFO ( ) ; try { ko. settinnmotorisert ( lbil1 ) ; ko. settinnmotorisert ( lbat1 ) ; catch ( MotorFIFOUnntak e ) { System. out. println ( " Ikke element " ) ; m1 = ko. finnstorst ( ) ; if (m1!= null ) { // mikro trekk for ikke å teste på null int mtr = m1. anthk ( ) ; System. out. println ( " HK " + mtr ) ; el1 = ko. taut ( ) ; i f ( el1 instanceof Bat ) System. out. println ( " nummer " + ( ( Bat ) el1 ). hentbatnr ( ) ) ; else System. out. println ( " nummer " + ( ( Kjoretoy ) el1 ). hentkjnr ( ) ) ; michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 15
michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 16
michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 17