Embedded Systems Engineering. Informatica 2. studiehandleiding. Jos Onokiewicz. Klassen: ES1, ES1V, ES1D 1 februari versie 1.

Maat: px
Weergave met pagina beginnen:

Download "Embedded Systems Engineering. Informatica 2. studiehandleiding. Jos Onokiewicz. Klassen: ES1, ES1V, ES1D 1 februari 2013. versie 1."

Transcriptie

1 Embedded Systems Engineering Informatica 2 studiehandleiding Jos Onokiewicz Klassen: ES1, ES1V, ES1D 1 februari 2013 versie 1.3 w

2 Hogeschool van Arnhem en Nijmegen Embedded Systems Engineering 2

3 Inhoud 1 Inleiding Beschrijving en beoordeling Propedeuse voltijd Propedeuse voltijd versneld Propedeuse deeltijd Beoordelingstabel Informatica Assessment Planning Studieplanning normale traject (ES1) en deeltijdtraject (ES1D) Studieplanning versneld traject (ES1V) Eisen aan het verslag Eindopdracht Opzet tool chain en inrichten project directory Opdracht 1: omzetting code van C naar C zet de INF1 C code in de project directory gebruik IO streams gebruik het string type gebruik het bool type gebruik file streams gebruik call by reference gebruik de template class STL vector<t> gebruik const correctness gebruik relatieve padnamen van files Opdracht 2: class(es) maken op basis van de C struct Opdracht 3: unittesten Opdracht 4: Qt GUI maken Bijlage 1: Doxygen en Subversion richtlijnen Bijlage 2: Specificatie van het programma Cross Bijlage 3: Specificatie van het programma Roots

4 Bijlage 4: Specificatie van het programma Triangle Bijlage 5: Voorbeeld van een testrapport

5 1 Inleiding De onderwijseenheid Informatica 2 bouwt voort op Informatica 1, waar de taal C is behandeld. Nu gaat het om een kennismaking met de taal C++ en een introductie op het object georiënteerd ontwerpen van programma's als voorbereiding op de onderwijseenheid Project 4 in het tweede studiejaar. C++ reference manual: C++ is op het eerste gezicht een stevige uitbreiding van C. Er zijn echter subtiele verschillen in deze talen die kunnen leiden tot zowel run time als compile time errors. Er wordt gebruik gemaakt van de grafische ontwikkelomgeving QtCreator. Deze ontwikkelomgeving is multiplatform gericht, dit betekent dat we onder andere zowel voor Linux, Windows als MacOS X kunnen ontwikkelen. Bron voor downloaden QtCreator: of Er wordt tevens uitgebreid aandacht besteed aan de diverse methoden van software testen. Binnen QtCreator wordt gebruik gemaakt van een unit test framework. Zodat testen door een programma worden uitgevoerd. Hoofdstuk 2 geeft uitgebreide informatie van deze onderwijseenheid. Je vindt er o.a. met welke indicatoren je wordt beoordeeld. In hoofdstuk 3 vind je informatie over de assessment. Hoofdstuk 4 geeft een planning voor het bestuderen van de gebruikte literatuur. Hoofdstuk 5 geeft de eisen die aan het verslag worden gesteld. Hoofdstuk 6 geeft een uitgebreide beschrijving van de eindopdracht. Bijlage 2, 3 en 4 geven voorbeelden van functionele specificaties van software. Bijlage 5 geeft het formaat van een testrapport. 5

6 2 Beschrijving en beoordeling 2.1 Propedeuse voltijd Titel onderwijseenheid (OWE) Informatica 2 (INF2) 1. Opleiding Embedded Systems Engineering 2. Doelgroep Eerstejaars ESE-studenten 3. Beroepstaak/ beroepstaken 4. Centrale beroepstaak 5. (Beroeps) Producten 6. Studiepunten/ Studielast 7. Samenhang met andere OWE s BT2: Software ontwerpen en testen BT2: Software ontwerpen en testen Windows programma in C++ met productrapport incl. testcases en testrapport 7,5 EC / 210 SBU Informatica 2 bouwt voort op de kennis van Informatica 1 en legt de basis voor Project Ingangseisen Informatica 1 gevolgd 9. Algemene omschrijving De student gebruikt een grafische ontwikkelomgeving en ontwikkelt in die omgeving individueel een van tevoren door hem of de docent aangedragen en met de docent afgesproken applicatie. Bovendien past hij een aantal testmethodieken toe op (een deel van) de ontwikkelde applicatie. 10. Competenties zie onderstaande beoordelingstabel 11. Beoordelings- criteria zie onderstaande beoordelingstabel 12. Tentaminering Toetscode Toetsnaam Toetsvorm Weging Grens INF2-A Assessment demonstratie en rapport Compensatiemogelijkheden geen Frequentie (deel) tentamens 2 x per jaar 6

7 13. Verplichte literatuur 14. Aanbevolen literatuur De studiehandleiding 'Informatica 2' Jos Rouland, Hogeschool van Arnhem en Nijmegen Het dictaat 'C++ in het kort' Jos Rouland, Hogeschool van Arnhem en Nijmegen Het dictaat 'Software testen' Jos Rouland, Hogeschool van Arnhem en Nijmegen Het dictaat 'Aanbevelingen voor de lay-out van C-programma's' Frits Feldbrugge, Hogeschool van Arnhem en Nijmegen n.v.t. 15. Software Qt Creator 16. Overig materiaal n.v.t. 17. Activiteiten bijwonen van theorielessen deelnemen aan practica deelnemen aan de mondelinge assessment opleveren van bovengenoemde beroepsproducten 18. Werkvormen theorielessen practica 19. Les-/Contacturen 0,75 uur per week theorie in blok 3 1,5 uur per week practicum 20. Onderwijsperiode Semester Maximum aantal deelnemers n.v.t. 2.2 Propedeuse voltijd versneld Titel onderwijseenheid (OWE) Informatica 2 Versneld (INF2V) 1. Opleiding Embedded Systems Engineering 2. Doelgroep Eerstejaars ESE-studenten met vooropleiding vwo of mbo 3. Beroepstaak/ beroepstaken 4. Centrale beroepstaak 5. (Beroeps) Producten BT2: Software ontwerpen en testen BT2: Software ontwerpen en testen Windows programma in C++ met productrapport incl. testcases en testrapport 7

8 6. Studiepunten/ Studielast 7. Samenhang met andere OWE s 7,5 EC / 210 SBU Informatica 2V bouwt voort op de kennis van Informatica 1V en legt de basis voor Project Ingangseisen Informatica 1V gevolgd 9. Algemene omschrijving De student gebruikt een grafische ontwikkelomgeving en ontwikkelt in die omgeving individueel een van tevoren door hem of de docent aangedragen en met de docent afgesproken Windows applicatie. Bovendien past hij een aantal testmethodieken toe op (een deel van) de ontwikkelde applicatie. 10. Competenties zie beoordelingstabel Informatica 2 (voltijd nominaal) 11. Beoordelings- criteria zie beoordelingstabel Informatica 2 (voltijd nominaal) 12. Tentaminering Toetscode Toetsnaam Toetsvorm Weging Grens INF2V-A Assessment demonstratie en rapport Compensatiemogelijkheden geen Frequentie (deel) tentamens 2 x per jaar 13. Verplichte literatuur 14. Aanbevolen literatuur De studiehandleiding 'Informatica 2' Jos Rouland, Hogeschool van Arnhem en Nijmegen Het dictaat 'C++ in het kort' Jos Rouland, Hogeschool van Arnhem en Nijmegen Het dictaat 'Software testen' Jos Rouland, Hogeschool van Arnhem en Nijmegen Het dictaat 'Aanbevelingen voor de lay-out van C-programma's' Frits Feldbrugge, Hogeschool van Arnhem en Nijmegen n.v.t. 15. Software Qt Creator 16. Overig materiaal n.v.t. 17. Activiteiten bijwonen van theorielessen deelnemen aan practica deelnemen aan de mondelinge assessment opleveren van bovengenoemde beroepsproducten 18. Werkvormen theorielessen practica 19. Les-/Contacturen 0,75 uur per week theorie 8

9 20. Onderwijsperiode Blok 2 2,25 uur per week practicum 21. Maximum aantal deelnemers n.v.t. 2.3 Propedeuse deeltijd Titel onderwijseenheid (OWE) Informatica 2 Deeltijd (INF2D) 1. Opleiding Embedded Systems Engineering 2. Doelgroep Eerstejaars ESE-deeltijdstudenten met een werkkring op mbo-niveau 3. Beroepstaak/ beroepstaken 4. Centrale beroepstaak 5. (Beroeps) Producten 6. Studiepunten/ Studielast 7. Samenhang met andere OWE s BT2: Software ontwerpen en testen BT2: Software ontwerpen en testen Windows programma in C++ met productrapport incl. testcases en testrapport 7,5 EC / 210 SBU Informatica 2D bouwt voort op de kennis van Informatica 1D en legt de basis voor Project 4D. 8. Ingangseisen Informatica 1D gevolgd 9. Algemene omschrijving De student gebruikt een grafische ontwikkelomgeving en ontwikkelt in die omgeving individueel een van tevoren door hem of de docent aangedragen en met de docent afgesproken Windows applicatie. Bovendien past hij een aantal testmethodieken toe op (een deel van) de ontwikkelde applicatie. 10. Competenties zie beoordelingstabel Informatica 2 (voltijd nominaal) 11. Beoordelings- criteria zie beoordelingstabel Informatica 2 (voltijd nominaal) 12. Tentaminering Toetscode Toetsnaam Toetsvorm Weging Grens INF2D-A Assessment demonstratie en rapport

