INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN



Vergelijkbare documenten
Programmeren (1) Examen NAAM:

Modelleren en Programmeren

Modelleren en Programmeren

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

Modelleren en Programmeren

REEKS I. Zaterdag 6 november 2010, 9u

NAAM: Programmeren 1 Examen 29/08/2012

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

NAAM: Programmeren 1 Examen 21/01/2011

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

Project 2: LOTTO simulatie Programmeren I

Modelleren en Programmeren

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

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Lessen Java: Reeks pag. 1

Overerving & Polymorfisme

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

Informatica: C# WPO 13

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Vakgroep CW KAHO Sint-Lieven

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR

IMP Uitwerking week 13

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Informatica: C# WPO 12

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Synthese-oefeningen: Objectoriëntatie

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Tentamen Imperatief Programmeren

Programmeren in Java 3

Deel 1 : Gesloten Boek

Programmeren in Java les 3

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Modelleren en Programmeren

3. Structuren in de taal

Abstracte klassen & Interfaces

Labo 2 Programmeren II

Ingebouwde klassen & methodes

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

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

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Zelftest Programmeren in Java

Oefeningenexamen Informatica: juni 2015

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Informatica: C# WPO 10

Informatica: C# WPO 7

Informatica: C# WPO 9

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad

NAAM: Programmeren 1 Examen 31/08/2011


Modelleren en Programmeren

Programmeren in C++ Efficiënte zoekfunctie in een boek

OEFENINGEN PYTHON REEKS 6

Design patterns Startbijeenkomst

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Programmeren Het gesloten boek examen 1.1

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Simon de schildpad J van Weert 1

meerkeuzevragen informatica jan 2007

Examen Datastructuren en Algoritmen II

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tussentijdse Toets Wiskunde 2 1ste bachelor Biochemie & Biotechnologie, Chemie, Geografie, Geologie en Informatica april 2011

Inleiding C++ Coding Conventions

Labo 1 Programmeren II

PO: Informatica Olympiade

eerste voorbeelden in Java

Een inleiding in de Unified Modeling Language 67

Inleiding tot programmeren: Javascript

Simon de schildpad J van Weert 1

Vraag 1: Software Levenscyclus

Hoofdstuk 0. Van Python tot Java.

Objectgeoriënteerd Programmeren: WPO 3

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

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

VI. Klassen en objecten

In BlueJ. Doe onderstaande met muis/menu s:

Voortgezet Prog. voor KI

Programmeermethoden NA. Week 5: Functies (vervolg)

Objectgeoriënteerd Programmeren: WPO 4B

Ontwerp van Informatiesystemen

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Tentamen in2705 Software Engineering

Functioneel programmeren

Programmeren in Java 3

Modelleren en Programmeren

Klassen. Hoofdstuk Klassen

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

