Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Vergelijkbare documenten
Programmeren 1 20 januari 2012 Prof. T. Schrijvers

NAAM: Programmeren 1 Examen 29/08/2012

NAAM: Programmeren 1 Examen 31/08/2011

Programmeren 1 22 januari 2014 Prof. T. Schrijvers

NAAM: Programmeren 1 Examen 21/01/2011

Programmeren (1) Examen NAAM:

Ingebouwde klassen & methodes

Tentamen Imperatief Programmeren

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Modelleren en Programmeren

Overerving & Polymorfisme

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.


Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Game of Life in Java

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

IMP Uitwerking week 13

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Zelftest Programmeren in Java

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Objectgericht programmeren 1.

Modelleren en Programmeren

Een stoomcursus door Edgar de Graaf, november 2006

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Objectgericht programmeren 1.

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Programmeren in Java les 3

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Modelleren en Programmeren

Programmeren in C# Samenvatting van C#

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Modelleren en Programmeren

Modelleren en Programmeren

PO: Informatica Olympiade

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Abstracte klassen & Interfaces

Hoofdstuk 0. Van Python tot Java.

Tentamen in2705 Software Engineering

Elementary Data Structures 3

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

1 Ontwerppatronen. 1.1 Het Command patroon

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Modelleren en Programmeren

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Voorbeeld: Simulatie van bewegende deeltjes

Labo 2 Programmeren II

Kleine cursus PHP5. Auteur: Raymond Moesker

Voortgezet Prog. voor KI

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Labo 1 Programmeren II

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Tentamen Programmeren in C (EE1400)

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Samenvatting programmeren I

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Deel 1 : Gesloten Boek

Deeltentamen Grammatica s en ontleden 22 december 2005

Uitwerkingen aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 4 januari 2013, uur

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

X. Grafische elementen

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Lessen Java: Reeks pag. 1

Lessen Java: Reeks 3. David Blinder Jan G. Cornelis

Tentamen Programmeren in C (EE1400)

VI. Klassen en objecten

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

Tentamen Programmeren in C (EE1400)

Tweede deeltentamen Gameprogrammeren Vrijdag 17 oktober 2014, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

eerste voorbeelden in Java

Leren programmeren in C# Deel 2 - Gegevens

Project network. Gebaseerd op paragrafen , uit het boek. We simuleren een sociaal netwerk

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Java. Basissyllabus. Egon Pas

Vakgroep CW KAHO Sint-Lieven

Java Programma structuur

Design patterns Startbijeenkomst

Datastructuren: stapels, rijen en binaire bomen

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Examen Programmeren I 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

Dynamisch Programmeren. Het Rugzakprobleem

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 19 oktober 2012, uur


Objectgericht Programmeren. (in Python)

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Transcriptie:

Programmeren 1 23 januari 2013 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je zelf Javacode schrijven. Hou dit kort en bondig. Je hoeft geen commentaarregels te schrijven en ook eventuele import-opdrachten zijn niet nodig. Pas op voor de addertjes onder het gras. Veel succes! Vraag 1: ASCII Art (7pt) ASCII art is het kunstig gebruik van gedrukte karakters voor het vormen van figuren en afbeeldingen. In deze opgave ontwikkelen we een kleine bibliotheek om een eenvoudige vorm van tekstuele figuren te ondersteunen, zoals bijvoorbeeld: BEPERKING: Nergens in je oplossing mag een array, lijst of andere collectie van karakters voorkomen. 1. Implementeer de algemene klasse TextShape die een rechthoekige tekstfiguur voorstelt. Voorzie twee abstracte methodes public abstract int getwidth() public abstract int getheight() die de breedte en hoogte van de figuur (in aantal karakters) teruggeven. Voorzie de abstracte methode public abstract char getchar(int i, int j) die het karakter op kolom i, rij j teruggeeft. We beginnen te tellen bij 0 en van links boven naar rechts onder. Voorzie een concrete methode die de figuur afdrukt op de terminal. public void print() 2. Implementeer de subklasse CharBox die een w h figuur voorstelt, opgevuld met een karakter c. Voorzie een constructor zodat new CharBox(4,3, + ).print() dit effect heeft: 1

++++ ++++ ++++ 3. Implementeer de subklasse HorizontalComposer die twee figuren horizontaal aan elkaar plakt. Je mag ervan uitgaan dat de twee figuren dezelfde hoogte hebben. Voorzie een constructor zodat new HorizontalComposer(new CharBox(4,3, + ),new CharBox(5,3, - )).print() dit effect heeft: ++++----- ++++----- ++++----- 4. Implementeer de subklasse Transposer die een gegeven figuur transponeert. Voorzie een constructor zodat new Transposer(new CharBox(4,2, - )).print() dit effect heeft: -- -- -- -- 5. Maak een klasse Main met een main-methode die deze figuur opbouwt als een TextShape en dan afdrukt. Zet niet al je code op één regel en maak zo weinig mogelijk objecten aan. 2