10 Compensatiemogelijkheden geen Frequentie (deel) tentamens 2 x per jaar 13. Verplichte literatuur 14. Aanbevolen literatuur De studiehandleiding 'Informatica 2' Jos Rouland, Hogeschool van Arnhem en Nijmegen Het dictaat 'C++ in het kort' Jos Rouland, Hogeschool van Arnhem en Nijmegen Het dictaat 'Software testen' Jos Rouland, Hogeschool van Arnhem en Nijmegen Het dictaat 'Aanbevelingen voor de lay-out van C-programma's' Frits Feldbrugge, Hogeschool van Arnhem en Nijmegen n.v.t. 15. Software Qt Creator 16. Overig materiaal n.v.t. 17. Activiteiten bijwonen van theorielessen deelnemen aan practica deelnemen aan de mondelinge assessment opleveren van bovengenoemde beroepsproducten 18. Werkvormen theorielessen practica 19. Les-/Contacturen 1,5 uur per week theorie + practicum 20. Onderwijsperiode Semester Maximum aantal deelnemers n.v.t. 10

11 2.4 Beoordelingstabel Informatica 2 Eindkwalificaties (Competenties) op niveau 2 C1 Wensen van de klant vertalen in een SMART geformuleerd programma van eisen voor een te ontwikkelen embedded system C2 De architectuur van het gewenste embedded system ontwerpen: opdelen in onderdelen en subfuncties van de benodigde hardware en software Indicatoren 1. R: Legt ondubbelzinnig vast wat de klant geboden wordt (functionele specificatie). 2. A/R: Ontwerpt een overzichtelijke user interface. 1. R: Verdeelt zijn applicatie in subfuncties. 2. A/R: Maakt efficiënt gebruik van minstens vier verschillende typen componenten van de grafische ontwikkelomgeving. C3 De benodigde hardware en 1. R: Ontwerpt correcte pseudocode voor software voor een embedded functies. system ontwerpen en testen. 2. R: Programmacode komt overeen met Het gaat hierbij om: pseudocode. - digitale systemen 3. R: Leidt een correcte set test cases af m.b.v.: - embedded software a. equivalence partitioning - interfaces met gebruiker, b. boundary value analysis fysieke omgeving en c. cause effect graphing netwerken en tussen hardware d. multiple condition coverage en software 4. R: Stelt uit bovenstaande een minimaal totaal testplan op. 5. R: Schrijft een correct testrapport. 6. R: Motiveert ontwerpkeuzes. C5 Een bijdrage leveren aan het acceptatietraject door het geven van presentaties, demonstraties en het opleveren van de documentatie C7 Projectmatig werken: kan plan van aanpak maken, plannen, werkzaamheden afstemmen en rapporteren over de voortgang C9 Schriftelijk en mondeling, in- en extern communiceren in Engels en Nederlands, zowel met vakgenoten als niet-vakgenoten R: Rapport A: Assessment 1. A: Demonstreert de correcte werking van zijn programma. 2. R: Zorgt voor een goede programma lay-out. 3. R: Kiest suggestieve namen van variabelen, objecten en functies. 4. A: Kan zijn ontwerp overtuigend uitleggen. (knock-out) 1. R: Doorloopt bij de ontwikkeling van zijn product de a. definitiefase b. ontwerpfase c. implementatiefase 1. R: Titelpagina, samenvatting en voorwoord zijn correct. 2. R: Inleiding en inhoudsopgave zijn correct. 3. R: Gebruikt correcte spelling en stijl. 4. R: Brengt een heldere structuur en lay-out aan. 5. R: Schrijft gebruiksvriendelijke Engelstalige user manual. Score (gewicht) 0=ontbreekt/slecht 1=onvoldoende 2=voldoende 3=goed 1.(2) 2.(2) 1.(2) 2.(2) 1.(1) 2.(1) 3 a.(5) b.(5) c.(5) d.(5) 4.(5) 5.(2) 6.(2) 1.(3) 2.(1) 3.(1) 4.(1) 1 a.(1) b.(1) c.(1) 1.(1) 2.(1) 3.(1) 4.(1) 5.(1) 11

12 3 Assessment De student levert individueel bewijsmateriaal aan om aan te tonen dat hij de gewenste competenties heeft bereikt: Hiertoe moet hij (individueel) een programma in C++ ontwerpen en demonstreren in een grafische ontwikkelomgeving en een uitgebreid verslag inleveren. Ook moet hij een aantal test cases ontwerpen voor (delen van) zijn programma: - De student definieert een duidelijke casus en bespreekt de functionaliteit van de te ontwikkelen applicatie met de docent en ontwerpt een overzichtelijke user interface. - Hij verdeelt zijn applicatie in subfuncties, gebruikt componenten van de grafische ontwikkelomgeving (Qt) en ontwikkelt de applicatie in C++. - Hij leidt testcases af m.b.v. equivalence partitioning, boundary value analysis, cause effect graphing en multiple condition coverage. - Hij laat zien dat hij bij de ontwikkeling van zijn product de definitiefase, ontwerpfase en implementatiefase op de juiste wijze doorloopt. - Hij levert heldere en complete documentatie van zijn product en motiveert zijn ontwerpkeuzes. Zie hoofdstuk 5 van deze handleiding voor de eisen die aan het verslag zijn gesteld en raadpleeg bijlage 5 voor het uiterlijk van het testrapport. De student moet zijn werkwijze en zijn producten op vragen van de docent adequaat kunnen toelichten om een voldoende eindcijfer te krijgen! Als de onderwijseenheid met een voldoende wordt afgesloten (minimaal 5.5), krijgt de student hiervoor 7,5 EC aan studiepunten. 12

13 4 Planning Het versnelde traject geldt voor de studenten die de propedeuse in een half jaar afsluiten (ES1V). Voor de overige studenten (ES1 en ES1D) is het normale traject van toepassing. Er wordt van je verwacht dat je de opdrachten zoveel mogelijk buiten de ingeroosterde contacturen voorbereidt (pseudo-code en testen ontwerpen, C++-code schrijven en testen uitvoeren) om de beschikbare practicumtijd zo efficiënt mogelijk te gebruiken. Zorg ervoor dat je na elke sessie je software als back-up op je USB-stick zet. C++ boek: Gertjan Laan, Aan de slag met C++, 5 de druk, Academic Service. 4.1 Studieplanning normale traject (ES1) en deeltijdtraject (ES1D) weeknr. Te bestuderen literatuur en uit te voeren opdrachten 06 C++: H1 t/m H6 ('C++ boek') Opdracht: inrichten QtCreator project directory, met (lokale) subversion repository, INF1 code kunnen compileren onder QtCreator 07 Voorjaarsvakantie 08 C++: H7 ('C++ boek'), het aandachtsveld iteratoren niet. 09 Testen: H1 t/m H4 ('Software testen'); 10 Testen: ('Software testen'); toepassen op cross, roots of triangle (zie bijlagen) 11 Testen: ('Software testen'); toepassen op cross, roots of triangle (bijlagen) 12 Testen: ('Software testen'); toepassen op cross, roots of triangle (zie bijlagen) 13 Testen: 5.2 t/m 5.5 en H6 ('Software testen'); multiple condition coverage toepassen op cross, roots of triangle (zie bijlagen) 14 Testen: afronden van oefeningen software testen. Definiëren van de casus 15 Toetsweek 16 Starten met de casus 17 Werken aan de casus 18 Meivakantie Werken aan de casus 24 Afronden van de casus 25 Toetsweek 13

14 4.2 Studieplanning versneld traject (ES1V) weeknr. Te bestuderen literatuur en uit te voeren opdrachten 46 C++: H1 t/m H6 ('C++ boek') Opdracht: inrichten QtCreator project directory, met (lokale) subversion repository, INF1 code kunnen compileren onder QtCreator 47 C++: H7 ('C++ boek'), het aandachtsveld iteratoren niet. Testen: H1 t/m H4 ('Software testen') 48 C++ en OO: Introductie object oriëntatie (van C structs naar C++ classes) Voorbeeld C++ class: CD.h en CD.cpp, constructor, destructor, public, private, member data en member functies, STL vector<t> 49 Testen: H4 en H5 (black box en white box testen) QtCreator: opzetten Unit testen in projectdirectory Casus: verder naar C++ omzetten (zonder GUI) 50 C++: verschillen tussen structs en classes, new en delete QtCreator: inrichten GUI directories in project directory, kennismaken event driven gebruik widgets (signals en slots), widgets programmeren, toepassing pointers, new en delete Casus: start met het ontwikkelen van de GUI Testen: afronden H5 functioneel testen 51 Testen: H6 (niet functioneel testen). Werken aan de casus (voortzetting testen en GUI ontwikkeling) Kerstvakantie Afronden van de casus (testen en GUI) 04 Toetsweek 05 Projectweek Engineering 14

15 5 Eisen aan het verslag Het projectverslag dient de volgende onderdelen te bevatten (breng zelf, indien nodig, de indeling in paragrafen aan): Titelpagina Samenvatting Voorwoord Inhoudsopgave 1 Inleiding 2 Definitiefase 3 Ontwerpfase 4 Realisatiefase 5 Testplan 5.1 Equivalence partitioning 5.2 Boundary value analysis 5.3 Cause effect graphing 5.4 Multiple condition coverage 5.5 Resulterend testplan 6 Testrapport Bijlage 1 User manual Titelpagina bevat titel (naam van het ontwikkelde product) en ondertitel (naam van de betreffende onderwijseenheid), auteur(s), klas, datum en eventueel een toepasselijke illustratie. Samenvatting beslaat maximaal 1 pagina en moet los van het rapport gelezen kunnen worden. De lezer hoeft geen kennis te hebben van het project! De samenvatting moet het gehele rapport dekken. Er moet kort worden beschreven waarover het gaat, wat de bereikte resultaten en niet gehaalde doelstellingen zijn en wat met belangrijkste testen is aangetoond. Voorwoord is bedoeld voor persoonlijke opmerkingen met betrekking tot de projectuitvoering en het gerelateerde verslag. Hierin kan bijvoorbeeld iets verteld worden over de ervaringen die tijdens het project zijn opgedaan, wat heb je geleerd, wat zou je volgende projecten anders gaan doen, over de problemen die zijn opgetreden of over oorzaken van vertragingen en dergelijke. Inhoudsopgave noemt alle onderdelen van het rapport met het nummer van de pagina aan het einde van de regel. Inleiding (hoofdstuk 1) vertelt bondig waar het rapport over gaat en hoe het is opgebouwd. Door het lezen van de inleiding kan de lezer zich oriënteren op de inhoud van het rapport en kan hij bepalen of het lezen ervan voor hem voldoende interessant is. Eventueel kan hij besluiten alleen bepaalde hoofdstukken of delen daarvan door te nemen. Dit betekent dat kort wordt besproken welk onderwerp of probleem behandeld of opgelost gaat worden en wat er in de opeenvolgende 15

