TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Relevanta dokument
TENTAMEN I DATAVETENSKAP

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN. Kurs: Applikationsutveckling i Java 5DV135. Ansvarig lärare: Johan Eliasson. HT12 Datum: Tid: kl

Tentamen i Grundläggande programmering STS, åk 1 lördag

DELPROV 1 I DATAVETENSKAP

Tentamen i Grundläggande programmering STS, åk 1 fredag

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Grundläggande programmering STS, åk

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. HT-15 Datum: Tid: kl

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Tentamen i Grundläggande programmering STS, åk

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Tentamen i Objektorienterad modellering och design

Föreläsning 10. ADT:er och datastrukturer

Objektorienterad programmering i Java

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Laboration 1 - Grunderna för OOP i Java

Tentamen i Grundläggande programmering STS, åk 1 fredag

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen i Objektorienterad modellering och design Helsingborg

Kurskod D0010E Datum Skrivtid 5tim

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Tentamen i Algoritmer & Datastrukturer i Java

Klassdeklaration. Metoddeklaration. Parameteröverföring

Agenda. Objektorienterad programmering Föreläsning 13

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Föreläsning 5-6 Innehåll

Föreläsning REPETITION & EXTENTA

Tentamen Programmering fortsättningskurs DIT950

TENTAMEN OOP

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Classes och Interfaces, Objects och References, Initialization

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

PROGRAMMERING-Java TENTAMINA

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

2D1339 Programkonstruktion för F1, ht 2004

Föreläsning 3. Stack

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Exempel på användning av arv: Geometriska figurer

Klasshierarkier - repetition

Tentamen i Programmeringsteknik MN

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

OOP Tentamen

Föreläsning 4 Innehåll

Föreläsning 13 Innehåll

Länkade strukturer, parametriserade typer och undantag

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

2D1339 Programkonstruktion för F1, ht 2003

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Tentamen, EDAA20/EDA501 Programmering

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen Datastrukturer för D2 DAT 035

Objektorienterad programmering, Java, 5p TDBA63

Lösningsförslag tentamen FYTA11 Java

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

Föreläsning 3. Stack

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

TDDD78 Viktiga begrepp, del 2

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 2. Länkad lista och iterator

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 15: Repetition DVGA02

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Transkript:

UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt för godkänt) Börja varje uppgift på nytt papper. Skriv ditt namn och uppgiftens nummer på varje papper. Skriv bara på ena sidan av papperet. Sortera dina papper efter uppgiftsnummer. Kryssa för de uppgifter du lämnar in. Lösningarna skall vara snyggt och prydligt nedskrivna. Tankegången skall vara lätt att följa. Alla antaganden som inte är uppenbara skall redovisas. Javakod krävs där implementation uttryckligen anges. Tips! Försök på alla uppgifter! Observera att uppgifterna inte nödvändigtvis är ordnade efter svårighetsgrad. Uppgifter kan vara felformulerade, fråga om du är osäker eller tycker att något verkar konstigt. Redovisa dina resonemang så är det lättare att bortse från skrivfel. Om du inte kommer ihåg den exakta syntaxen, så gör ett antagande och redovisa detta. Det är viktigt att du löser den givna uppgiften! Lycka till! UMEÅ UNIVERSITET 901 87 UMEÅ Tel.: 090-786 67 35, 62 59, 77 08 e-mail: jubo@cs.umu.se, thomasj@cs.umu.se, marie@cs.umu.se

Uppgift 1 (4 poäng) Evaluera följande boolska uttryck. För varje uttryck utgå från att x=10, y=20 och z=30. 1) x < 10 x > 10 2) x > y && y > x 3) (x < y + z) && (x + 10 <= 20) 4) z - y == x && Math.abs(y - z) == x 5) x < 10 && x > 10 6) x > y y > x 7)!( x < y + z)!(x + 10 <= 20) 8)!(x == y) && (x!= y) && (x > y y > x) Uppgift 2 (1+1+1+1=4 poäng) Vilket värde kommer variabeln sum att ha efter respektive nästade loop? Redovisa hur du kommer fram till ditt svar. a) int sum = 0; for (int i = 0; i <= 5; i++) for (int j = 0; j <= 5; j++) sum = sum + i; b) int sum = 0; int j = 0; do j++; for (int i = 5; i > j; i--) sum = sum + (i+j); while (j < 11); c) int sum = 0; int j; int i = 0; while (i < 5) j = 5; while (i!= j) sum = sum + j; j--; i++; d) int sum = 0; for (int i = 0; i <= 10; i++) for (int j = 10; j > 2*i; j--) sum = sum + (j-i); 2(7)

