Beginselen van programmeren

Ga naar: navigatie, zoeken
Bestand:HenkOlivié.jpg
Prof. Henk Olivié

Inhoud

Samenvattingen

Klik hier om de samenvattingen te bekijken

Algemeen

Sinds 2014-2015 wordt dit vak gegeven door prof. Tom Holvoet en prof. Marie-Francine Moens. Ook wordt er Python geleerd in plaats van Java en valt het hoofdstuk 'Klassen en Objecten' buiten de leerstof voor januari. Het examen is volledig schriftelijk. (2015-2016)

De puntenverdeling is als volgt (op 20): 1 punt op het eerste practicum, 2 punten op de tussentijdse toets, 2 punten op het tweede practicum en 15 op het examen. (2017-2018)

Niet meer relevant sinds 2014-2015!

Het examen is mondeling met schriftelijke voorbereiding. Bij prof. Olivié kan je bijna 100% zeker zijn van ongeveer deze (types) vragen:

  1. Zo goed als zeker een klasse maken die een (meestal vierkante) matrix van (meestal gehele) getallen voorstelt. Voorzie ook best een default constructor zonder parameters, dat heeft hij graag. Voorzie methodes om elementen op te vragen, en zo nodig ook om elementen te wijzigen in de matrix. Er wordt ook altijd gevraagd een methode te maken die een specifieke eigenschap (bvb. symmetrie, of som van bepaalde elementen ofzo) moet controleren, check de examenvragen voor concrete voorbeelden hiervan.
    • Een theorievraag (bvb. wat is recursie? of wat is polymorfisme?). Doorloop voor uw examen uw cursus, en noteer op een A4'tje alle typische termen waarbij een mooie definitie hoort, en zorg dat je die kan geven. Dit is ongeveer 10 min. werk.
    • Meestal een oefening die de theorievraag ondersteunt. Als de theorievraag bvb. over recursie gaat, zal gevraagd worden een recursieve methode te schrijven voor iets. Als jouw theorievraag over complexiteit gaat, is de kans groot dat de oefening is om een sorteeralgoritme te geven met een bepaalde tijdscomplexiteit. Leer dus ook die enkele sorteeralgoritmes vanbuiten, zodat je ze vlot kan produceren op ’t examen.
    • Soms nog een beetje theorievragen, die in dit geval meestal over overerving gaan. (Dingen verklaren zoals abstract, polymorfisme, overloading, overriding...)
    • Een grotere oefening die je normaal gezien moet uitwerken aan de hand van een hele klassenstructuur met overerving. Dit kan echt vanalles zijn, bij mij was het een bedrijf met werknemers, bij anderen een spel kaarten… zorg dat je vlot thuis bent in overerving (wat na het practicum geen probleem zou mogen zijn).

Prof. Olivié is erg vriendelijk, zolang je maar instemt met wat hij zegt, ook al haalt hij aan dat hij de dingen op een andere manier zou opgelost hebben dan jij. Hij zal nooit klagen als je ergens een syntax-fout maakt, maar wel als je een domme fout op iets anders maakt. Eens een domme fout tegengekomen, blijft hij minder aangenaam voor het verdere verloop van de bespreking.

(tekstje uit 2005)

Een 'domme' oplossing is soms beter dan complexere oplossing die hij niet direct snapt. Bereid je voor om je oplossing uit te leggen. Prof. Olivié bleef steeds vriendelijk hoewel we het niet over alles eens waren (2007).

Veelgevraagde zaken

Niet meer relevant sinds 2014-2015!

  1. Enkele begrippen uitleggen, overloading, dynamische binding, overriding, tijdscomplexiteit etc.
  2. Oefeningen over matrices => Volgens prof, als je hierop goed hebt dat je er door bent. BELANGRIJK!
  3. Sorteeralgoritmes
  4. Grotere oefening waarbij er een klasse moet worden geschreven

De student klasse

Er wordt vaak een variatie op deze klasse gevraagd: Definieer een klasse student met een bepaalde naam, familienaam, punten (tussen 0 en 20) en studentennr

  1. maak een eenvoudige constructor
  2. maak get- en setmethodes
  3. maak een methode die de punten van een bepaalde student vergelijkt met die van een andere student, waarbij je gebruik maakt van de compareTo methode

Definieer dan een klasse die een rij van studenten voorstelt. Je mag er vanuit gaan dat er hoogstens 100 studenten zijn.

  1. maak een constructor die de rij aanmaakt
  2. methode om student op een bepaalde plaats in de rij te zetten
  3. methode om de positie van een student in een rij op te roepen


2018-2019

Tussentijdse test 2018-2019 (opgave)

Tussentijdse test 2018-2019 (oplossing openboekdeel)

28 Januari 2019 (VM)

Examen BvP 2018-2019 (Deel 2)

2017-2018

Herexamen september 2018 (opgave)

Examen januari 2018, deel theorie (opgave)


Praktische Informatie over de tussentijdse test

De TTT telt in 2017-2018 mee voor 2 van de 20 punten. De totale TTT staat op 12 punten, waarvan 4 punten op het theoriegedeelte en 8 op het oefeningengedeelte.

Het theorie-deel is gesloten boek, op de slides ivm correctheidsbewijzen na. Een printout van die 2 slides, zonder eigen toegevoegde notities, breng je zelf mee. Voorbeelden(!) van vragen in dit deel zijn: ‘Geef correctheid van volgend algoritme’, ‘Wat is de uitvoer van volgend programmaatje’, ‘Wat zijn waarde- en referentie-semantiek + geef voorbeeld’, ’Implementeer een functie die XXX berekent’, ‘Wat is een parameter-variabele’, etc.

Voor het oefeningen-deel mag je het handboek 'Python for Everyone' gebruiken. Dit oefeningen-deel werd nog op papier gemaakt, wat sinds 2018-2019 niet meer het geval is.

Opgave

De precieze opgave is niet beschikbaar.

Januari 2017

Gesloten boek:

  1. recursie: binair zoeken, maar dan door te verdeling in drie delen.
  2. correctheidsbewijs van quicksort + hoe moet je de algoritme aanpassen om van groot naar klein te sorteren ?
  3. vraag over tijdscomplexiteit
  4. wat is referentiesemantiek en hoe komt het voor in Python ?


Januari 2016

25 Januari 2016, voormiddag

Gesloten boek: (maximum 1 uur)

  1. recursie: bereken of een getal n een priemgetal is
  2. implementeer een bubblesort algoritme, geef de tijdscomplexiteit
  3. implementeer een algoritme dat de cijfers van een getal optelt, bewijs de correctheid
  4. bespreek referentiesemantiek, illustreer met een voorbeeld


Open boek: (maximum 3 uur) Gegeven is een algoritme dat een kaart creëert van de verdeling van de grond in een gemeente. De kaart wordt voorgesteld als een aantal vierkanten, elk met een coördinaat en een type (natuurgebied, industriegebied). Je moet twee functies implementeren: één om de afstand te berekenen tussen een specifiek gebied en het dichtstbijzijnde gebied van een specifiek type (e.g. hoe ver ligt 11, 12 van een industrieterein, en print alle industrietereinen die op deze afstand liggen) en één om de lengte van het kortste pad te berekenen tussen twee gebieden, waarbij een specifiek type gebied vermeden moet worden (e.g. de lengte van het kortste pad tussen 2, 5 en 10, 8 waarbij natuurgebied vermeden wordt).