16 hoofdstukken aan de orde komt. Bij dit laatste moet iets meer worden weergegeven dan de titels van de hoofdstukken. Definitiefase beschrijft de achtergrond van het project, de hoofdfunctie en de eisen en wensen die aan het te ontwikkelen product worden gesteld. Hierbij gaat het om de buitenkant van het systeem, het wat. Definieer de user interface. Verder worden de grenzen afgebakend (wat wel en wat niet) en wordt de acceptatietest (eisen voor de klant op gebruikersniveau) beschreven. De definitiefase mondt uit in een functionele specificatie. Toon hier de gebruikte menu's en formulieren met buttons, labels, edit velden, enz. De functionele specificatie dient volledig en eenduidig te zijn. Hij vormt de basis voor de drie black box testmethoden en de klant moet weten wat voor product hij kan verwachten. Zorg er dus voor dat je de opdracht van de docent in detail verder uitwerkt. Omschrijf nauwkeurig aan welke voorwaarden de diverse invoergegevens moeten voldoen. Som ook alle foutmeldingen op en vermeld hierbij in welke gevallen deze optreden. Ontwerpfase beschrijft de binnenkant van het systeem (de verwerkingskant, het hoe). Hier wordt globaal aangegeven hoe de functionele specificatie wordt omgezet in een technische oplossing. Alternatieven worden hierbij tegen elkaar afgewogen en de structuur van de gekozen oplossing wordt getoond. Realisatiefase beschrijft het detailontwerp (pseudocode en programmacode) en levert een gebruikershandleiding (de user manual). Hierbij wordt gebruikgemaakt van bijlagen. In de realisatiefase worden ook uitgebreide testcases gegenereerd om het product diepgaand te testen. Het testplan wordt in een apart hoofdstuk besproken. De API documentatie moet met Doxygen in een aparte directory met duidelijke naam in de projectdirectory gegenereerd worden. Voeg alleen in dit projectverslag een screendump van de documentatie van de uit de C struct met functies gemaakte C++ class toe (dus geen afdrukken van de Qt GUI classes). Testplan laat zien hoe de testcases worden afgeleid volgens de vier gegeven methoden ( 5.1 t/m 5.4) teneinde het product uitgebreid te testen. In 5.5 wordt het resulterende testplan gegeven, waarbij het aantal testcases zo klein mogelijk is gemaakt. Er wordt dus gezocht of naar een minimale set die alle testcases uit 5.1 t/m 5.4 afdekt. Testrapport (hoofdstuk 6) toont de resultaten van het uitvoeren van de testcases door de test engineer. Dit hoofdstuk bevat dus in feite de conclusie. Hieraan kunnen eventueel aanbevelingen voor verbeteringen of uitbreidingen worden toegevoegd. User manual (bijlage 2) geeft de gebruikershandleiding. Deze is in het Engels. Begin hierbij met te vermelden hoe de applicatie opgestart moet worden. Gebruik 16

17 passende screendumps van de GUI van de Qt applicatie om het gebruik duidelijk te illustreren. Geef ook duidelijk aan hoe de applicatie gestopt kan worden. Opmerkingen: Nummer de pagina's, hoofdstukken en paragrafen. Begin elk hoofdstuk op een nieuwe pagina. Gebruik een zakelijke stijl, dus niet de ik- of wij-vorm (behalve in het voorwoord). Let op de correcte spelling en zinsbouw. Gebruik altijd de spellings- en grammatica-check van de tekstverwerker. Gebruik Doxygen om de API documentatie in html-formaat te kunnen genereren. 17

18 6 Eindopdracht 6.1 Opzet tool chain en inrichten project directory Uitgangspunt vormt de specificatie, ontwerp en de uitwerking van de eindopdracht van INF1. Deze is gemaakt met C en is ontwikkeld op basis van functionele decompositie. Dit betekent dat het bepalen van functies en subfuncties de manier van ontwikkelen is geweest. In de praktijk bestaat soms de behoefte om bestaande "oude" code die nog steeds waarde heeft voor een bedrijf te gaan moderniseren. Deze "oude" code wordt legacy code genoemd. In deze opdracht gaan we onze eigen legacy code moderniseren door over te stappen naar een meer object georiënteerde aanpak, in C++ te implementeren en de tekstgeoriënteerde user interface te vervangen door een grafische user interface (GUI). Inrichten van de vereiste tool chain in een Linux of windows omgeving: QtCreator (geïntegreerde ontwikkelomgeving) Subversion (code versiebeheer in SVN repository) TortoiseSVN of RapidSVN (subversion client met grafische frontend, makkelijker in het gebruik dan de command line tool) Valgrind (checking memory leaks) Voor de uitvoering van ontwikkelproject is het noodzakelijk om een goed georganiseerde projectdirectory op te zetten. Zowel de structuur als naamgeving van directories en files is zeer belangrijk om de tooling correct, begrijpelijk en volgens veel algemeen toegepaste richtlijnen te laten werken. Denk bijvoorbeeld aan het gebruik van de make tool om een applicatie te kunnen compileren. Een projectdirectory staat op één plaats zodat het mogelijk is deze directory in één keer te kunnen copieren. Met andere woorden een projectdirectory heeft één root directory. We streven er naar om verschillende subdirectories te gebruiken om de verschillende type files overzichtelijk te kunnen organiseren. Bijvoorbeeld: de executables en.o files staan niet in dezelfde directory als de source files. Onderstaand geeft de vereiste aanpak weer voor het maken van een dergelijke directory. Het doel is niet alleen om zelf georganiseerd te werken maar ook voor de begeleidende docent om snel en adequaat te kunnen helpen in een omgeving waar meerdere tools toegepast moeten worden. In het volgende stappenplan gaan we uit van de volgende feiten: de ontwikkelaar heet Pietje Puk en de applicatie heet Bereken 18

19 Stappen: 1. kies een passende naam (1 woord) voor de gemaakte applicatie in INF1. Bijvoorbeeld: Bereken. Deze naam gebruiken we voor de executable en als onderdeel voor een aantal subdirectory namen in de project directory. 2. Maak de directory INF2-<je naam zonder spaties> Bijvoorbeeld: INF2-PietjePuk. 3. Maak de volgende directory structuur (let op de naamgeving van de directories): INF2-PietjePuk BerekenProject branches releases trunk Bereken BerekenDebug BerekenRelease 4. Open een terminal en ga naar de directory INF2-PietjePuk en creëer met svn in deze directory een SVN repository met de naam BerekenSVN >svnadmin create BerekenSVN 5. De SVN repository moet nu gekoppeld worden met de workspace BerekenProject met een checkout (co) commando: >svn co file:///home/.../inf2-pietjepuk/berekensvn BerekenProject 6. Ga naar INF2-PietjePuk/BerekenProject om de nieuwe directories aan de SVN repository administratie (in een.svn directory) toe te voegen en deze aan te bieden aan de repository met een checkin (ci) commando: >svn add * >svn ci m Initial commit 7. Start QtCreator. Kies File, New File or Project, Other Project, Plain C++ project Name: Bereken Create in:...berekenproject/trunk Negeer de opmerking The project already exists 19

20 8. Zet in QtCreator Projects, Compile voor Release setting Shadow build, dir.../trunk/berekenrelease. Zet in QtCreator Projects, Compile voor Debug setting Shadow build, dir.../trunk/berekendebug Zet in QtCreator Projects, Run Settings de optie 'Run in terminal' uit (in bepaalde Linux releases kunnen we een terminal niet opstarten). De uitvoer komt nu in het QtCreator uitvoerpanel. 9. Compile het programma door op groene pijl links links onder te drukken. Het resultaat is een release versie. Onder deze groene pijl staat een tweede groene pijl met een bug afgebeeld. Hiervan is het resultaat een debug versie. De directory structuur met de belangrijkste inhoud voor de Bereken applicatie moet er na compilatie voor Debug en Release vorm er nu als volgt uitzien: INF2-PietjePuk BerekenSVN BerekenProject branches releases trunk Bereken main.cpp Bereken.pro Bereken.pro.user BerekenDebug Bereken main.o Makefile BerekenRelease Bereken main.o Makefile De make files zijn op basis van de Bereken.pro en Bereken.pro.user door qmake gegenereerd. 10. We kunnen nu in QtCreator gebruikmakend van Subversion verder ontwikkelen: gebruik Tools, Subversion. NB.: deze aanpak voor de opbouw van de projectdirectory had in een linux bash script gezet kunnen worden. Als command line parameter hadden we de naam van de applicatie mee kunnen geven. In ons voorbeeld: Bereken. 20

21 De volgende opdrachten zijn soms omschreven in termen van het voorbeeldproject Bereken. Uiteraard moet je daarvoor je eigen applicatienaam gebruiken! 6.2 Opdracht 1: omzetting code van C naar C++ Zie voor C++ de reference manual: en het genoemde C++ boek. Zoek op internet informatieve voorbeelden die aanvullend zijn voor alle genoemde aanwijzingen in de opdrachten. zet de INF1 C code in de project directory Zet de bestaande INF1 C code in de directory waar main.cpp staat. Verander alle.c file namen in.cpp. Er kan maar één file zijn met main() dus zal de door QtCreator gemaakt e main.cpp verwijderd moeten worden. De verschillende.cpp en.h moeten aan de administratie van QtCreator medegedeeld worden. Ga naar de Projects pane, rechter muisknop, Add Existing Files. Commit aangepaste compileerbare files in de subversion repository met Qt Creator: Tools, Subversion, Commit files. Commit alleen files die compileerbaar zijn. gebruik IO streams Vervang de printf en scanf statements door IO streams (cin, cout, cerr en/of clog). Gebruik voor het layouten van de uitvoer van data stream manipulators. gebruik het string type Vervang de char arrays voor strings door het C++ string type. Een string type variabele (object) is ook nog als C array te gebruiken: string s; s.c_str(); Dit is noodzakelijk om soms C++ te gebruiken in combinatie met oude C functies, zonder deze C functies te hoeven aanpassen. gebruik het bool type Gebruik op de geschikte plekken het bool type dat false of true kan zijn. In C zal daar een int voor gebruikt zijn. gebruik file streams Vervang de C file types FILE door file streams (ifstream, ofstream en/of fstream). 21

