126 B.2 Werkcollege-opgaven Serie 2 2.1 Keywords Wat betekent Wat betekent Wat betekent Wat wordt in het Engelse woord void, en in welke situatie is dit keyword nodig? de Engelse afkorting int, en in welke situatie is dit keyword nodig? in een C#-opdracht het woord return, en in welke situatie is dit keyword nodig? een C#-methode aangeduid door this, en in welke situatie is dit keyword nodig? 2.2 Spijkerschrift a. Schrijf een methode streepjes met een getal als parameter. Je mag zonder controle aannemen dat de parameter 0 of groter is. De methode moet als resultaat een string opleveren met daarin zoveel verticale streepjes als de parameter aangeeft. Bijvoorbeeld: de aanroep this.streepjes(5) levert "|||||" op. b. Schrijf een methode spijker met een getal als parameter. Je mag zonder controle aannemen dat de parameter 1 of groter is. De methode moet als resultaat een string opleveren met daarin het getal in spijkerschrift-notatie. Elk cijfer wordt daarin weergegeven met verticale streepjes, en de cijfers worden gescheiden door een liggend streepje. Er staan ook liggende streepjes aan het begin en het eind. Hier zijn een paar voorbeelden: this.spijker(25) geeft "-||-|||||-" this.spijker(12345) geeft "-|-||-|||-||||-|||||-" this.spijker(7) geeft "-|||||||-" this.spijker(203) geeft "-||--|||-" Hint: verwerk eerst het laatste cijfer, en herhaal dan voor de rest van de cijfers. Het laatste cijfer kun je te pakken krijgen door slim gebruik te maken van de ‘rest bij deling’ operator. 2.3 Stralen Gegeven is de volgende klasse: class StralenApp : Activity { public override void OnCreate(Bundle b) { base.OnCreate(b); Button knop = new Button(this); StralenView sv = new StralenView(this); LinearLayout lay = new LinearLayout(this); lay.Orientation = Orientation.Vertical; knop.Text = "Meer"; knop.Click += sv.klik; lay.AddView(knop); lay.AddView(sv); this.SetContentView(lay); } } Schrijf de klasse StralenView, zo dat het programma zich als volgt gaat gedragen. Er is een zwart opgevulde cirkel met een diameter van 40 pixels in beeld. Het middelpunt van de cirkel bevindt zich aan het begin in het midden van het scherm. Als de gebruiker het scherm aanraakt, komt het punt op die plek te staan. En als de gebruiker met zijn vinger over het scherm beweegt, beweegt de cirkel ook mee. Twee lijnen verbinden het midden van de cirkel met de twee onderhoeken van het window. Elke keer als de gebruiker op de knop drukt komt er een lijn bij. De lijnen monden op gelijke afstanden uit op de onderrand van het window. Zie onderstaande figuur, met daarin: de beginstituatie, de situatie na 2 keer klikken, en de situatie na nog 4 keer klikken. (De pijl geft de vinger-positie aan, deze hoef je niet te tekenen). B.2 Serie 2 127 2.4 Beschrijf de syntax van de foreach-opdracht. Beschrijf daarna ook de semantiek van de foreach-opdracht. 2.5 Variabelen kunnen onder andere worden gedeclareerd in de header van een methode, in de body van een methode, en in de body van een klasse. Hoe krijgt een variabele die is gedeclareerd in de header van een methode zijn waarde, en waar wordt zo’n variabele voor gebruikt? Hoe krijgt een variabele die is gedeclareerd in de body van een methode zijn waarde, en waar wordt zo’n variabele voor gebruikt? En hoe krijgt een variabele die is gedeclareerd in de body van een klasse zijn waarde, en waar wordt zo’n variabele voor gebruikt? 2.6 In de library worden veel class-typen gedefiniëerd, maar ook struct-typen. Daar zijn veel overeenkomsten tussen, maar wat is het verschil? 2.7 In de library worden naast class-typen ook interface-typen gedefiniëerd. Stel dat er in een library een interface IA is gedefinieerd, en je gebruikt die in een programma. Waar zul je die naam IA in het programma typisch gebruiken, en welke verlichting brengt dat met zich mee? 2.8 Hieronder staat 16 fragmenten uit een programma. Schrijf bij elk fragment 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 { } Color "\""+2 t=t%t; int a(Color c) return Color.Red; new Color(1,2,3) Color.Red override void() const bool b=1==0; bool b(bool c) bool while(true); for (x=0;x++) t=0; true==false Color c;