Januari 2015

Het theorie-deelexamen is gesloten boek en duurt één uur.

OPMERKING: De oplossingen in deze pdf zijn vaak niet optimaal of zelfs fout (bv het correctheidsbewijs klopt niet!)

Theorie-deelexamen

Het praktisch-deelexamen is open boek en duurt drie uren.

Praktisch-deelexamen


Oude Examens

Oktober 2013

31 Oktober 2013, namiddag

"Gesloten boek: ik vind de opgaves niet terug (maximum 0,5 uur)"

"Open boek: (maximum 1,5 uur) Proefexamen"

"Een matige oplossing voor de opgave Proefexamen (door Jari Peeperkorn, student)"

Januari 2013

15 Januari 2013, voormiddag

Gesloten boek: (maximum 1 uur)

  1. Recursie: pas de binary search aan naar verdelen in drie stukken i.p.v. 2 stukken (binary search niet gegeven).
  2. Pas partion methode van quicksort zodat het van klein naar groot sorteert (Quicksort gegeven).
  3. Gegeven insertionsort:
    1. Geef de Tijdscomplexiteit in beste en slechtste geval via aantal toekeningen en aantal vergelijkingen.
    2. Pas het insertionsort aan zodat aan deze lusinvariant wordt voldaan: a[i+1…a.length-1] en dus van groot naar klein sorteert.
  4. Overloaden vs overridden en geef een eigen voorbeeld waarin de twee worden aangetoond

Open boek:

(zie examen 18 Januari 2011)


Januari 2012

17 Januari 2012, voormiddag

Gesloten Boek: (maximum 1 uur)

  1. Gegeven zijn 3 final int variabelen, 1 int array (vastgelegd a.d.h.v. opgesomde elementen) en 2 double arrays (gedeclareerd en geïnitialiseerd maar niet opgevuld). Er worden dan 6 situaties gegeven die vertrekken van deze opgave en gebruik maken van for-lussen, if-statements e.d. Er wordt gevraagd wat de waarde van de betrokken arrays is en/of eventuele fouten die voorkomen (bv een statement waarbij een indexwaarde van -1 gebruikt wordt, wat natuurlijk niet kan).
  2. Geef een recursieve methode om x^n te bepalen voor een geheel getal n.
  3. Beschrijf een lusinvariant (initialisatie, instandhouding en beëindiging) voor een methode die van een gegeven String (hier: T-Test) iteratief (while-lus) een character selecteert, kijkt of dit character lowercase is, en dan een boolean die in de while-voorwaarde voorkomt transformeert. Wanneer dit niet voorkomt wordt de lus beëindigd als de index gelijk is aan de lengte.
  4. Bespreek overriden VS overloaden a.d.h.v. een eigen voorbeeld.

Open boek: Geef de klassen voor een programma dat een 2-dimensionale array aanmaakt met plaatsen waar bepaalde incidenten (misdaden) kunnen gebeuren, waaraan bepaalde ernstwaarden worden toegekend. Deze misdaden worden onderverdeeld in 3 soorten: een brand (ernstwaarde = aantal uur blustijd * aantal aangetaste huizen), een diefstal (vaste ernstwaarde 5) en een bankoverval (ernstwaarde = buit/aantal klanten aanwezig). Er moet een klasse zijn die de array (dim 250x300) bijhoudt en er moeten volgende methoden geïmplementeerd worden:

  • toString() => geeft een String terug die wanneer ze geprint wordt de matrix moet voorstellen a.d.h.v. de ernstwaarden op elke locatie.
  • voegIncidentToe(int x, int y, Incident in) => voegt een incident toe aan een plaats met opgegeven coördinaten.
  • geefErnstWaarde(int x, int y) => geeft de totale ernstwaarde van alle incidenten die op een plaats met opgegeven coördinaten hebben plaatsgevonden.
  • geefErnstWaardeRegio(int x, int y) => geeft de totale ernstwaarde van een regio van 5x5 plaatsen (met de plaats met opgegeven coördinaten in de linkerbovenhoek).
  • vindErnstigsteRegio() => geeft de regio (5x5) die de grootste totale ernstwaarde heeft.

Je moest zelf geen main methode met user interface schrijven, de klassen waarin gewerkt kon worden was voldoende. Aangezien deze grootte array (250x300) veel lege vakjes bevat is het nuttiger en efficiënter om een spaarse matrix op te stellen. Zo'n matrix bevat enkel de nuttige informatie en laat dus de lege plaatsen weg wat aanzienlijk wat computergeheugen bespaart. Creëer nu een klasse die zo'n spaarse matrix bijhoudt zodat we de veel te logge matrix van 250x300 overbodig wordt. Let wel bij het overzicht van de Incidentenkaart moeten alle locaties geprint worden (dit gebeurt dus bij de toString()-methode). (Een klasse maken die een array van 250x300 bijhoudt was niet toegestaan.)

Augustus 2011

31 Augustus 2011, voormiddag

Gesloten Boek: (maximum 1 uur)

  1. Gegeven is een methode die de grootste gemene deler bepaalt. Herschrijf deze methode zodat deze recursief werkt.
  2. Geef het Insertionsort zoekalgoritme, bepaal de tijdscomplexiteit en de lusinvariantie.
  3. Gegeven is een methode die controleert of de letters in een String lowercase zijn, controleer deze methode op mogelijke logische en runtime fouten en verbeter deze.
  4. Bespreek polymorfisme versus dynamische binding door middel van een eigen voorbeeld.

Open boek: Je moet een TicketSysteem programma creëren voor de NMBS dat verschillende steden en hun onderlinge afstand bevat. Om geen tijd te hoeven verspillen met user interface is de main method al gegeven. De opgave is in drie opdrachten verdeelt:

  • Creëer een methode die een stad kan toevoegen aan het TicketSysteem alsook een methode die een connectie tussen twee steden kan toevoegen (parameters zijn: twee Strings die de stadsnamen bevatten en een int).
  • Vul de geefTicket methode (deze is static) aan en gebruik voor de verschillende types Tickets overerving (korte afstand, middelmatige afstand en lange afstand).
  • Creëer een methode die alle mogelijke reiswegen onder een maximaal bedrag uitprint. Geen enkele stad mag twee keer bezocht worden.

In de main method stond reeds een groot deel van de signature van de methodes vast, je mag echter nog parameters toevoegen mits goede reden.

Januari 2011

31 Januari 2011, voormiddag

Gesloten Boek: (maximum 1 uur)

  1. In het hoorcollege hebben we een array gesorteerd door middel van het merge algoritme (denk ik), hierin verdeelden we de array in twee delen. Schrijf eenzelfde algoritme dat ditmaal de array in drie delen opsplitst.
  2. Gegeven is de code van het QuickSort algoritme dat de integers in een array van klein naar groot sorteert. Pas dit algoritme aan zodat het van groot naar klein sorteert.
  3. Gegeven is een algoritme, bepaal de tijdscomplexiteit van het algoritme (en dan nog een vraag waar je zelf een algoritme moest gegeven).
  4. Bespreek Overriding en Overloading. Maak dit duidelijk door een eigen voorbeeld.

Open Boek: De opgave leek zeer hard op het practicum Creatures van dit jaar.