22 gebruik call by reference Vervang de pointer argumenten van functies door een C++ reference type. Voorbeeld: int functie(int* pidata) verandert in int functie(int& idata). Dit betekent dat ook de code in de functies aangepast dient te worden. We hoeven niet meer gebruik te maken van pointers en pointer notaties. Als we bijvoorbeeld een C++ string object doorgeven aan een functie dan moet dit by reference gedaan worden omdat anders het gehele string object onnodig gekopieerd gaat worden. Dit geldt niet alleen voor strings maar voor alle object typen die we doorgeven aan functies. gebruik de template class STL vector<t> Vervang de 1 dimensionale arrays door de STL vector voor het bijbehorende type. Bijvoorbeeld: int aibuffer[20] ==> vector<int> buffer; Let op: voor low level gebruik van arrays (hardware gerelateerd) wordt de vervanging door de STL vector<t> niet gedaan. Laat 2 dimensionale arrays in hun oude C vorm. gebruik const correctness Gebruik zo veel als mogelijk de aanduiding const in je programma. Doe dit niet achteraf omdat dit kan leiden tot veel error meldingen van de compiler! Toepassing van const verhoogt de kwaliteit van je code. gebruik relatieve padnamen van files Indien we files openen in de code moeten we weten wat de current directory van de applicatie is zodat we de juiste relatieve padnaam van de te openen files in ons programma kunnen gebruiken. Vermijd absolute paden! 6.3 Opdracht 2: class(es) maken op basis van de C struct Uitgangspunt C-code: data die bij elkaar hoort moet in één struct staan. Vervang de toegepaste struct en de bijbehorende losse C functies door een C++ class. één of meer constructor(s), onder andere een default constructor indien mogelijk/zinvol, initialisatie van alle data members met initializer list constructor destructor member data 22

23 member functies (dit zijn de oude "losse" C-functies, maar nu in de scope van de class) public en private (streef ernaar om de data members allemaal private te maken en het aantal getters en setters zo klein mogelijk te maken) eventueel de output stream operator overloaden gebruik const zo veel als mogelijk Overweeg het maken van eventueel meer classes (overleg dit met de docent). Het is mogelijk in een class objecten op te nemen van andere gemaakte classes. 6.4 Opdracht 3: unittesten Maak met QtCreator een unittestproject aan met de naam BerekenTests in de trunk directory. Omdat de unittestcode een eigen main() nodig heeft zijn twee andere directories ook noodzakelijk (optie: shadow build): BerekenTestsDebug en BerekenTestsRelease. Omdat de unittestsoftware gebruik moet maken van bestaande files uit de directory Bereken, moeten we in de.pro file aangeven waar deze directory staat en welke bestaande files uit de directory Bereken we gaan gebruiken. We gaan dus geen files kopiëren naar andere directories. In.pro file toevoegen met juiste verwijzing naar de reeds bestaande directories in de projectdirectory: DEPENDPATH +=... INCLUDEPATH +=... In de.pro file toevoegen van de namen van de bestaande files (de padnaam hoeft er niet bij omdat we deze met DEPENDPATH en INCLUDEPATH al hebben opgegeven): SOURCES +=... HEADERS +=... De volgende directory structuur (let op de naamgeving van directories) moet nu ontstaan, uiteraard moet je gebruikmaken van je eigen programmanaam in de namen van de directories: INF2-PietjePuk BerekenProject branches releases trunk Bereken BerekenDebug BerekenRelease BerekenTests 23

24 BerekenTestsDebug BerekenTestsRelease De nieuwe directories moeten toegevoegd worden aan de Subversion repository. De gegenereerde files zoals bijvoorbeeld de executables en.o files moeten door Subversion genegeerd worden. Deze toevoeging van directories is gemakkelijk te doen met bijvoorbeeld RapidSVN (kan buiten QtCreator om). Uiteraard kan deze handeling ook gebeuren met de command line (kan ook buiten QtCreator om). QtCreator heeft een file gegenereerd met een class die aangevuld kan worden met member functions die verschillende testen moeten gaan uitvoeren. Gebruik voor deze functies informatieve namen. In elke testfunctie kan een object geinstantieerd worden van de class die in de vorige opdracht gemaakt is. Nu kunnen we testen gaan maken om alle member functions van deze zelf gemaakte class te kunnen controleren op correcte werking. Aanpak: we maken alle testfuncties in deze class. In de praktijk zal bij grotere programma's per class die we maken een aparte testclass gemaakt moeten zijn. Gebruik onder andere de testmacro's QCOMPARE en QVERIFY. Maak verschillende testen (aantall >=1) voor elke categorie (Equivalence partitioning, Boundary value analysis, Cause effect graphing en Multiple condition coverage). Unit testen moeten uitgevoerd kunnen worden zonder dat er invoer via het toetsenbord van een gebruiker nodig is! Invoer data dus hard coderen (opnemen in je code). 6.5 Opdracht 4: Qt GUI maken Maak met QtCreator een GUI project aan met de naam BerekenGUI inde trunk directory. Kies in QtCreator: Create Project, Qt Widget Project, Qt Gui Application. Omdat de GUI software gebruik moet maken van files uit de directory Bereken moeten we in de.pro file aangeven waar deze directory staat. We gaan dus geen files copieren naar een andere directory. De volgende directory structuur moet nu zijn ontstaan, uiteraard moet je weer gebruikmaken van je eigen programmanaam in de directory namen: INF2-PietjePuk BerekenProject branches releases trunk Bereken BerekenDebug 24

25 BerekenRelease BerekenTests BerekenTestsDebug BerekenTestsRelease BerekenGUI BerekenGUIDebug BerekenGUIRelease Voor de ontwikkeling van de GUI is grondige programmeeroefening vereist. Advies: maak Qt C++ kennismakingsvoorbeelden op basis van Qt Tutorials op YouTube. Let erop dat in het commentaar op video s aanwijzingen gegeven kunnen zijn op mogelijk fouten in de getoonde voorbeelden. Bron Qt video tutorials: In QtCreator is voor elke widget op basis van de bijbehorende class naam uitgebreide hulp te vinden met de QtCreator Help documentatie. Het is zeer lastig om alleen uit de class documentatie een applicatie te bouwen. Het is dus noodzakelijk om bijna altijd naar uitgewerkte code voorbeelden te kijken. Qt gebruikt in zijn bibliotheek een groot aantal zelf gemaakte typen (classes) die geoptimaliseerd zijn voor Qt gebruik. Bijvoorbeeld C++ std::string heeft als Qt variant QString. Het is goed mogelijk (zelfs wenselijk) om in je eigen core code standaard C++ typen te gebruiken, maar op GUI niveau de Qt typen. Onderstaand volgen enkele eisen. Overleg altijd met de opdrachtgever/docent als je wilt/moet afwijken! Eisen voor de GUI: 1. Zorg voor een zakelijke en overzichtelijke lay-out van de GUI. Gebruik duidelijke labels en rustige/opvallende kleuren voor de verschillende widgets. Zie voor kleurenpaletten bijvoorbeeld: 2. Een standaard menu keuzebalk heeft de voorkeur. In elk geval moeten volgende menu items aanwezig zijn: - Menu item File: New, Open, Save en Quit (of in het Nederlands) - Menu Item Help: Info en About (of in het Nederlands). - Gebruik eventueel naast het menu ook knoppen (QPushButton) voor de belangrijkste menukeuzen. 3. Pas bij de menukeuze Quit wordt de applicatie beëindigd (window verdwijnt). Het moet dus mogelijk zijn de applicatie te kunnen herstarten zonder hem te hebben afgesloten. 4. Gebruik Qt signals en slots om de applicatie door de GUI event driven te kunnen laten uitvoeren. 25

26 5. Zet de naam van de applicatie en een versienummer in de window titel, zie help QMainWindow: setwindowtitle(). De applicatienaam en het versienummer moeten in de header file AppInfo.h met #define s (macro's) opgenomen worden. Voeg onderstaande file aan je project toe: #ifndef APPINFO_H #define APPINFO_H #define APPNAME "Bereken" #define MAJOR_VERSION "0" #define MINOR_VERSION "1" #define REVISION_VERSION "0" #define VERSION MAJOR_VERSION "." MINOR_VERSION "." REVISION_VERSION #define APPNAME_VERSION APPNAME " v" VERSION #endif De minimale grootte van het window moet in de code worden ingesteld, zie help QMainWindow: setminimumsize(). 6. Met verschillende widgets kan er invoer gevraagd worden aan de gebruiker, check altijd of de invoer aan het vereiste waardebereik voldoet en geef duidelijke foutmeldingen. Denk bij het testen aan Boundary Value Analysis. Foute waarden mogen niet gebruikt worden voor de uitvoering van berekeningen (zorg voor robuustheid van de applicatie, programmeer defensief). 7. Zet met doxygen de API documentatie in de header files. In elk geval moet bij boven elke class definitie een korte omschrijving staan van het doel van de class. 26

27 Bijlage 1: Doxygen en Subversion richtlijnen Onderstaande richtlijnen zijn nog belangrijker als in een team met één repository aan dezelfde applicatie wordt gewerkt! Richtlijnen Subversion gebruik. 1. Het is gebruikelijk om in het algemeen in de header files Doxygen API commentaar toe te voegen. 2. In elk geval moet boven elke class definitie in een.h file altijd een omschrijving/doel van de class (kort) toegelicht worden. 3. Genereer de API documentatie altijd in aparte directories in de projectdirectory. Kies voor het formaat: html (met de Doxygen wizard). 4. Maak de volgende startdirectories in de workspace: trunk, branches en releases. 5. Het toevoegen, verplaatsen, verwijderen en het hernoemen van files moet met subversion gebeuren. 6. Commit alleen code die compilabel is. De code kan nog best bugs (run time errors) bevatten. 7. Voeg altijd een informatieve passende logging boodschap aan een commit toe. 8. Als er meerder aspecten verbeterd of aangevuld zijn, probeer dan de files zoveel en zo snel als mogelijk per aspect in te checken. Het is dus niet noodzakelijk om alle veranderende files in één keer te moeten comitten. 27

