Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Vergelijkbare documenten
Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, uur

Uitwerkingen Derde deeltentamen Imperatief programmeren Vrijdag 12 november 2010, uur

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, uur

b.text = "Rol!"; b.location = new Point(100, 0); b.click += this.rol; this.paint += this.teken;

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Veel succes! 1. Gegeven is de volgende klasse:

Uitwerking Derde deeltentamen Imperatief programmeren Woensdag 2 februari 2011, uur

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur

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

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

Uitwerking Derde deeltentamen Imperatief programmeren Vrijdag 8 november 2013, uur

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

Uitwerking Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, uur

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Imperatief Programmeren, derde deeltentamen (INFOIMP) 4 november 2005

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Klassen. Hoofdstuk Klassen

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 21 oktober 2011, uur

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

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

Uitwerking Aanvullend tentamen Imperatief programmeren Maandag 14 maart 2011, uur

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 29 januari 2016, uur

Syntax van opdracht. opdracht. expressie. variabele. = expressie ; klasse naam. methode naam. property naam += object

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

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, uur

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Windows-applicatie. using System.Windows.Forms; using System.Drawing; class HalloWin1 { static void Main ( )

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur

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

Tweede deeltentamen Gameprogrammeren Vrijdag 17 oktober 2014, uur

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 22 december 2017, uur

Aanvullende toets Mobiel programmeren - versie 1 Woensdag 23 maart 2016, uur

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

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

Derde deeltentamen Gameprogrammeren Vrijdag 8 november 2013, uur

Modelleren & Programmeren. Jeroen Fokker

IMP Uitwerking week 13

Programmeren (1) Examen NAAM:

Aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 3 januari 2014, uur

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Tentamen Imperatief Programmeren

Aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 4 januari 2013, uur

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Programmeren in C# Interfaces. Hoofdstuk 23

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

Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, uur

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 21 december 2018, uur

Zelftest Programmeren in Java

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, uur

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Modelleren en Programmeren

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 29 januari 2016, uur

Derde deeltentamen Gameprogrammeren Vrijdag 9 november 2012, uur

Modelleren en Programmeren

NAAM: Programmeren 1 Examen 21/01/2011

Uitwerking Aanvullende toets Mobiel programmeren - versie 1 Woensdag 23 maart 2016, uur

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

programmeren Mobiel Mobilofoon 1960 Apple iphone 2007 met ios Nokia Samsung S met Android Motorola Dyna-Tac 1973

Programmeren in C# Overerving

Deeltentamen Grammatica s en ontleden 22 december 2005

Activity. Bij het starten van een app: Operating system maakt een Activity -object aan. en neemt dat onderhanden met de methode OnCreate( )

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

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

Programmeren in Java 3

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

Programmeren in C# Klassen schrijven

Intent. Intent: bedoeling om een nieuwe activiteit te starten. eigen activiteit. standard. Hallo Teller. web-browser text-sender

NAAM: Programmeren 1 Examen 29/08/2012

is eigenlijk overbodig!

Datastructuren Werkcollege Intro

Informatica: C# WPO 2

Modelleren en Programmeren

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

Objectgeoriënteerd Programmeren: WPO 2a

Overerving & Polymorfisme

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers

Access voor beginners - hoofdstuk 25

eerste voorbeelden in Java

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Datastructuren: stapels, rijen en binaire bomen

// schrijf een static methode die telt hoe // vaak een symbool voorkomt in een string // voorbeeld-aanroep: int n; n = Demo. Freq( e, "some text" );

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

Technology, Innovation & Society Delft

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Factuur Lay-out / Factuur Template

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

Voorbeeld: Simulatie van bewegende deeltjes

NAAM: Programmeren 1 Examen 31/08/2011

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

Scala. Korte introductie. Sylvia Stuurman

Transcriptie:

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde bladen. De lijst met standaardfuncties na afloop graag weer inleveren. De antwoorden komen binnenkort op de website. Opgave 1 t/m 10 zijn meerkeuzevragen, die meetellen voor 10 4 = 40 punten. Opgave 11 en 12 zijn programmeervragen, die meetellen voor 20 en 40 punten. Meerkeuzevragen: de letter van het goede antwoord volstaat. Belangrijk: dit is versie 1 van het tentamen, vermeld dat boven je antwoorden. 1. De methode Main mag gedefinieerd worden met een parameter. Deze parameter bevat: (a) De regels die door de gebruiker worden ingetikt (b) De files die door het programma gelezen moeten worden (c) De woorden die bij het opstarten achter de programmanaam zijn ingetikt (d) De libraries die in het programma gebruikt worden 2. Een lambda-expressie is (a) Een manier om een naamloze methode aan te duiden (b) Een manier om een event-handler te registreren (c) Een manier om een methode te herdefiniëren in een subklasse (d) Een manier om de methode zoals die in de superklasse was gedefinieerd aan te duiden 3. Wat is het belangrijkste voordeel van een virtuele methode boven een abstracte methode? (a) Je krijgt een waarschuwing als je hem vergeet te overriden in een subklasse (b) Je hoeft er nog geen implementatie van te geven (c) Je kunt alvast een default-gedrag vastleggen (d) Je kunt hem niet per ongeluk aanroepen terwijl dat nog geen zin heeft 4. Een abstracte klasse (a) Kan abstracte methoden bevatten (b) Moet ook abstracte methoden bevatten (c) Mag alleen maar abstracte methoden bevatten (d) Heeft geen body 1

5. Welk van onderstaande uitspraken is niet waar? (a) UTF8 kan dezelfde tekens opslaan als Unicode (b) UTF8 kost soms meer ruimte dan Unicode (c) UTF8 kost soms minder ruimte dan Unicode (d) UTF8 codeert tekens met code 0 t/m 255 hetzelfde als Latin1 6. Welke declaratie is correct? (a) IList<string> x = new IList<string>(); (b) IList<string> x = new LinkedList<string>(); (c) List<string> x = new IList<string>(); (d) ICollection<string> x = new List<string>(); 7. In een MDI-programma... (a) wordt het menu van het container-window samengevoegd met dat van het actieve childwindow en getoond in het child-window (b) wordt het menu van het actieve child-window samengevoegd met dat van het containerwindow en getoond in het container-window (c) worden de menu s van de child-windows gecombineerd weergegeven (d) vervangt het menu van het actieve child-window dat van het container-window 8. Het keyword value kan worden gebruikt binnen de definitie van een property (a) in de set-minimethode, en heeft dan de waarde van de parameter van de property (b) in de set-minimethode, en heeft dan de waarde van de rechterkant van een toekenning aan de property (c) in de get-minimethode, en heeft dan de waarde van het resultaat van de property (d) in de get-minimethode, en heeft dan de waarde van de private variabele die door de property wordt afgeschermd 9. Na de declaratie int[,,,] a = new int[1,2,3,4]; heeft de array a (a) 4 variabelen (b) 10 variabelen (c) 24 variabelen (d) nog geen variabelen 10. Het verschil tussen een list en een collection is (a) In een list staan de elementen in een bepaalde volgorde (b) In een list kun je het aantal elementen bepalen (c) In een list kun je controleren of een bepaalde waarde aanwezig is (d) In een list zitten geen dubbele elementen 2

11. (telt voor 20%) Bij het spel Reversi leggen twee spelers om de beurt een gekleurde steen op een veld van een rechthoekig speelbord. Een steen mag alleen maar worden neergelegd op een veld als het veld nog leeg is, en met deze zet een rij van een of meer stenen van de andere kleur wordt ingesloten tussen de nieuwe steen en een al op het bord liggende steen van de eigen kleur. De ingesloten stenen kunnen in acht mogelijke richtingen naast de nieuwe steen liggen: horizontaal, verticaal of diagonaal. Stenen insluiten in meerdere richtingen mag ook. In de figuur is voor twee voorbeelden met open cirkels aangegeven op welke velden de speler met de lichte stenen mag zetten. Als gevolg van een zet veranderen alle ingesloten stenen van kleur. In een programma wordt de situatie opgeslagen in een twee-dimensionale array: int[,] bord = new int[6,6]; Lege velden zijn gecodeerd met 0, gevulde velden met 1 of 1 voor de twee kleuren. De opgave: Schrijf een methode bool mag (int kleur, int x, int y) die controleert of speler kleur een steen op veld (x, y) mag zetten. (De zet wordt dus nog niet uitgevoerd!). Hint: het is toegestaan (en handig) om een extra methode te schrijven die het insluiten in één van de 8 richtingen controleert. 3

12. Met het programma in deze opgave kan de gebruiker een blokkenwereld tekenen. Op een groot gedeelte van het scherm is een wereld zichtbaar waarin de gebruiker kan klikken. Ernaast staan een schuifregelaar, twee buttons, en twee radio-buttons. Met de radio-buttons kan de gebruiker een tekenmodus kiezen: tekenen of wissen. Als de gebruiker in tekenmodus op de wereld klikt, ontstaat er gecentreerd op dat punt een vierkant. De diameter van het vierkant is bepaald door de stand van de schuifregelaar op dat moment. De kleur van het vierkant is een grijstint, die afhangt van de positie op het scherm: helemaal links zijn de vierkanten zwart, rechts zijn ze wit; hoe verder naar rechts, hoe lichter de grijstint. De vierkanten kunnen elkaar overlappen. Als de gebruiker in wissenmodus op een vierkant in de wereld klikt, verdwijnt dat vierkant. Bij overlappende vierkanten verdwijnt de bovenste. Wordt er geen vierkant geraakt, dan gebeurt er niets. In de bijlage aan het eind van dit tentamen staat een deel van het programma gegeven. Het bestaat uit vier klassen: Program, Scherm, Wereld, en Blok. Een aantal onderdelen moet nog worden ingevuld. (a) Schrijf de klasse Blok, zodat in een object van dit type alle relevante gegevens voor één blok worden opgeslagen. Zet daarin: de benodigde member-variabelen een constructormethode waarmee de members een waarde kunnen krijgen de methode ToString, die de gegevens van een blok omzet naar string-formaat een tweede constructormethode, die gegeven zo n string het oorspronkelijke blok weer reconstrueert een methode waarmee je kunt testen of het blok een bepaald punt bevat (b) Schrijf de klasse Wereld. Zet daarin: de benodigde member-variabelen een constructormethode, die aangeroepen kan worden zoals dat in klasse Scherm gebeurt. Hint: let op, de methode heeft een parameter. Dat is niet voor niets! overige methoden die nodig zijn om ervoor te zorgen dat de tekenmodus gewisseld kan worden, en er inderdaad blokken worden getekend, respectievelijk gewist. (c) Met de button opslaan kan de hele situatie worden opgeslagen in een tekstbestand. Met de button inlezen verdwijnt de huidige situatie, en wordt die vervangen door de eerder opgeslagen situatie. De te gebruiken filenaam staat gedeclareerd in de klasse Scherm. Schrijf de twee benodigde methoden, en geef aan in welke klasse die moeten staan. Einde tentamen 4

// Bijlage bij opgave 12 public class Program { static void Main() { Application.Run(new Scherm()); public class Scherm : Form { public TrackBar schuif; public string filenaam = "test.txt"; public Scherm() { this.size = new Size(700, 400); this.text = "BlokkenWereld"; Wereld w = new Wereld(this); w.location = new Point(20, 20); w.size = new Size(510, 300); w.backcolor = Color.White; this.controls.add(w); schuif = new TrackBar(); schuif.location = new Point(550, 20); schuif.size = new Size(40, 200); schuif.orientation = Orientation.Vertical; schuif.backcolor = Color.DarkGray; schuif.maximum = 100; schuif.value = 20; schuif.tickfrequency = 10; this.controls.add(schuif); Button b1 = new Button(); b1.location = new Point(620, 20); this.controls.add(b1); b1.size = new Size(60, 24); b1.text = "Opslaan"; Button b2 = new Button(); b2.location = new Point(620, 50); b2.size = new Size(60, 24); b2.text = "Inlezen"; this.controls.add(b2); RadioButton r1 = new RadioButton(); r1.location = new Point(620, 100); r1.size = new Size(100, 24); r1.text = "Tekenen"; this.controls.add(r1); r1.select(); RadioButton r2 = new RadioButton(); r2.location = new Point(620, 130); r2.size = new Size(100, 24); r2.text = "Wissen"; this.controls.add(r2); b1.click += w.opslaan; b2.click += w.inlezen; r1.click += w.modechange; r2.click += w.modechange; public class Wereld : UserControl { // TODO public class Blok { // TODO 5

. 6