Je moet een simulatie maken van een oceaan waar verschillende organismen op een tweedimensionale wereld kunnen leven. In de oceaan bevindt er zich een uniform verdeelde hoeveelheid aan en aan . Er zijn twee soorten organismen, de Vissen: Haaien en Haring (gewoon een niet-vleesetende vis) en de Planten: Zeewier en Plankton. De vissen kunnen voortbewegen, eten en kunnen ook paren indien de afstand tussen de twee vissen van dezelfde soort kleiner is dan 1cm en de afstand met andere naburige vissen groter is dan 100cm. Het voortbewegen kost energie en zorgt ervoor dat er wordt omgezet in (de snelheid, energieverbruik en naar omzet varieert per vissoort). Indien de energie van een vis 0 bereikt dan sterft de vis. De planten voeden zich door middel van om te zetten naar . Indien er voldoende aanwezig is in de oceaan ontstaat er een nieuwe plant binnen 100cm van de 'moeder'-plant. Als er te weinig is dan sterft de plant.

Je moet de interactie met de gebruiker niet implementeren. Wel moet je rekening houden met het feit dat de gebruiker een hoeveelheid , , de lengte van de oceaan en de breedte van de oceaan moet kunnen ingeven (zorg dus dat deze parameters in je programma staan). De simulatie moet kunnen lopen tot een ingegeven maximum aantal stappen. Het moet ook mogelijk zijn om de simulatie op een bepaald moment te stoppen. Implementeer ook een manier zodat de data van de aantallen organismen kan worden uitgeschreven in een bestand. Je moet enkel de Haai-klasse van de specifieke klassen implementeren, zorg wel dat er in de andere klasse staat wat er moet staan (dus in de parent class).

(Het is allemaal nogal een wanorde maar op het examen staat het zeer duidelijk uitgelegd, vergelijkbaar met de practicum opgave van Creatures.)

18 Januari 2011, voormiddag

Gesloten Boek:

  1. Geef de output van volgend programma: (en dan een niet zo ingewikkeld, maar wel erg verwarrend programma). Het kwam er vooral op neer dat je moest weten of het eerste coördinaat in een matrix op de rij of de kolom duidt, en dat == niet de inhoud van objecten, maar de referenties vergelijkt.
  2. Geef de output van volgend programma: (en dan een programma dat een array sorteert door telkens element i en i+1 te vergelijken en om te wisselen indien nodig, zo tot op het eind, en dan opnieuw, maar dan niet meer tot op het eind omdat het laatste element dan al op zijn plaats staat).
  3. Leg uit: polymorfisme vs. dynamische binding.

Open Boek: Maak een programma dat een grafe voorstelt, die aan de volgende vereisten voldoet:

  • in elke knoop komt maar maximum een pijl toe;
  • er is maar 1 startknoop (waar geen pijl toekomt);
  • alle pijlen gaan maar in 1 richting.

Voorzie:

  • een operatie om een knoop toe te voegen, gegeven een uniek nummer (ze hebben allemaal een uniek nummer) en een type knoop (zie verder);
  • een operatie om een verbinding toe te voegen;
  • een operatie om te checken of er een pad is tussen de twee knopen (een pad is een serie van knopen die telkens in dezelfde richting verbonden zijn). Implementeer dit iteratief en recursief.
  • een operatie om het zwaarste pad te vinden (zie verder);
  • een operatie om de toestand van je grafe in een file te schrijven en een andere operatie om hem weer te lezen;
  • misschien ben ik nog iets vergeten.

Gewicht van paden en knopen: Het gewicht van een pad wordt gedefinieerd als de som van de gewichten van alle knopen in het pad (ook begin- en eindknoop). Het gewicht van een knoop is altijd de som van een "voorgangerberekening" en een "opvolgerberekening". Die berekeningen verschillen voor verschillende soorten knopen:

  • Simpele knopen:
    • voorgangerberekening = nummer van deze knoop * nummer van voorganger (knoop die pijl naar deze knoop heeft)
    • opvolgerberekening = nummer van deze knoop + aantal opvolgers (knopen waar deze knoop een pijl naar heeft)
  • Complexe knopen:
    • voorgangerberekening = nummer van deze knoop ^ 2 + nummer van voorganger ^ 2

Januari 2009

1e bach informatica, reeks 3(20 Januari 2009, namiddag)

Vraag 1: Definieer een klasse in Java om een vierkante tweedimensionale matrix van gehele waarden voor te stellen. Voorzie

  1. een eenvoudige constructor, die de matrix aanmaakt
  2. een methode om een waarde aan een element van de matrix toe te kennen,
  3. een methode die de waarde van een element van de matrix levert.
  4. een methode die een rij met sommen van de diagonalen berekent evenwijdig met de hoofddiagonaal.i


Vraag 2: definieer abstracte klasse, overriding, overloading

  1. geef een klasse-structuur van vlakke figuren met
  2. een abstracte superklasse
  3. een cirkel (met straal)
  4. een rechthoek (met lengte en breedte)
  5. een driehoek (met 3 zijden)
  • geef constructor, instantievariabelen, een methode voor de omtrek en oppervlakte van de vlakke figuren te bereken
  • een methode die 2 oppervlaktes van vlakke figuren vergelijkt, en waarden (-1, 0, 1) teruggeeft voor respectievelijk kleiner, gelijk aan of groter dan als uitkomst van de vergelijking.


Vraag 3: Bestandsinvoer en -uitvoer

  1. Welke soorten bestanden kan je onderscheiden aan de hand van wat er in geplaatst kan worden?
  2. Oefening:

Er zijn twee bestanden met studenten, die allebei geordend volgens stamnummer zijn. Eén bestand zijn alle studenten die fysica studeren, een ander bestand zijn alle studenten die Lichamelijke Opvoeding studeren. Voorzie een student klasse met de volgende instantievariabelen:

  • het stamnummer (een uniek geheel getal)
  • de geboortedatum
  • de voor- en achternaam
  • het geslacht
  • de studierichting
  • het studiejaar (1 voor 1BA, 2 voor 2BA,...)

Definieer de twee bestanden en maak een methode die de studenten van die bestanden op twee nieuwe bestanden zet:

  • één bestand met alle meisjes
  • één bestand met alle jongens

Deze bestanden moeten opnieuw geordend zijn volgens stamnummer. Je mag veronderstellen dat een student maar op één bestand kan voorkomen, dus dat een student maar één richting tegelijk kan studeren.

1e bach informatica, 20 Januari 2009 (voormiddag)

Vraag 1: Definieer een klasse in Java om een vierkante (8x8) tweedimensionale matrix van booleaanse waarden voor te stellen. De opdracht bestaat eruit de zet van een koningin op een schaakbord te voorspellen en alle velden die ze raakt (horizontaal, verticaal, diagonaal) op 'false' te zetten. (houdt er ook rekening mee dat het bord ook een groter speelveld dan 8x8 kan hebben). Maak eveneens:

  1. een eenvoudige constructor, die de matrix aanmaakt en alle velden standaard op 'true' zet
  2. een methode om een waarde aan een element van de matrix toe te kennen,
  3. een methode die de waarde van een element van de matrix levert.
  4. een methode die een de mogelijke velden op false zet.


Vraag 2: a)QuickSort:

  1. bespreek QuickSort (met woorden en voorbeelden)
  2. geef het algoritme als in een toepassing op objecten (waarbij je het hieronder kan toepassen)
  3. geef de volledige complexiteitsberekening