28 Bijlage 2: Specificatie van het programma Cross Het programma CROSS leest een aantal viertallen in. De getallen zijn integers, evt. voorafgegaan door een + of - teken en hebben een waardebereik van t/m Per viertal (a, b, c, d) wordt berekend wat het snijpunt van de lijnen ax+b en cx+d is. Per viertal wordt het resultaat als volgt afgedrukt: <a> <b> <c> <d> parallel of <a> <b> <c> <d> overlapping of <a> <b> <c> <d> lines cross in: (x,y) De snijpunten worden in wetenschappelijke notatie (E-notatie) weergegeven. Het programma wordt aangeroepen als: CROSS [<filenaam>] De viertallen worden gelezen uit de file met de gespecificeerde filenaam. Als de file niet gevonden wordt of niet geopend kan worden, wordt het programma gestopt na het geven van de foutmelding: FILE <filenaam> NOT ACCESSIBLE Als er meer dan één filenaam meegegeven wordt, wordt het programma gestopt na het geven van de foutmelding: TOO MANY ARGUMENTS Als er geen filenaam gegeven is, worden de getallen gelezen uit de standaard invoer. De invoer is als volgt geformatteerd: Standaard invoer bestaat uit vier getallen (resp. a, b, c en d) op één regel, gescheiden door een of meer spaties en/of tabs. Per regel wordt als volgt uitvoer (naar standaard uitvoer) gegenereerd: Als het een geldig viertal getallen betreft, dan wordt het snijpunt berekend en afgedrukt, anders wordt een foutmelding gegeven (zie onder). De invoer wordt afgesloten door een aparte regel die slechts het codewoord END (case insensitive) bevat. Als een getal buiten het waardebereik valt, dan wordt deze regel verder genegeerd en wordt de volgende foutmelding naar standaard uitvoer geschreven: NUMBER NOT IN DOMAIN: <regel met getal buiten bereik> 28

29 Als een regel een, twee of drie getallen (binnen het waardebereik) bevat, dan wordt deze regel verder genegeerd en wordt de volgende foutmelding naar standaard uitvoer geschreven: UNUSED DATA: <regel met te weinig getallen> Lege regels worden genegeerd (geen foutmelding). Als een regel anderszins foutieve invoer bevat (dus ook bij teveel getallen), dan wordt deze regel verder genegeerd en wordt de volgende foutmelding naar standaard uitvoer geschreven: INVALID DATA: <inhoud van foutieve regel> De file heeft dezelfde lay-out als de standaard invoer. Het codewoord END is toegestaan, maar niet nodig. Getallen worden ingelezen totdat het codewoord END ofwel het einde van de file bereikt is. Het programma dient gebruik te maken van een functie CrossPoint, die als volgt is gespecificeerd: typedef enum {CROSS, PARALLEL, EQUAL} CrossResult; CrossResult CrossPoint (int ia, int ib, int ic, int id, float *pfx, float *pfy); function CrossPoint calculates the coördinates of the point where line y = ia * x + ib and y = ic * x + id cross. If CrossPoint = PARALLEL, the lines are parallel and the values of fx and fy are undefined. If CrossPoint = EQUAL, the lines are the same and the values of fx and fy are undefined. If CrossPoint = CROSS, (fx,fy) indicates the coördinates of the point where the lines cross. pre: <= ia, ib, ic, id <= post: if ia = ic and ib = id then CrossPoint = EQUAL else if ia = ic and ib <> id then CrossPoint = PARALLEL else CrossPoint = CROSS fx = (id ib) / (ia ic) fy = ia * fx + ib 29

30 Bijlage 3: Specificatie van het programma Roots Het programma ROOTS leest drietallen in. De getallen zijn integers, evt. voorafgegaan door een + of - teken en hebben een waardebereik van t/m Per drietal (a, b, c) wordt berekend wat de wortels van de vierkantsvergelijking ax 2 +bx+c zijn, met andere woorden voor welke waarden van x de vierkantsvergelijking nul is. Per drietal worden de wortels als volgt afgedrukt: <a> <b> <c> no roots of <a> <b> <c> one root: <wortel> of <a> <b> <c> two roots: <kleinste wortel> <grootste wortel> of infinite number of roots De wortels worden in wetenschappelijke notatie (E-notatie) weergegeven. Het programma wordt aangeroepen als: ROOTS [<filenaam>] De getallen worden gelezen uit de file met de gespecificeerde filenaam. Als de file niet gevonden wordt of niet geopend kan worden, wordt het programma gestopt na het geven van de foutmelding: FILE <filenaam> NOT ACCESSIBLE Als er meer dan één filenaam meegegeven wordt, wordt het programma gestopt na het geven van de foutmelding: TOO MANY ARGUMENTS Als er geen filenaam gegeven is, worden de getallen gelezen uit de standaard invoer. De invoer is als volgt geformatteerd: Standaard invoer bestaat uit drie getallen (resp. a, b en c) op één regel, gescheiden door een of meer spaties en/of tabs. Per regel wordt als volgt uitvoer (naar standaard uitvoer) gegenereerd: Als het een geldig drietal getallen betreft, dan worden de wortels berekend en afgedrukt, anders wordt een foutmelding gegeven (zie onder). De invoer wordt afgesloten door een aparte regel die slechts het codewoord END (case insensitive) bevat. Als een getal buiten het waardebereik valt, dan wordt deze regel verder genegeerd en wordt de volgende foutmelding naar standaard uitvoer geschreven: NUMBER NOT IN DOMAIN: <regel met getal buiten bereik> 30

31 Als een regel slechts één of twee getallen (binnen het waardebereik) bevat, dan wordt deze regel verder genegeerd en wordt de volgende foutmelding naar standaard uitvoer geschreven: UNUSED DATA: <regel met te weinig getallen> Lege regels worden genegeerd (geen foutmelding). Als een regel anderszins foutieve invoer bevat (dus ook bij teveel getallen), dan wordt deze regel verder genegeerd en wordt de volgende foutmelding naar standaard uitvoer geschreven: INVALID DATA: <inhoud van foutieve regel> De file heeft dezelfde lay-out als de standaard invoer. Het codewoord END is toegestaan, maar niet nodig. Getallen worden ingelezen totdat het codewoord END ofwel het einde van de file bereikt is. Het programma dient gebruik te maken van een functie RootValues, die als volgt is gespecificeerd: void RootValues (int ia, int ib, int ic, int *pinrroots, float *pfx1, float *pfx2); function RootValues calculates the number of roots (inrroots) of the polynomial ia * x^2 + ib * x + ic. If inrroots = 0 or -1 (stands for infinite), the values of fx1 and fx2 are undefined. If inrroots = 1, fx1 contains the root value and the value of fx2 is undefined. If inrroots = 2, fx1 contains the smallest root value and fx2 contains the largest root value. pre: <= ia, ib, ic <= post: if ia = 0 and ib = 0 and ic = 0 then inrroots = -1 else if ia <> 0 and ib * ib < 4 * ia * ic or ia = 0 and ib = 0 and ic <> 0 then inrroots = 0 else if ia <> 0 and ib * ib = 4 * ia * ic or ia = 0 and ib <> 0 then inrroots = 1 fx1 = -ib / (2 * ia) else if ia <> 0 and ib * ib > 4 * ia * ic then inrroots = 2 fx1 = (-ib - (ib 2-4*iA*iC/(2*iA) fx2 = (-ib + (ib 2-4*iA*iC)/(2*iA) 31

32 Bijlage 4: Specificatie van het programma Triangle Het programma TRIANGLE leest drietallen in. De getallen vormen de lengtes van de zijden van een driehoek. Elk getal is een integer met een kleinste waarde 1 en grootste waarde Per drietal (a, b, c) wordt berekend of het een gelijkzijdige driehoek, een gelijkbenige driehoek of een ongelijkbenige driehoek betreft. Als de drie zijden geldige waarden hebben, maar geen driehoek vormen, dan wordt dat gemeld. Per drietal worden de resultaten afgedrukt als volgt: <a> <b> <c> gelijkzijdig of <a> <b> <c> gelijkbenig of <a> <b> <c> ongelijkbenig of <a> <b> <c> geen driehoek Het programma wordt aangeroepen als: TRIANGLE [<filenaam>] De getallen worden gelezen uit de file met de gespecificeerde filenaam. Als de file niet gevonden wordt of niet geopend kan worden, wordt het programma gestopt na het geven van de foutmelding: FILE <filenaam> NOT ACCESSIBLE Als er meer dan één filenaam meegegeven wordt, wordt het programma gestopt na het geven van de foutmelding: TOO MANY ARGUMENTS Als er geen filenaam gegeven is, worden de getallen gelezen uit de standaard invoer. De invoer is als volgt geformatteerd: Standaard invoer bestaat uit drie getallen (resp. a, b en c) op één regel, gescheiden door een of meer spaties en/of tabs. Per regel wordt als volgt uitvoer (naar standaard uitvoer) gegenereerd: Als het een geldig drietal getallen betreft, dan wordt het soort driehoek en afgedrukt, anders wordt een foutmelding gegeven (zie onder). De invoer wordt afgesloten door een aparte regel die slechts het codewoord END (case insensitive) bevat. Als een getal buiten het waardebereik valt, dan wordt deze regel verder genegeerd en wordt de volgende foutmelding naar standaard uitvoer geschreven: NUMBER NOT IN DOMAIN: <regel met getal buiten bereik> Als een regel slechts één of twee getallen (binnen het waardebereik) bevat, dan wordt deze regel verder genegeerd en wordt de volgende foutmelding naar standaard uitvoer geschreven: UNUSED DATA: <regel met te weinig getallen> 32

33 Lege regels worden genegeerd (geen foutmelding). Als een regel anderszins foutieve invoer bevat (dus ook bij teveel getallen), dan wordt deze regel verder genegeerd en wordt de volgende foutmelding naar standaard uitvoer geschreven: INVALID DATA: <inhoud van foutieve regel> De file heeft dezelfde lay-out als de standaard invoer. Het codewoord END is toegestaan, maar niet nodig. Getallen worden ingelezen totdat het codewoord END ofwel het einde van de file bereikt is. Het programma dient gebruik te maken van een functie TriangleCheck, die als volgt gespecificeerd is: typedef enum {EQUILATERAL, ISOSCELES, SCALENE, NO_TRIANGLE} TriangleValue; TriangleValue TriangleCheck (int ia, int ib, int ic); function TriangleCheck calculates the kind of triangle with the side lengths ia, ib and ic. pre: 0 < ia, ib, ic <= 1000 post: EQUILATERAL <==> all sides are equal and the sides form a valid triangle) ISOSCELES <==> two sides are equal and the sides SCALENE form a valid triangle <==> no sides are equal and the sides form a valid triangle NO_TRIANGLE <==> the sides do not form a valid triangle 33

34 Bijlage 5: Voorbeeld van een testrapport Testgroep: Getest programma: Cross / Roots / Triangle Programmeurs: Tester:... Nr Invoer Verwachte uitvoer Testresultaat Als de uitvoer overeenkomt met de verwachte uitvoer, wordt "OK" als Testresultaat in de tabel ingevuld. Bij een afwijkende uitvoer wordt deze afwijkende uitvoer ingevuld in de kolom Testresultaat. 34

35 In deze onderwijspublicatie is géén auteursrechtelijk beschermd werk opgenomen. 35

Informatica 2 Studiehandleiding

Informatica 2 Studiehandleiding Informatica 2 Studiehandleiding Embedded Systems Engineering Groep: ES1D ir drs E.J Boks 25-02-2010 Inhoud 1 Inleiding... 2 2 Doelstelling... 3 3 Beoordeling... 4 4 Eisen aan het verslag... 6 Voorbeeld

Nadere informatie

Interfacetechnieken Studiehandleiding

Interfacetechnieken Studiehandleiding Interfacetechnieken Groep : ES2, ES3D Peter Bijl 1 September 2014 Inhoud 1 Inleiding... 3 1.1... Voorkennis... 3 1.2... Doelstellingen... 3 2 Beschrijving en beoordeling... 4 2.1... Hoofdfase voltijd...

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10 CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel

Nadere informatie

Introductie in C++ Jan van Rijn. September 2013

Introductie in C++ Jan van Rijn. September 2013 Introductie in C++ Jan van Rijn September 2013 Inhoud Classes Overerving Const correctness Standard C++ library Templates Classes Voordelen van classes: Modelleren Modulariteit Informatie afschermen Makkelijk(er)

Nadere informatie

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

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar 2006-2007 23 Januari, 2007 **BELANGRIJK** : Schrijf je naam onderaan dit blad Leg volgende 3 begrippen kort en bondig uit : a. Concurrent

Nadere informatie

Dynamiek met VO-Script

Dynamiek met VO-Script Dynamiek met VO-Script Door Bert Dingemans DLA Ontwerp & Software bert@dla-architect.nl Inleiding Op de SDGN nieuwsgroep voor Visual Objects ontstond laatst een draad van berichten over de nieuwe libraries

Nadere informatie

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers);

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers); bestand voertuig.h biz. 1 van 2 #ifndef VOERTUIG H #define VOERTUIG H #include using std::string; class Voertuig { public: Voertuig(); Voertuig(const string& inschrijvingsnumrner, const string&

