Lösningsförslag tentamen FYTA11 Java

Relevanta dokument
Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen FYTA11 Javaprogrammering

TENTAMEN OOP

Tentamen FYTA11 Javaprogrammering

Tentamen. Lösningsförslag

Tentamen OOP

D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.

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

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

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

TENTAMEN OOP

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

TENTAMEN OOP

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

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

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

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

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

Tentamen, EDAA10 Programmering i Java

Malmö högskola 2008/2009 CTS

Lösningsförslag till tentamen

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

Lösningsförslag till tentamen

F4. programmeringsteknik och Matlab

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

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

Tentamen i Programmeringsteknik I, ES,

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

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

Lösningsförslag till tentamen

OOP Objekt-orienterad programmering

Tentamen FYTA11 Javaprogrammering

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

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

Föreläsning 3-4 Innehåll

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Lösningsförslag till tentamen FYTA11 Javaprogrammering

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

TDDD78 Viktiga begrepp, del 2

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

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Tentamen, EDAA10 Programmering i Java

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

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

2D1342 Programkonstruktion för F1, ht 2006

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

DAT043 Objektorienterad Programmering

Tentamen i Objektorienterad programmering E

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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

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

Lösningsförslag till tentamen

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

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

Föreläsning 5-6 Innehåll

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

Tentamen , Introduktion till Java, dtaa98, dtea53

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

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

Lösningsförslag övning 2.

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Laboration 24 Databasen MySQL och java

Föreläsning 8: Exempel och problemlösning

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

Föreläsning 3: Booleans, if, switch

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Tentamen TEN1 HI

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Lösningsförslag FYTA11 Javaprogrammering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

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.

Lite logik. Kap 6: Sid 2

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

Lösningsförslag till tentamen

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

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

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

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

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

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

tentaplugg.nu av studenter för studenter

Lösningar för tenta 3 DAT043,

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

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

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

Transkript:

Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Lösningsförslag tentamen FYTA11 Java 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. a. String s = "Hello!"; // System.out.println(s + ": " + s.length); System.out.println(s + ": " + s.length()); b. class A { protected Integer val; A(int v) {val = new Integer(v); static class B extends A { // B() {val = new Integer(0); B() {super(0); c. d. try { int b = 1000/a; // catch(arithmeticexception) { catch(arithmeticexception e) { System.err.println("Heltalsdivision med 0"); System.exit(-1); import java.awt.*; import java.awt.geom.*;... Point p = new Point(8, 20); // Point2D q = p.clone(); Point2D q = (Point2D)p.clone();

e. f. g. h. i. j. public class FixedPrec2D extends java.awt.geom.point2d { private long x, y; private final long denom = 1000000; public double getx() {return (double)x/denom; public double gety() {return (double)y/denom; //this line was inserted 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; public java.util.vector<integer> content; final int N = 8; // System.out.println((int)Math.random()*N); System.out.println((int)(Math.random()*N)); int i; // for(i = 0; i < 4; ++i); for(i = 0; i < 4; ++i) System.out.print(" " + i); System.out.println(); class Hello { // public void main(string[] a) { public static void main(string[] a) { System.out.println("Hello!"); import java.awt.*; import java.awt.geom.*;... Point2D p = new Point(4, 8); System.out.println(p); // p = new Point2D(5.43, 2.9); p = new Point2D.Double(5.43, 2.9);

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. public boolean issolved() { for(int i = 0; i < 9; ++i) { int[] s = new int[3]; boolean[][] used = new boolean[3][9]; for(int j = 0; j < 9; ++j) { s[0] = state[i][j] - 1 ; s[1] = state[j][i] - 1 ; s[2] = state[3*(i/3) + j/3][3*(i%3) + j%3] - 1 ; for(int m = 0; m < 3; ++m) { if(s[m] < 0 s[m] >= 9 used[m][s[m]]) return false; used[m][s[m]] = true; return true;

Uppgift 3: Lyssna på JButtons Ett ofullständigt huvudprogram till Sudoku-klassen i föregående uppgift är givet. 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. public void actionperformed(actionevent e) { String cmd = e.getactioncommand(); if(cmd.equals(newstr)) sudoku.picksudoku(); else if(cmd.equals(resetstr)) sudoku.reset(); else if(cmd.equals(checkstr)) JOptionPane.showMessageDialog (this, sudoku.issolved()? "Korrekt!": "Felaktig eller ofulständig lösning.", "Rättning", JOptionPane.PLAIN_MESSAGE); sudoku.requestfocus(); public static void main(string[] a) { new SudokuFrame();

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. 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. public void keypressed(keyevent e) { char ch = e.getkeychar(); if(ch >= 1 && ch <= 9 ) { if(locked[row][col] state[row][col] == ch) return; state[row][col] = ch; else switch(e.getkeycode()) { case KeyEvent.VK_SPACE: case KeyEvent.VK_DELETE: case KeyEvent.VK_BACK_SPACE: if(locked[row][col] state[row][col] == ) return; state[row][col] = ; break; case KeyEvent.VK_RIGHT: case KeyEvent.VK_KP_RIGHT: if(col == 8) return; ++col; break; case KeyEvent.VK_LEFT: case KeyEvent.VK_KP_LEFT: if(col == 0) return; --col; break; case KeyEvent.VK_DOWN: case KeyEvent.VK_KP_DOWN: if(row == 8) return; ++row; break; case KeyEvent.VK_UP: case KeyEvent.VK_KP_UP: if(row == 0) return; --row; break; default: return; repaint();