b) toepassing: Voorzie een klasse student met

  1. instantievariabelen naam, voornaam, stamnummer, studierichting, studiejaar, totaalpercentage
  2. getters en setters voor al deze variabelen
  3. een compareTo() om de ene student met de andere te vergelijken op basis van het totaalpercentage (1 is meer dan de andere student | 0 is hetzelfde | -1 is minder dan de andere student)

(onvolledig?)

Vraag 3: a) bespreek abstracte klasses, overridding en overloading b) Oefening: Voorzie een superklasse kaartenstapel (kaarten kunnen waarden 1-13 hebben en als soort harten-ruiten-klaveren-schoppen) en drie subklasse's:

  • kaartenstapel met dalende kaarten maar van dezelfde soort
  • kaartenstapel met dalende kaarten maar telkens met een verschillende kleur
  • kaartenstapel die enkele dezelfde waarden kan bevatten

Ook dienen er telkens al de nodige methoden (getters, setters,..) aanwezig te zijn (~ overerving) en voorzie ook telkens een juiste foutenopvang (~exceptions) (onvolledig?)

1e bach wiskunde, reeks 2(16 januari 2009)

  1. Definieer een klasse in Java om een vierkante tweedimensionale matrix van boolese waarden voor te stellen. Voorzie
    1. een eenvoudige constructor, die de matrix aanmaakt en alle waarden op true zet,
    2. een methode om een waarde aan een element van de matrix toe te kennen,
    3. een methode die de waarde van een element van de matrix levert.
    4. een "paardensprong-schaakspel": schrijf een methode die de coördinaten van een paard als parameterskrijgt en alle velden die door het paard kunnen worden "geslaan" op false zet.Zet ook de plaats waar het paard staat op false.
    1. defineer abstracte klasse, overriding, overloading
    2. geef een klassestructuur van vlakke figuren met
      1. een abstracte superklasse
      2. een cirkel (met straal)
      3. een rechthoek (met lengte en breedte)
      4. een driehoek (met 3 zijden)
      • geef constructor, instantievariabelen, een methode voor de omtrek en oppervlakte van de vlakke figuren te bereken
      • een methode die 2 oppervlaktes van vlakke figuren vergelijkt.
    1. Definieer een klasse student met de volgende instantievariabelen: Naam, Voornaam, Stamnummer, Punten (een geheel getal tussen 0 en 20)
    2. Maak een constructor en get- en set-methodes
    3. Schrijf een methode die een student vergelijkt met een andere student op basis van hun punten. De methode moet -1, 0 of 1 teruggeven.
    4. Definieer een klasse die een groep studenten voorstelt. Je mag er van uitgaan dat er niet meer dan 100 studenten zijn.
    5. Maak een constructor en get- en set-methodes voor een student op een bepaalde positie in de lijst.
    6. Schrijf een methode die de studenten sorteert op basis van hun punten (van hoog naar laag).
    7. Schrijf een methode die de mediaan van de punten van een groep studenten berekent. De mediaan is het punt van de middelste student als het aantal studenten oneven is en het gemiddelde van de punten van de twee middelste studenten als het aantal studenten even is.


1 Ba Wiskunde Reeks 2 (16 januari 2009)

    1. Schrijf een klasse die een vierkante matrix met gehele inputs beschrijft. Voorzie:
      1. instantievariabele(n),
      2. een eenvoudige constructor (die de dimensie van de matrix als parameter meekrijgt en alle waarden op 0 zet),
      3. een methode die een element uit de matrix geeft,
      4. een methode om een element in een matrix te plaatsen.
    2. We noemen een vierkante nxn-matrix een Latijns vierkant als voor een verzameling van n verschillende gehele getallen er geldt dat elk getal exact één keer per rij en kolom voorkomt. Schrijf een methode die voor een vierkante matrix nagaat of het een Latijns vierkant is.
  1. Invoer en uitvoer.
    1. Welke soorten bestanden kan je onderscheiden aan de hand van wat er in geplaatst kan worden?
    2. Toepassing: gegeven zijn twee bestanden met gehele getallen. In elk bestand zijn de getallen strikt stijgend geordend. Schrijf een klasse die deze twee bestanden samenvoegt tot één bestand, waarin de getallen nog steeds strikt stijgend geordend zijn. Het is niet de bedoeling dat je de getallen in een tabel plaatst!
  2. Een veelterm zoals kan worden beschreven met behulp van zijn coëfficiënten en exponenten. Een mogelijke voorstelling daarvan kan met een rij gebeuren, waarbij de coëfficiënten door de elementen van de rij worden voorgesteld, en de exponenten door de indices van de rij. De veelterm van daarnet wordt dan bijvoorbeeld (7.6, -6.3, 0.0, 2.6, 3.5). Definieer een klasse in Java om een veelterm op deze manier voor te stellen. Voorzie
    1. de instantiatievariabele die de coëfficiënten voorstelt,
    2. een constructor om een veelterm van een zekere graad te maken, waarbij de graad als parameter wordt gegeven, en waarbij alle coëfficiënten op 0 worden geïnitialiseerd,
    3. een methode om een waarde aan een coëfficiënt te geven, waarbij exponent en coëfficiënt als parameters worden gegeven,
    4. een methode die de graad van de veelterm opvraagt,
    5. een methode die de coëfficiënt horend bij een bepaalde exponent opvraagt,
    6. een methode die de functiewaarde van de veelterm berekent die hoort bij een bepaalde waarde van de variabele x,
    7. een methode die een nieuwe veelterm levert, die de afgeleide veelterm is van de actuele veelterm, en
    8. een benaderingsmethode gegeven door : de methode heeft als parameters de veelterm f, de afgeleide veelterm f', de eerste benadering en een nauwkeurigheid , en de methode stopt als of als k > 10 (genereer dan een uitzondering).


1 Ba Wiskunde Reeks 1 (15 januari 2009)

Vraag 1: Definieer een klasse die een vierkante matrix van gehele getallen voorstelt

  1. Schrijf een constructor
  2. Schrijf get- en set-methodes
  3. Schrijf een methode die nagaat of een matrix een magisch vierkant is. Een magisch vierkant is een n x n matrix die alle getallen van 1 tot en met n^2 bevat en waarvan de som van de elementen op de rijen, de kolommen en de twee diagonalen gelijk is.

Vraag 2:

  1. Definieer: recursie
  2. Schrijf een recursieve methode die nagaat of een string die als parameter wordt meegegeven een palindroom is. De methode moet true of false teruggeven.

Vraag 3:

  1. Definieer een klasse student met de volgende instantievariabelen: Naam, Voornaam, Stamnummer, Punten (een geheel getal tussen 0 en 20)
  2. Maak een constructor en get- en set-methodes
  3. Schrijf een methode die een student vergelijkt met een andere student op basis van hun punten. De methode moet -1, 0 of 1 teruggeven.


  1. Definieer een klasse die een groep studenten voorstelt. Je mag er van uitgaan dat er niet meer dan 100 studenten zijn.
  2. Maak een constructor en get- en set-methodes voor een student op een bepaalde positie in de lijst.
  3. Schrijf een methode die de studenten sorteert op basis van hun punten (van hoog naar laag).
  4. Schrijf een methode die de mediaan van de punten van een groep studenten berekent. De mediaan is het punt van de middelste student als het aantal studenten oneven is en het gemiddelde van de punten van de twee middelste studenten als het aantal studenten even is.

1 Ba Wiskunde Reeks 2 + Fysica (15 januari 2009)

(Vragen waren misschien iets ander geformuleerd, maar ze komen hier op neer).