Nadere informatie

Inleiding C++ Coding Conventions

Inleiding C++ Coding Conventions Inleiding C++ Coding Conventions Opleiding Bachelor of Science in Informatica, van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2012-2013. Ruben Van den Bossche,

Nadere informatie

Digitaal System Ontwerpen Studiehandleiding

Digitaal System Ontwerpen Studiehandleiding Digitaal System Ontwerpen Studiehandleiding Embedded Systems Engineering Klassen: ES2, ES2D H. Riezebos 5 september 2012 Inhoud 1 Inleiding... 2 2 Beschrijving en beoordeling... 3 3 Tentamenstof... 6 4

Nadere informatie

Tutorial 1, Delphi: Geldspraak

Tutorial 1, Delphi: Geldspraak Tutorial 1, Delphi: Geldspraak Versie Datum Auteurs Opmerkingen 1 25-09-2001 Kees Hemerik (code) Gebaseerd op Delphi 5 Enterprise. Roel Vliegen (tekst) 2 17-03-2005 Kees Hemerik Aanpassingen: Delphi 7,

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)

Nadere informatie

Chris de Kok 223548 TDI 3. Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren

Chris de Kok 223548 TDI 3. Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren Chris de Kok 223548 TDI 3 Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren Inhoud Inleiding... 3 Black box / White box... 3 XP... 3 SimpleTest... 3 Eclipse plugin... 4 GroupTest...

Nadere informatie

Handleiding JCreator. Inhoud. Een Workspace en een eerste project maken

Handleiding JCreator. Inhoud. Een Workspace en een eerste project maken Handleiding JCreator Inhoud Een Workspace en een eerste project maken Een tweede project maken De editor van JCreator Aanpassen van de basis-directory Documentatie over klassen en methoden van de JDK Bestand

Nadere informatie

Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE EXTRA KEUZENVAK VAK: C++ PROGRAMMEERMETHODEN

Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE EXTRA KEUZENVAK VAK: C++ PROGRAMMEERMETHODEN Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE VAK: C++ PROGRAMMEERMETHODEN EXTRA KEUZENVAK Semester, periode : 2 e semester, periode 4 en 5 Coördinator(en) : Arnoud Visser en Bas Terwijn Docent(en) :

Nadere informatie

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: Eenvoudig voorbeeld. Er wordt verondersteld dat er met VS 2008 EXPRESS gewerkt wordt. Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: (Sommige schermafdrukken zijn afkomstig

Nadere informatie

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

Programmeren in C++ Efficiënte zoekfunctie in een boek Examen Software Ontwikkeling I 2e Bachelor Informatica Faculteit Wetenschappen Academiejaar 2010-2011 21 januari, 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief de hints/opmerkingen)!

Nadere informatie

Qt in het kort Handleiding

Qt in het kort Handleiding Qt in het kort Handleiding Embedded Systems Engineering Groep: ES1, ES1V, ES1D Jos Rouland 7 maart 2012 Voorwoord Om snel op te kunnen starten met de ontwikkelomgeving Qt is deze handleiding gemaakt. Hierbij

Nadere informatie

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 2, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Terugblik Functies Organisatie (architectuur) van programma s Arrays Structuren

Nadere informatie

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

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014! Inleiding Software Engineering Unit Testing, Contracten, Debugger 13 Februari 2014 Beknopte info over Unit Testing en Contracten kan je vinden op het einde van dit document. Eclipse beschikt over een handige

Nadere informatie

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

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

Howto Subversion. 1. Subversion structuur en uitleg

Howto Subversion. 1. Subversion structuur en uitleg 1. Subversion structuur en uitleg Op de Adwise VDS server staan de repositories die gebruikt kunnen worden. Een subversion repository bevat alle projecten gerelateerd aan de betreffende repository. Adwise

Nadere informatie

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Een typisch programma in C en C++ bestaat uit een aantal onderdelen: Eerste stappen in C. Een typisch programma in C en C++ bestaat uit een aantal onderdelen: /* Alles wat op meerdere lijnen staat zoals hier is commentaar. */ // Dit is commentaar op 1 lijn. Geldig tot einde

Nadere informatie

http://www.liacs.nl/home/kosters/java/

http://www.liacs.nl/home/kosters/java/ sheets Programmeren 1 Java college 2, Walter Kosters De sheets zijn gebaseerd op de hoofdstukken 2 tot en met 6 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest. WAT IS EEN UNIT TEST? Een unit test is een test om de functionaliteit van stukken code te controleren. Een goede unit test waarborgt een consistente werking van een klein onderdeel (een unit ) van de broncode.

Nadere informatie

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

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt

Nadere informatie

Software Configuration Management Plan

Software Configuration Management Plan Software Configuration Management Plan Michiel De Keyser Configuration Manager van Software Engineering groep 3 December 14, 2010 Versie Datum Beschrijving 0.1 3 November 2010 Eerste ruwe versie 0.2 3

Nadere informatie

ES1 Project 1: Microcontrollers

ES1 Project 1: Microcontrollers ES1 Project 1: Microcontrollers Les 1: Installeren en verifiëren van de SDE Door Hugo Arends, augustus 2012 Microcontrollers Een microcontroller is een elektronische component dat gebruikt wordt om (complexe)

Nadere informatie

Inhoud. Introductie tot de cursus

Inhoud. Introductie tot de cursus Inhoud Introductie tot de cursus 1 De functie van de cursus 7 2 De inhoud van de cursus 7 2.1 Voorkennis 7 2.2 Leerdoelen van de cursus 8 2.3 Opbouw van de cursus 8 3 Leermiddelen en wijze van studeren

Nadere informatie

Programmeren in C++ (deel 1)

Programmeren in C++ (deel 1) FHT&L MODULE BESCHRIJVING Programmeren in C++ (deel 1) PRO4 Samenstelling: Cees van Tilborg, Thijs Dorssers Datum: september 2011 Versie: 1h Titel: Programmeren in C++ Identificatie Progresscode: PRO4

Nadere informatie

Selenium IDE Webdriver. Introductie

Selenium IDE Webdriver. Introductie Selenium IDE Webdriver Het Wielsem 10, 5231 BW s- Hertogenbosch, telefoon 073-6409311 e- mail info@testwork.nl internet http://www.testwork.nl 1 Inhoudsopgave 1 Inhoudsopgave... 2 2 Selenium IDE... 3 3

Nadere informatie

AFO 142 Titel Aanwinsten Geschiedenis

AFO 142 Titel Aanwinsten Geschiedenis AFO 142 Titel Aanwinsten Geschiedenis 142.1 Inleiding Titel Aanwinsten Geschiedenis wordt gebruikt om toevoegingen en verwijderingen van bepaalde locaties door te geven aan een centrale catalogus instantie.

