Tentamen FYTA11 Javaprogrammering

Relevanta dokument
Lösningsförslag tentamen FYTA11 Java

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Laboration 15 Grafiskt användargränssnitt

Lösningsförslag FYTA11 Javaprogrammering

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Lösningar för tenta 3 DAT043,

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Laboration 24 Databasen MySQL och java

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Lösningsförslag till tentamen

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

Tentamen i Objektorienterad programmering E

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

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

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Modellsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Tentamen OOP

MVC-mönstret. model-view-control i Swing

Lab5 för prgmedcl04 Grafik

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

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Tentamen FYTA11 Javaprogrammering

Tentamen i Objektorienterad programmering

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

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

TENTAMEN OOP

Lösningsförslag till tentamen

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Händelsestyrda program

Malmö högskola 2007/2008 Teknik och samhälle

Föreläsning 3: Händelsestyrda program och användargränssnitt

Omentamen FYTA11 Javaprogrammering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

DAT043 Objektorienterad Programmering

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

TDDD78 Viktiga begrepp, del 2

Lösningsförslag till tentamen

Laboration 4: Game of Life

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

F4. programmeringsteknik och Matlab

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

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Lösningsförslag till tentamen

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

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

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP och DSV1:P2

Lösningsförslag till tentamen

Java-concept och Swing. Swing low, sweet chariot

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

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs

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

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

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

Tentamen i Objektorienterad programmering

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

tentaplugg.nu av studenter för studenter

Föreläsning 14: Grafik & mera händelsehantering

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Mer om grafiska komponenter. Händelsestyrda program

DEL 1 För att få godkänt på tentan (betyg 3) måste du lösa minst fem av sju uppgifter i denna del.

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Föreläsning 7. for-satsen Fält

Föreläsning 3-4 Innehåll

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

PROGRAMMERINGSTEKNIK för F1 och TM1 (TIN212)

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

kl

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

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

Att skriva till och läsa från terminalfönstret

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface)

Lösningsförslag till tentamen

Tentamen. Lösningsförslag

tentaplugg.nu av studenter för studenter

Tentamen, EDAA10 Programmering i Java

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

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Classes och Interfaces, Objects och References, Initialization

Transkript:

Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Tentamen FYTA11 Javaprogrammering Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade referensblad som delas ut med tentan. Behandla högst en uppgift per papper och sätt ditt namn på varje papper. Skriv läsligt och kommentera utförligt vad du gör det kan ge dig poäng även om resultatet blir fel. Tentamen omfattar fyra uppgifter som vardera kan ge upp till tio poäng. Uppgift 1: Korrigera felen i följande kodsnuttar där felens natur anges av kommentarer i koden. I de fall det rör sig om kompileringsfel så genererades felet av raden ovanför kommentaren. a. b. String s = "Hello!"; System.out.println(s + ": " + s.length); //Kompileringsfel: cannot find symbol/ symbol: variable length class A { protected Integer val; A(int v) {val = new Integer(v); static class B extends A { B() {val = new Integer(0); //Kompileringsfel: cannot find symbol/ symbol: constructor A() c. try { int b = 1000/a; catch(arithmeticexception) { //Kompileringsfel: <identifier> expected System.err.println("Heltalsdivision med 0"); System.exit(-1);

d. e. f. g. h. i. j. import java.awt.geom.*; Point p = new Point(8, 20); Point2D q = p.clone(); //Kompileringsfel: incompatible types/ found: java.lang.object/ // required: java.awt.geom.point2d public class FixedPrec2D extends java.awt.geom.point2d { //Kompileringsfel: FixedPrec2D is not abstract and does not override // abstract method gety() in java.awt.geom.point2d private long x, y; private final long denom = 1000000; public double getx() {return (double)x/denom; public void setlocation(double x, double y) { this.x = Math.round(x*denom); this.y = Math.round(y*denom); class SillyVec { public java.util.vector<int> content; //Kompileringsfel: unexpected type/ found: int/ required: reference final int N = 8; System.out.println((int)Math.random()*N); //Skriver alltid ut en nolla istället för ett slumptal från 0 till 7 int i; for(i = 0; i < 4; ++i); System.out.print(" " + i); System.out.println(); //Skriver ut " 4" istället för " 0 1 2 3" class Hello { public void main(string[] a) { System.out.println("Hello!"); //Exekveringfel för java Hello: Exception in thread "main" java.lang.nosuchmethoderror: main import java.awt.geom.*; Point2D p = new Point(4, 8); System.out.println(p); p = new Point2D(5.43, 2.9); //Kompileringsfel: java.awt.geom.point2d is abstract; cannot be instantiated

