Tentamen Algoritmiek Opleiding Informatiekunde, Studiejaar 2006-2007 Maandag 15 januari 2007: 14.00 - 17.00 Academiegebouw, zaal 12 1) Als je het begrip ‘algoritme’ definieert als ‘een verzameling stappen die beschrijven hoe een bepaalde taak wordt uitgevoerd’, ontbreken er drie belangrijke elementen. Welke zijn deze? Licht je antwoord toe. 2) Gegevens worden in het computergeheugen vastgelegd in bitpatronen. Geef van elk van de volgende soorten gegevens welke notaties er hiervoor worden gebruikt: (a) Tekst (b) Getallen (c) Beeld 3) Getalconversies: (a) Zet -5 om in een ‘two’s complement’ notatie die gebruik maakt van patronen van 6 bits. (b) Decodeer het bitpatroon 11011100 in een decimale breuk door het patroon op te vatten als een ‘floating point’ weergave en waarbij de exponent gedecodeerd moet worden volgens de ‘three-bit excess’methode. Geef via een algoritme aan hoe je bij je uitkomst bent gekomen. 4) In welk onderdeel van de computer vinden operaties op gegevens (zoals optellen en aftrekken) plaats? Geef aan welke subcomponenten dit onderdeel bevat en wat de functie(s) van elk van deze subcomponenten is (zijn). 5) Stel je hebt een ongesorteerde lijst met duizend verschillende service burgernummers en je wilt controleren met een programmaatje of een bepaald nummer in de lijst voorkomt. Geef in pseudocode een algoritme voor een dergelijk programma. 6) We kunnen de essentie van het imperatieve programmeerparadigma samenvatten als de beschrijving van een proces dat leidt tot de oplossing van een bepaald probleem. Geef vergelijkbare kernachtige definities van de drie andere programmeerparadigma’s die men vaak noemt naast bovengenoemd paradigma. 7) Arrays. (a) Beschrijf twee verschillende manieren om in Java de elementen van een array te copiëren naar een andere array. (b) Hoe test je in Java of twee arrays dezelfde elementen bevatten? 8) ‘Class’ (oftewel ‘static’) methoden. (a) Leg uit wat een ‘class method’ (ook wel ‘static method’) in Java is. (b) Geef minstens drie verschillende doelen waarvoor ‘class methods’in Java worden gebruikt. (c) Noem minstens drie ‘classes’ die gedefinieerd zijn in de Java API die ‘class methods’ definiëren. 9) ‘overloading’ en ‘overriding’ (a) Leg uit wat ‘method overloading’ betekent. Licht je antwoord toe aan de hand van een voorbeeld. (b) Wat is het verschil tussen ‘method overloading’ en ‘method overriding’? Maak duidelijk aan de hand van een voorbeeld. 10) Schrijf een ‘class’ genaamd Date die de volgende variabelen en methoden bevat: (a) Instantievariabelen voor jaar, maand (1-12), en dag (1-31). (b) Een constructor die jaar, maand en dag initialiseert met waarden die bepaald worden door parameters. (c) Een methode advance die de datum met één dag vooruitzet. Bedenk hierbij dat deze methode voor alle dagen moet werken, inclusief de laatste dag van een maand of jaar. Laat advance gebruik maken van een al bestaande ‘static’ methode daysInMonth die het aantal dagen van een bepaalde maand in een bepaald jaar aflevert. (d) Een methode compareTo die -1, 0, of +1 teruggeeft afhankelijk van de vraag of dit Date-object een eerdere, dezelfde, of een latere datum bevat dan/als een ander Date-object, dat als parameter voorkomt in compareTo. (e) Een toString methode die jaar, maand en dag als een string aflevert in het formaat “yyyy-mm-dd”. 11) Maak een Person class die drie instantievariabelen kent: achternaam, voornaam, en geboortedatum. De namen zijn strings, de datum is een object van het class type Date zoals je gemaakt hebt in opdracht (10) hierboven. Voeg een constructor toe. Creëer vervolgens een Employee class die een subclass is van de Person class. Employee moet twee instantievariabelen bevatten: salaris (van type double) en startdatum van aanstelling (van type Date). Voeg ook hier een constructor toe. 12) Bob, Peter en Sam maken samen een reis. Peter en Sam zijn goede lopers en leggen ieder per uur 5 km. af. Bob is slecht ter been en reist in een kleine auto waarin hoogstens twee mensen in kunnen zitten. De auto legt 50 km. per uur af. De drie vrienden spreken het volgende reisschema af: (a) Ze vertrekken tegelijkertijd, Bob en Sam in de auto, Peter te voet. (b) Na enige tijd, zet Bob Sam af die de reis lopend voortzet. Bob rijdt terug en pikt Peter op. (c) Bob en Peter rijden samen verder totdat ze Sam hebben ingehaald. (d) Dan gaat Sam weer in de auto mee met Bob, en gaat Peter weer te voet verder, net als in a). Zo herhaalt het schema zich totdat ze het eindpunt van de reis hebben bereikt. 1. Hoeveel km. per uur legt het gezelschap af? 2. Hoeveel tijd van de totale reistijd zit er maar één persoon in de auto? 3. Wat gebeurt er in de extreme gevallen, dwz. wat gebeurt er als Sam en Peter helemaal niets afleggen (0 km. per uur), en als ze net zo hard vooruitgaan als de auto (dus ook 50 km. per uur afleggen)? -Succes-Succes-Succes-Succes-Succes-Succes-Succes-Succes-Succes-Succes-Succes-