Nadere informatie

Software Test Plan. Yannick Verschueren

Software Test Plan. Yannick Verschueren Software Test Plan Yannick Verschueren November 2014 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 1 Inhoudstafel 1 Introductie 3 1.1

Nadere informatie

SPSS VOOR DUMMIES+ Werken met de NSE: enkele handige basisbeginselen. Gebaseerd op SPSS21.0 & Benchmarkbestand NSE 2014

SPSS VOOR DUMMIES+ Werken met de NSE: enkele handige basisbeginselen. Gebaseerd op SPSS21.0 & Benchmarkbestand NSE 2014 SPSS VOOR DUMMIES+ Werken met de NSE: enkele handige basisbeginselen Gebaseerd op SPSS21.0 & Benchmarkbestand NSE 2014 Huidig kennis- en ervaringsniveau?????? Beginners Gevorderden 2 Inhoud 1. Wat doe

Nadere informatie

Functioneel programmeren

Functioneel programmeren Functioneel programmeren Practicumopgave 2: Mastermind Het doel van deze opgave is het implementeren van het spel Mastermind; zie http://nl.wikipedia.org/wiki/mastermind voor een uitleg. Het spel is klein

Nadere informatie

Handleiding helpdesk. Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark

Handleiding helpdesk. Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark Inhoudsopgave Inhoudsopgave... 2 1. Beheer helpdesk... 3 1.1. Settings... 3 1.2. Applicaties... 4 1.3. Prioriteiten... 5 1.4. Gebruik mailtemplates...

Nadere informatie

Software-Ontwikkeling I Academiejaar 2006-2007

Software-Ontwikkeling I Academiejaar 2006-2007 Software-Ontwikkeling I Academiejaar 2006-2007 Project: Bibliotheekbeheer 1 1. Digitale bibliotheek a. Inleiding Bibliotheken houden onder meer hun collecties van uitleenbare artikels bij in digitaal formaat.

Nadere informatie

De MySQL C API. Variabelen in C Functies in C Pointers in C

De MySQL C API. Variabelen in C Functies in C Pointers in C LinuxFocus article number 304 http://linuxfocus.org De MySQL C API door Özcan Güngör Over de auteur: Ik gebruik Linux sinds 1997. Vrijheid, flexibiliteit en opensource. Dat

Nadere informatie

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

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma 3 Vereiste kennis Dit boek richt zich op het leren programmeren door het oefenen met programmeercodes. Veel theorie komt in het begin niet aan de orde. Dat is een grote uitdaging want het is niet makkelijk

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

Kleine cursus PHP5. Auteur: Raymond Moesker Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven

Nadere informatie

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

Programmeermethoden. Recursie. week 11: november kosterswa/pm/ Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Modulewijzer Tirdat01

Modulewijzer Tirdat01 Modulewijzer Tirdat01 W. Oele 25 augustus 2008 1 Inhoudsopgave 1 Inleiding en leerdoelen 3 2 Voorkennis 3 2.1 tirprg01 en tirprg02........................ 3 2.2 tirprg03.............................. 4

Nadere informatie

Programmeren in C ++ met wxwidgets les 5

Programmeren in C ++ met wxwidgets les 5 Elektrotechniek/Embedded Systems engineering inf2d Programmeren in C ++ met wxwidgets les 5 cursus 2009-2010 ir drs E.J Boks Les 5 Grafische toolkits Basisbeginselen gebruik grafische toolkit WxWidgets

Nadere informatie

Versturen van email vanuit een Delphi VCL toepassing

Versturen van email vanuit een Delphi VCL toepassing Versturen van email vanuit een Delphi VCL toepassing Voor Delphi bestaan uiteraard verschillende libraries om emails te versturen, maar in dit voorbeeld wordt een C# Dotnet library gebruikt en aangesproken

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

ESA Week 4a: Unix. Vandaag: versiebeheer (RCS, CVS, SVN) Donderdag: Compilatiebeheer, SSH en nog het een en ander

ESA Week 4a: Unix. Vandaag: versiebeheer (RCS, CVS, SVN) Donderdag: Compilatiebeheer, SSH en nog het een en ander ESA Week 4a: Unix Vandaag: versiebeheer (RCS, CVS, SVN) Donderdag: Compilatiebeheer, SSH en nog het een en ander 1/30 23 september 2004 Versiebeheer Een Version-Control System biedt ondersteuning bij de

Nadere informatie

Software Test Plan. PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015

Software Test Plan. PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Software Test Plan PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Jens Nevens - Sander Lenaerts - Nassim Versbraegen Jo De Neve - Jasper Bevernage Versie 1 Versie

Nadere informatie

Opdracht 7a. Applicatiebouw 2014/2015

Opdracht 7a. Applicatiebouw 2014/2015 Applicatiebouw 2014/2015 Opdracht 7a Inhoud Applicatiebouw op dag 7 College In het college wordt oa. overerving behandeld, waarmee je uit een bestaande klasse een nieuwe andere klasse kan maken. Ook zijn

Nadere informatie

Git & RobotLib. Contents. De source is: ( )

Git & RobotLib. Contents. De source is: ( ) De source is: ssh://git_robotmc@robotmc.git.cloudforge.com/robotlib.git Git & RobotLib. (2016-01-07) Contents Inleiding... 2 Git Extensions installeren.... 2 Toegang tot de RobotLib repository.... 5 Genereer

Nadere informatie

Programmeren onder RISC OS: de snelstart. in BBC-Basic

Programmeren onder RISC OS: de snelstart. in BBC-Basic Programmeren onder RISC OS: de snelstart in BBC-Basic Programmeren in RISC OS: de snelstart De programma-directory Vensters maken Een eenvoudige foutprocedure Muis en toetsenbord Een icoon op de icoonbalk

Nadere informatie

Midi PDF Bladmuziek lezer

Midi PDF Bladmuziek lezer Inleiding. Ruim 20 ordners aan bladmuziek, meeste daarvan uitgeprint van een PDF. Even snel een nummer opzoeken wil dan ook niet, terwijl ik alles wel op alfabetische volgorde heb. Dat was het niet helemaal

Nadere informatie

Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1

Probleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen.  wstomv/edu/2ip05/ Per ronde werpt elke speler 1 2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ College 1 5 spelers,2 dobbelstenen Probleem met dobbelspel Per ronde werpt elke speler 1 Tom Verhoeff Technische Universiteit Eindhoven

Nadere informatie

Hoe te werken met Word en SmarTeam?

Hoe te werken met Word en SmarTeam? Hoe te werken met Word en SmarTeam? Nikhef number: Item number: Date: 09/09/2010 Page: 1 of 17 23001-MT-00008 AA1330 Status: In Work Revision: A.4 Project: Bedrijf Intern Technical Departments Department:

Nadere informatie

Opmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen?

Opmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen? 2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ 5 spelers, 2 dobbelstenen Probleem met dobbelspel College 1 Per ronde werpt elke speler 1 Kees Hemerik Tom Verhoeff Technische Universiteit

Nadere informatie

Wat zijn de verschillen tussen SPSS 9 en SPSS 10?

Wat zijn de verschillen tussen SPSS 9 en SPSS 10? Wat zijn de verschillen tussen SPSS 9 en SPSS 10? 1.1 De data-editor / het definiëren van variabelen 1.2 Het openen van bestanden 1.3 Output lezen 1.4 Mogelijke problemen 1.1.1 De data-editor Het grootste

Nadere informatie

MADASTER PLATFORM. IFC export in BIM software. Archicad 21 & Revit 2019

MADASTER PLATFORM. IFC export in BIM software. Archicad 21 & Revit 2019 MADASTER PLATFORM IFC export in BIM software Archicad 21 & Revit 2019 Juni 2018 Inleiding Deze handleiding dient ter ondersteuning van het importeren van uw gebouw naar het Madaster platform. Om u bestand

Nadere informatie

Plan van aanpak Toogle

Plan van aanpak Toogle Plan van aanpak Toogle Gemaakt door, Kevin Donkers Paul v.d. Linden Paul Eijsermans en Geert Tapperwijn 1 Inhoudsopgave 1 Inhoudsopgave...2 2 Inleiding...3 3 Projectopdracht...4 4 Projectactiviteiten...5

Nadere informatie

Een korte samenvatting van enkele FORTRAN opdrachten

Een korte samenvatting van enkele FORTRAN opdrachten Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5

Nadere informatie

Inleiding Visual Basic en VBA. Karel Nijs 2009/01

Inleiding Visual Basic en VBA. Karel Nijs 2009/01 Inleiding Visual Basic en VBA Karel Nijs 2009/01 Leswijze Eerst wat theorie Begeleid met (korte) oefeningen Ms Excel 2003 Online hulp: http://www.ozgrid.com/vba/ http://msdn.microsoft.com/en-us/library/sh9ywfdk(vs.80).aspx

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Tentamen Programmeren in C (EE1400) 3 feb. 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd

Nadere informatie

Manual Ingave Inkoopovereenkomst

Manual Ingave Inkoopovereenkomst Manual Ingave Inkoopovereenkomst 1. Login - URL: http://s-bsc.com/rcmpsnl - Gebruikersnaam: geef je login in - Wachtwoord: geef het wachtwoord in - Selecteer Inloggen Ricoh handleiding ingave inkoopovereenkomst

Nadere informatie

Inleiding programmeren

Inleiding programmeren Inleiding programmeren Docent: José Lagerberg Assistenten: Robin de Vries, Jordy Perlee, Dimitri Belfor, Stephen Swatman, Erik Kooistra, Daan Kruis, Daniel Louwrink Cursusinformatie: https://staff.fnwi.uva.nl/j.m.lagerberg

Nadere informatie

Een eerste applicatie

Een eerste applicatie Een eerste applicatie 2.1 Inleiding Programmeren in Visual Basic.NET doe je niet alleen door regels met code te schrijven. Je begint met het ontwerpen van een venster in de design mode met allerlei controls,

Nadere informatie

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) Vereiste voorkennis Voldoende kennis van het besturingssysteem (in deze handleiding wordt uitgegaan van Windows) De basisprincipes van programmeren Vereiste