Uppgift 3 (4 poäng) I Java sker all parameteröverföring med s.k. pass-by-value. Effekten blir dock olika beroende på om parametern är av primitiv typ eller en referens. Utred hur parameteröverföringen fungerar med avseende på denna skillnad, gärna med kompletterande exempel. Uppgift 4 (6 poäng) I denna uppgift ska du göra en objektorienterad design för spelet sänka skepp. I spelet skall datorn spela emot en mänsklig användare. I sänka skepp har varje spelare en spelplan med 10x10 rutor där spelaren placerar ut fem stycken skepp : ett hangarfartyg som tar upp fem rutor, ett slagskepp på fyra rutor, två kryssare på tre rutor var och en ubåt på två rutor. 1 2 3 4 5 6 7 8 9 10 A B C D E F G H I J Spelet spelas sedan i omgångar. Varje spelare får gissa en ruta (t ex B5) där den förmodar att motspelaren har gömt ett skepp. Om spelaren träffar ett skepp får spelaren gissa en gång till tills den missat. Den spelaren som först har sänkt motspelarens alla skepp har vunnit. Du ska inte implementera metoderna. Varje klass, metod och attribut måste dock beskrivas på en sådan nivå att syftet blir lätt att förstå. 3(7)

Uppgift 5 (2+2+2+4=10 poäng) Följande applet, som ritar ut geometriska former, är given: import java.applet.*; import java.awt.*; import java.util.random; // This applet creates and draws // multiple random shapes. public class RandomDraw extends Applet final int MAX_SHAPE = 50; Shape[] shapes = new Shape[MAX_SHAPE]; // Creates and stores multiple shapes. public void init() shapes = new Shape[MAX_SHAPE]; for (int index = 0; index < MAX_SHAPE; index++) shapes[index] = ShapeFactory.getRandomShape(); // method init // Draws all of the shapes on the applet. public void paint (Graphics page) for (int index = 0; index < MAX_SHAPE; index++) shapes[index].draw (page); // method paint // class Random_Draw Din uppgift blir att implementera klasser som representerar och skapar dessa geometriska former. Till ditt förfogande har du följande klass : public class Shape private Color color; public Shape (Color color) // Specifies the color. this.color = color; // constructor Shape public Color getcolor () // Return the color of this shape. return color; // method getcolor Obs! Fortsättning på nästa sida public void draw (Graphics page) // Draws the shape. 4(7)

// method draw // class Shape a) Härled från Shape en klass Square som har sitt övre vänstra hörn i en angiven punkt och önskad bredd (=höjd). b) Härled från Shape en klass Circle som är en oval med origo i en angiven punkt och önskad radie (höjd = bredd). c) Implementera klassen ColorFactory med en statisk metod getrandomcolor som levererar en slumpmässig färg. d) Implementera klassen ShapeFactory som tar fram en slumpmässig geometrisk figur (här bara Square eller Circle) med slumpmässig färg och storlek. ShapeFactory skall använda ColorFactory och fungera i ovanstående Applet. Du får gärna använda följande kod för att generera slumptal i ShapeFactory och ColorFactory: Random rand = new Random(); // Returns a random integer between 1 and max. public int random_int (int max) return Math.abs(rand.nextInt()) % max + 1; // method random_int För att slumpa ut färgen kan man då göra på följande sätt final int COLOR_MAX = 255; // Creates a random color using random RGB // values. Color c = new Color (random_int (COLOR_MAX), random_int (COLOR_MAX), random_int (COLOR_MAX)); Se även medföljande utdrag ur API-dokumentationen om klassen Graphics. 5(7)

Uppgift 6 (2+1+1+1=5 p) a) Varje Java-applikation måste innehålla en metod med följande metodhuvud public static void main(string[] args) Varför måste den se ut på detta sätt? b) Om en klass är abstrakt så kan den inte samtidigt vara deklarerad final. Varför? c) Det reserverade ordet super används för att referera till basklassen (superklassen). Vad är det för skillnad mellan att skriva super( ); och super.metod( ); d) Ge motsvarande förklaring för det reserverade ordet this. Uppgift 7 (5+1+1=7 p) En vanligt sätt att implementera datastrukturer i programspråk är att använda så kallade länkade listor. En länkad lista består av ett antal noder, som innehåller dels det data som man vill lagra i datastrukturen, dels en eller flera referenser till andra noder. En nod i en enkellänkad lista har en referens till nästföljande nod, såsom visas i bilderna nedan. Observera att den sista referensen är null för att markera slutet på listan. Klassdiagram för klassen Nod, som kan innehålla heltal: Nod int data Nod next Så här kan ett antal noder vara länkade under körningen av ett program: head data: 7 data: -44 data: 34 next next next null Referensen 'head' pekar på listans början, och är av typen 'referens till Nod'. 6(7)

En stack är en datastruktur som kan implementeras med hjälp av en enkellänkad lista. En stack fungerar som en trave böcker: det går att lägga till och ta bort saker ur den, men det är bara det översta elementet som är åtkomligt. Om man vill komma åt ett element längre ned så måste man ta bort alla ovanför, ett och ett. De funktioner man kan utföra på en stack är bland annat: push pop isempty lägger till ett element överst läser av (och tar bort) översta elementet kollar om stacken är tom a) Skriv en implementation för klassen Nod, som skall kunna innehålla ett heltal. Skriv sedan klassen Stack, med ovanstående metoder, som använder en lista av noder för att lagra heltal. Följande huvudprogram skall fungera: public static void main(string [] args) Stack s = new Stack(); s.push(34); s.push(-44); s.push(7); while (!s.isempty()) System.out.println(s.pop()); b) Vad blir utskriften från ovanstående program? c) Vad händer i ditt program om man gör pop på en stack som är tom? Hur tycker du att man borde ta hand om detta problem? 7(7)