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

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

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

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

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

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

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

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

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

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

Kompas. zijn klasse. protected override void OnDraw(Canvas canv) { base.ondraw(canv);

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

wat is er nodig om een ISensorEventListener te zijn?

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 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 Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 29 januari 2016, uur

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

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

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

Dit hoofdstuk is niet een herhaling, maar gaat over herhaling in C#, en is dus nieuw!

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

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

Goede bedoelingen. Hoofdstuk Een App met meerdere activiteiten. 8.2 Dialogen

Touch & go. Hoofdstuk Touch

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

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

Figuur 7: De KlikkerApp in werking

Veel succes! 1. Gegeven is de volgende klasse:

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

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

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

Klassen. Hoofdstuk Klassen

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

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

Methoden om te tekenen

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

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

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

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 19 oktober 2012, uur

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

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

is eigenlijk overbodig!

Uitwerking Tweede deeltentamen Imperatief programmeren versie 1 Vrijdag 20 oktober 2017, 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 11 november 2016, uur

Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 9 november 2018, uur

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

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

Uitwerkingen Derde deeltentamen Imperatief programmeren Vrijdag 12 november 2010, uur

Hallo, App! Hoofdstuk Soorten programma s

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

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

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

Deeltentamen Grammatica s en ontleden 22 december 2005

In lijsten en bewaren

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

Uitwerkingen Derde deeltentamen Imperatief programmeren Vrijdag 12 november 2010, uur

Labo 2 Programmeren II

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 18 oktober 2013, uur

IMP Uitwerking week 13

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

Hoofdstuk 9.4. Letterfrequentie turven

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

Programmeren in C# Samenvatting van C#

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

Modelleren & Programmeren. Jeroen Fokker

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

NAAM: Programmeren 1 Examen 29/08/2012

Modelleren en Programmeren

Uitwerking Tweede deeltentamen Imperatief programmeren Vrijdag 21 oktober 2011, uur

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur

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

Modelleren en Programmeren

Voorbeeld: Simulatie van bewegende deeltjes

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

De sheets zijn gebaseerd op met name hoofdstuk. D. Bell en M. Parr, Java voor studenten, Prentice Hall,

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

B.3 Serie 3. B.3 Serie 3 7

Vakgroep CW KAHO Sint-Lieven

vandaag èn vrijdag deadline maandag 12 dec.

Opdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Programmeren in C# Interfaces. Hoofdstuk 23

Programmeren in Java les 3

Programmeren (1) Examen NAAM:

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

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

Leren programmeren in C# Deel 2 - Gegevens

Programmeren in C# Klassen schrijven

Datastructuren Werkcollege Intro

Een expressie zoals leeftijd>=65 wordt een boolean expressie genoemd. Een boolean expressie kan dus de waarde true of de waarde false geven

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

Een gelinkte lijst in C#

Tentamen Imperatief Programmeren

Overerving & Polymorfisme

Transcriptie:

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, 11.00-13.00 uur 1. Een klasse is niet: (a) het type van een object (b) een groepje methoden (c) een groepje variabelen (d) een groepje declaraties Toelichting op het antwoord: een groepje variabelen heet een object, en dat is wat anders. 2. Met using aan het begin van de broncode geef je aan (a) dat je een bepaalde namespace wilt gebruiken (b) dat je een bepaalde klasse wilt gebruiken (c) dat je een bepaalde methode wilt gebruiken (d) dat je een bepaalde interface wilt gebruiken Toelichting op het antwoord: Bijvoorbeeld: using System; geeft aan dat je alle klassen in de namespace System wilt gebruiken. Je kunt dus niet een bepaalde klasse uitkiezen, en al helemaal niet een bepaalde methode. 3. Waarom zou je aan het eind van de header van een klasse de naam van een interface schrijven? (a) Om het type van parameters en resultaat van een aantal methoden te specificeren (b) Om te beloven een aantal methoden te schrijven (c) Om de gebruiker in staat te stellen gegevens in de app in te voeren (d) Omdat de klasse een uitbreiding is van de al bestaande interface Toelichting op het antwoord: Bijvoorbeeld: class KompasView : View, ISensorListener. Hiermee beloof je de methodes die in de interface SensorListener zijn gespecificeerd ook echt te maken. (a) gebeurt in de interface zelf. (d) slaat op de klasse die direct na de dubbele punt staat, zoals View in dit voorbeeld. (c) gaat over een hele andere betekenis van het woord interface. 4. Een RadioGroup is (a) Een bepaald type LinearLayout om een bepaald type Views te groeperen (b) Een bepaald type View waarin een gebruiker meerdere keuzes kan aanvinken (c) Een bepaald type Button waarvan er maar één tegelijk uitgekozen kan zijn (d) Een klasse waarmee je een LinearLayout in een bepaalde Context kunt plaatsen Toelichting op het antwoord: Een RadioGroup is een subklasse van LinearLayout, waarin je RadioButtons (dat is een bepaalde subklasse van View) kunt groeperen. b: Aanvinken doe je met Checkboxes. c: Dit is een RadioButton, niet een RadioGroup. d: pure nonsens. 5. Een expressie van het type bool (a) kan alleen de waarde 0 of 1 hebben (b) heeft 256 verschillende mogelijke waarden 1

(c) kan gebruikt worden als voorwaarde in een if-opdracht (d) kan onder andere de waarde null hebben Toelichting op het antwoord: Het type bool heeft niet de waarden 0 en 1, maar true en false. 256 waarden betreft byte. Alle objecten kunnen de waarde null hebben, maar bool is nou juist een van de 11 typen die géén object is. 6. Een Matrix kan niet worden meegegeven aan een teken-methode om (a) iets op een bepaalde plaats te tekenen (b) iets in een bepaalde kleur te tekenen (c) iets een kwartslag gedraaid te tekenen (d) iets langwerpig uitgerekt te tekenen Toelichting op het antwoord: Een matrix beschrijft een geometrische transformatie, zoals translatie, rotatie en schaling (eventueel verschillend in x- en y-richting, dus uitgerekt). Maar kleur is geen geometrische transformatie. 7. De expressie new Color(128, 0, 128) duidt de volgende kleur aan: (a) Middengrijs (b) Lichtgroen (c) Geel (niet zo erg fel) (d) Paars 8. Als de gebruiker het scherm van de telefoon een kwartslag draait, dan (a) wordt de constructor-methode van de subklasse van View opnieuw aangeroepen zodat de tekening opnieuw wordt opgebouwd, nu geroteerd (b) wordt de event-handler van het Rotate-event aangeroepen zodat daar de user-inteface geroteerd kan worden (c) wordt de methode OnDraw opnieuw aangeroepen zodat de view opnieuw getekend wordt, nu geroteerd (d) wordt de methode OnCreate opnieuw aangeroepen zodat de hele app opnieuw gestart wordt 9. Iemand wil de waarde van een float-variabele x met wat toelichting in een string opnemen, en schrijft daarom: "de afstand is x meter" Wat is er fout in deze expressie? (a) Er moet nog een $ aan het begin staan (b) Er moet nog een $ voor de variabele x staan (c) Er moet nog.tostring() achter de variabele x staan (d) Er moet nog return aan het begin staan, en een puntkomma aan het eind Toelichting op het antwoord: (b) in nodig in de taal PHP. (c) is niet nodig, dit gebeurt zonodig automatisch. (d) is onjuist: het gaat hier om de expressie, en die zou in een returnopdracht gebruikt kunnen worden, of in een andere opdracht, maar dat doet er hier nog helemaal niet toe. 2

10. Als je scale-gestures automatisch wilt laten herkennen moet je (a) vanuit de methode OnScale de benodigde gegevens doorspelen aan een SensorManager (b) vanuit een Touch-eventhandler de benodigde gegevens doorspelen aan een ScaleGestureDetector (c) de methode RegisterListener aanroepen voor het toepasselijke SensorType (d) de methode PostScale van een Matrix een eigen invulling geven Toelichting op het antwoord: a: De detector zal OnScale aanroepen, niet andersom. En dit heeft ook niets met SensorManager te maken. c: een detector is geen sensor. Drie open vragen (3 keer 10 punten) 11. Wat is de betekenis van de operator += a. als er aan de linkerkant een int-variabele staat b. als er aan de linkerkant een string-variabele staat c. als er aan de linkerkant een event-property staat Voor een int-variabele betekent x+=y dat de variabele x wordt vermeerderd met y. Voor een string-variabele betekent x+=y dat de asan de string x de string y wordt vastgeplakt. Voor een event-property betekent x+=y dat als het event x optreedt, de methode y aangeroepen zal worden. 12. Beschrijf in het kort: a. Wat gebeurt er als je de methode Invalidate uit de klasse View aanroept? b. In welke situatie is het belangrijk om dat te doen? Vanuit de methode Invalidate zal de methode OnDraw worden aangeroepen, die de tekening op de view opnieuw tekent. Dit doe je als een event-handler variabelen heeft veranderd die invloed hebben op de manier waarop de tekening getekend wordt. 13. Hieronder staan 16 fragmenten uit een programma. Schrijf op je antwoordblad een blok van 4 bij 4 vakjes en zet in elk vakje een letter passend bij het overeenkomstige fragment: T als het programmafragment een type is E als het programmafragment een expressie O als het programmafragment een opdracht is D als het programmafragment een declaratie is H als het programmafragment een methode-header is X als het programmafragment geen van bovenstaande dingen is true Color int a(int b) new Color(0,0,0) ; Color.Red bool b=1>0; foreach (PointF p in c) this.m(p); (((0))) Color red; using System; if (x>=0) y = x; else (x<0) y = -x; void Color red() return ""; public void (int x) 3

E T H E O E D O E D X X X H O X Toelichting op het antwoord: rij 2 item 1: een losse puntkomma is een opdracht. Die mag in een blok staan, en ook een blok is een opdracht. rij 2 item 3: dit is een declaratie van bool b, met een initialisatie die hem gelijk maalt aan de uitkomst van 1>0, dat is dus true. rij 3 item 1: elke expressie, dus ook 0, mag tussen haakjes staan, en is dan weer een expressie. rij 3 item 3: using System; is geen delclaratie, want using is geen type. rij 3 item 4: achter else staat niet nogmaals een voorwaarde. rij 4 item 1: void is geen type (je kunt immers geen void-variabelen declareren), maar staat in plaats van het resultaattype in de header van een methode. rij 4 item 4: hier ontbreekt de naam van de methode tussen void en de parameter. Programmeervraag (30 punten) 14. In deze opgave mag je de using-regels, en de ActivityAttribute[...]-specificatie weglaten. We gaan een nieuwjaars-app maken. In de afbeelding zie je de app in werking. Er is een vaste tekst met een nieuwjaarswens zichtbaar (met lekker grote letters), en daaronder een knop. Door op de knop te klikken wordt er op de knop een kerstboom zichtbaar. Bij elke klik onstaan er twee extra rijen takken. In de afbeelding heeft de gebruiker al 9 keer geklikt. We schrijven een klasse met daarin een aantal methoden. De methoden mogen elkaar aanroepen, ook als je een onderdeel van de opgave niet hebt gemaakt. Je mag extra hulpmethoden en declaraties schrijven. 4

(a) Geef de klasse-header en de benodigde declaraties. public class KerstboomActivity : Activity int aantal = 0; Button knop; (b) Schrijf een methode Kopieer die een string als resultaat oplevert die uit een bepaald aantal kopieën van een bepaalde string bestaat. Zowel het aantal als de te kopiëren string zijn een parameter van deze methode. string Kopieer(int n, string x) string res = ""; for (int t=0; t<n; t++) res += x; return res; (c) Schrijf een methode Kerstboom die een string oplevert. Als deze string op de knop wordt geplaatst geeft deze een beeld zoals in de afbeelding. Een parameter bepaalt het aantal takken. Je mag gebruik maken van het feit dat een tekst gecentreerd op een knop wordt getoond. private string kerstboom(int n) string res = ""; for (int t=1; t< n; t++) string tak = kopieer("^", t); string regel = tak + " " + tak + "\n"; res += regel + regel; return "@\n" + res + " "; (d) Schrijf de overige benodigde methodes, die de userinterface opbouwen en ervoor zorgen dat de knop ook inderdaad werkt. De kerstboom moet groene takken krijgen. protected override void OnCreate(Bundle bundle) base.oncreate(bundle); knop = new Button(this); knop.settextcolor(color.darkgreen); knop.click += this.klik; TextView tv = new TextView(this); tv.text = "Gelukkig 2017!"; tv.textsize = 40; LinearLayout stapel = new LinearLayout(this); stapel.orientation = Orientation.Vertical; stapel.addview(tv); stapel.addview(knop); this.setcontentview(stapel); private void klik(object sender, EventArgs e) aantal++; knop.text = kerstboom(aantal); 5