13 (fordi p.move() returnerer en ny posisjon, og endrer ikke p.x fra opprinnelig 13)

Størrelse: px
Begynne med side:

Download "13 (fordi p.move() returnerer en ny posisjon, og endrer ikke p.x fra opprinnelig 13)"

Transkript

1 1. Anta at du har følgende klasse i Java: public class Pos { int x; public Pos(int x) { this.x = x; public Pos move(int dx) { return new Pos(x+dx); og følgende kode: Pos p = new Pos(13); p.move(5); Hva er verdien av p.x? 13 (fordi p.move() returnerer en ny posisjon, og endrer ikke p.x fra opprinnelig 13) 2. Anta at følgende grensesnitt og klasser finnes med passende konstruktører: interface IGrid2D<T> class MyGrid2D<T> implements IGrid2D<T> class Tetronimo extends MyGrid2D<TetrisCell> implements IGrid2D<TetrisCell> Hvilke av de følgende variabeldeklarasjonene er da lovlige i Java (dvs. fører ikke til typefeil ved kompilering)? Velg en eller flere. Velg et eller flere alternativer (1, 2, 4, 6)

2 3. Anta at du har følgende klasser og grensesnitt: interface IActor interface IFlyer class Dyr implements IActor class Kanin extends Dyr implements IFlyer class Ugle extends Dyr implements IFlyer class Hund implements IActor Hvilke av de følgende variabeldeklarasjonene er lovlige i Java? Velg en eller flere. Velg et eller flere alternativer (1, 2, 3, 6) 4. Anta at vi har følgende klasser og grensesnitt (med nødvendige metoder fylt inn): public interface I1 { public void m1(); public interface I2 extends I1 { public void m2(); public class K1 implements I1 {... public void m3() {...

3 public class K2 { public void m4() {... ; public class K3 extends K2 implements I2 {... Gitt variabeldeklarasjonene under, hvilke metoder kan vi kalle på hver variabel (dvs. hvilke metoder kommer opp på hjelpelisten når du trykker "." i Eclipse)? Skriv ned de mulige metodekallene (f.eks. " a.m1(); " osv...) for hver variabel. I1 a =...; I2 b =...; K1 c =...; K2 d =...; K3 e =...; (Du trenger ikke ta med standardmetodene som arves fra Object, slik som tostring, equals, osv.) a) m1 b) m1, m2 c) m1, m3 d) m4 e) m1, m2, m4 2 for første feil svar, 1 til 2 for hver av resten

4 Tetris Det kjente spillet Tetris ble oppfunnet i 1984 av russeren Alexey Pajitnov. Spillet bruker såkalte tetronimoer, som er satt sammen av fire ortogonalt plasserte kvadrater. Etterhvert som brikkene faller nedover skjermen kan spilleren rotere dem eller flytte dem sideveis, i håp om å få dem til å passe med brikkene som allerede er plassert. Når en eller flere hele horisontale linjer er fylt, slettes de. Spillet er over når det ikke er plass til flere nye brikker. Vi skal lage en kopi av Tetris med utgangspunkt i rammeverket vi brukte i Semesteroppgave TetrisBoard (5 poeng) Vi skal først lage en klasse for å representere Tetris brettet. Brettet har en brede og en høyde, og har en mengde celler som enten er tomme, eller er fylt med fargete kvadrater restene av brikkene som har falt ned. Vi bruker todimensjonale grid som i Semesteroppgave 1 (se vedlagt grensesnitt IGrid2D). Du kan anta at det finnes en klasse MyGrid2D<T> implements IGrid2D<T>, og at du kan lage nye grid med new MyGrid2D<T>(bredde, høyde). Lag en klasse TetrisBoard med en konstruktør som tar imot bredde og høyde. Klassen skal lagre et grid med elementer av typen TetrisCell (dette er de farge kvadratene på skjermen i spillet). Du kan velge å ha et grid som feltvariabel, eller å lage TetrisBoard slik at den arver fra MyGrid2D. Metodene til TetrisBoard skal vi lage i de neste deloppgavene. Tips: Husk at grid datastrukturen kan lagre bredde og høyde, du trenger ikke egne feltvariabler for dette. Husk også at IGrid2D/MyGrid2D er generiske og trenger riktig typeparameter. Både å ha brettet som feltvariabel og TetrisBoard extends MyGrid2D<TetrisCell> er OK og like bra. 2 poeng for å bruke både arv og feltvariabel. 2 for feil bruk av generics 1 for manglende private Eksempel med arv: public class TetrisBoard extends MyGrid2D<TetrisCell> { public TetrisBoard( int width, int height ) {

5 super ( width, height, null ); // siste parameter ikke nødvendig // om man ikke bruker arv, blir det noe sånt som // this.grid = new MyGrid2D<TetrisCell>(width, height); 6. putpiece (10 poeng) Siden vi allerede har en fin grid datastruktur, vil vi bruke denne ikke bare til brettet, men også for å representere brikkene (tetronimoene). Siden brikkene har ujevn form kan vi representere hver brikke ved å fylle inn noen celler i et grid av tetris celler IGrid2D<TetrisCell> slik at de tomme delene er null. (Se øverste del av figuren.) Brikkene er typisk små f.eks. 2 bred og 3 høy for en klassisk L formet brikke, med fire celler fylt og resten tomme/ null. Lag en metode public void putpiece(iposition pos, IGrid2D<TetrisCell> piece) i TetrisBoard som tar imot en posisjon og en brikke, og fyller inn felter i brettet. Denne skal brukes når en brikke har "landet" nederst på brettet. Husk at (0,0) posisjonen er forskjellig på brettet og i brikken nedre venstre hjørnet (0,0) hos brikken skal korrespondere med ( pos.getx(), pos.gety() ) på brettet. For eksempel: det øvre høyre hjørnet på den gule brikken i figuren er på posisjon (1,2) relativt til brikken, og skal inn på (3+1,14+2) på brettet. Metoden move() i IPosition kan hjelpe deg med å oversette nullpunktene. Feltene som er null i brikken skal ikke fylles inn på brettet, bare de som inneholder en TetrisCell (er farget). Du kan anta at posisjonen er slik at hele brikken havner innenfor brettet. IGrid2D inneholder getwidth() og getheight() metoder som er kanskje nyttige. Du kan også iterere over alle lovlige grid posisjoner i en forenklet for løkke. Skriv ditt svar her public void putpiece(iposition pos, IGrid2D<TetrisCell> piece ) { for ( int i = 0; i < piece.getwidth(); i ++) { for ( int j = 0; j < piece.getheight(); j ++) { TetrisCell cell = piece.get( i, j, null ); IPosition piecepos = pos.move( i, j ); if ( cell!= null && contains( piecepos )) { set( piecepos, cell ); // antar arv...

6 2 for move() uten å bruke returverdi 2 for å ikke sjekke om fargen er null 1 for å fikle med (x,y) i stedet for IPosition, opptil 4 for unødvendig komplisert løsning som bruker (x,y) i stedet for metodene i IPosition OK å ikke sjekke contains() for(iposition pos : piece) er en annen mulighet 7. canputpiece (5 poeng) Vi skal nå se om en gitt posisjon på brettet vil være en gyldig plassering av en brikke. Vi skal bruke dette senere til å se om spilleren kan flytte fallende brikken til siden, og/eller om den kan flyttes lenger ned. Lag en metode public boolean canputpiece(iposition pos, IGrid2D<TetrisCell> piece) som returnerer true om piece kan plasseres på posisjon pos uten noen av dens fargede felter overlapper med fargede felter på brettet eller havner utenfor brettet. Metoden vil være ganske lik putpiece det kan lønne seg å ta utgangspunkt i denne. Vi er bare interessert i fargede felter, dvs. posisjonene i brikken og på brettet som ikke inneholder null. (Det er altså OK om en brikke er posisjonert slik at et av feltene som er null havner delvis utenfor brettet.) Du kan sjekke om en posisjon er innenfor et IGrid2D med metoden contains(). public boolean canputpiece(iposition pos, IGrid2D<TetrisCell> piece ) { for ( int i = 0; i < piece.getwidth(); i ++) { for ( int j = 0; j < piece.getheight(); j ++) { if ( piece.get( i, j )!= null ) { IPosition piecepos = pos.move( i, j ); if (! this.contains( piecepos )) return false ; if (get( piecepos, null )!= null ) return false ; return true ;

7 2 for move() uten å bruke returverdi 2 for å ikke sjekke om fargen er null 2 for å ikke sjekke om brettet contains posisjon 2 for å ikke sjekke om brettet er opptatt (!= null) opptil 2 for å fikle med (x,y) i stedet for IPosition for(iposition pos : piece) er en annen mulighet 8. Linjer (6 poeng) Når en rekke (rad/linje) er fylt opp, skal den fjernes slik at det blir ledig plass til flere brikker. En rekke er full når ingen av feltene på samme y koordinat er null. Lag en metode public boolean isfullrow(int row) i TetrisBoard som går gjennom alle felter på samme rekke, og returner true hvis ingen er null. Lag også en metode public void deleterow(int row) i TetrisBoard som fjerner en linje fra brettet dvs. flytter innholdet på alle rekkene over (med høyere y koordinat) ett hakk ned. public boolean isfullrow( int row ) { for ( int x = 0; x < getwidth(); x ++) { if (get( x, row ) == null ) return false ; return true ; public void removerow( int y ) { for ( int i = y ; i < getheight() 1; i ++) { for ( int j = 0; j < getwidth(); j ++) set ( j, i, get( j, i + 1)); for (int x = 0; x < getwidth(); ++x) { set(x, getheight() 1, null); Noen har en av disse med på neste oppgave (også OK) 1 for å ikke tømme den øverste raden / ikke håndtere sletting av øverste raden

8 9. checkrows (6 poeng) Lag en metode public int checkrows() i TetrisBoard som Går gjennom hver rekke på brettet, og teller og fjerner (dvs. flytter ned rekkene over) rekker som er fulle Metoden skal returnere antall fulle rekker som ble funnet og fjernet. Hint: Husk at når du fjerner en rekke, forskyves alle rekkene over ett hakk nedover pass på at dette ikke fører til at du hopper over rekker når du skal sjekke hele brettet. public int checkrows() { int lines = 0; for ( int y = 0; y < getheight(); y ++) { if (isfullrow( y )) { removerow( y ); y ; lines ++; return lines ; 4 for å ikke bruke metodene fra forrige oppgave 1 for å hoppe over linjer når man fjerner noen (potensielt problem om man begynner på bunnen)

9 10. Steg for steg (8 poeng) Vi skal nå se kort på hvordan mekanikken fra TetrisBoard kan syes sammen til et Tetris spill. Vi husker at Tetris består av spillbrettet (med en del fargete felter som vokser opp nedenfra), samt en fallende brikke som spilleren skal plassere. Deklarér feltvariabler for en klasse TetrisGame. Klassen trenger å holde rede på tre ting: brettet (TetrisBoard), samt grid og posisjon til den fallende brikken. Du trenger bare lage feltvariablene (vi antar at de blir fylt inn på fornuftig vis). Lag en metode step(), som utfører ett steg av Tetris, ved hjelp av metodene du har laget i de tidligere deloppgavene. Det vil si: Finner en mulig ny posisjon for den fallende brikken ( IPosition har en metode south() som kan hjelpe med det). Ser om den nye posisjonen er et lovlig sted å plassere brikken på brettet Hvis ja, skal brikkens posisjon endres og vi er ferdig med steget Hvis nei, kan brikken ikke falle lengre, og den skal legges til ( putpiece ) på brettet på den gamle posisjonen. Etter at en brikke er plassert på brettet må vi Sjekke om vi har fylt ut noen rader på brettet, slik at de kan fjernes Lage ny brikke med ny posisjon anta at du har en metode newpiece() som gjør dette private TetrisBoard board ; private IGrid2D<TetrisCell> piece; private IPosition piecepos ; public void step() { IPosition newpiecepos = piecepos.south(); if (! board.canputpiece( newpiecepos, piece )) { board.putpiece( piecepos, piece ); int linesdeleted = board.checkrows(); newpiece(); else { piecepos = newpiecepos ; Opptil 4 for å gjøre det mer komplisert enn nødvendig 2 for å ikke oppdatere posisjonen

10 11. MyFraction (5 poeng) Lag en klassedeklarasjon for MyFraction som skal implementere IFraction. Lag feltvariabler for teller og nevner (begge kan være av typen long lange heltall), og lag en konstruktør som tar imot teller og nevner. I likehet med f.eks. Position klassen tenker vi at brøk objektene ikke endres etter at de er opprettet. Husk å sjekke parameterverdiene til konstruktøren før du bruker dem, om nødvendig. public class MyFraction implements IFraction { private final long numerator ; private final long denominator ; public MyFraction( long num, long denom ) { if ( denom == 0) throw new IllegalArgumentException(); numerator = num ; denominator = denom ; 1 for ikke final 1 for ikke private 2 for å ikke sjekke denom!= 0 2 for trøbbel med implements IllegalArgumentException eller ArithmeticException er passende Selv om det står long i oppgaven, er int også OK. 12. Equals (5 poeng) En vanlig måte å lage equals metoden på er på bare sammenlikne feltvariablene parvis det er det Eclipse gjør hvis du ber den autogenerere equals. Kan du se for deg et mulig problem med å implementere equals for MyFraction med en slik direkte sammenlikning av feltvariabler? Forklar kort, gjerne med eksempler.

11 Ja, dette vil ikke virke, fordi f.eks. ½ skal være lik 2/4 selv om feltvariablene er parvis ulike. (Samme abstrakte verdi har flere mulige konkrete representasjoner.) (En mulig løsning er å kryssmultiplisere brøkene før sammenlikning) 13. Forenkling (5 poeng) Vi kjenner fra matematikken at hvis brøkens teller og nevner har en felles nevner (er delelig på samme tall), så kan den deles vekk og brøken forenkles. For eksempel, 4/8 = (2*2)/(2*2*2) som forenkles til 1/2; 9/9 forenkles til 1/1, og så videre. En annen forenkling er at å snu fortegnet over og under brøkstreken om dersom nevneren er negativ da ender man opp med å alltid ha positiv nevner (nevneren kan som kjent ikke være 0). For eksempel kan man forenkle ( 1)/( 2) til 1/2 og 1/( 2) til ( 1)/2. En enkel måte å finne felles nevnere på er Euclids algoritme, som finner den største felles nevneren til to heltall (dvs. det største heltallet som begge tallene kan deles på). Du kan anta at du har en implementasjon av denne i metoden long gcd(long a, long b) (gcd greatest common divisor). For eksempel: (Dette er bullshit gcd inkluderer alle mindre felles nevnere) long d = gcd(15, 75); // d = 5, dvs. 15/75 kan forenkles til (15/5)/(75/5) = 3/15 d = gcd(3, 15); // d = 3, dvs. 3/15 kan forenkles til 1/5 d = gcd(1, 5); // d = 1, dvs. 1/5 kan ikke forenkles mer Endre konstruktøren din for MyFraction slik at Nevneren i brøken alltid er et positivt tall Telleren og nevneren ikke har noen felles nevnere (unntatt 1, som man alltid kan dele på)

12 Husk at det kan være flere fellesnevnere mellom teller og nevner, og at du ikke kan forenkle mer når gcd gir 1 som svar. public MyFraction( long num, long denom ) { if ( denom == 0) throw new IllegalArgumentException (); else if ( denom < 0) { // normaliser fortegn num = num ; denom = denom ; long d = gcd ( num, denom ); // fellesnevner numerator = num / d ; denominator = denom / d ; Siden Anya har vært forvirret om matematikken her, er det også OK med: long d = gcd(num, denom); while(d!= 1) { num = num / d; denom = denom / d; d = gcd(num, denom; 2 for manglende forenkling av negativ nevner 2 for manglende forenkling av fellesnevner 1 for manglende sjekk for 0

13 14. Datainvariant (6 poeng) For et MyFraction objekt er det nå mange kombinasjoner av verdier for feltvariablene som aldri skal forekomme ( nevner=0 er et velkjent eksempel, forenkling av brøken i forrige deloppgave gjør enda flere kombinasjoner umulige). Skriv ned en datainvariant (med ord) som beskriver hva som er gyldige tellere/nevnere for en MyFraction (gitt representasjonen med forenklet brøk). Skriv også en metode checkstate som sjekker at kombinasjonen av teller og nevner er gyldig / i samsvar med datainvarianten, og kaster en IllegalStateException hvis ikke. Nevner må være > 0 Teller og nevner må ha ingen fellesnevnere public static void checkstate(myfraction frac ) { if ( frac. denominator == 0) throw new IllegalStateException( "Division by zero" ); if ( frac. denominator < 0) throw new IllegalStateException( "Not normalized sign" ); if ( gcd ( frac. numerator, frac. denominator )!= 1) throw new IllegalStateException( "Not normalized" ); Her er de trenet til å lage checkstate static, men det er ikke nødvendig så lenge den ellers er fornuftig Ikke nødvendig å skille == 0 og < 0 2 poeng for hver av ikke null, ikke negativ og ikke fellesnevnere (halvparten hvis forklaring eller checkstate mangler) 1 for manglende melding i exception

14 15. Equals igjen (4 poeng) Gitt at vi nå alltid har en forenklet brøk i MyFraction, blir problemene rundt equals metoden noe annerledes enn tidligere? Forklar kort. Dette løser problemet. Hver brøk har nå bare én mulig representasjon, og equals kan implementeres med å sammenlikne feltvariablene. 16. Egenskaper (6 poeng) Brøkregning / rasjonale tall har en mengde gode matematiske egenskaper, som du også kjenner fra regning med naturlige eller reelle tall. For eksempel, assosiativitet ( (a + b) + c = a + (b + c) ) og kommutativitet (a + b = b + a) for multiplikasjon og addisjon; og regler for regning med 0 og 1 (a + 0 = a, a * 1 = a, a * 0 = 0, a a = 0). Se gjennom metodene i IFraction grensesnittet, og tenk ut tre egenskaper for regneoperasjonene. Skriv disse som egenskapsmetoder som tar ett eller flere IFraction objekter, og tester egenskapene med f.eks. assertequals(). For eksempel: // a + (b + c) == (a + b) + c public static void plusassocproperty(ifraction a, IFraction b, IFraction c ) { assertequals ( a.plus( b.plus( c )), a.plus( b ).plus( c )); // a a == 0 public static void minusnullproperty (IFraction a ) { assertequals ( a.minus( a ), a.valueof(0)); // a * b == b * a public static void timescommutproperty(ifraction a, IFraction b ) { assertequals ( a.times( b ), b.times( a )); Mange muligheter for egenskaper. 2 poeng for hver 2 for å bruke MyFraction i stedet for IFraction 1 eller 2 for generell trøbbel med assertequals e.l. 1 hvis det mangler beskrivende navn og det heller ikke er forklarende kommentar OK om metodene ikke er public static void OK med boolske metoder om de brukes slik i oppgave 18

15 17. Generering av brøk (4 poeng) For å kunne utnytte egenskapsmetodene fra forrige oppgave til testing, må vi ha en god mengde testdata forskjellige brøker som vi kan sjekke at egenskapene virkelig holder for. I vedlegget finner du grensesnittet IGenerator<T> (som du kanskje kjenner igjen fra Lab 3). Du skal nå lage en klasse FractionGenerator som implementerer IGenerator for IFraction verdier. Skriv selve klassedeklarasjonen (første linjen; class... {) Implementer generate(random r) metoden. Den skal opprette nye MyFraction objekter basert på tilfeldighetsgeneratoren (bruk f.eks. nextint() ), og returnere disse. (Resten av klassen trenger du ikke implementere.) Husk at ikke alle tilfeldige verdier nødvendigvis passer som teller/nevner i en brøk... public class FractionGenerator implements public IFraction generate(random r ) { long num = r.nextlong(); long denom = r. nextlong (); if ( denom == 0) denom = 1; return new MyFraction( num, denom ); 2 for å trøbbel med implements eller generics 1 for å bruke MyFraction der det skal være IFraction eller omvendt 1 for å ikke håndtere null som nevner Spiller ingen rolle om det brukes long eller int

16 18. Test for MyFraction (5 poeng) Lag en JUnit testmetode som tester en av egenskapene du har laget med tilfeldig data fra brøk generatoren (du kan anta at du allerede har opprettet en generator i variabelen fracgen ). Lag testen slik at egenskapen blir sjekket N public void plusassoctest() { for ( int i = 0; i < N ; i ++) { plusassocproperty ( fracgen.generate(), fracgen.generate(), fracgen.generate()); IGenerator<IFraction> fracgen = new FractionGenerator(); int N = 100;

INF101 0 Videregående programmering (Programmering 2)

INF101 0 Videregående programmering (Programmering 2) INF101 0 Videregående programmering (Programmering 2) Oppgaver Oppgavetype Vurdering Innledning Dokument Automatisk poengsum 1 Posisjoner Fyll inn tall Automatisk poengsum 2 Typer og variabler 1 Flersvar

Detaljer

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs BOKMÅL Side 1 av 7 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTINUASJONSEKSAMEN

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson

Detaljer

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 Delkapittel 3.1 Grensesnittet Liste Side 1 av 11 Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 3.1 En beholder 3.1.1 En beholder En pappeske er en beholder En beholder er noe vi kan legge ting

Detaljer

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%] Bokmål Det Matematisk-naturvitenskapelege fakultet UNIVERSITETET I BERGEN Eksamen i emnet INF101/INF101F Programmering II Tirsdag 28. september 2010, kl. 09-12. Tillatte hjelpemidler: alle skrevne og trykte.

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Tirsdag 2. juni 2009, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Trond Aalberg. Kontaktperson under

Detaljer

IN1000 Obligatorisk innlevering 7

IN1000 Obligatorisk innlevering 7 IN1000 Obligatorisk innlevering 7 Frist for innlevering: 23.10. kl 12:00 Introduksjon I denne innleveringen skal du lage et program som simulerer cellers liv og død. Dette skal du gjøre ved hjelp av en

Detaljer

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00 Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I FAG

Detaljer

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1 Delkapittel 2.1 Plangeometriske algoritmer Side 1 av 7 Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1 2.1 Punkter, linjesegmenter og polygoner 2.1.1 Polygoner og internett HTML-sider kan ha

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Lørdag 15. desember 2001, kl. 09.00-14.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

INF1010 - Seminaroppgaver til uke 3

INF1010 - Seminaroppgaver til uke 3 INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar

Detaljer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Repitisjonskurs. Arv, Subklasser og Grensesnitt Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett

Detaljer

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Stack Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi ta ut et element, tar

Detaljer

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Stack Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi ta ut et element, tar

Detaljer

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Arv. Book book1 = new Book(); book1. title = Sofies verden class Book { String title; } class Dictiona ry extends Book { Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 5. Oppgave 1 Teori: Referanser [10%]

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 5. Oppgave 1 Teori: Referanser [10%] Bokmål Det Matematisk-naturvitenskapelege fakultet UNIVERSITETET I BERGEN Eksamen i emnet INF101/INF101F Programmering II Mandag 24. september 2012, kl. 09-14. Tillatte hjelpemidler: alle skrevne og trykte.

Detaljer

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten Interface, Abstract Class... i-120 : H-98 2a. Abstraksjon i JAVA: 1 Det finnes ingenting som kan gjøres med interface i-120 : H-98 2a. Abstraksjon i JAVA: 2 som kan gjøres med bruk av unntak i-120 : H-98

Detaljer

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet Eksamen i emnet INF101/INF101-F - Programmering 2 Fredag 10. juni 2011, kl. 09-14 Bokmål Tillatte hjelpemidler: alle skrevne og trykte.

Detaljer

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

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

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

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

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 6 Bokmål Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert

Detaljer

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus // class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen

Detaljer

Algoritmer og datastrukturer Eksamen

Algoritmer og datastrukturer Eksamen Eksamen - Algoritmer og datastrukturer - Høgskolen i Oslo og Akershus - 27.11.2012 Side 1 av 6 Algoritmer og datastrukturer Eksamen 27.11.2012 Eksamensoppgaver Råd og tips: Bruk ikke for lang tid på et

Detaljer

Eksamen IN1010/INF1010 våren 2018

Eksamen IN1010/INF1010 våren 2018 Om eksamen Eksamen IN1010/INF1010 våren 2018 PRAKTISK INFORMASJON Hvis du synes noen deler av oppgaven er uklare, kan du legge dine egne forutsetninger til grunn og gjøre dine egne rimelige antagelser.

Detaljer

Løpende strekmann Erfaren Videregående Python PDF

Løpende strekmann Erfaren Videregående Python PDF Løpende strekmann Erfaren Videregående Python PDF Introduksjon I denne oppgaven skal du lage et spill der du styrer en strekmann som hopper over hindringer. Steg 1: Ny fil Begynn med å lage en fil som

Detaljer

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

BOKMÅL Side 1 av 6. EKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Fredag 6. juni 2008 Kl

BOKMÅL Side 1 av 6. EKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Fredag 6. juni 2008 Kl BOKMÅL Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I FAG

Detaljer

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF, 22. mai 23 Prøveeksamen 23 (Eksamen 2. juni 22) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Oppgave a Tegn klassehierarkiet for de 9 produkttypene som er beskrevet over. Inkluder også

Detaljer

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen. Tetris Introduksjon Processing Introduksjon Lag starten på ditt eget tetris spill! Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å

Detaljer

TDT4102 - Prosedyre- og objektorientert programmering

TDT4102 - Prosedyre- og objektorientert programmering Konteringseksamen i TDT4102 - Prosedyre- og objektorientert programmering Lørdag 8. august 2009 Kontaktperson under eksamen: Hallvard Trætteberg Eksamensoppgaven er utarbeidet av Trond Aalberg Språkform:

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Tirsdag 2. juni 2009, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Trond Aalberg. Kontaktperson under

Detaljer

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill! Tetris Skrevet av: Kine Gjerstad Eide Kurs: Processing Introduksjon Lag starten på ditt eget tetris spill! Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett

Detaljer

Kapittel 8: Programutvikling

Kapittel 8: Programutvikling Kapittel 8: Programutvikling Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk

Detaljer

Stack. En enkel, lineær datastruktur

Stack. En enkel, lineær datastruktur Stack En enkel, lineær datastruktur Hva er en stack? En datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Regler for oppførsel Java-programmering JUnit-testing Eclipse Opprette JUnit-test og kjøre den 1 Pensum Testing dekkes ikke av Liang! Er en viktig del av

Detaljer

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

Detaljer

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl. 09.00 13.

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl. 09.00 13. BOKMÅL Side 1 av 5 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTERINGSEKSAMEN

Detaljer

OPPGAVE 5b og 8b Java Kode

OPPGAVE 5b og 8b Java Kode OPPGAVE 5b og 8b Java Kode public class Kant boolean behandlereturavbil() BehandleReturAvBil behandler = new BehandleReturAvBil(this); String regnr; int kmstand, tanknivaa; boolean erskadet; // 1: Få verdiene

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Mandag 6. august 2012, kl. 15:00-19:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Rune Sætre. Kontaktperson under

Detaljer

Rekursjon som programmeringsteknikk

Rekursjon som programmeringsteknikk Rekursjon Kap.7 Sist oppdatert 15.02.10 Rekursjon som programmeringsteknikk 10-1 Rekursiv tenkning Rekursjon er en programmeringsteknikk der en metode kan kalle seg selv for å løse problemet. En rekursiv

Detaljer

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4» < T extends Comparable > Indre klasser mm. «Det du bør ha hørt om før oblig 4» Strukturen i oblig 3 null null null null Personbeholder pl null null Person p "Adnan" michael@ifi.uio.no INF1010 21. februar

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet er på

Detaljer

EKSAMEN I FAG TDT4100 Objektorientert programmering. Fredag 6. juni 2008 Kl. 09.00 13.00

EKSAMEN I FAG TDT4100 Objektorientert programmering. Fredag 6. juni 2008 Kl. 09.00 13.00 NTNU Norges teknisknaturvitenskapelige universitet Side 1 av 11 Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap BOKMÅL EKSAMEN I FAG

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på

Detaljer

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

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne Side 1 av 7 Bokmålstekst Emne: PROGRAMMERING (nytt pensum, 10 studiep.) Grupper: laa, lab, lac, lia, lib, lic Eksamensoppgaven best~r av: Tillatte hjelpemidler: Antall sider (inkl. forsiden): 7 Alle trykte

Detaljer

Løsnings forslag i java In115, Våren 1996

Løsnings forslag i java In115, Våren 1996 Løsnings forslag i java In115, Våren 1996 Oppgave 1a For å kunne kjøre Warshall-algoritmen, må man ha grafen på nabomatriseform, altså en boolsk matrise B, slik at B[i][j]=true hvis det går en kant fra

Detaljer

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak LISTER Vanligste datastruktur Mange implementasjonsmåter (objektkjeder, array...) Operasjoner på listen definerer forskjellige typer lister (LIFO, FIFO,...) På norsk bruker vi vanligvis ordet «liste» for

Detaljer

INF1010. Grensesnittet Comparable<T>

INF1010. Grensesnittet Comparable<T> INF1010 21. februar 2013 Grensesnittet Comparable Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo Interface med parametre interface Utkledd { // T er klassen jeg er utkledd

Detaljer

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre Oppsummering Kort gjennomgang av klasser etc ved å løse halvparten av eksamen 2012. Klasser Interface Subklasser Klasseparametre Datastrukturer Hva er problemet? Oppgaven Emballasjefabrikken Renpakk skal

Detaljer

Del 3: Evaluere uttrykk

Del 3: Evaluere uttrykk Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret

Detaljer

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

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; } 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; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

En algoritme for permutasjonsgenerering

En algoritme for permutasjonsgenerering Innledning La oss tenke oss at vi har en grunnskole-klasse på 25 elever der enkelte av elever er uvenner med hverandre. Hvis uvenner sitter nær hverandre blir det bråk og slåssing. Er det mulig å plassere

Detaljer

Algoritmer og datastrukturer Eksamen 22. februar 2011

Algoritmer og datastrukturer Eksamen 22. februar 2011 Side 1 av 5 Algoritmer og datastrukturer Eksamen 22. februar 2011 Eksamenstid: 5 timer Hjelpemidler: Alle trykte og skrevne + håndholdt kalkulator som ikke kommuniserer. Faglærer: Ulf Uttersrud Råd og

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

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

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale. Høgskolen i Telemark Fakultet for allmennvitenskapelige fag EKSAMEN I 6108/6108N PROGRAMMERING I JAVA 21. 12. 2015 Tid: 4 timer Sidetall: Hjelpemiddel: Merknader: Framside + 5 sider Alt trykt og skriftlig

Detaljer

IN1010 V19, Obligatorisk oppgave 2

IN1010 V19, Obligatorisk oppgave 2 IN1010 V19, Obligatorisk oppgave 2 Innleveringsfrist: Tirsdag 26.02 kl 23.59 Introduksjon I de obligatoriske oppgavene fremover skal du lage et system som holder styr på leger, pasienter, resepter og legemidler.

Detaljer

Obligatorisk oppgave 4: Lege/Resept

Obligatorisk oppgave 4: Lege/Resept Obligatorisk oppgave 4: Lege/Resept INF1010 Frist: mandag 27. mars 2017 kl. 12:00 Versjon 1.0 (111c894 ) Innhold 1 Innledning 1 1.1 Begreper................................ 2 2 Pasienter 2 3 Leger og lister

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Lørdag 22. mai 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Trond Aalberg. Kontaktperson under

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1020 Algoritmer og datastrukturer Eksamensdag: 15. desember 2004 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 6 sider.

Detaljer

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet TGA Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte En større problemstilling I uke 4 skrev vi et program for å sjekke om et gen (en tekstfil) inneholdt ordet "TGA"

Detaljer

Algoritmer og datastrukturer Løsningsforslag

Algoritmer og datastrukturer Løsningsforslag 1 Algoritmer og datastrukturer Løsningsforslag Eksamen 29. november 2011 Oppgave 1A Verdien til variabelen m blir lik posisjonen til den «minste»verdien i tabellen, dvs. bokstaven A, og det blir 6. Oppgave

Detaljer

INF1010 våren januar. Objektorientering i Java

INF1010 våren januar. Objektorientering i Java INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort

Detaljer

EKSAMEN. Algoritmer og datastrukturer

EKSAMEN. Algoritmer og datastrukturer EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2009 kl 09.00 til kl 13.00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Kalkulator Faglærer: Gunnar Misund

Detaljer

Informasjon Eksamen i IN1000 høsten 2017

Informasjon Eksamen i IN1000 høsten 2017 Informasjon Eksamen i IN000 høsten 207 Tid 8. desember kl. 09.00 (4 timer) Faglærerne vil besøke lokalet ca kl 0. Oppgavene Oppgave 2b og 2c er flervalgsoppgaver. Her får man det angitte antall poeng om

Detaljer

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

MAT-INF 1100: Obligatorisk oppgave 1

MAT-INF 1100: Obligatorisk oppgave 1 3. september, 2004 MAT-INF 1100: Obligatorisk oppgave 1 Innleveringsfrist: 17/9-2004, kl. 14:30 Informasjon Den skriftlige besvarelsen skal leveres på ekspedisjonskontoret i 7. etg. i Niels Henrik Abels

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen : 09.00

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO FASIT UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen :

Detaljer

Det Matematisk-naturvitenskapelege fakultet UNIVERSITETET I BERGEN Eksamen i emnet INF101/INF101F Programmering II Mandag 11. juni 2012, kl

Det Matematisk-naturvitenskapelege fakultet UNIVERSITETET I BERGEN Eksamen i emnet INF101/INF101F Programmering II Mandag 11. juni 2012, kl Bokmål Det Matematisk-naturvitenskapelege fakultet UNIVERSITETET I BERGEN Eksamen i emnet INF101/INF101F Programmering II Mandag 11. juni 2012, kl. 09-14. Tillatte hjelpemidler: alle skrevne og trykte.

Detaljer

Eksamen Oppgave a) public class DayTime { public final int hours, minutes;

Eksamen Oppgave a) public class DayTime { public final int hours, minutes; Eksamen 2012 Del 1 - Innkapsling (20%) Gitt følgende klasse, som representerer et tidspunkt på dagen: public class DayTime { public final int hours, minutes; public DayTime(int hours, int minutes) { this.hours

Detaljer

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

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Oppgave 1 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

Detaljer

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. Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på

Detaljer

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. Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på

Detaljer

Informasjon Prøveeksamen i IN1000 høsten 2018

Informasjon Prøveeksamen i IN1000 høsten 2018 Prøveeksamen IN1000-INF1001-H18 Informasjon Prøveeksamen i IN1000 høsten 2018 Tid Fra tirsdag 6.11 kl. 14:15 til tirsdag 13.11 kl. 12:00 (Normal eksamenstid er 4 timer) Oppgavene Oppgave 2b og 2c er flervalgsoppgaver.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 6. juni 2006 Tid for eksamen: 1430 1730 Oppgavesettet er på 6 sider. Vedlegg: INF1010 Objektorientert programmering

Detaljer

EKSAMEN med løsningsforslag

EKSAMEN med løsningsforslag EKSAMEN med løsningsforslag Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: Eksamenstid: 20. mai 2009 kl 09.00 til kl 13.00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Kalkulator Faglærer:

Detaljer

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Oppgave 1 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new

Detaljer

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1 Delkapittel 9.1 Generelt om balanserte trær Side 1 av 13 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1 9.1 Generelt om balanserte trær 9.1.1 Hva er et balansert tre? Begrepene balansert og

Detaljer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 Delkapittel 9.2 Rød-svarte og 2-3-4 trær Side 1 av 16 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 9.2 Rød-svarte og 2-3-4 trær 9.2.1 B-tre av orden 4 eller 2-3-4 tre Et rød-svart tre og et

Detaljer

LO191D/LC191D Videregående programmering

LO191D/LC191D Videregående programmering LO191D/LC191D Videregående programmering Eksamen mai 2012 Løsningsforslag Oppgave 1 Klassen Destinasjon: // Oppgaven er uklar på hva som skal inn i klassen Destinasjon. // Her følger en minimumsutgave

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012 INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver

Detaljer

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI Oppgave 1 INF1000 Uke 13 Gjennomgang av prøveeksamen fra høsten 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new double[1];

Detaljer

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java INF1010 våren 2017 Onsdag 25. januar Litt om unntak i Java Stein Gjessing Nytt tema: Feilhåndtering (IO: Innlesing/Utskrift) n En metode som kan komme til å gjøre en IO-feil på fil må enten behandle denne

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Abstrakte klasser og grensesnitt, redefinering av metoder Java-programmering Arv og bruk av abstrakte klasser Eclipse Undersøke instanser i Eclipse 1 Dagens

Detaljer

Eksamensoppgaver 2014

Eksamensoppgaver 2014 Eksamensoppgaver 2014 Først kommer alle de relevante små-oppgavene og deretter den store oppgaven. Oppgave 1 (4 p) a) Hva er verdien til tall etter at følgende kode er utført? tall = (5+3)*2 tall = tall+2

Detaljer

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Forklaring til programmet AbstraktKontoTest.java med tilhørende

Detaljer

Obligatorisk oppgave 5: Labyrint

Obligatorisk oppgave 5: Labyrint Obligatorisk oppgave 5: Labyrint INF1010 Frist: mandag 24. april 2017 kl. 12:00 Versjon 1.0 (1709ba6 ) Innhold 1 Innledning 2 2 Notasjon og terminologi 3 2.1 Formelle definisjoner.........................

Detaljer

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

Detaljer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

Detaljer

MAT-INF 1100: Obligatorisk oppgave 1

MAT-INF 1100: Obligatorisk oppgave 1 8. september, 2005 MAT-INF 1100: Obligatorisk oppgave 1 Innleveringsfrist: 23/9-2005, kl. 14:30 Informasjon Den skriftlige besvarelsen skal leveres på ekspedisjonskontoret i 7. etg. i Niels Henrik Abels

Detaljer

Programmering Høst 2017

Programmering Høst 2017 Programmering Høst 2017 Tommy Abelsen Ingeniørfag - Data Innledning Dette er et dokument med litt informasjon og eksempler om kontrollstrukturer, samt oppgaver til forskjellige kontrollstrukturer. Spør

Detaljer

Eksamen Objektorientert Programmering 2011

Eksamen Objektorientert Programmering 2011 Eksamen Objektorientert Programmering 2011 Høgskolen i Østfold 2011-05-11 Emnekode ITF10611 Emne Objektorientert Programmering Dato 2011 05-11 Eksamenstid 09:00-13:00 Hjelpemidler To A4-ark (fire sider)

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8

Detaljer