Vraag 1: Maak een klasse die een matrix voorstelt.

  1. Voorzie een constructor met het aantal rijen en aantal kolommen als parameters. Bovendien moet de constructor de matrix ook vullen met nullen.
  2. Voorzie een methode voor het ophalen van een element uit de matrix.
  3. Voorzie methode om een element in de matrix een waarde te geven.
  1. Maak ook een methode die nagaat of een matrix(die meegeven wordt als parameter) een deelmatrix is van de andere matrix. De methode moet de positie van de linkerbovenhoek van de te zoeken matrix in de matrix teruggeven vb[rij,kolom]. Als die niet gevonden wordt moet [-1,-1] teruggeven worden.

Vraag 2:

  1. Beschrijf: recursie.
  2. Oefening: schrijf een recursieve methode voor binair zoeken, waarbij je een element als parameter krijgt en de positie moet teruggeven. Als het element zich niet in de rij bevindt, moet je -1 teruggeven. Bij binair zoeken verdeel je de rij in twee stukken en kijk je verder in het stuk waar het element zich bevindt, dit proces herhaal je steeds.

Vraag 3: Bestandsinvoer en -uitvoer

  1. Welke soorten bestanden kan je onderscheiden aan de hand van wat er in geplaatst kan worden?
  2. Oefening:

Er zijn twee bestanden met studenten, die allebei geordend volgens stamnummer zijn. Eén bestand zijn alle studenten die fysica studeren, een ander bestand zijn alle studenten die Lichamelijke Opvoeding studeren. Voorzie een student klasse met de volgende instantievariabelen:

    • het stamnummer (een uniek geheel getal)
    • de geboortedatum
    • de voor- en achternaam
    • het geslacht
    • de studierichting
    • het studiejaar (1 voor 1BA, 2 voor 2BA,...)
  1. Definieer de twee bestanden en maak een methode die de studenten van die bestanden op twee nieuwe bestanden zet:
  • één bestand met alle meisjes
  • één bestand met alle jongens

Deze bestanden moeten opnieuw geordend zijn volgens stamnummer. Je mag veronderstellen dat een student maar op één bestand kan voorkomen, dus dat een student maar één richting tegelijk kan studeren.


1 Ba Informatica, een deel van reeks 3 (19 januari 2009)

(Vragen waren misschien iets ander geformuleerd, maar ze komen hier op neer).

Vraag 1: Maak een klasse aan waarin je een sudoku voorstelt, en dan nog een methode waarbij je controleert of de sudoku correct opgelost is. Meer bepaald dus:

  1. In elke rij mag elke cijfer van 1 tot 9 slechts eenmaal voorkomen.
  2. In elke kolom mag elk cijfer van 1 tot 9 slechts eenmaal voorkomen.
  3. In elk van de 9 3x3 deelmatrices mag elke cijfer van 1 tot 9 slechts eenmaal voorkomen.

Vraag 2: Bestandsinvoer en -uitvoer

  1. Welke soorten bestanden kan je onderscheiden aan de hand van wat er in geplaatst kan worden?
  2. Je hebt 2 invoerbestanden die allebei enkel postieve gehele getallen bevatten die van laag naar hoog gesorteerd zijn. Lees die beide bestanden in, en creeer 1 uitvoerbestand waarin alle getallen opnieuw van laag naar hoog gesorteerd staan. Indien een getal in beide invoerbestanden voorkomt, waordt het slechts éénmaal in het uitvoerbestand opgenomen.

Opmerking: Je moet dit doen zonder de invoerbestanden in een rij op te slaan!

Vraag 3:

  1. Leg volgende begrippen uit: abstracte klasse, overriding, overloading.
  2. Maak een programma dat een kaartspel voorstelt.

Meer bepaald moet je 1 klasse hebben die een speelkaart voorstel, met de volgende eigenschappen: Een waarde (van 1 tot 13) en een soort (harten, ruiten, klaveren, schoppen). De kleur kan je afleiden vanuit de soort. Buiten een klasse om speelkaarten voor te stellen heb je ook een klasse nodig die een Kaartstapel voorstelt. Deze stapel heeft de volgende methodes: Een kaart toevoegen, een kaart weglaten. Je kan enkel een kaart bovenaan toevoegen, of de bovenste kaart weglaten. Elke stapel heeft ook een maximum aantal kaarten, bvb 4,13,52,... (je mag er vanuit gaan dat er slechts met 1 normaal kaartspel van 52 kaarten gespeeld wordt) Er zijn ook enkele speciale types van kaartstapel, die elk hun eigen speciale regels hebben. type1: Kaarten die toegevoegd worden, moeten van dezelfde soort zijn als de kaart daaronder (buiten de eerste kaart op de stapel uiteraard), en moet exact 1 lager zijn. (worden dus van laag naar hoog gesorteerd). Kaarten mogen van deze stapel niet weggelaten worden. Type2: Kaarten moeten afwisselen van kleur gestapeld worden (dus geen rood op rood, of zwart op zwart), en worden opnieuw van laag naar hoog gesorteerd. Van deze stapel mag de bovenste kaart afgehaald worden, tenzij de stapel leeg is uiteraard. Type3: Op deze stapel mogen enkel kaarten van van dezelfde waarde op elkaar gestapeld worden. Voor het weglaten gelden dezelfde regels als voor type2.

Je moet dus zowel de klasse Speelkaart, als Kaartstapel, als zijn 3 subklassen schrijven, en mogelijke fouten moeten met exceptions opgevangen worden (welke fouten kunnen er zich zoal voordoen?)

Januari 2008

1 Ba Informatica reeks 2 (14 januari 2008)

Vraag 1: Maak een klasse die een matrix voorstelt.

  1. Voorzie een constructor met het aantal rijen en aantal kolommen als parameters. Bovendien moet de constructor de matrix ook vullen met nullen.
  2. Voorzie een methode voor het ophalen van een element uit de matrix.
  3. Voorzie methode om een element in de matrix een waarde te geven.
  1. Maak ook een boolese methode die nagaat of een matrix(die meegeven wordt als parameter) een deelmatrix is van de andere matrix. De methode moet true of false terug geven.

Vraag 2: Veronderstel dat je 2 bestanden hebt die elk een rij strikt stijgende positieve gehele getallen bevatten. Zorg er nu voor dat je 1 uitvoerbestand krijgt waarin de beide rijen getallen ook in strikt stijgende volgorde staan. Indien een getal in beide bestanden voorkomt, moet het maar 1 keer in het uitvoerbestand voorkomen. DOE DIT ZONDER DE GETALLEN IN EEN RIJ IN TE LEZEN!!

Vraag 3:

  1. Bespreek het sorteeralgoritme Quicksort(uitleg en voorbeeld).
  2. Geef het java algoritme voor het sorteren van een rij van objecten,zoals de student klasse hieronder.
  3. Geef de volledige complexiteitsberekening.
  4. Maak een klasse die een student voorstelt met volgende gegevens:
    1. naam
    2. voornaam
    3. studiejaar
    4. studierichting
    5. stamnummer
    6. totaal percentage

Voorzie:

  1. constructor(en)
  2. instantievariabelen
  3. set - get methodes
  4. compareTo( ) methode die 2 studenten vergelijkt op basis van percentage(geeft 1 | -1 | 0 terug als punten van student > | < | = punten van student waarmee vergeleken wordt)