Nadere informatie

Software Test Document

Software Test Document Software Test Document PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Jens Nevens - Sander Lenaerts - Nassim Versbraegen Jo De Neve - Jasper Bevernage Versie

Nadere informatie

Om te kijken of x, y, z samen een driehoek specificeren hoeven we alleen nog maar de driehoeksongelijkheid te controleren: x, y, z moeten voldoen

Om te kijken of x, y, z samen een driehoek specificeren hoeven we alleen nog maar de driehoeksongelijkheid te controleren: x, y, z moeten voldoen Feedback Software Testing, Opdrachten Week 1 Driehoek-test Deze opdracht is in het algemeen zeer goed uitgevoerd. Algemeen valt in vergelijking met vorig jaar op dat de ingeleverde oplossingen veel minder

Nadere informatie

Cursus Algoritmiek - - - najaar 2005

Cursus Algoritmiek - - - najaar 2005 Cursus Algoritmiek - - - najaar 2005 Practicumopdracht 4 : werken met kale gegevensbestanden 1. Achtergrond In de 2 e en de 3 e practicumopdracht heb je al kennis gemaakt met het via het toetsenbord laten

Nadere informatie

Opgaven. Python Assessment

Opgaven. Python Assessment Opgaven Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Inleiding Met dit assessment kun je controleren of je voldoende parate kennis over Python hebt om te beginnen

Nadere informatie

Siemens workpoints en DHCP options

Siemens workpoints en DHCP options Siemens workpoints en DHCP options Dit document beschrijft de configuratie en werking van een Windows 2003 DHCP server in combinatie met Siemens optipoint en Siemens OpenStage toestellen (aangemeld op

Nadere informatie

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

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Programmeertechnieken Week 7

Programmeertechnieken Week 7 Programmeertechnieken Week 7 Tim Cocx, Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/pt2017/ "Confidence in Code" "Ons programma / onze module is af, maar hoe weten we nu of alles werkt?"

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 2 september 2007 voor deeltijdstudenten Kop van Zuid Rotterdam, 3 juni 2007 Even voorstellen Naam: Wessel Oele(31) Docent bij opleiding technische informatica Kamer: I210 (tweede verdieping, links de gang

Nadere informatie

inleiding theoretische informatica practicum 1 deadline woensdag 20 februari 2008 om uur

inleiding theoretische informatica practicum 1 deadline woensdag 20 februari 2008 om uur 1 Inleiding inleiding theoretische informatica 2007-2008 practicum 1 deadline woensdag 20 februari 2008 om 14.00 uur Dit practicum is een kennismaking met functioneel programmeren. Twee belangrijke functionele

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden : stapels, rijen en binaire bomen Walter Kosters week 12: 26 30 november 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 en Vierde programmeeropgave Othello programmeren we als volgt:

Nadere informatie

Inhoud KAS-WEB: HANDLEIDING IDG OPERATOR

Inhoud KAS-WEB: HANDLEIDING IDG OPERATOR KAS-WEB: HANDLEIDING IDG OPERATOR Inhoud 1. IdentityGuard starten... 2 2. User beheer via IdentityGuard Administration... 3 2.1 User Accounts... 3 2.1.1. Go To Account... 3 2.1.2. Find Accounts... 4 2.2

Nadere informatie

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/ Programmeermethoden Functies vervolg Walter Kosters week 5: 1 5 oktober 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Files manipuleren 1 Deze void-functie telt niet-lege regels in een file invoer: void

Nadere informatie

Zelftest Programmeren in Java

Zelftest Programmeren in Java Zelftest Programmeren in Java Document: n0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST PROGRAMMEREN IN JAVA Deze test

Nadere informatie

VBA voor doe het Zelvers - deel 10

VBA voor doe het Zelvers - deel 10 VBA voor doe het Zelvers - deel 10 Handleiding van Auteur: leofact Oktober 2014 handleiding: VBA voor doe het Zelvers - deel 10 VBA voor Doe het Zelvers is een reeks artikelen, bedoelt voor mensen die

Nadere informatie

NetBeans tutorial, Rik Eshuis, Kees Huizing versie 2.2 Augustus 2009

NetBeans tutorial, Rik Eshuis, Kees Huizing versie 2.2 Augustus 2009 NetBeans tutorial, Rik Eshuis, Kees Huizing versie 2.2 Augustus 2009 NetBeans is een IDE voor (o.a.) Java, een programma waarmee je Javaprogramma's kunt schrijven en uitvoeren. Deze tutorial bevat informatie

Nadere informatie

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/ Programmeermethoden Pointers Walter Kosters week 10: 13 17 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Introductie Een pointer is in feite gewoon een geheugenadres. Het geheugen kun

Nadere informatie

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april 2009. Versie 2.1.0

Technisch ontwerp. Projectteam 6. Project Web Essentials 02 april 2009. Versie 2.1.0 Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis, hans.allis@student.hu.nl Technisch ontwerp Project "Web Essentials" 02 april 2009 Versie 2.1.0 Teamleden: Armin

Nadere informatie

Communicatie voor juristen. mevrouw drs. D. van der Wagen. Communicatie voor juristen. Beschrijving en doel van dit beroepsproduct

Communicatie voor juristen. mevrouw drs. D. van der Wagen. Communicatie voor juristen. Beschrijving en doel van dit beroepsproduct Titel Onderwijseenheid (OWE) Code OWE Eigenaar OWE Communicatie voor juristen COJE 1 Opleiding HBO-Rechten 2 Doelgroep: variant(en) VT / DT / DU / EL mevrouw drs. D. van der Wagen E-learning Cluster A-cluster

Nadere informatie

AFO 139 Automatische export

AFO 139 Automatische export AFO 139 Automatische export 139.1 Inleiding Vubis Smart beschikt over de mogelijkheid om volledig automatisch beschrijvingen te exporteren naar bestanden op de server. Andere bibliotheken (ongeacht of

Nadere informatie

1. Document Management

1. Document Management 1. Document Management 1.1. Revision Manager Revision Manager is een gescheiden module waarin het aanmaken van afgeleide documenten en het onderhouden van revisies moet gebeuren om de aanwezige Links te

Nadere informatie

Formulieren maken met Dreamweaver CS 4/CS 5

Formulieren maken met Dreamweaver CS 4/CS 5 Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit

Nadere informatie

IORE-1AR (Inleiding Ondernemingsrecht) IORE-1AE (Economie voor Juristen) IORE-1AR: de heer mr. S. Boelens IORE-1AE: de heer R.

IORE-1AR (Inleiding Ondernemingsrecht) IORE-1AE (Economie voor Juristen) IORE-1AR: de heer mr. S. Boelens IORE-1AE: de heer R. Algemene informatie Titel OWE Code OWE Onderdelen Eigenaar OWE Inleiding Ondernemingsrecht IORE IORE-1AR (Inleiding Ondernemingsrecht) IORE-1AE (Economie voor Juristen) IORE-1AR: de heer mr. S. Boelens

Nadere informatie

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek

Nadere informatie

Grafisch programmeren met GTK

Grafisch programmeren met GTK LinuxFocus article number 295 http://linuxfocus.org Grafisch programmeren met GTK door Özcan Güngör Over de auteur: Sinds 1997 gebruik ik Linux. Vrijheid, flexibiliteit en

Nadere informatie

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie www.liacs.nl/home/kosters/pm/ Met dank aan allen die aan deze tekst hebben

Nadere informatie

Inhoud Inhoud. Over dit boek 7. 1 Eclipse IDE (Integrated Development Environment) 9. 2 Functionele specificatie 13

Inhoud Inhoud. Over dit boek 7. 1 Eclipse IDE (Integrated Development Environment) 9. 2 Functionele specificatie 13 5 Inhoud Inhoud Over dit boek 7 1 Eclipse IDE (Integrated Development Environment) 9 2 Functionele specificatie 13 3 Implementatie grafische gebruikersinterface 31 4 De klassen en methoden 57 5 Technische

Nadere informatie

VAN HET PROGRAMMEREN. Inleiding

VAN HET PROGRAMMEREN. Inleiding OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,

Nadere informatie

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

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden

Nadere informatie

Een gelinkte lijst in C#

Een gelinkte lijst in C# Een gelinkte lijst in C# In deze tutorial ga demonstreren hoe je een gelinkte lijst kan opstellen in C#. We gaan een klasse schrijven, die een gelijkaardige functionaliteit heeft als een ArrayList, namelijk

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Faculteit EWI Tentamen Programmeren in C (EE1400) 28 jan 2011, 9.00 12.00 - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd

Nadere informatie

Vraag 1: HashTable [op 2 punten van de 20] Gegeven de header file HashTable.h van een hashtabel die pointers naar strings bijhoudt (in bijlage).

Vraag 1: HashTable [op 2 punten van de 20] Gegeven de header file HashTable.h van een hashtabel die pointers naar strings bijhoudt (in bijlage). Examen SoftwareOntwikkeling I 2e Bachelor Informatica Faculteit Wetenschappen Academiejaar 2009-2010 22 januari, 2010 **BELANGRIJK** 1. Schrijf je naam onderaan op elk blad. 2. Vragen 1,2 en 3 gaan enkel

Nadere informatie

Voorgeslacht rapport generator

Voorgeslacht rapport generator Beschrijving Voorgeslacht rapport generator versie 3.5 (16 mei 2006) auteur:berend Meijer De voorgeslacht rapport generator is een sjabloon voor gebruik met het genealogie-programma Aldfaer (www.aldfaer.nl).

Nadere informatie

II. ZELFGEDEFINIEERDE FUNCTIES

II. ZELFGEDEFINIEERDE FUNCTIES II. ZELFGEDEFINIEERDE FUNCTIES In Excel bestaat reeds een uitgebreide reeks van functies zoals SOM, GEMIDDELDE, AFRONDEN, NU enz. Het is de bedoeling om functies aan deze lijst toe te voegen door in Visual

Nadere informatie

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/ Programmeermethoden Controle-structuren Walter Kosters week 3: 17 21 september 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleveren opgave 1 Inleveren: digitaal clintonobama1.cc en print van mooi.pdf.

Nadere informatie