HANDMATIG WORTELTREKKEN

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Een eenvoudig algoritme om permutaties te genereren

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Transcriptie:

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN voorbeeldexamen NAAM :... OPMERKINGEN VOORAF Je krijgt 3 uur de tijd om de opdrachten voor dit examen uit te voeren. Verder werken aan je oplossing na het verstrijken van de 3 uur is niet toegelaten. Het examen is "open boek" : dit betekent dat het toegelaten is de syllabus (eventueel aangevuld met nota's in eigen handschrift en cursusmateriaal) te gebruiken. Andere documentatie (elektronisch of op papier) is niet toegelaten. Ook de standaard Java-documentatie mag lokaal geconsulteerd worden. Voor elke opgave krijg je een aan te vullen bestand. Noteer boven in dit bestand je naam in commentaar. Het is niet de bedoeling om de code van de main-methode te wijzigen. Doe je dit toch, gelieve dit dan te verantwoorden. Lees zorgvuldig de opgaven en construeer een algoritme vooraleer je begint te programmeren. Vergeet niet op geregelde tijdstippen je bestand op harde schijf op te slaan! MATLAB: - de studenten die voor het oude vak Informatica ingeschreven zijn, implementeren de gevraagde functie als statische java-methode - MatLab is enkel via het netwerk toegankelijk. Het netwerk wordt na 1 uur afgesloten. Start dus met de MatLab-oefening en sla de oplossing op de harde schijf, lokaal op. VEEL SUCCES!!! 1. MATLAB Schrijf een MatLab functie die een geheel getal X als parameter neemt en daarmee een willekeurige vierkante matrix M, gevuld met gehele getallen in het interval [0,X[, genereert. Zorg er voor dat de matrix M weergegeven wordt gedurende het uitvoeren van de functie. De functie geeft uiteindelijk een kolomvector terug met op de i-de rij het verschil tussen het element op de hoofddiagonaal op rij i en het element op de nevendiagonaal op rij i in de aangemaakte matrix M. OPGELET : ZORG DAT JE WEL DEGELIJK DE.M FILE INDIENT!

2. TELEFONIE Bij het ontwerpen van een telefooncentrale, is het belangrijk ervoor te zorgen dat elk inkomend gesprek voldoende kans heeft om een connectie te krijgen. Anderzijds is het economisch niet verantwoord evenveel telefooncircuits te voorzien als er in het slechtste geval nodig zijn (dit slechtste geval doet zich voor als iedereen tegelijk een gesprek wenst te starten). De kans dat een gesprek niet doorgaat, wordt de "blokkeringskans" genoemd. Stelt E (reëel getal) de hoeveelheid aangeboden traffiek voor, en m (geheel getal) het aantal schakelcircuits in de centrale, dan kan deze blokkeringskans B kan als volgt berekend worden : B(0,m) = 0 1 B(E,m) = 1+ m E geen blokkering indien geen traffiek B(E,0) = 1 voor E > 0 steeds blokkering indien geen circuits voorzien zijn 1 B E,m 1 ( ) voor m > 0 Dit wordt de ErlangB-formule genoemd. Programmeer de methode erlangb met 2 argumenten (E en m, zoals hierboven gedefinieerd), die de blokkeringskans op een RECURSIEVE manier uitrekenen. Test je methode via volgende main()-methode. public class TestErlang { public static void main(string[] args) { for(int i=0;i<10;i++) { System.out.println(erlangB(i,5)); 3. EN 4. Opmerking : Onderstaande tekst situeert vragen 3 en 4. Lees ze dus grondig na. In het populaire spel Rummikub krijgen de spelers een reeks stenen, en is het de bedoeling om deze stenen af te leggen door geldige reeksen te vormen. Een steen wordt gekenmerkt door een kleur (rood [r], blauw [b], zwart [z], oranje [o]) en een cijferwaarde (1 t.e.m. 13). Daarnaast zijn ook een aantal jokers [j] in het spel, die om het even welke cijferwaarde en kleur kunnen aannemen. Geldige reeksen. Er zijn twee soorten geldige reeksen, namelijk: 1) Een reeks van minstens 3 en hoogstens 4 stenen van verschillende kleur en zelfde cijferwaarde. (b.v. <r10,b10,o10>, <r3,z3,o3>)

2) Een reeks van minstens 3 stenen van dezelfde kleur, waarbij de cijferwaarden oplopen en aansluiten (b.v. <z2,z3,z4,z5>, <b10,b11,b12>) Zoals hierboven aangegeven, kan een joker steeds een steen van willekeurige cijferwaarde en kleur voorstellen. Volgende reeksen zijn dan ook geldig : <j,r10,o10>, <j,j,b10>, <j,z2,z3,z4,z5>, <j,j,z10,z13>. 3. DE KLASSE STEEN Opmerking vooraf : programmeer deze klassen zonder gebruik te maken van 'magic numbers'. M.a.w. gebruik Java-constructies om een constante symbolisch voor te stellen. Dit moet toelaten om je klasse makkelijk aan te passen, mocht er b.v. later beslist worden en bijkomende kleur in het spel in te voeren. Programmeer de klasse Steen volgens onderstaande richtlijnen. (a) Voorzie gegevenselementen om elke Steen te karakteriseren, namelijk: - de kleur (via een karakter, 'r', 'b', 'z' of 'o') - de cijferwaarde (via een geheel getal) Bij conventie krijgt een joker als kleurwaarde '?' en als cijferwaarde 0. Opnieuw bij conventie, krijgt een ongeldige Steen als kleurwaarde '.' en als cijferwaarde -1. (b) Programmeer een constructor met 2 argumenten. Het eerste argument (type char) stelt de kleur van de nieuwe Steen voor, het tweede (type int) de cijferwaarde. Controleer of beide argumenten geldig zijn. Indien niet, wordt een foutboodschap gegenereerd. (c) Indien een constructor zonder argumenten opgeroepen wordt, wordt een joker aangemaakt. (d) Programmeer toegangsmethoden voor de kleur en cijferwaarde van de Steen. (e) Programmeer een methode die toelaat de Steen automatisch in String gedaante om te zetten, wanneer nodig. Zorg dat het uitvoerformaat als volgt is : <kleur : waarde> (f) Programmeer een methode isgelijk, met als argument een Steen. De methode geeft waar of vals terug, naargelang de Stenen al dan niet gelijk zijn. Twee Stenen zijn gelijk als ze identieke kleur en cijferwaarde hebben. (g) Gegeven de onderstaande klasse Sorteer en de interface Sorteerbaar. De methode sorteer is een variant die toelaat om via bubblesort een lijst Sorteerbare objecten van klein naar groot te sorteren. Programmeer het nodige om Stenen te kunnen sorteren. Doe dit volgens onderstaande logica: (i) een joker komt voor elke andere Steen (ii) indien de Stenen verschillende kleuren hebben, wordt enkel naar de kleur gekeken. De ordening is 'r' < 'b' < 'z' < 'o' (waarbij < staat voor "komt voor"). (iii) indien de Stenen dezelfde kleur hebben, wordt de cijferwaarde bekeken (gewone ordening van gehele getallen). Je moet geen rekening houden met ongeldige stenen.

interface Sorteerbaar { public boolean komtvoor(sorteerbaar s); class Sorteer { public static void sorteer(arraylist a) { for(int i=0;i<a.size()-1;i++) { for(int j=0;j<a.size()-i-1;j++) { if(((sorteerbaar)(a.get(j+1))).komtvoor((sorteerbaar)(a.get(j)))){ Sorteerbaar tijdelijk; tijdelijk = (Sorteerbaar)(a.get(j)); a.set(j, a.get(j+1)); a.set(j+1,tijdelijk); Test het geheel via volgende main()-methode. public class TestSteen { public static void main(string[] args) { // test klasse Steen Steen[] teststeen={new Steen('b',3),new Steen(),new Steen('i',5),new Steen('r',-5), new Steen(); for(steen i:teststeen) System.out.println(i); System.out.println(testSteen[0].isGelijk(testSteen[1])); System.out.println(testSteen[3].isGelijk(testSteen[3])); 4. DE KLASSE SERIE Opmerking vooraf: - Vermijd het gebruik van 'magic numbers' (zie ook opm. bij vorige vraag). - Gebruik zoveel mogelijk de functionaliteit van de klasse Steen. In deze oefening programmeren we een klasse die een reeks Stenen voorstelt. Programmeer ze volgens onderstaande richtlijnen. (a) Voorzie de nodige gegevenselementen om per Serie een reeks Stenen bij te houden. (b) Programmeer een methode om automatisch een Serie naar String-gedaante om te zetten, wanneer nodig. Zorg ervoor dat elke Steen van de Serie afgedrukt wordt. (c) Programmeer volgende methoden: - zelfdekleur : geeft waar of vals naargelang ALLE Stenen van de Serie dezelfde kleur hebben - verschillendekleuren : geeft waar indien GEEN enkel kleur meer dan 1 maal voorkomt in de Serie. Geeft vals in alle andere gevallen. - zelfdewaarde : geeft waar of vals naargelang ALLE Stenen van de Serie dezelfde waarde hebben

Zorg hierbij dat, indien de Serie 1 of meer jokers heeft, dit GEEN invloed heeft op het resultaat van de methode. (d) Programmeer een methode sorteer, die de Stenen binnen de Serie ordent (volgens de ordening in vraag 3 gedefinieerd). (e) Programmeer een methode isgeldig, die aangeeft of de Serie al dan niet geldig is (volgens de hoger gedefinieerde regels). Test het geheel via volgende main()-methode. public class TestSerie { public static void main(string[] args){ // test Serie Steen[] s1={new Steen('b',3),new Steen('r',7),new Steen('o',13),new Steen('o',8),new Steen(); Serie t1=new Serie(s1); System.out.println(t1); t1.sorteer(); System.out.println(t1); // test isgeldig Steen[] a1={new Steen('o',12),new Steen('b',12),new Steen('z',12); Steen[] a2={new Steen('b',3),new Steen('b',6),new Steen('b',5),new Steen('b',4); Serie b1=new Serie(a1); Serie b2=new Serie(a2); System.out.println(""+b1+b1.isGeldig()); System.out.println(""+b2+b2.isGeldig()); // test met joker Steen[] a3={new Steen('o',12),new Steen(),new Steen('z',12); Steen[] a4={new Steen('b',3),new Steen('b',6),new Steen(),new Steen('b',4); Serie b3=new Serie(a3); Serie b4=new Serie(a4); System.out.println(""+b3+b3.isGeldig()); System.out.println(""+b4+b4.isGeldig()); Steen('b',4); // test met twee jokers Steen[] a5={new Steen('o',12),new Steen(),new Steen(); Steen[] a6={new Steen('b',3),new Steen('b',7),new Steen(),new Steen(),new Serie b5=new Serie(a5); Serie b6=new Serie(a6); System.out.println(""+b5+b5.isGeldig()); System.out.println(""+b6+b6.isGeldig());