1 Ba Informatica reeks 1 (29 januari 2008)

Vraag 1: Schrijf een klasse die een matrix van gehele getallen definieert.

  1. Voorzie een constructor die als parameters het aantal rijen en kolommen van de matrix meekrijgt
  2. Voorzie inspectoren en mutators om een element op te vragen en een element te wijzigen.
  3. Maak een methode om te controleren of een matrix een deelmatrix is van een andere.

Vraag 2: Recursie

  1. Wat is recursie?
  2. Schrijf een recursieve methode om binair te zoeken in een geordende rij van gehele getallen.

Vraag 3: I/O

  1. Welke soorten bestanden zijn er?
  2. Maak een klasse Student, met volgende variabelen: idNummer, naam, voornaam, jaar, richting, geboortedatum, geslacht
  3. Er zijn 2 bestanden, één met studenten wiskunde, één met studenten informatica. Definieer deze bestanden, en maak een programma dat van deze beide klassen inleest, en wegschrijft naar 2 nieuwe bestanden: 1 met alle meisjes die één jaar voor zijn op hun leeftijd, en één met alle jongens die een jaar achter zijn. De 2 invoerbestanden zijn gesorteerd volgens idNummer, en de uitvoerbestanden moeten dat ook zijn.

1 ba Fysica reeks 1 (28 januari 2008)

Vraag1: Schrijf een klasse die een matrix van gehele getallen definieert.

  1. Voorzie een constructor die als parameters het aantal rijen en kolommen van de matrix meekrijgt
  2. Voorzie inspectoren en mutators om een element op te vragen en een element te wijzigen
  3. Een lokaal maximum is een matrixelement dat strikt groter is dan alle aanliggende (links boven beneden rechts) elementen. Schrijf een methode die het aantal lokale maxima in de matrix telt.

Vraag 2: Recursie

  1. Wat verstaat u onder recursie?
  2. Een bedrijf biedt als maandwedde voor beginnende werknemers de som van 2000 €. Elk dienstjaar wordt die som met 0,04 % verhoogt (dus maal 1,04 voor de duidelijkheid), en komt er nog eens een algemene bonus van 60 € bovenop. Schrijf een methode die het maandloon bepaalt voor het als parameter meegegeven dienstjaar.

Vraag 3: Bestandsinvoer en -uitvoer

  1. Welke soorten bestanden kan je onderscheiden aan de hand van wat er in geplaatst kan worden?
  2. Oefening: Er zijn twee bestanden met studenten, die allebei geordend zijn. Eén bestand zijn alle studenten die fysica studeren, een ander bestand zijn alle studenten die Lichamelijke Opvoeding studeren. Voorzie een student klasse met de volgende instantievariabelen:
    • het stamnummer (een uniek geheel getal)
    • de geboortedatum
    • de voor- en achternaam
    • het geslacht
    • de studierichting
    • het studiejaar (1 voor 1BA, 2 voor 2BA,...)
  3. Definieer de twee bestanden en maak een methode die de studenten van die bestanden op twee nieuwe bestanden zet:
    • één bestand met alle meisjes die een jaar of meer voor op hun generatie zitten
    • één bestand met alle jongens die een jaar of meer achter op hun generatie zitten

Deze bestanden moeten opnieuw geordend zijn. Je mag veronderstellen dat een student maar op één bestand kan voorkomen, dus dat een student maar één richting tegelijk kan studeren. (Je zit mee op je generatie als je 18 wordt in het kalender jaar waarin je aan je 1BA begint, bijvoorbeeld jan is geboren op 4 april 1988 en zit in derde Bachelor wiskunde. Dan zit hij 1 jaar voor op zijn generatie.)


1 Ba Wiskunde Reeks 1 (22 januari 2008)

  1. Vraag 1
    1. Schrijf een klasse die een vierkante matrix met booleans voorstelt. Voorzie:
      1. een eenvoudige constructor (die het aantal rijen en kolommen als parameter meekrijgt en alle waarden op true zet),
      2. een methode die een element uit de matrix geeft,
      3. een methode om een element in een matrix te plaatsen.
    2. Bij schaken is de koningin een belangrijke pion: ze kan zich zowel horizontaal, verticaal als schuin bewegen over een willekeurig aantal vakjes. Schrijf een methode waarbij als parameters de coördinaten van de koningin worden meegegeven en waarbij je alle posities waar de koningin naartoe kan op false zet. Ook de plaats waar de koningin eerst stond moet op false staan.
  2. Recursie
    1. Beschrijf: recursie.
    2. Oefening: schrijf een recursieve methode voor binair zoeken, waarbij je een element als parameter krijgt en de positie moet teruggeven. Als het element zich niet in de rij bevindt, moet je -1 teruggeven. Bij binair zoeken verdeel je de rij in twee stukken en kijk je verder in het stuk waar het element zich bevindt, dit proces herhaal je steeds.
  3. Invoer en uitvoer
    1. Welke soorten bestanden kan je onderscheiden aan de hand van wat er in geplaatst kan worden?
    2. Oefening:
    • Er zijn twee bestanden met studenten, die allebei geordend zijn. Eén bestand zijn alle studenten die Wiskunde studeren, een ander bestand zijn alle studenten die Lichamelijke Opvoeding studeren. Voorzie een student klasse met de volgende instantievariabelen:
    1. het stamnummer (een uniek geheel getal)
    2. de geboortedatum
    3. de voor- en achternaam
    4. het geslacht
    5. de studierichting
    6. het studiejaar (1 voor 1BA, 2 voor 2BA,...)
    • Definieer de twee bestanden en maak een methode die de Studenten van die bestanden op twee nieuwe bestanden zet:
    1. één bestand met alle meisjes die een jaar of meer voor op hun generatie zitten
    2. één bestand met alle jongens die een jaar of meer achter op hun generatie zitten
    • Deze bestanden moeten opnieuw geordend zijn. Je mag veronderstellen dat een student maar op één bestand kan voorkomen, dus dat een student maar één richting tegelijk kan studeren.
    • Je zit mee op je generatie als je 18 wordt in het kalender jaar waarin je aan je 1BA begint, bijvoorbeeld jan is geboren op 4 april 1988 en zit in derde Bachelor wiskunde. Dan zit hij 1 jaar voor op zijn generatie.

1 Ba Wiskunde Reeks 1 (21 januari 2008)

    1. Schrijf een klasse die een vierkante matrix met gehele inputs beschrijft. Voorzie:
      1. instantievariabele(n),
      2. een eenvoudige constructor (die de dimensie van de matrix als parameter meekrijgt en alle waarden op 0 zet),
      3. een methode die een element uit de matrix geeft,
      4. een methode om een element in een matrix te plaatsen.
    2. We noemen een vierkante nxn-matrix een Latijns vierkant als voor een verzameling van n verschillende gehele getallen er geldt dat elk getal exact één keer per rij en kolom voorkomt. Schrijf een methode die voor een vierkante matrix nagaat of het een Latijns vierkant is.
  1. Invoer en uitvoer.
    1. Welke soorten bestanden kan je onderscheiden aan de hand van wat er in geplaatst kan worden?
    2. Toepassing: gegeven zijn twee bestanden met gehele getallen. In elk bestand zijn de getallen strikt stijgend geordend. Schrijf een klasse die deze twee bestanden samenvoegt tot één bestand, waarin de getallen nog steeds strikt stijgend geordend zijn. Het is niet de bedoeling dat je de getallen in een tabel plaatst!
    1. Wat is (tijds)complexiteit van een algoritme?
    2. Elke veelterm kan beschreven worden door een rij getallen waarin zijn coëfficiënten staan. Zo kan 3.5x³+2.4x²+7.0 voorgesteld worden door {7.0, 0.0, 2.4, 3.5}. Schrijf een klasse waarin veeltermen op deze manier voorgesteld worden. Voorzie:
      1. instantievariabele(n),
      2. een constructor die de graad van de veelterm meekrijgt en alle coëfficiënten op 0 zet,
      3. een methode om een coëfficiënt bij een bepaalde exponent op te vragen,
      4. een methode om een coëfficiënt bij een bepaalde exponent te plaatsen,
      5. een methode die de graad van de veelterm opvraagt,
      6. een methode die de functiewaarde berekent als men een zekere waarde x invult,
      7. een methode die de som van de huidige veelterm en een als parameter opgegeven veelterm berekent.
    3. Bereken de tijdscomplexiteit van je algoritme voor het bepalen van een functiewaarde.

