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 Studiefase: Semester 4 Omvang: 140 SBU/5 ECTS-punten Lestijd: 7 lesweken Looptijd: 9 weken Toelichting en inhoudelijke beschrijving In de propedeuse-fase heb je een behoorlijke basiskennis informatica opgedaan. In het bijzonder heb je de eerste beginselen van het programmeren geleerd en in praktijk leren brengen in de OO-talen Java (module PRG1). Conceptueel lijkt C++ veel op Java de toepassingsgebieden zijn anders. C++ wordt o.a. gebruikt bij het implementeren van systeemsoftware, denk daarbij aan drivers, embedded systemen en applicatiesoftware. Ook het visueel programmeren in Visual C++ toont grote overeenkomsten met het visueel programmeren in Java. In de praktijk wordt zeer veel gebruik gemaakt van de OO-taal C++. We richten ons in deze module op de volgende hoofdzaken: introductie in de programmeertaal C++; gebruik van de programmeertaal C+ +; Introductie in het gestructureerd en objectgeoriënteerd programmeren; gebruik van ontwikkelomgeving; gebruik van libraries waaronder QT. Eindtermen Na het bestuderen van deze module: - kun je modulaire C++ programma s (console applicaties) te ontwikkelen met Visual C++ - kun je de rol van pre-processor, compiler en linker uit leggen; - kun je C++ functies met parameters (call by reference/value mechanisme, return value) toe passen; - kun je voor een eenvoudig algorithme (herhaallus) de initialisatie, het stopcriterium de C++-code ontwerpen en de correctheid ervan beredeneren; - kun je control flow elementen zoals switch(), if(), while(), do-while(), for() toe passen; - kun je met pointers en references werken - kun je variabelen, structures, typedefs, (meerdimensionale) arrays toe passen - kun je klassen, constructoren, destructoren, (multiple) inheritance, polymorphisme toe passen - kun je de implementatie van strings in C++ te begrijpen en toe passen - heb je voldoende kennis van de taal C++ om je snel in een specifieke bedrijfsgebruik van de taal C++ in te werken; - kun je de standaard programmeerconcepten toepassen van de taal C++; - weet je wat object georiënteerd programmeren inhoudt; - kun je een eenvoudig probleem op OOP wijze implementeren in C++; - kun je een specificatie in UML vertalen naar een C++ applicatie; - kun je een template-class maken; - kun je dynamische datastructuren als lijsten, queue's, stacks, bomen, etc implementeren en toepassen in specifike situaties en weet je daarbij gebruik te maken van recursie; - kun je een eevoudig dialog-based applicatie in Qt-C++ implementeren - kun je de elementaire besturingselementen van Qt-C++ en de bijbehorende Qt-klassen toepassen; - begrijp je de document/view archtectuur van Qt en het Qt-event-mechanisme; - kun je threads toepassen in Qt-C++
Competenties Verwijzend naar het boek Beroepsprofiel en Opleidingsprofiel HBO-I (ISBN 90-74793-17-7) draagt deze module bij aan de volgende kwalificaties voor het Hoger Onderwijs: de specifieke kwalificaties 5 en 11. Gevolgde modules Voortgebouwd wordt op het module PRO3 (programmeren in java). Gelijklopende modules Parallel aan deze module loopt het project Distributed Applications in C# (PRJ41). Aansluitende modules CSA2, Operating Systemen Leermiddelen De modulebeschrijving, de practicumopdrachten, de in de les gepresenteerde sheets en eventueel ander materiaal wordt via de Fontys ELO N@tschool beschikbaar gesteld: http://elo.fontys.nl Aanbevolen studieboek/naslagwerk (aanschaf facultatief): C++, Zesde herziene editie, Leendert Ammeraal, Academic Service ISBN xxxxxxxxxxx [BE1] Thinking in C++, 2nd ed. Volume 1, Bruce Eckel (=free E-book) [BE2] Thinking in C++, 2nd ed. Volume 2, Bruce Eckel (=free E-book) Free C/C++ books: http://www.freetechbooks.com/c-c-f3.html Onderwijsvorm Jaar Semesterweek 1 2 3 4 5 6 7 8&9 Totaal College 3 3 3 3 3 3 3 21 Practikum 6 6 6 6 6 6 6 42 Zelfstudie 2 2 2 2 2 2 2 14 Prakticumafronding 5 5 5 5 5 5 5 7 42 Toetsvoorbereiding 19 19 Toets 2 2 Total 16 16 16 16 16 16 16 28 140 De eerste 4 weken zijn vooral gericht op de C++ concepten, in week 5 t/m 7 komt Qt aan bod. Veel aandacht zal besteed worden aan het toepassen hiervan o.a. in de vorm van individuele opdrachten. Tijdens college-uren zal dan worden ingegaan op de hoofdlijnen, vragen over de theorie, bespreking opdrachten. Gedurende de practicumuren werk je deels onder begeleiding verder aan de opdrachten. Practicum opdrachten worden individueel gemaakt, tenzij anders aangegeven. Aanwezigheid tijdens practicum is verplicht en wordt bijgehouden, in geval van ziekte of iets dergelijks afmelden bij begeleidend docent. Opgaven worden via N@tschool ingeleverd. Opdrachten dienen volgens het opgegeven schema gemaakt te worden. De docent zal regelmatig de stand van zaken controleren en bij goed resultaat goedkeuren. Om dit practicum te halen moeten alle opgaven gemaakt en goedgekeurd zijn. 3/5
Weekplanning Week Theorie Individuele opdrachten 1 Inleiding, variabelen, declaraties, operatoren en expressies (1#1) Flow of control, rol van variabelen (1#2) Functies, scope van variabelen (1#3) Seperate modules (1#3) Pointers, call by value, call by reference (1#4) Pointers, typeconversies, casting (1#5) 1#1:1-5 1#2:1,2,3,5 1#3:2 1#4:2 1#5:1,3,5 2 Structures, fields, unions (1#6) Typedef, macro s (1#7) Klassen, scope operator, private, public, constructor, destructor (1#8) Default functie parameters, functie overloading, references, copy constructor, dynamisch geheugen, member initialisatie lijst (1#9) Conversies, explicit, mutable, static, zelf refenties, this pointer (1#10) 3 Friends (1#11:1-6) Implementatie gelinkte lijst (2#3:1-10) Uitleg tekstverwerkeropdracht (2#4:1-8) Pointers naar data - en functie members, Inheritance (1#11: 7- eind) Multiple inheritance, Public, protected en private inheritance, polymorphisme, (pure) virtuele functies, abstracte klassen (1#12+2#3) 4 Operator overloading (1#13+2#1) Functie templates en Klassentemplates Sequence containers en STL-iteratoren (2#2) Exception-afhandeling File I/O, binair of ascii met streams (2#5) Class persistentie, met streams, serialiseren (2#6) 1#6:1,2, een uit 3-6, 8 1#9:1 Optioneel 1#11:1 2#4:1-3 1#13:1-3 2#2:1-2 5 Qt Qt tutorial part 1 5, 2#10:1 6 Qt, Ontwerpbeslissingen bij container-classen 2#11:1 7 Qt Toets Beoordeling en afronding Voor de afronding van deze module bestaan een aantal verplichtingen voor de deelnemer: - op tijd ingeleverde prakticumopdrachten; - met voldoende resultaat afgeronde individuele mondelinge nabespreking van de practicumopdrachten met de docent, dit levert een practikumcijfer op. - toets maken. Het eindcijfer wordt alleen toegekend als het practicum met een voldoende (>=5.5) is afgesloten en de toets met cijfer >=3.5. Het eindcijfer wordt berekend op basis van de formule: 0.6 * toets + 0.4 * practicum. 4/5
Randvoorwaarden Voor de hoorcolleges is een ruimte met beamer nodig. Voor het practicum een lokaal met voor iedere deelnemende student een pc, met daarop geïnstalleerd Netbeans met C++/Qt-ontwikkelsoftware. De 6 uren practicum zijn verdeeld over 2 zittingen per week. Evaluatie Na afloop zal een evaluatie gedaan worden met als doel de module kwalitatief te verbeteren. De gemaakte opmerkingen zullen worden meegenomen voor de volgende keer. 5/5