public abstract class TextShape { public abstract int getwidth(); public abstract int getheight(); public abstract char getchar(int x, int y); public void print() { for (int i = 0; i < getheight(); i++) { for (int j = 0; j < getwidth(); j++) { System.out.print(getChar(i,j)); System.out.println(); public class CharBox extends TextShape { private final int height; private final int width; private final char character; public CharBox(int height, int width, char character) { this.height = height; this.width = width; this.character = character; public int getheight() { return height; public int getwidth() { return width; public char getchar(int x, int y) { return character; public class HorizontalComposer extends TextShape { 3

private final TextShape left; private final TextShape right; public HorizontalComposer(TextShape left, TextShape right) { this.left = left; this.right = right; public int getheight() { return left.getheight(); public int getwidth() { return left.getwidth() + right.getwidth(); public char getchar(int i, int j) { if (j < left.getwidth()) { return left.getchar(i,j); else { return right.getchar(i, j - left.getwidth()); public class Transposer extends TextShape { private final TextShape shape; public Transposer(TextShape shape) { this.shape = shape; public int getheight() { return shape.getwidth(); public int getwidth() { return shape.getheight(); public char getchar(int x, int y) { return shape.getchar(y,x); 4

public class Main { public static void main(string[] args) { TextShape plus = new CharBox(4,3, + ); TextShape minus = new CharBox(4,3, - ); TextShape pm = new HorizontalComposer(plus,minus); TextShape mp = new HorizontalComposer(minus,plus); TextShape tpm = new Transposer(pm); TextShape tmp = new Transposer(mp); TextShape block = new HorizontalComposer(tpm,tmp); TextShape block2 = new HorizontalComposer(block,block); TextShape block3 = new HorizontalComposer(block2,block); block3.print(); 5

Vraag 2: Methode-oproepen (2pt) public class A { public A() { public int n() { return m() * 2; public int m() { return 3; public abstract class B extends A { public B() { public int n() { return 5; public int m() { return n() * 2; public class C extends A { public C() { public int m() { return 7; public class D { public D() { public int size() { return new List<Object>().size(); Gegeven bovenstaande klassendefinities, geef aan wat het resultaat is van onderstaande expressies: (a) new A().n() 2 * 3 = 6 (b) new B().n() compilererror (instantie van een abstracte klasse) (c) new C().n() 2 * 7 = 14 (d) new D().size() compilererror (instantie van een interface) Vraag 3: Exceptions (1pt) public int m(int x) throws Exception { if (x % 2 == 0) { throw new IOException("something is wrong"); else { throw new IllegalArgumentException("bad argument"); public void n(int x) throws Exception { try { x = 3 + m(x); catch (IOException e1) { try { x += 2 + m(x + 1); catch (RuntimeException e2) { x++; System.out.println(x); Welke waarde wordt afgedrukt bij volgende oproepen? (a) n(42) 43 (b) n(43) niets (niet opgevangen IllegalArgumentException) 6

NAAM: Programmeren 1 Examen 23/01/2013 Vraag 4: Slangmatrix Schrijf een methode met signatuur (3pt) public int[][] slang(int n, int m) De methode geeft een geneste array terug die een n m matrix voorstelt. De matrix is opgevuld in een slangpatroon met de getallen van 1 tot n m. Afspraak: de rijen van de matrix zijn de binnenste arrays van de geneste array. Hieronder zie je het resultaat voor n = 5 en m = 4. 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 17 18 19 20 public int[][] slang(int n, int m) { int[][] result = new int[n][m]; for (int i = 0; i < n; i++) { if (i % 2 == 0) { for (int j = 0; j < m; j++) { result[i][j] = (i * m) + (j + 1); else { for (int j = 0; j < m; j++) { result[i][j] = (i * m) + (m - j); return result; 7

Vraag 5: Arrays (1pt) Hoeveel verschillende int waarden passen in geneste array arr na uitvoering van de code? (a) int[][] arr = new int[2][3]; 2 3 = 6 (b) int[][] arr = new int[5][]; for (int i = 0; i < arr.length; i++) { arr[i] = new int[i * (5 - i)]; 4i=0 i (5 i) = 20 Vraag 6: Herschrijven (3pt) Herschrijf onderstaande methodes zodat: (a) lijsten i.p.v. arrays gebruikt, (b) een iterator i.p.v. een for-each lus gebruikt, en (c) een while-lus met index i.p.v. for-each lus gebruikt. (a) public void m1(int[] k, int[] l) { for (int i = k.length; i > 0; i--) { k[k.length - i] = l[i-1]; public void m1(list<integer> k, List<Integer> l) { for (int i = k.size(); i > 0; i--) { k.set(k.size()- i, l.get(i-1)); (b) public void m2(set<string> set) { for (String el: set) { System.out.println(el); public void m2(set<string> set) { Iterator<String> it = set.iterator(); while (it.hasnext()) { System.out.println(it.next()); (c) public int m3(int[] a) { int sum = 0; for (int x : a) { sum += x; return sum; public int m3(int[] a) { int sum = 0; int index = 0; while (index < a.length) { sum += a[index]; index++; return sum; 8

Vraag 7: Skyfall 2 (3pt) Om je geheime berichten te versleutelen verwissel je de letters van plaats volgens een gegeven permutatieschema. Bijvoorbeeld, met het permutatieschema: {0 8, 1 1, 2 2, 3 3, 4 9, 5 5, 6 0, 7 7, 8 6, 9 4 wordt de boodschap "NAMED JOBS" omgezet in "JAMES BOND". Schrijf een methode met de volgende signatuur om deze ontcijfering uit te voeren en weg te schrijven naar het bestand met gegeven naam. public void permuteer(string boodschap, int[] schema, String bestand) Hierbij geeft schema[i] aan op welke plaats letter i moet komen. Bovenstaande voorbeeld wordt bekomen met de oproep permuteer("named JOBS",new int[]{8, 1, 2, 3, 9, 5, 0, 7, 6, 4,"forurisonly.txt") public void permuteer(string boodschap, int[] schema, String bestand) { char[] permutatie = new char[schema.length]; for (int i = 0; i < schema.length; i++) { permutatie[schema[i]] = boodschap.charat(i); try { PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(bestand))); pw.print(new String(permutatie)); pw.close(); catch (IOException e) { System.out.println("Fout bij het schrijven van de boodschap!"); 9 Einde