Beginselen van programmeren: verschil tussen versies
→De matrix klasse: dubbel |
|||
Regel 66: | Regel 66: | ||
##een methode die de functiewaarde van de veelterm berekent die hoort bij een bepaalde waarde van de variabele x, | ##een methode die de functiewaarde van de veelterm berekent die hoort bij een bepaalde waarde van de variabele x, | ||
##een methode die een nieuwe veelterm levert, die de afgeleide veelterm is van de actuele veelterm, en | ##een methode die een nieuwe veelterm levert, die de afgeleide veelterm is van de actuele veelterm, en | ||
##een benaderingsmethode gegeven door <math>x_k = x_{k - 1} - \frac{f\left(x_{k - 1}\right)}{f'\left(x_{k - 1}\right)}</math>: de methode heeft als parameters de veelterm f, de eerste benadering <math>x_0</math> en een nauwkeurigheid <math>\varepsilon</math>, en de methode stopt | ##een benaderingsmethode gegeven door <math>x_k = x_{k - 1} - \frac{f\left(x_{k - 1}\right)}{f'\left(x_{k - 1}\right)}</math>: de methode heeft als parameters de veelterm f, de afgeleide veelterm f', de eerste benadering <math>x_0</math> en een nauwkeurigheid <math>\varepsilon</math>, en de methode stopt als <math>\left|f\left(x_k\right)\right| < \varepsilon</math> of als k > 10 (genereer dan een uitzondering). | ||
== Januari 2006 (1e bach geologie) == | == Januari 2006 (1e bach geologie) == |
Versie van 26 jan 2007 18:36
Algemeen
Het examen is mondeling met schriftelijke voorbereiding. Bij prof. Olivié kan je bijna 100% zeker zijn van ongeveer deze (types) vragen:
- 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
- Enkele begrippen uitleggen, overloading, dynamische binding, overriding, tijdscomplexiteit etc.
- Oefeningen over matrices
- Sorteeralgoritmes
- 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
- maak een eenvoudige constuctor
- maak get- en setmethodes
- 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.
- maak een constructor die de rij aanmaakt
- methode om student op een bepaalde plaats in de rij te zetten
- methode om de positie van een student in een rij op te roepen
Januari 2007
1e bach wiskunde reeks1
- Schrijf een klasse die een matrix beschrijft met volgende kenmerken:
- constructor met als argument het aantal rijen en kolommen
- methode dat de waarde element op een bepaalde plaats terug geeft (argumenten x en y)
- methode die de waarde van een element zet (argumenten x, y en een waarde).
- 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.
- Leg uit overriding, overloading, abstracte klasse + voorbeeld uitwerken.
- Wat is (tijds)complexiteit van een algoritme?
- Schrijf een klasse die een veelterm beschrijft (bv 4x^4 + 3x^3 + 2x^2 + 7x + 1).
- de coefficienten moeten in een rij zitten
- methode met een argument (x) die de waarde van de veelterm terug geeft. Bepaal de tijdscomplexiteit hiervan.
- 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
- Definieer een klasse in Java om een vierkante tweedimensionale matrix van boolese waarden voor te stellen. Voorzie
- een eenvoudige constructor, die de matrix aanmaakt en alle waarden op true zet,
- een methode om een waarde aan een element van de matrix toe te kennen,
- een methode die de waarde van een element van de matrix levert.
- 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.
- 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. - 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
- de instantiatievariabele die de coëfficiënten voorstelt,
- 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,
- een methode om een waarde aan een coëfficiënt te geven, waarbij exponent en coëfficiënt als parameters worden gegeven,
- een methode die de graad van de veelterm opvraagt,
- een methode die de coëfficiënt horend bij een bepaalde exponent opvraagt,
- een methode die de functiewaarde van de veelterm berekent die hoort bij een bepaalde waarde van de variabele x,
- een methode die een nieuwe veelterm levert, die de afgeleide veelterm is van de actuele veelterm, en
- 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).
Januari 2006 (1e bach geologie)
- 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
- Geef de definitie van recursie
- Definieer een recursieve methode die de som berekent van de cijfers van een getal dat als parameter wordt meegegeven
- Schrijf de klassen voor studenten en rijen van studenten zoals hierboven uitgelegd staat.
- schrijf een methode die weergeeft hoeveel studenten hogere punten hebben als de student die als parameter wordt meegegeven
- schrijf een methode die het gemiddelde van alle studenten berekent.
Augustus 2005 (1e bach geologie)
- Definieer een klasse matrix zoals hierboven uitgelegd staat. Zoek het aantal minima en maxima in de matrix
- Wat is recursie?
- 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..
- 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.
- maak een woordenboek aan en zoek methodes voor:
- een nieuw woord en zijn verklaring toe te voegen, en zo dat de alfabetische volgorde behouden blijft.
- een verklaring uit te schrijven
- Tip: gebruik compareTo(String str)
Januari 2005
1e bach geologie, reeks 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.
- geef een definitie van recursie
- 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).
- Schrijf klassen voor Studenten en rijen van Studenten analoog aan de uitleg van hierboven. Definieer ook:
- een methode die de rij ordent van hoge resultaten naar lage resultaten
- 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
- 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;
- Definieer recursie
- 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.
- Definieer een rij van variabelen. Schrijf een recursieve methode om de positie van een getal in de rij te bepalen.
- 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:
- het gemiddelde te berekenen van alle punten van alle studenten
- het aantal studenten met punten op of boven het gemiddelde te berekenen
1e bach geografie
- Definieer een klasse matrix zoals hierboven uitgelegd staat, en met een methode om te controleren hoe vaak het maximum voorkomt.
- Wat is recursie?
- maak een recursieve methode om de som van de cijfers van een getal te bepalen
- Schrijf klassen voor Studenten en rijen van Studenten analoog aan de uitleg van hierboven
- geef het gemiddelde aantal punten van de studenten
- 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
- 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.
- wat is recursie?
- 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)
- Schrijf klassen voor Studenten en rijen van Studenten analoog aan de uitleg van hierboven
- plaats de studenten in dalende volgorde van punten
- geef de mediaan van punten
januari 2004 geografen
- 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)
- 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.
- schrijf een klasse telefooncontactpersoon. Deze bevat een naam en een nummer. Maak methodes voor het volgende:
- een constructor
- de naam teruggeven
- de nummer opvragen
- een nummer wijzigen bij een bepaalde naam
- Schrijf ook een klasse telefoonboek die een reeks van dergelijke personen bevat. Maak methodes voor oa
- Constructor
- Voeg een persoon toe
- Verwijder persoon
- vraag nummer op bij een gegeven naam
- en nog een paar ander
- 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
- Geef het algoritme van quicksort, leg dit uit met je eigen woorden, bereken de complexiteit en werk uit op een zelfgekozen voorbeeld
- 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 zeven jaar oud en niet meer helemaal relevant.
- 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.
- 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.
- 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 gesacht. 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.