Uppgift 2: Kontrollera sudoku En sudoku består av ett rutnät med 9 9 rutor som skall fyllas med en siffra i vardera ruta. Vissa rutor har siffror som är givna på förhand och utmaningen består i att fylla de tomma rutorna så att följande regler uppfylls: I var och en av de 9 raderna i rutnätet skall siffrorna 1 till 9 vara ifyllda med exakt en förekomst av varje siffra. Samma villkor som ovan fast tillämpat på de 9 kolumnerna i rutnätet. Rutorna i rutnätet delas också in i 9 grupper om vardera 3 3 angränsande rutor. Varje sådan grupp skall också vara fylld med siffrorna 1 till 9 så att varje siffra förekommer exakt en gång inom gruppen. Din uppgift här är att skriva en publik instansmetod issolved till en given klass Sudoku. Klassen Sudoku har en privat instansvaribel state av typen char[][] sådan att state[r][c] anger tecknet som finns i ruta c i rad r. Metoden issolved tar inga argument och returnerar en boolean som är sann om och endast om innehållet i state uppfyller ovanstående regler. Du kan utgå ifrån att storleken på fälten i state matchar en 9 9-matris men tecknen som lagrats i state är inte nödvändigtvis inom intervallet 1 till 9.

Uppgift 3: Lyssna på JButtons Ett ofullständigt huvudprogram till Sudoku-klassen i föregående uppgift är givet. import java.awt.event.*; import javax.swing.*; public class SudokuFrame extends JFrame implements ActionListener { private Sudoku sudoku; private static final String newstr = "Ny sudoku"; private static final String resetstr = "Börja om"; private static final String checkstr = "Rätta"; //Sudoku collection for testing purposes private static final String[] sudokulist = { ; public SudokuFrame() { super("sudoku"); sudoku = new Sudoku(); //Load test-collection of sudokus for(string s: sudokulist) sudoku.add(s); //Setup graphical interface Container c = getcontentpane(); c.setlayout(new BorderLayout()); c.add(sudoku, BorderLayout.CENTER); Container g = new JPanel(new GridLayout(1, 3)); c.add(g, BorderLayout.SOUTH); JButton newb = new JButton(newStr); g.add(newb); newb.addactionlistener(this); JButton resetb = new JButton(resetStr); g.add(resetb); resetb.addactionlistener(this); JButton checkb = new JButton(checkStr); g.add(checkb); checkb.addactionlistener(this); pack(); //Pick a random sudoku from the test-collection sudoku.picksudoku(); Din uppgift består i att komplettera klassen SudokuFrame med en main-metod för att starta programmet och en lyssnar-metod för att fånga tryckningarna på de JButtons som lagts till i konstruktorn. Knapparna Ny sudoku och Börja om skall leda till anrop av metoderna sudoku.picksudoku() respektive sudoku.reset(). Knappen Rätta skall ge ett anrop till metoden issolved som beskrivs i föregående uppgift och en dialogruta med lämpligt meddelande beroende på returvärdet skall visas. Observera att du inte får göra ändringar i den givna konstruktorn. Tips: I ovanstående kod blir kommandosträngen för den händelse som genereras av en knapptryckning densamma som den sträng som visas på knappen.

Uppgift 4: Hantera tangenttryckningar Sudoku-klassen från uppgift 2 behöver hantera utritning, musklick och tangenttryckningar. Din uppgift består i att fylla definitionen av en anonym KeyAdapter-klass med meningsfull kod. import java.util.*; import java.awt.event.*; import javax.swing.*; public class Sudoku extends Canvas { private char[][] state; //current content of the sudoku grid private boolean[][] locked; //true for cells with pre-set numbers private int x0, y0; //pixel coordinates of the upper left corner of the sudoku grid private int side; //side of a cell in the sudoku grid private int row, col; //active cell location in the sudoku grid public Sudoku() { //initialize instance variables //setup input listeners addmouselistener(new MouseAdapter() { public void mouseclicked(mouseevent e) { if(e.getbutton()!= MouseEvent.BUTTON1) return; Point p = e.getpoint(); if(p.x >= x0 && p.y >= y0 && p.x < x0 + 9*side && p.y < y0 + 9*side) { row = (p.y - y0)/side; col = (p.x - x0)/side; repaint(); ); addkeylistener(new KeyAdapter() { ); //Implement override to handle keyboard events. //allow focus selection by tabbing among graphical components setfocusable(true); En tryckning på en siffertangent 1 till 9 skall sätta state[row][col] till tecknet för den nedtryckta siffran om locked[row][col] är falsk. (Instansvariabeln locked är sann för de rutor vars siffror är givna från början.) En tryckning på mellanslag, backspace eller delete skall sätta state[row][col] till mellanslag om locked[row][col] är falsk. En tryckning på en piltangent skall uppdatera row och col på lämpligt sätt. Kolumnerna går från vänster till höger och raderna går uppifrån och ner. Variablerna row och col måste alltid ha värden i intervallet 0 till och med 8. Slutligen skall metoden repaint() anropas om och endast om state, row eller col har ändrats.