Januari 2007

1e bach wiskunde reeks1

  1. Schrijf een klasse die een matrix beschrijft met volgende kenmerken:
    1. constructor met als argument het aantal rijen en kolommen
    2. methode dat de waarde element op een bepaalde plaats terug geeft (argumenten x en y)
    3. methode die de waarde van een element zet (argumenten x, y en een waarde).
    4. methode die een boolean terug geeft en als argument (a) een andere matrix heeft. De methode moet true terug geven als a een deelmatrix is.
  2. Leg uit overriding, overloading, abstracte klasse + voorbeeld uitwerken.
  3. Wat is (tijds)complexiteit van een algoritme?
  4. Schrijf een klasse die een veelterm beschrijft (bv 4x^4 + 3x^3 + 2x^2 + 7x + 1).
    1. de coefficienten moeten in een rij zitten
    2. methode met een argument (x) die de waarde van de veelterm terug geeft. Bepaal de tijdscomplexiteit hiervan.
    3. methode die een veelterm als argument heeft en die een veelterm terug geeft die de som is van de eigen veelterm en de veelterm in het argument

1e bach wiskunde, reeks 2

  1. Definieer een klasse in Java om een vierkante tweedimensionale matrix van boolese waarden voor te stellen. Voorzie
    1. een eenvoudige constructor, die de matrix aanmaakt en alle waarden op true zet,
    2. een methode om een waarde aan een element van de matrix toe te kennen,
    3. een methode die de waarde van een element van de matrix levert.
    4. een "paardensprong-schaakspel": schrijf een methode die de coördinaten van een paard als parameterskrijgt en alle velden die door het paard kunnen worden "geslaan" op false zet.
  2. Wat versta je onder recursie?
    Schrijf een recursieve methode die nagaat of een string een palindroom is.
    De string moet als parameter aan de methode gegeven worden.
  3. Een veelterm zoals kan worden beschreven met behulp van zijn coëfficiënten en exponenten. Een mogelijke voorstelling daarvan kan met een rij gebeuren, waarbij de coëfficiënten door de elementen van de rij worden voorgesteld, en de exponenten door de indices van de rij. De veelterm van daarnet wordt dan bijvoorbeeld (7.6, -6.3, 0.0, 2.6, 3.5). Definieer een klasse in Java om een veelterm op deze manier voor te stellen. Voorzie
    1. de instantiatievariabele die de coëfficiënten voorstelt,
    2. een constructor om een veelterm van een zekere graad te maken, waarbij de graad als parameter wordt gegeven, en waarbij alle coëfficiënten op 0 worden geïnitialiseerd,
    3. een methode om een waarde aan een coëfficiënt te geven, waarbij exponent en coëfficiënt als parameters worden gegeven,
    4. een methode die de graad van de veelterm opvraagt,
    5. een methode die de coëfficiënt horend bij een bepaalde exponent opvraagt,
    6. een methode die de functiewaarde van de veelterm berekent die hoort bij een bepaalde waarde van de variabele x,
    7. een methode die een nieuwe veelterm levert, die de afgeleide veelterm is van de actuele veelterm, en
    8. een benaderingsmethode gegeven door : de methode heeft als parameters de veelterm f, de afgeleide veelterm f', de eerste benadering en een nauwkeurigheid , en de methode stopt als of als k > 10 (genereer dan een uitzondering).

1e Bach Informatica

  1. Matrices
    1. Schrijf een klasse die een matrix beschrijft met de nodige get en set methodes.
    2. Maak dan een methode waarmee nagegaan wordt of een matrix een zadelpunt bevat en dan wordt deze waarde teruggegeven, anders wordt de waarde -1 teruggegeven.

      Met een zadelpunt a[i][j] wordt bedoeld dat
      a[i][j] >= alle elementen uit de i-de rij EN
      a[i][j] <= alle elementen uit de j-de kolom

      Als een matrix twee zadelpunten bevat, dan zal de waarde van die zadelpunten gelijk zijn.
  2. Bestandsinvoer/-uitvoer
    1. Welke soorten bestanden zijn er?
    2. Schrijf een programma om de inhoud van twee bestanden samen te voegen in één bestand zonder gebruik te maken van een rij.
      Elk bestand bevat een rij van strikt stijgende getallen, en in het nieuwe bestand moet ook weer een rij van strikt stijgende getallen staan.
  3. Maak een klasse die een speelkaart beschrijft. Elke kaart heeft een waarde (van 1-13) een een soort(harten, koeken, klaveren, schoppen). Aan de hand van de soort kan bepaald worden welke kleur de kaart heeft.

    Maak een stapel van kaarten na. We gaan ervanuit dat er maar één kaartspel word gebruikt (52 kaarten).
    Aan de stapel kunnen we kaarten toevoegen of weghalen.

    Maak dan de correcte subklassen om volgende problemen te implementeren.
    Maak ook steeds gebruik van exceptions op de juiste plekken. (Wat kan er fout lopen?)
    1. De kaartenstapel moet afwisselen in kleur en de waardes van de volgende kaart moet exact 1 hoger zijn dan die van de vorige kaart. Er mag geen kaart weggehaald kunnen worden.
    2. De kaartenstapel mag alleen kaarten van dezelfde soort bevatten en de waardes moeten dalend zijn. Er mag een kaart weggehaald worden indien mogelijk.
    3.  ?? (vergeten, sorry)

Januari 2006 (1e bach geologie)

  1. Definieer een klasse matrix zoals hierboven uitgelegd staat. Definieer ook: een methode die het aantal keer de maximale waarde die in de matrix voorkomt berekent
  2. Geef de definitie van recursie
    1. Definieer een recursieve methode die de som berekent van de cijfers van een getal dat als parameter wordt meegegeven
  3. Schrijf de klassen voor studenten en rijen van studenten zoals hierboven uitgelegd staat.
    1. schrijf een methode die weergeeft hoeveel studenten hogere punten hebben als de student die als parameter wordt meegegeven
    2. schrijf een methode die het gemiddelde van alle studenten berekent.

Augustus 2005 (1e bach geologie)

  1. Definieer een klasse matrix zoals hierboven uitgelegd staat. Zoek het aantal minima en maxima in de matrix
  2. Wat is recursie?
    1. Geef een recursieve methode om de som van de cijfers op even plaatsen van een getal te geven. vb: 245676756. Je moet van achter beginnen. Dus 6 staat op de nulde plaats, 5 op de eerste, 7 op de tweede, enz..
  3. Maak een woordenboek element aan dat een woord en zijn vertaling bevat. Maak daarbij constructor, get set methodes, methode om een element met een ander te vergelijken op basis van het woord.
    1. maak een woordenboek aan en zoek methodes voor:
    2. een nieuw woord en zijn verklaring toe te voegen, en zo dat de alfabetische volgorde behouden blijft.
    3. een verklaring uit te schrijven
    4. Tip: gebruik compareTo(String str)

Januari 2005

1e bach geologie, reeks 1

  1. Definieer een klasse matrix zoals hierboven uitgelegd staat. Een magisch vierkant is een vierkant waarvan de som van elke rij gelijk is aan de som van elke kolom en de som van elke diagonaal, en waarvan elke getal van 1 tot grootte² juist een keer voorkomt. Schrijf een methode die onderzoekt of een matrix een magisch vierkant is.
  2. geef een definitie van recursie
    1. Schrijf een recursieve methode voor: Een werknemer werkt voor een bedrijf. Het eerste jaar krijgt hij 2000 EUR loon. Elk dienstjaar dat hij er langer werkt krijgt hij een opslag van 4% en een vaste premie van 60 EUR. Schrijf een recursieven methode die het loon van een willekeurig dienstjaar uitrekent (dienstjaar als parameter).
  3. Schrijf klassen voor Studenten en rijen van Studenten analoog aan de uitleg van hierboven. Definieer ook:
    1. een methode die de rij ordent van hoge resultaten naar lage resultaten
    2. een methode die de mediaan zoekt van de punten van de rij Studenten (mediaan oneven grootte rij is midden, mediaan even grootte is het gemiddelde van de twee elementen die in het midden staan.)

1e bach geologie, reeks 2

  1. Definieer een klasse matrix zoals hierboven uitgelegd staat, en met een methode om te controlleren of een matrix een deelmatrix is van je oorspronkelijke matrix;
  2. Definieer recursie
    1. Een getal in een rij kan gezocht worden met de binaire methode. Dit betekend dat je je getal gaat vergelijken met het midden van je rij, en telkens je rij verkleint.
    2. Definieer een rij van variabelen. Schrijf een recursieve methode om de positie van een getal in de rij te bepalen.
  3. Schrijf klassen voor Studenten en rijen van Studenten analoog aan de uitleg van hierboven. Je mag veronderstellen dat er niet meer dan 100 studenten zijn. Schrijf ook nog methodes voor:
    1. het gemiddelde te berekenen van alle punten van alle studenten
    2. het aantal studenten met punten op of boven het gemiddelde te berekenen

1e bach geografie

  1. Definieer een klasse matrix zoals hierboven uitgelegd staat, en met een methode om te controleren hoe vaak het maximum voorkomt.
  2. Wat is recursie?
    1. maak een recursieve methode om de som van de cijfers van een getal te bepalen
  3. Schrijf klassen voor Studenten en rijen van Studenten analoog aan de uitleg van hierboven
    1. geef het gemiddelde aantal punten van de studenten
    2. bereken het aantal studenten dat hogere punten heeft dan één welbepaalde student ( naam van die student is een parameter, punten zelf moeten nog gezocht worden)

Augustus 2005 geografen

  1. Definieer een klasse matrix zoals hierboven uitgelegd staat, en een methode of een matrix magisch is. Een magisch vierkant heeft unieke waarden, van 1 tot n². De som van de rijen, kolommen en diagonalen is telkens gelijk.
  2. wat is recursie?
    1. een werknemer verdient een bedrag x per jaar. Elk jaar krijgt hij een procentuele verhoging van 4% bovenop zijn loon. Daarbovenop krijgt ie nog een jaarlijkse vaste bonus van bv. 60€. Hoeveel verdient de werknemer na x aantal jaar. Los recursief op (aantal jaar wordt als parameter meegegeven)
  3. Schrijf klassen voor Studenten en rijen van Studenten analoog aan de uitleg van hierboven
    1. plaats de studenten in dalende volgorde van punten
    2. geef de mediaan van punten

januari 2004 geografen

  1. Definieer een klasse matrix zoals hierboven uitgelegd staat, en schrijf een methode waarin je het aantal lokale minima en lokale maxima kunt bepalen. (lokale minima zijn plaatsen in de matrix waarbij de vier omliggende elementen groter zijn dan het gegeven element, lokale maxima uiteraard met vier omliggende elementen kleiner. op de rand kunnen geen maxima en minima voorkomen)
  2. schrijf een methode waarin je onderzoekt of twee strings rijmen. n is gelijk aan het aantal karakters dat moet rijmen en wordt als parameter meegegeven.
  3. schrijf een klasse telefooncontactpersoon. Deze bevat een naam en een nummer. Maak methodes voor het volgende:
    1. een constructor
    2. de naam teruggeven
    3. de nummer opvragen
    4. een nummer wijzigen bij een bepaalde naam
    5. Schrijf ook een klasse telefoonboek die een reeks van dergelijke personen bevat. Maak methodes voor oa
      1. Constructor
      2. Voeg een persoon toe
      3. Verwijder persoon
      4. vraag nummer op bij een gegeven naam
      5. en nog een paar ander
    6. opm alles moet in alfabetisch volgorde staan en elke naam kan maar 1 keer voorkomen, dus 1 nummer bij 1 naam.

Januari 2003

Wat ik (Pelle) me nog herinner van 5 jaar geleden

  1. Geef het algoritme van quicksort, leg dit uit met je eigen woorden, bereken de complexiteit en werk uit op een zelfgekozen voorbeeld
  2. Maak een methode die naagaat of er een 'zadelpunt' in een matrix zit. Een zadelpunt definiëren we in dit geval als een punt waarvan alle buren (niet schuin) allemaal groter of kleiner zijn het punt.

Januari 1999

Dit examen is reeds tien jaar oud en niet meer helemaal relevant.

  1. Gegeven een vierkante matrix met dimensie met . Schrijf een functie die, als de som van de elementen van de buitenste rijen en kolommen kleiner is dan de som van de overige elementen, true geeft. Doe dit wel recursief, dus, doe dit ook voor de matrix zoder die buitenkant, enzo, tot je nemeer verder kunt. Dus, als alles true is, moet de uiteindelijke functie pas true geven.
  2. Gegeven:
    Const n = ...;
    Type info = record
    sleutels : integer;
    ...
    end;
    index = [1..n];
    Var a : array[index] of info;

    Bespreek quicksort:
    • Geeft het algoritme (in Pascal) voor de gegeven declaraties.
    • Maak een schema van het algoritme met gebruik te maken van de volgende rij: (hier stonden 8 getallen)
    • Leg uit en bereken de complexiteit van dit algoritme.
  3. Gegeven 2 bestanden, een met de info van de mensen van Wiskunde, een met de mensen van Natuurkunde. De bestanden bevatten records per persoon die er als volgt uit zien:
    • Inschrijvingsnummer
    • Naam
    • Voornaam
    • Geboortedatum
    • Geslacht
    Maak met deze informatie 2 nieuwe bestanden, waar de personen geordend zijn per geslacht. Zet er ook bij in welke studierichting ze zitten. Let wel, de records zijn geordend per inschrijvingsnummer, (in stijgende volgorde) en dit moet ook zo zijn in de nieuwe bestanden.