Informatica 11. Omschrijving Studiematerialen. Omschrijving OndeiWijsorganisatie. Omschrijving OndeiWijsorganisatie. Omschrijving Begincompetenties

Maat: px
Weergave met pagina beginnen:

Download "Informatica 11. Omschrijving Studiematerialen. Omschrijving OndeiWijsorganisatie. Omschrijving OndeiWijsorganisatie. Omschrijving Begincompetenties"

Transcriptie

1

2 Informatica 11 Academiejaar: Opleiding: Bachelor in de industriële Wetenschappen Studieomvang: 6 $tudiepunten Trajectschijf: 2 Totale studietijd:170,00 Uren Dit opleidingsonderdeel wordt gequoteerd op 20 (tot op een geheel getal). Tweede examenkans:wel mogelijk. Deliberatie-info: onder bepaalde voorwaarden kunnen tekorten op dit opleidingsonderdeel gedelibereerd worden. Niveau: Uitdiepend Coördinator:Naessens Helga Andere docenten:stoop Rudy Talen:Nederlands Tijdsorganisatie:Semester 1 Omschrijving Studiematerialen Syllabus. Ter aanvulling zijn boeken over de behandelde onderwerpen ter beschikking.in de bibliotheek. De lesgevers bieden slides, voorbeeldprogramma's en oefeningen aan via het leerplatform van de Hogeschool. Omschrijving OndeiWijsorganisatie Tijdens de theoretische contacturen, wordt mede aari de hand van voorbeelden stap voor stap de theorie uitgelegd. Tijdens de oefeningensessies werkt de student zelfstandig aan een PC. Omschrijving OndeiWijsorganisatie Hoorcollege (24,00 uren) Werkcollege (30,00 uren) Zelfstudie (116,00 uren) Omschrijving Begincompetenties De eindcompetenties verworven in Informatica I.

3 Omschrijving Eindcompetenties Kerncompetentie 1: In staat zijn om theoretische en praktische inzichten uit de informatica correct te hanteren binnen ingenieurstechnische oefeningen en vraagstukken. (SCA 1) Onder meer: In staat zijn om zelfstandig een computerprogramma op te stellen, te testen en uit te voeren. In staat zijn om blijvend kritisch, creatief en wetenschappelijk te denken en te redeneren. (ACt) Algemene competentie 1: In staat zijn om wetenschappelijk- disciplinaire inzichten betreffende de informatica zelfstandig en in teamverband toe te passen op wetenschappelijke enlof ingenieurstechnische problemen. (AIC1) Onder.meer: In staat zijn om een probleem te analyseren en te structureren en dit te vertalen naar een computerprogramma. Algemene competentie 2: In staat.zijn om relevante bestaande en nieuwe technologieën enlof theorieën te assimileren, te implementeren en te gebruiken binnen het domein van de informatica. (AIC2) Omschrijving Doelstellingen De opleidingsonderdelen Informatica I & 11 vormen de industrieel ingenieur tot een professioneel programmeur die de algemene principes van moderne programmeertalen kan toepassen. Abstracte datatypering is hem niet vreemd. De aangeleerde grondbeginselen kan hij later makkelijk toepassen in andere talen, waaronder diegene die gebruikt worden in allerlei softwareof toepassingspakketten.. Bovendien ontwikkelt hij door het leren programmeren zijn analytisch vermogen, leert hij problemen zelf oplossen en hiervoor correcte oplossingen formuleren. Dit opleidingsonderdeel vormt de basis voor alle vakken in de opleiding Informatica waar nioet geprogrammeerd worden. Omschrijving Inhoud De cursus C++ (gedoceerd in het opleidingsonderdeel Informatica I) wordt verder uitgediept. De volgènde onderwerpen komen aan bod: samengestelde gegevenstypes (structs, meerdimensionale tabellen, STL-containers), functies en procedures, pointers en hun toepassingen, invoer/uitvoer, excepties, beginselen van objectgericht programmeren. Omschrijving Begeleiding Uitleg op afspraak en extra oefeningen op aanvraag.

4 Omschrijving Evaluatie Theorie: schriftelijk examen (52%) Labo: permanente evaluatie, gequoteerde oefeningen en testen (48%) De beoordeling en het tot stand komen van de eindquotatie van opleidingsonderdelen gebeurt via het wiskundige gemiddelde volgens de toegekende coëfficiënten. Indien nochtans op één van de onderscheiden vakken (delen van opleidingsonderdelen) 7 of minder op 20 wordt behaald, kan worden afgeweken van deze rekenkundige berekening van de eindquotatie van het opleidingsonderdeel en kunnen de punten bij consensul:; worden toegekend. Uitzonderlijk wordt voor dit opleidingsonderdeel ook voor het oefeningenlabo een tweede zittijd ingericht. Een eventuele deelname aan een tweede zittijd voor het luik 'labo' wordt aanzien als een remediëring van een tekort. De quotatie in tweede zittijd van het luik 'labo' veniangt niet het volledige cijfer van de eerste zittijd, maar slechts van een beperkt percentage. Trefwoorden Computerwetenschappen (P170), Informatica (P175), Computertechnologie (T120) Studiekosten 10 (kosten syllabus en kopies van de labo~opdrachten).

5 Inhoudsopgave 1 Basisopdrachten Inleiding Variabelen en constanten Variabelen declareren Initialisatie bij declaratie Constanten Basisopdrachten of statements De toekenning of assignment De uitvoeropdracht De invoeropdracht Een procedureoproep Uitdrukkingen of expressions Numerieke Operatoren Een functieoproep Voorbeelden Speciale-toekenningsoperatoren De while-lus De for-lus De if-structuur 19 1

6 o be. 1.8 Een volledig programmà 0 1.~ Tabellen Het type bool De conditionele uitdrukking 1.12 Gebruik van bibliotheken Declaraties van functies Declaraties van procedures Tabelparameters Namespaces De types char en string 201 Het type char Karakters in schrijfopdrachten Inlezen van een karakter Bewerkingen met karakters 202 Het type string Declareren, initialiseren, inlezen en uitschrijven van strings Bewerkingen met strings Samengestelde gegevenstypes Tweèdimensionale tabellen Structs Algemeen Tabellen van structs Structs met tabellen als velden 52 2

7 be 4 Containers 4.1 De tabel Voordelen van de tabel Problemen met de tabel 4.2 Basisprincipe van een container 4.3 De groeitabel Principe van de groeitabel Vector String 4.4 De gelinkte lijst Principe van de gelinkte lijst List 4.5 De iterator 4.6 De stapel en de wachtrij Principe van de stapel Stack Principe van de wachtrij Queue Principe van de prioriteitswachtrij Achterliggende implementatie 4. 7 De verzameling Principe van de verzameling Set De afbeelding Principe van de afbeelding

8 be Map Functies en procedures Functies Logische functies Structs als functieresultaat. en als functieparameter Tabellen als functieparameters Procedures Procedures zonder parameters 5~2.2 Procedures met enkel invoerparameters Procedures met uitvoerparameters Procedures.met invoer-uitvoerparameters Tabellen als procedureparameters. 5.3 Recursie Wat is recursie? Voorbeelden.... Algemene structuur v.an een recursieve functie. De voor- en nadelen van recursie Bestanden Algemeen 6.2 Testen op het einde van een bestand Excepties 7.1 Inleiding. 7.2 Exception handling

9 be 8 Objectgeorienteerd programmeren Basisbegrippen Objecten Kenmerken van objecten Klassen lnka,pseling en verbergen van informatie Berichten en methodes. Zelf klassen maken Een eerste voorbeeld Private en public: gegevens verbergen Lidfuncties definiëren buiten de klassespecificatie Afzonderlijke compilatie Constructoren Gebruik val). objecten Een object als waarde-parameter van een lidfunctie Een object als functieresultaat Een object aanpassen in een lidfunctie Klassen: conversie en constructie Initialisatie bij constructie De copy-constructor Conversie bij constructie Conversie na initialisatie. _ Conversie met andere constructoren Pointers 140 5

10 be 9.1 Inleiding Pointers en tabellen 9.3 Pointers al~ parameters 9.4 Pointers naar const Rekenen met pointers 9.6 Pointers naar structs. 9.7 Pointers als resultaten van deelprogramma's. 9.8 De null"-pointer. 9;9 De operator ne:w 9.10 De operator delete Toepassingen van pointers 10.1 C-strings Bewerkingen met strings Tabellen van strings en pointers naar strings argc en argv Gelinkte lijsten Opbouwen van lijsten Overlopen van een lijst Elementen toevoegen aan een lijst Een element uit een lijst verwijderen Definitie van nieuwe types Pointers en objecten Aanvullingen bij invoer en uitvoer 11.1 Verzorgde uitvoer

11 be 11.2 Invoer via het toetsenbord Inlezen van ~én enkel karakter Nog meer voorbeelden van invoer

12 Hoofdstuk 1 Basisopdrachten De bedoeling van dit hoofdstuk is om eerst even het weinige dat je vorig jaar van C++ hebt gezien,. kort te herhalen. Daarna worden een aantal eenvoudige nieuwe concepten geïntroduceerd. 1.1 Inleiding In een programmeertaal zoals C++ bestaat een programma gewoon uit tekst, die dan wel aan bepaalde conventies moet voldoen. Deze tekst wordt door de computer gelezen,. vertaald en uitgevoerd. Een programma is opgebouwd uit speciale tekens of combinaties van tekens (bv. ==, «of *) en speciale sleutelwoorden (bv. if, for of return) die elk een specifieke betekenis hebben (en voor niets anders mogen gebruikt worden).. C++ gebruikt een vrij formaat. Dit betekent dat alleen de volgorde van de tekens en woorden in een programma van belang is, en niet de schikking. In principe kan hetzelfde programma dus uit één enkele (lange) lijn bestaan, of uit zeer vele lijnen met op elke lijn één enkel woord of symbool.. In de praktijk voegen we echter steeds extra spaties en lege lijnen aan een programma toe om de visuele structuur van het programma te verduidelijken. Op die manier begrijpt niet alleen de computer het programma, maar is het ook veel duidelijker. voor iedere menselijke lezer. Probeer in jouw programma's een gelijkaardige schikking te volgen. 1.2 Variabelen en constanten Variabelen declareren Variabelen kunnen in een programma of in een deelprogramma slechts gebruikt worden, indien ze voordien gedeclareerd werden. Deze declaratie gebeurt vaak in het he:. gin van het ( deel)programma vooraleer de variabelen effectief in programmaopdrachten 8

13 Hoofdstuk 1. Basisopdrachten be worden gebruikt. De declaratie van een variabele mag echter ook ergens middèn in het (deel) programma gebeuren, vlak voordat de variabele voor het eerst wordt gebruikt. De declaratie van een variabele betekent dat je voor elke variabele haar naam en haar type moet aangeven. Het type bepaalt het soort bewerkingen dat je dan later Op die variabele kunt toepassen. Types in C++ hebben een Engelse afkorting. In C++ bestaan heel wat types om gehele getallen aan te duiden: de types short, int, long, eventueel voorafgegaan door het sleutèlwoord unsigned. Ook voor re~le getallen bestaan er minstens twee soorten, namelijk float en double. We hebben er echter voor gekozen om in deze cursus enkel int te gebruiken voor gehele getallen en double voor reële getallen (zoals trouwens aanbevolen wordt door B. Stroustrup, de uitvinder van C++ ). Een declaratie ziet er als volgt uit: eerst komt de naam van het type, dan één of meerdere namen van variabelen, en op het einde komt een kommapunt. In het progranimafragment hieronder declareren we bijvoorbeeld vier gehele en vier reële variitbèlen: int a~ b, c; double hoogte, lengte, breedte, maand13; int aantal; De naam van een variabele moet steeds aan de volgende eisen voldoen: hij begint met een letter hij be:vat uitsluitend hoofd- en kleine letters, cijfers en het onderstreepteken ' _ ' hij bevat geen blanco's Let ook op dat C++ ~en onderscheid maakt tussen hoofdletters en kleine letters. De variabele a en de variabele A zijn dus niet dezelfde. Schrijf ook niet Int of INT in plaats van int. Traditioneel beginnen in C++ variabelen met een kleine letter en worden niet uitsluitend hoofdletters gebruikt, die worden immers voor speciale doeleinden gereserveerd Initialisatie bij declaratie Vaak begint een programma met het toewijzen van een beginwaarde aan een aantal variabelen, zoals in het onderstaande programmafragment: double getal, grootste; int aantal; grootste = 0.0; aantal = 0; cin >> getal; 9

14 Hoofdstuk 1. Basisopdrachten be Je kan dit in C++ echter ook op een kortere manier noteren. Je kan een declaratie en een toewijzing combineren door onmiddellijk na de gedeclareerde naam een gelijkheidsteken en een waarde te plaatsen, zodat het voorgaande programmafragment dus ingekort kan worden tot:. double getal, grootste 0. 0; int aantal = 0; cin» getal; Merk op dat de variabele getal niet geïnitialiseerd wordt, doch enkel maar gedeclareerd. Het is hier immers niet nodig dat getal reeds vóór de leesopdracht een specifieke waarde krijgt. Let echter op: denk niet dat een variabele die je niet initialiseert, automatisch de waarde nul krijgt! Constanten Constanten zijn waarden die niet kunnen. yeranderen, zoals bijvoorbeeld de gehele constanten 45 en -89, en de reële constante Constanten kunnen in het programma echter ook een naam krijgen, net als een variabele. Het voordeel is, dat je bijvoorbeeld niet overal in het programma de waarde 20 ziet staan, maar wel de naam van de constante,. bijvoorbeeld MAXIMUM_ QUOTERING, die iets vertelt over de betekenis van deze waarde. Constanten worden als volgt gedeclareerd: const int MAXIMUM_QUOTERING = 20; Deze opdracht stelt eigenlijk de declaratie voor van eeii gehele waarde die door het predikaat cbnst niet kan veranderd worden. of of Samenvatting declaraties type naaml, naam2... ; =? niet-geï~itialiseerde variàbelen type naamt = waardel, naam2 = waarde2... ; =? geïnitialiseerde vadabelen const type naam = waarde... ; =? constante, verplicht geïnitialiseerd 10

15 Hoofdstuk 1. Basisopdrachten be 1.3 Basisopdrachten of statements. Het gedeelte van het programma waarin we beschrijven welke acties de computer moet uitvoeren, bestaat uit een aantal geneste structuren die elk bestaan uit één of meerdere basisopdrachten of statements. Een basisopdracht is hierbij een toekenning, een uitvoeropdracht, een invoeropdracht of een procedureoproep De toekenning of assignment De bedoeling van deze opdracht is een waarde te geven aan een variabele. De algemene vorm ervan is: variabele = uitdrukking; Links van een toekenning moet steeds een variabele staan, wat ook wel eens een lvalue genoemd wordt. Het rechterlid wordt dan een rvalue genoemd. Bij een toekenning wordt eerst de waarde van de uitdrukking die rechts staat, berekend en dan toegekend aan de variabele die links staat. De voorgaande waarde van de variabele wordt hierbij overschreven.. Er moet ook steeds aandacht besteed worden aan. het feit dat het rechterlid van hetzelfde type moet zijn als het linkerlid, of toch op zijn minst automatisch getransformeerd moet kunnen worden naar het type van de linkse variabele De uitvoeropdracht Deze opdracht wordt gebruikt om gegevens op het scherm te zetten. De algemene vorm ervan 1s: I cout «. outl «out2 «out3... ; Hierbij kan outi telkens een constante, een variabele, een uitdrukking of een manipulator zijn. Zo is endl een veelgebruikte manipulator die ervoor zorgt dat er naar de volgende lijn gegaan wordt. In het onderstaande programmafragment zijn enkele uitvoeropdrachten weergegeven: cout << resultaat << endl; cout << "To C++ or not to C++, that is the question" << endl; cout << "Het resultaat is " << som << endl; Merk op dat er in de derde opdracht een extra spatie staat vóór de sluitende aanhalingstekens, opdat de waarde van som in de uitvoer mooi van het woordje is zou gescheiden zijn. 11

16 Hoofdstuk 1. Basisopdrachten. be De invoeropdracht Deze opdracht wordt gebruikt om de gebruiker de mogelijkheid te bieden om ûm waarden in te typen. De algemene vorm ervan is: cin» variabelel» variabèle2» variabele3... Beschouw bijvoorbeeld het onderstaande programmafragment: int getal!, geta12; cin» getal!» geta12; Wanneer de computer deze leesopdracht ontmoet, krijg je de gelegenheid om twee gehele getallen in te tikken. Je kan deze getallen ingeven op één lijn (waarbij de getallen gescheiden zijn door één of meerdere spaties) of je kan elk getal op een andere lijn plaatsen (en dus op de Enter-toets drukken na het eerste getal). De»-operator slaat immers alle 'white spaces' (I.e. spaties, tabs en enters) over. Meer informatie hierover vind je in Hoofdstuk Een procedureoproep Een opdracht kan ook gewoon een reeds bestaande procedure oproepen. Een voorbeeld van een dergelijke opdracht is weergegeven in het programmafragment Code 1.1 dat een willekeurig geheel getal uit het interval [20, 30] genereert en uitschrijft: srand(time(o) ); int getal = 20 + rand()%11; cout << getal; Code 1.1: Een procedureoproep Het éénrnalig oproepen van de procedure srand uit de cstdlib-library (in de eerste regel van dit programmafragment). zorgt voor de initialisatie van de randomgenerator. De generatie van een willekeurig positief geheel getal gebeurt m.b.v. de functie rand (eveneens uit de cstdlib-library), waarna d.m.v. de gepaste bewerkingen dit getal omgezet wordt naar een getal uit het interval (20, 30]. 1.4 Uitdrukkingen of expressions Een uitdrukking is in zijn eenvoudigste vorm een constante, kan ook een variabèle of een functieoproep zijn, of bestaat uit een combinatie van constanten:, variabelen, functieoproepen en operatoren. 12

17 Hoofdstuk 1. Basisopdrachten be 1.4~ 1 Numerieke Operatoren Een overzicht van de numerieke operatoren vind je in Tabel 1.1. uitdrukking I resultaat a+ b a -.b -a a * b a I b a % b a I b Som van a en b Verschil vari a en b Tegengestelde van a Produkt van a en b Geheel quotiënt bij deling van a door b (a en b geheel) Rest bij deling van a door b (a en b geheel) Reëel quotiënt bij deling van a door 1;> (a en/ of b reëel) Tabel1.1 Merk op dat C++ geen afzonderlijk symbool gebruikt om een gehele deling aan te geven. Een deling wordt beschouwd als een gehele deling zodra beide argumenten geheel zijn, anders is het een reële deling. '3 I 4' betekent dus niet 'drie kwart' maar is gewoon een ingewikkelde manier om nul voor te stellen. Als je wel degelijk 'drie kwart' bedoelt, schrijf dan '3,0 I 4.0' of '0. 75'. Merk ook op dat C++ geen operator voorziet om de machtsverheffing te kunnen uitvoeren! Een functieoproep Als onderdeel ván een uitdrukking kan ook een functie opgeroepen worden. In C++ zijn er niet echt Ingebouwde functies, zoals dat in sommige andere programmeertalen wel het geval is. Dit betekent echter niet dat er geen functies beschikbaar zouden zijn. Je vindt ze terug in bibliotheken, waarvan je expliciet de naam moet vermelden in je programmatekst. ' ' ' In het programmafragment Code 1.1 kwamen reeds twee functieoproepen voor. We maakten toen immers gebruik van de functie rand (uit de cstdlib-library) om een willekeurig geheel getal te genereren. Ook in de opdracht srand(time(o)); komt een functieoproep voor: time ( 0) is een functieoproep die op zich opnieuw een onderdeel is van een procedureoproep. 13

18 Hoofdstuk 1. Basisopdrachten be De cmath-library bevat. heel veel wiskundige functies. De belangrijkste hiervan zijn weergegeven in Tabel 1.2. naam cos(x) sin(x) tan(x) acos(x) asin(x) atan(x) exp(x) log(x) J betekenis cosinus van x (x in radialen) sinus van x (x in radialen) tangens van x (x in radialen) boogcosinus van x in radialen boogsinus van x in radialen boogtangens van x in radialen e tot de macht x neperiaanse logaritme van x (lnx) loglo(x) logaritme van x met basis 10 sqrt(x) abs(i) fabs(x) vierkantswortel van x absolute waarde van het geheel getal i absolute waarde van het reëel getal x Tabell.2 Al deze functies kan je oproepen met een geheel of een reëel argument. Ongeacht het type van het argument zal het resultaat van een dergelijke functieoproep ook steeds als reëel beschouwd worden. Dus, hoewel de vierkantswortel van 4 wiskundig gezien een geheel getal is, is het resultaat van de functieoproep sqrt ( 4) toch van het type double, Et is echter één belangrijke uitzondering: abs (i) neemt enkel een geheel getal als argument en levert als resultaat een geheel getal op. De cmath-library bevat overigens niet alleen functies: ze bevat ook de constante M-'-P:t,.... zodat je in je.programma 1r' niet zelf hoeft te declareren en te initialiseren Voorbeelden Enkele voorbeelden van uitdrukkingen, waarbij a en b gehele en x en y reële variabelen zijn, zijn: sqrt(cos(x) * cos(y) + sin(x) * sin(y)) fabs(x * y) - abs(a) - abs(b) b * (a I b) + a % b ~ a Het berekend resultaat kan dan gebruikt worden als onderdeel van een opdracht; Enkele voorbeelden van opdrachten die uitdrukkingen gebruiken, zijn: 14

19 Hoofdstuk L be cout.<< "De som van de getallen is " << (g1 + g2) «endl; vierkdiscr = sqrt(b * b- 4 *a* c); cout << "Klant nr " << klantnr << " moet nog " << (debet- credit) << " Euro betalen!" << endl; Speciale toekenningsoperatoren Opdrachten zoals 'tel 3 op bij deze variabele' of 'vermenigvuldig deze variabele met 5' komen in de praktijk veel voor. Deze opdrachten kunnen in C++ korter genoteerd worden, zoals we in Tabel1.3 hebben opgesomd. (Hierin mag je var vervangen door een willekeurige variabele en uitdr door een willekeurige uitdrukking.) Opdracht Afkorting I Betekenis var = var + uitdr; var += uitdr; Tel uitdr op bij var var = vár - uitdr; var.,.-= uitdr; 'Irek uitdr af van var var = var * uitdr; var *= uitdr; Vermenigvuldig var met uitdr var = var I uitdr; var /= uitdr; Deel var door uitdr var = var % uitdr; var %= uitdr; Vervang var door de rest bij deling door uitdr Tabel1.3.Een paar voorbeelden van opdrachten die gebruik maken van deze speciale toekenningsoperatoren zijn hieronder weergegeven: som += g % 10; g /= 10; In sommige gevallen kan. het nog korter, namelijk wanneer we één willen optellen of aftrekken van een gehele variabele. Deze opdrachten zijn weergegeven in Tabel 1.4. Opdracht I Afkortingen I Betekenis var= var+ 1 ' var++; var+= 1; Vermeerder var met 1 var= var- 1 ' var--; var-= 1; Verminder var met 1 Tabel1.4 Bovendien mag var++ of var-- niet alleen als een opdracht worden geschreven, maar kan dit ook in een uitdrukking worden vermeld, zoals bijvoorbeeld in de volgende opdracht: a = i++ + 3; De waarde van de uitdrukking 'i++' is de waarde van i, maar onmiddellijk daarna wordt i wel met één verhoogd~ Als i bijvoorbeeld de waarde 10 heeft, dan plaatst de bovenstaande opdracht het getal13 in a en krijgt i de waarde

20 Hoofdstuk 1. Basisopdrachten be Voor de volledigheid dient vermeld te worden dat je in een uitdrukking de operatoren ++ en -- ook vóór een variabele kan plaatsen, in plaats van erachter. In dat geval wordt de variabele eerst met één verhoogd of verlaagd vooraleer zijn waarde gebruikt wordt. Stel opnieuw dat i de waarde 10 heeft, dan plaatst de opdracht a = ++i + 3; ditmaal het getal14 in a en krijgt i opnieuw de waarde De while-lus Een while-lus wordt gebruikt om één of meerdere opdrachten een niet expliciet gespecificeerd aantal keer te herhalen. De structuur van een dergelijke lus ziet er als volgt uit: while (voorwaarde ) { opdrachtl; opdracht2; opdracht3; Deze opdracht herhaalt de drie opdrachten opdrq,chtl, opdracht2 en opdracht3 zolang aan de voorwaarde voorwaarde voldaan wordt. Dit geldt natuurlijk ook als er meer of minder dan drie opdrachten binnen in de lus staan. Het herhaalde deel staat tussen de accolades en is lichtjes geïndenteerd. Dit wil zeggen dat er een aantal extra spaties (meesta13) voor elke lijn staan, zodat de linkermarge naar rechts is opgeschoven. Indenteren (of inspringen) is niet verplicht- de computer houdt er geen rekening mee - maar is wel ten zeerste aan te raden.. De structuur van het programma wordt hierdoor veel leesbaarder. De accolades mag je weglaten als het slechts om één enkele opdracht gaat, maar soms is het duidelijker en consistenter öm ze te laten staan. Let ook op de ronde haakjes rond de voorwaarde. Die moeten er altijd staan, zelfs al bestaat de voorwaarde slechts uit één woord. De voorwaarde in een while-lus is een logische uitdrukking. Tabel 1.5 resumeert de notatie van de verschillende operatoren die je in dit geval kan gebruiken. Merk op dat een dubbel gelijkheidsteken gebruikt wordt om de gelijkheid te testen. Verwar dit niet met het enkele gelijkheidsteken dat gebruikt wordt in een toewijzing. Het gebruik van = in plaats van == is één van de meest voorkomende fouten bij beginnende C++programmeurs. Dubbel zo goed uitkijken, is de boodsçhap. 16

21 Hoofdstuk 1. Basisopdrachten 1 Logische operator Betekenis a == b a! = b a < b a <= b a > b a >= b a is gelijk aan b. a is verschillend van b a is kleiner dan b a is niet groter dan b a is groter dan b a is niet kleinet dan b Tabel1.5 Beschouw als voorbeeld van het gebruik van een while-lus het onderstaande programmafragment dat op zoek gaat naar het kleinste getal n waarvoor n strikt groter is dan 1000: som = 0; n == 0; while (som <= 1000) { n++; som += n; cout << n << endl; Voorwaarden kunnen gecombineerd worden met de logische operatoren 'niet', 'en' en 'of', zoals weergegeven in Tabel 1.6. Samengestelde voorwaarde Betekenis! voorwaarde niet voorwaarde voorwaardel && voorwaarde2 voorwaardel envoorwaarde2 voorwaardel 11 voorwaarde2 voorwaardel of voorwaarde2 Tabell.6 Indien in één voorwaarde meer dan één van deze logische operatoren gebruikt wordt, dan heeft! prioriteit boven&&, en && boven 11, tenzij ronde haakjes zijn gebruikt. De logische operatoren && en I I hebben bovendien een speciale eigenschap. De rechterkant van zo'n operator wordt namelijk alleen maar geëvalueerd als dit nog nodig is, of anders gezegd, als het resultaat niet kan bepaald worden uit de waarde van de linkerkant: De logische && wordt als volgt geëvalueerd: Eerst wordt de waarde van de linkerkant bepaald. Is dit resultaat onwaar dan wordt de rechterkant niet meer geëvalueerd en is het eindresultaat ook onwaar. Is het linkerlid echter waar, dan wordt het 17

22 Hoofdstuk 1. Basisopdrachten be rechterlid geëvalueerd en is de waarde van de volledige uitdrukking waar öf onwaar al naargelang het rechterlid waar is of niet. De logisch~ I I werkt op een gelijkaardige manier. Eerst wordt de waarde van de linkerkant bepaald. Is die waar dan wordt de rechterkant niet meer geëvalueerd en is het eindresultaat ook waar. Anders is de waarde ':an de volledige uitdrukking waar of onwaar al naargelang het rechterlid waar is of niet. Daarom noemt men een berekening met deze operatoren lui ('lazy evaluation'). Bij logische operatoren is dus de volgorde van de. deeluitdrukkingen van wezenlijk belang. Het onopzettelijk omwisselen van linker- en rechterkant kan verstrekkende gevolgen hebben. Dat het rechterlid niet noodzakelijk geëvalueerd wordt, kan een voordeel zijn, zoals geïllustreerd wordt in het volgende programmafragment: int a, b; cin >> a >> b; while (b!= o.&& (a == o I I b%a!= 0)) { cout << "a is geen deler van b" << endl; cin >> a >> b; In dit fragment worden twee gehele getallen a en b eventueel herhaaldelijk ingelezen, totdat a een deler is van b. Elk getal is een deler van nul, terwijl nul alleen een deler is van zichzelf.. Zonder de luie evaluatie zou een dergelijke beknopte schrijfwijze niet juist zijn, omdat dan b. altijd door a gedeeld wordt, zelfs als a nul is. 1.6 De for-lus Ook de for-lus wordt gebruikt om één of meerdere opdrachten een aantal keer te herhalen. De structuur van een dergelijke lus ziet er als volgt uit: f or ( initialisatie teller opdrachtl; opdracht2; voorwaarde ; aanpassing teller ) { We gebruiken een for-lus enkel als op voorhand gekend is hoeveel keer een reeks opdrachten moet herhaald worden. Natuurlijk kan dit ook met een while-lus gebeuren, maar een forlus is specifiek hiervoor ontworpen, en laat veel duidelijker het aantal keer zien dat de lus herhaald wordt. Bij een for-lus gelden dezelfde opmerkingen over indentatie en het eventueel weglaten van accolades als bij while. 18

23 Hoofdstuk 1. Basisopdrachten be Als toepassing hierop beschouwen we het volgende programmafragment dat de som berekent van de eerste 100 natuurlijke getallen: som = 0; for (int teller = 1 ; teller <= 100 teller++ ).som +=teller; cout << som << 'endl; Bemerk dat de variabele teller hier binnen de ronde haakjes gedeclareerd wordt. Dat betekent dat deze teller enkel binnen de for-lus bestaat, en daarbuiten niet meer gebruikt kan worden. Men zegt dat de teller een lokale variabele van de for-lus is. Dezelfde variabele kan dan eventueel ook opnieuw gedeclareerd worden in een andere (maar natuurlijk geen inwendige) for-lus. Het hergebruiken van dezelfde teller is niet echt verplicht, maar wel een zeer goede gewoonte, omdat de teller gebruikt bij de herhaling, vaak geen betekenis meer heeft buiten deze herhaling De if-structuur ( Een selectie wordt in C++ beschreven met een if-structuur: if ( voorwaarde ) { opdracht I a; ópdrachtl b; opdracht I c; else { opdracht2a; opdracht2b; Net zoals bij de while-opdracht, moet de voorwaarde van een if-structuur steeds tussen ronde haakjes staan. Het aantal opdrachten hoeft natuurlijk niet drie en twee te zijn. Het if-gedeelte komt in een if-structuur steeds voor, het elsè-gedeelte daarentegen mag eventueel weggelaten worden, zoals in het volgende kadertje: ïf ( voorwaarde ) { opdrachtla; opdracht I b; opdracht I c; 19

24 Hoofdstuk 1. Basisopdrachten be Als voorbeeld schrijven we in Code 1.2 het grootste van drie ingelezen getallen op het scherm. cin» getal1; cin» getal2; if (getal1 > getal2) grootste getal1; el se grootste getal2; cin» getal3; if (getal3 > grootste. groótste = getal3; cout << grootste << endl; Code 1.2: Bêpaalt het grootste van drie getallen Merk op dat we opnieuw accolades hebben weggelaten waar slechts ~én opdracht tussen stond. Bij een if-opdracht moet je hier echter mee opletten. Er zijn namelijk gevallen waarbij het ondoordacht verwijderen van accolades de betekenis van het programma ver~ndert. Bekijk bijvoorbeeld de twee if-opdrachten in Code 1.3 en Code 1.4. if (a > 0) { if (b > 0) co ut << el se co ut << "1" << endl; "2" << endl; Code 1.3: Voorbeeld if-opdracht if (a > 0) { if (b > 0) cout << "1" << endl; el se cout << "2" << endl; Code 1.4: Voorbeeld if-opdracht In beide gevallen staat er slechts.één opdracht tussen de accolades. (Deze opdrachten bestaan wel uit meerdere regels, maar een volledige if-else-structuur wordt nog steeds als één enkele opdracht behandeld.) Dus normaal gezien zou je in beide gevallen de accolades mogen weglaten. Wanneer je dit echter zou doen, dan krijgen beide opdrachten letterlijk dezelfde vorm - op een aantal spaties na, maar die zijn in C++ niet relevant - terwijl beide opdrachten nochtans duidelijk een verschillende betekenis hadden. We hebben hier dus te maken 20

25 Hoofdstuk 1. Basisopdrachten be met een uitzondering op de algemene regel: alleen in het eerste geval kan je de accolades weglaten zonder de betekenis van het programma te wijzigen. Anders gezegd: wanneer je de accolades uit het tweede geval weglaat, zal de compiler denken. dat je het eerste geval bedoelt. Decomputer overloopt het programma van boven naar onder en houdt een lijst bij van alle if's waarvoor hij nog geen else gevonden heeft. Wanneer hij een nieuwe else ontmoet, loopt hij die lijst af van onder naar boven en probeert hij elke if met deze else te associëren totdat hij er één gevonden heeft die past. Als er meerdere if's met een else kunnen gekoppeld worden, krijgt dus de onderste if de voorrang. Ook de volgende situatie verdient onze aandacht: if ( voorwaardel ) { else { opdracht1 a; opdracht1 b; if ( voorwaarde2 ) { else { opdracht2a; opdracht2b; opdracht3a; opdracht3b; Hier mag de allerlaatste sluitende accolade, en de ermee verbonden open accolade zonder problemen worden weggelaten. In dit geval echter zal men meestal ook de schikking van het programma veranderen en noteren zoals in het kadertje op de volgende pagina. Daar doet men dus alsof dit ganse fragment één enkele structuur vormt, in plaats van een combinatie van twee vernestelde if-structuren. Dit maakt een programma leesbaarder, zeker als er meerdere else if delen zijn. 21

26 Hoofdstuk 1. Basisopdrachten be if ( voorwaardel ) { opdracht i a; opdracht i b; else if ( voorwaarde2 ) { opdracht2a; opdracht2b; else { opdracht3a; opdracht3b; 1.8 Een volledig programma Nu we besproken hebben hoe de verschillende onderdelen van een programma er uitzien, kunnen. we eindelijk aangeven hoe je ze nu allemaal combineert tot een volwaardig programma, m.a.w., hoe de tekst er uitziet die je uiteindelük door de compiler laat verwerken. Bovenaan komen de volgende lijnen code: #include <iostream> using namespace std; Deze lijnen geven aan dat je wenst gebruik te maken van invoer- of uitvoeropdrachten. Als je in je programma mathematische functies (zoals cos en abs) gebruikt, plaatst je bovenaan ook nog de volgende lijn: #include <cmath> Indien je de randomgenerator wenst te gebruiken, schrijf je eveneens de opdrachten #include <cstdlib> #include <ctime>. Daarna komt het eigenlijk programma, dat gewoonlijk de hoofding int maino heeft, gevolgd door accolades die de uit te voeren opdrachten bevatten. Als laatste opdracht in het hoofdprogramma schrijven we de volgende return-opdracht: 22

27 Hoofdstuk 1. Basisopdrachten be re.turn 0; Later komen we op deze opdacht nog wel eens terug. Ter illustratie geven we in Code 1.5 een programma dat eerst een geheel getal n inleest, gelegen in het gesloten interval [5, 100], en dat nadien het grootste getal bepaalt van n willekeurige positieve gehele getallen (die gegenereerd werden met de randomgenerator). #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int maino { //inlezen van n int n ' cout <<"Geef n in (uit het interval [5,100]): "; cin >> n; while (n < 5 I I n > 100) { cout << "Foutief getal n!!! " << endl «"Geef n in (uit het interval [5,100]): "; cin >> n; srand(time(o)); //initialisatie randomgenerator //n. g~tallen genereren en grootste bepalen cout << "Den gegenereerde getallen zijn: " << endl; int getal; int grootste = rand() ; cout << grootste << " " ' for (int i = 1 ; i < n ; i++) { getal = rand() ; cout << getal << " ", if (getal > grootste) grootste = getal; //grootste getal uitschrijven cout << endi << "Het grootste getal is " << grootste; return 0; Code 1.5: Voorbeeld volledig programma Het symbool '/I' en alles wat verder op dezelfde lijn staat, wordt door de compiler volledig genegeerd. Dit onderdeel van een programma noemen we commentaar. 23

28 Hoofdstuk 1. Basisopdrachten be 1.9 Tabellen C++ kent ook tabellen, maar er is één belangrijke restrictie: het indexbereik van een tabel begint steeds bij nul. In een tabel van vijf gehele getallen worden de elementen dus.genummerd van nul tot vier. Een tabel wordt gedeclareerd door na de naam van de variabele tussen vierkante haakjes het aantal elementen aan te geven (dit is dus één meer dan de index van het laatste element). Het volgende programmafragment toont de declaratie van twee gehele variabelen i en j, een tabel tab van 10 gehele getallen (genummerd van nultot negen) en twee tabellen coord1 en coord2 van elk reële getallen: double coord2[2000]; int i, tab[10], j; double coord1[2000]; Bemerk dat declaraties van gewone variabelen en van tabelvariabelen door elkaar mogen gebeure:p.. In dit geval is het onderstaande programmafragment echter duidelijker: int i, j; int tab[10]; double coord1[2000], coord2[2000]; Initialisatie bij declaratie kan je ook gebruiken bij tabelvariabelen. In dit geval schrijf je na het gelijkheidsteken de opeenvolgende waarden van de elementen van de tabel, tussen accolades en gescheiden door komma's: int dagen_per_maand[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; Elementen van een tabel duid je aan met behulp van vierkante haa~jes, onderstaande codefragment: zoals in het int tab [10]; for (int i = 0 ; i < 10 cin» tab [i] ; i++) Ter illustratie geven we in Code 1.6 een programma dat een aantal gehele getallen inleest, gelegen in het gesloten interval [-10, 10], en dat nadien het getal op het scherm schrijft dat het meest werd ingelezen. De invoer stopt bij een getal dat niet tot het interval behoort. Als er meerdere getallen voor uitvoer in aanmerking komen, nemen we voor de eenvoud het kleinste. Dit programma maakt gebruikt van een tabel freqtab die dienst doet als frequentietabel om te tellen hoeveel keer de getallen uit het gegeven gesloten interval reeds ingelezen werden. 24

29 Hoofdstuk 1. Basisopdrachten be #include <iostream> using namespace std; int main() { int freqtab[21]; //frequentietabel //initialisatie van de frequentietabel for (int i = 0 ; i < 21 ; i = i+ 1). freqtab [i] = 0; //inlezen van de getallen int g; 11 cout << Inlezen van getallen uit [-10,10] cout << Geef een getal : 11 ; cin» g; while (~10 <= g && g <= 10) { freqtab[g + 10]++; cout << 11 Geef een. getal: 11 ; cin» g; << endl; //zoeken van de (index van de) grootste frequentie int imax =0; for (int i = 1 ; i < 21 ; i = i+1) if (freqtab [i] > freqtab[imax]) imax = i; //uitvoer van het meest voorkomend getal if (freqtab [imax]! = 0).cout << 11 Het getal 11 << (imax - 10) << 11 werd het meest ingelezen. 11 << endl; else. cout << 11 Geen g~ldi ge getallen ingelezen. 11 << endl; return 0; Code 1.6: Programma dat gebruik maakt van een frequentietabel 25

30 Hoofdstuk 1. Basisopdrachten be 1.10 ;Het type hooi Een logische uitdrukking zoals 'a > 3' is 'waar' of 'onwaar'. Om dit aan te duiden gebruikt men in C++ de speciale waarden true en false van een zgn. 'logisch' typebool. Er kunnen ook variabelen van dit type gedeclareerd worden. Die bevatten dan logische waarden, zodat we bijvoorbeeld kunnen schrijven: bool b = a > 3; De waarde van een dergelijke variabele kan overal gebruikt worden waar een logische uitdrukking voorkomt, zoals bij deif-opdracht of de while-lus: if (b) { Het bovenstaande betekent dan hetzelfde als: if (a > 3).{ Logische variabelen worden ook vaak gebruikt om aan te duidendat een bepaalde grootheid slechts twee verschillende waarden kan aannemen. Stel bijvoorbeeld dat we een reeks gehele getallen moeten inlezen, die allen in het gesloten interval [1, 10] gelegen zijn. Het inlezen stopt bij het eerste ongeldige getal. Nadien willen we weten welke getallel.l uit dit bereik niet in de reeks voorkwamen. Daartoe volstaat het om bij elk geldig getal aan te.duiden dat het voorkwam. Een aanwezigheidstabel van 10 logische waarden is daarvoor zeer geschikt: een getal komt voor in de reeks of niet. Kiezen we bijvoorbeeld de waarde true om 'aanwezig' voor te stellen en false voor 'ontbrekend', dan krijgen we het programma Code 1.7. Beginnende programmeurs hebben nogal vaak de verkeerde gewoonte om logische variabelen te testen door ze te vergelijken met trtie of false. Schrijf dus op de derde laatste regel van het programma Code 1.7 niet: if (aanwezig[i] == false) //NIET zo!. Tussen de haakjes van een if of een while moet een logische uitdrukking staan, zoals 'a > 3', die true is of false. Een logische variabele is echter op zichzelf reeds een (eenvoudige) logische uitdrukking,. en moet nergens meer mee. vergeleken worden. Men schrijft toch ook niet: if ((a > 3) -- truè) //natuurlijk NIET zo! 26

31 Hoofdstuk 1. Basisopdrachten be int main() { bool aanwezig[10]; //aanwezigheidstabel //initialisatie van de tabel for (inti= 0 i< 10; i++) aanwezig [i] = false; //inlezen int g; cout << 11 Geef getal: 11 ; cin» g; while (1 <= g && g <= 10) { aanwezig[g - 1] = true; cout << 11 Geef getal: 11 ; cin» g; //resultaat 11.cout << De volgende getallen komen niet voor: 11 for (int i = 0 ; i < 10 ; i++) if (!aanwezig[i] ) cout << (i + 1) << endl; return 0; << endl; Code 1.7: Maakt gebruik van een aanwezigheidstabel 1.11 De conditionele uitdrukking In C++ bestaat er een uitdrukking van de volgende vorm: voorwaarde? uitdrukkingl : uitdrukking2 De waarde van een dergelijke conditionele uitdrukking is de waarde van uitdrukkingl als voorwaarde waar is en van uitdrukking2 als voorwaarde niet waar is. Naar betekenis lijkt een conditionele uitdrukking goed op een if-else-opdracht, maar ze wordt op een andere manier gebruikt. Het is geen opdracht maar een uitdrukking en als dusdanig slechts een onderdeel van een opdracht. In de omkaderde programmaregel moet er dus nog verteld worden wat er met de waarde van die uitdrukking moet gebeuren (zoals testen, of toewijzen aan). Merk op dat een conditionele uitdrukking steeds een 'als'- en een 'als niet'-kant. bevat. Je kan het ':'-gedeelte niet weglaten zoals het else-gedeelte van een if~opdracht. 27

32 Hoofdstuk 1. Basisopdrachten be Ter illustratie geven we een aantal voorbeelden van conditionele uitdrukkingen die in een opdracht gebruikt worden. Het eerste voorbeeld stopt de absolute waarde van b in a: a = (b > 0? b : -b); De equivalente if-else-opdracht is: if (b > 0) a = b; el se a = -b; Het tweede voorbeeld telt 17 of 13 op bij c, al naargelang de waarde van d: '. c += (d == 6? 13 : 17); Hierbij is de equivalente if-else-opdracht: if (d == 6) e += 13; el se c += 17; In het volgende voorbeeld wordt er gekozen tussen de enkelvouds- of de meervoudsvorm afhankelijk van de waarde van x: cout << x << (x!= 1? " oplossingen" : " oplossing") << endl; Je mag de ene conditionele uitdrukking ook binnen de andere gebruiken, zoals in het onderstaande programmafragment dat het teken van een getal bepaalt: double getal; cin» getal; cout <<."teken: " << (getal > 0? 1 getal < 0? -1 O) << endl; 1.12 Gebruik van bibliotheken Zoals we reeds in een voorgaande paragraaf vermeld hebben, bevat de taal C++ zelf geen ingebouwde procedures of functies, maar vinden we er wel terug in (code)-bibliotheken zöals de cmath-library. Eventueel kan er ook een eigen bibliotheek (met zelf gedefinieerde functies) gemaakt worden. I Alvorens een bibliotheek te kunnen gebruiken, moet ze eerst geïncludeerd worden d.m.v. een #include. Hierbij wordt er een onderscheid gemaakt tussen standaardbibliotheken 28

33 Hoofdstuk 1. Basisopdrachten be (meegeleverd met de compiler) en zelfgemaakte bibliotheken. Namen van standaardbibliotheken worden tussen < en > genoteerd, zoals in: #include <cmath> Voor zelfgemaakte bibliotheken worden dubbele aanhalingstekens gebruikt: #include "datums.h" Hierbij is datums.h bijvoorbeeld een zelfgemaakte bibliotheek met allerlei functies die betrekkjng hebben op datums. Vroeger eindigde elke bibliotheeknaam op ".h" (eerste letter van "header", zie verder), maar tegenwoordig schrijft men voor standaardbibliotheken de ".h" niet meer. Naast functies en procedures kunnen bibliotheken ook constanten en klassen definiëren. Zo definieert de cmath-bibliotheek oa. de constante M_PI = Declaraties van functies Als men een functie wenst te gebruiken, hoeft men over het algemeen de interne werking hiervan niet in detail te kennen. De gebruiker van de functie moet enkel weten wat de functie doet, wat voor argumenten er verwacht worden, en wat er teruggegeven wordt als resultaat. Wie bijvoorbeeld de functie sin uit de cmath-bibliotheek wil gebruiken, is meestal niet geïnteresseerd om te weten hoe die sinus precies berekend wordt (waarschijnlijk m.b.v. één of andere reeksontwikkeling). Het enige wat de gebruiker moet weten,_ is dat die functie een reëel getal als parameter (=argument) verwacht en dat het resultaat opnieuw een reëel getal is. Ais je het bestand cmath.h bekijkt, dan tref je daar (onder andere) de volgende regel aan: double sin(double x); Dit is de declaratie van de functie sin. Tussen de haakjes staat het type e:p. de naam van de parameter, vóór de functienaam staat het type van het resultaat (kortweg returntype genoemd). De naam van de parameter (x in ons geval) heeft hier eigenlijk geen belang 1. Wie de declaratie leest, weet in principe genoeg om de functie te kunnen gebruiken. De volgende opdrachten maken bijvoorbeeld correct gebruik van de voorgaande functie sin: double y; double.a = 3.14; y = sin(a); 1 Soms wordt ze ook gewoonweg weggelaten. 29

34 Hoofdstuk 1. Basisopdrachten be y = sin(2. 1); y sin(a + 2~3); In principe kun je de headerbestanden lezen, maar vaak zitten de declaraties verstopt in een boel ingewikkelde code. Dit is zeker het geval voor standaardbibliotheken. Er is echter over standaardbibliotheken zeer veel documentatie te vinden, zowel in boeken als op het internet. In de meeste informatiebronnen wordt voor elke besproken functie de declaratie gegeven, zodat het belangrijk is dat je die begrijpt. Een functie kan ook meerdere parameters bevatten, zoals in de volgende declaratie: int ggd(int a, int b); 11 bepaalt de grootste gemene deler /I van de gehele getallen a en b Deze functie kan bijvoorbeeld als volgt opgeroepen worden: cout «ggd(28, 12); Vaak zijn de parameters van een functie niet allemaal van hetzelfde type. Bij. het oproepen van e_en dergelijke functie is het dim vooral van belang dat men de parametersin de juiste volgorde en met het juiste type opgeeft. We zullen hier later nog op terugkomen. Verder in deze cursus zullen we ook nog. bespreken hoe je zelf functies kan schrijven. Hiervoor moet er behalve een declaratie Ook een definitie (i.e. de interne werking van de functie) gemaakt worden Declaraties van procedures Een procedure is niets anders dan een functie die niets teruggeeft. Dit wordt aangeduid door als returntype het sleutelwoord void (mid. vertaling: leegte, niets) te gebruiken. Een voorbeeld van een declaratie van een procedure is: void toon(double d, int n); //drukt het reeel getal d af op het. //scherm met n cijfers na de komma Het oproepen van deze procedure gebeurt bijvoorbeeld als volgt: toon( , 3); Omdat een procedure niets teruggeeft, is het bijvoorbeeld verkeerd iets als cout << toon( , 3); te schrijven. 30

35 Hoofdstuk 1. Basisopdrachten be Tot slot wensenwe nog op te merken dat vele informatiebronnen geen gebruik maken van de term "procedure", maar hiervoor ook de benaming "functie" gebruiken Tabelparameters Functies en procedures kunnen ook tabellen als parameters verwachten. Dit wordt in de declaratie op één van de volgende manieren aangegeven: double som(double.tab[], int n); double som(double *tab, int n); //berekent de som van de eerste n //elementen van de tabel tab //berekent de som van de eerste n //elementen van de tabel tab In de tweede versie betekent het sterretj~ dat tab hier als een pointer geïnterpreteerd wordt (zie Hoofdstuk 9). Qua gebruik is er geen verschil tussen de beide vormèn. Voor de beide versies kan de functie som immers als volgt opgeroepen worden: double rij[5] = {1.0, 2.0, 3.0, 4.0, 5.0; cout «som(rij, 3); //6.0 komt op het scherm Merk op dat men geen vierkante haakjes moet schrijven bij het oproepen van een dergelijke functie. Ook hier geldt dat de naam van de parameter in de declaratie (tab in dit geval) geen enkel belang heeft voor de oproeper (en vandaar soms ook weggelaten wordt in de ~eclaratie van de functie). Op een analoge wijze kan de procedure void schrijf(int tab [], int n); //schrijft de eersten elementen //van de tabel tab op het scherm als volgt opgeroepen worden: int rij[3] = {1, 2, 3; schrijf(rij, 3); Namespaces Indien men meerdere bibliothekenincludeert, dan bestaat de kans dat een bepaalde functie in meer dan één bibliotheek voorkomt. Zolang deze furieties een verschillend aantal parameters hebben of zolang (bij eenzelfde aantal parameters) de argumenttypes van deze functies verschillend zijn, is er geen probleem. Men spreekt dan immers van overloading, waarbij de compiler op basis Véll het aantal en het type van de parameters zal uitmaken 31

36 Hoofdstuk 1. B~isopdrachten be welke fu11ctie dient opgeroepen te worden. Indien er echter twee functies bestaan waarvan de naam, het returntype, het aantal en de types van de parameters dezelfde zijn, is er een probleem. De compiler zal dan immers onmogelijk kunnen beslissen welke van deze twee functies er moet geactiveerd worden. Veronderstel bijvoorbeeld dat de functie int som(int a, int b); zowel in "abc.h" als in "def.h" gedefinieerd wordt. Als nu in een programma beide bibliotheken geïncludeerd worden en in het programma de volgende procedure-oproep geschreven staat: cout << som(123, 4567); dan kan de compiler niet weten welke versie van de functie som bedoeld wordt. Om dit probleem op te lossen, heeft men namespaces uitgevonden. Een namespace is een groepering van declaraties van verwante gegevens, functies/procedures, etc.. Men geeft deze groep een (unieke) naam. Deze naam wordt alsprefix (voorvoegsel) aan de functieof procedurenaam gevoegd, gevolgd door twee dubbele punten. Bibliotheek "abc.h" zou bijvoorbeeld zijn functies kunnen onderbrengen in een namespace met de naam "abcspace". Wie de functie som wil oproepen, nioet dart de volledige naam abcspace:: som gebruiken. Indien "def.h" zijn functies onderbrengt in namespace "def", dan is de volledige naam van zijn versie van de functie def : :som. Door dit (unieke) voorvoegsel is het conflict van daarnet opgelost. Nu rijst bij sommige lezers misschien de vraag wat er precies moet gebeuren indien men zeker weet dat er geen conflicten kunnen optreden (bv. omdat er slechts één bibliotheek geïncludeerd wordt)? Moet dan overal die prefix toegevoegd worden? (Dit is immers veel werk, en draagt niet bij tot de leesbaarheid van het programma.) Het antwoord is "neen". Door middel van de opdracht using namespace XXX; kan men er immers voor zorgen dat de prefix XXX: : mag weggelaten worden. Bijvoorbeeld: #include "abc.h" using namespace abcspace; int main() { cout «som(123, 4567); cout «abcspace::som(123, 4567); //ok // ook.ok 32

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

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object. een symbolische naam voor een object. Variabelen Constanten Variabelen Expressies naam : geeft de plaats in het geheugen aan waarde : de inhoud van het object identifier : een rij van letters en/of cijfers

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

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

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

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

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een

Nadere informatie

Lab Webdesign: Javascript 3 maart 2008

Lab Webdesign: Javascript 3 maart 2008 H5: OPERATORS In dit hoofdstuk zullen we het hebben over de operators (of ook wel: operatoren) in JavaScript waarmee allerlei rekenkundige en logische bewerkingen kunnen worden uitgevoerd. Daarbij zullen

Nadere informatie

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2 Controle structuren De algemene vorm: 1 bloks door middel van indentatie Keuze Herhaling if expressie :...... In de volgende vorm is het else gedeelte weggelaten: if expressie :... Het if keuze- of conditioneel

Nadere informatie

Programmeren met Arduino-software

Programmeren met Arduino-software Programmeren met Arduino-software De software waarin we programmeren is Arduino IDE. Deze software is te downloaden via www.arduino.cc. De programmeertaal die hier gebruikt wordt, is gebaseerd op C en

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

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

Programmeren (1) Examen NAAM:

Programmeren (1) Examen NAAM: Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft

Nadere informatie

Online c++ leren programmeren:

Online c++ leren programmeren: Online c++ leren programmeren: Inhoud 1)Waar vind ik een c++ compiler?... 2 2)Hoe start ik een programma in c++?... 2 3)Een eerste c++ programma:... 3 Een eerste programma schrijven:... 3 Mijn eerste programma

Nadere informatie

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd Inhoudsopgave 1 Inleiding... 1 2 Toekenning- en herhalingsopdrachten (for loop)... 2 2.1 De wet van Ohm... 3 2.2 De spaarrekening... 3 2.3 De transformator... 3 3 Keuze- en herhalingsopdrachten (if, switch,

Nadere informatie

9 Meer over datatypen

9 Meer over datatypen 9 Meer over datatypen We hebben al gezien dat het gebruik van symbolische constanten de leesbaarheid van een programma kan verbeteren. Door een geschikte naam (identifier) voor een constante te definiëren,

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren

Nadere informatie

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW: 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

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

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren

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

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Syntax- (compile), runtime- en logische fouten Binaire operatoren Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle

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

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester.

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester. In onderstaande oefeningen zijn kleuren gebruikt. Deze dienen aleen om de structuren makkelijker terug te kunnen herkennen. Ze worden niet standaard zo gebruikt. De dunne rood/roze balken zijn ook geen

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

PYTHON REEKS 1: BASICS. Mathias Polfliet

PYTHON REEKS 1: BASICS. Mathias Polfliet PYTHON REEKS 1: BASICS Mathias Polfliet mpolflie@etrovub.be EENVOUDIGE REKENMACHINE 2 soorten getallen Getallen Z -> integers (gehele getallen) Getallen R -> floating points (reële getallen) Door beperkte

Nadere informatie

SEQUENTIE-STRUCTUUR. Oefening: Dichtheid

SEQUENTIE-STRUCTUUR. Oefening: Dichtheid SEQUETIE-STRUCTUUR Oefening: Dichtheid geef diameter vd bol(m) //Declaratie input variabelen double diameter; double soortmassa; //Declaratie variabelen voor tussenresultaten double volume; diameter //Declaratie

Nadere informatie

van PSD naar JavaScript

van PSD naar JavaScript 2015 van PSD naar JavaScript F. Vonk versie 2 19-9-2015 inhoudsopgave 1. inleiding... - 2-2. ontwikkelomgeving... - 3-3. programmeerconcepten... - 4 - statement... - 4 - sequentie... - 4 - variabele en

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

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 OEFENINGEN PYTHON REEKS 1 Vraag 1: Python als een eenvoudige rekenmachine Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3) en

Nadere informatie

Een spoedcursus python

Een spoedcursus python Een spoedcursus python Zoals je in de titel misschien al gezien hebt, geven wij een spoedcursus Python. Door deze cursus leer je alle basics, zoals het rekenen met Python en het gebruik van strings. Het

Nadere informatie

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

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010 Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2009-2010 16 juni, 2010 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief

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

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

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax, Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt

Nadere informatie

17 Operaties op bits. 17.1 Bitoperatoren en bitexpressies

17 Operaties op bits. 17.1 Bitoperatoren en bitexpressies 17 Operaties op bits In hoofdstuk 1 is gezegd dat C oorspronkelijk bedoeld was als systeemprogrammeertaal om het besturingssysteem UNIX te implementeren. Bij dit soort toepassingen komt het voor dat afzonderlijke

Nadere informatie

Een eenvoudig algoritme om permutaties te genereren

Een eenvoudig algoritme om permutaties te genereren Een eenvoudig algoritme om permutaties te genereren Daniel von Asmuth Inleiding Er zijn in de vakliteratuur verschillende manieren beschreven om alle permutaties van een verzameling te generen. De methoden

Nadere informatie

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes

Nadere informatie

Programmeren in Java les 3

Programmeren in Java les 3 4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een

Nadere informatie

1 Rekenen met gehele getallen

1 Rekenen met gehele getallen 1 Inhoudsopgave 1 Rekenen met gehele getallen... 1.1 De gehele getallen... 1. Optellen... 1. Opgaven... 1. Aftrekken... 1. Opgaven... 1. Vermenigvuldigen... 1. Opgaven... 1.8 Delen... 9 1.9 Opgaven...9

Nadere informatie

Maak automatisch een geschikte configuratie van een softwaresysteem;

Maak automatisch een geschikte configuratie van een softwaresysteem; Joost Vennekens joost.vennekens@kuleuven.be Technologiecampus De Nayer We zijn geïnteresseerd in het oplossen van combinatorische problemen, zoals bijvoorbeeld: Bereken een lessenrooster die aan een aantal

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

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting? Inhoud Computervaardigheden Hoofdstuk 4 Scripting (Let op: dit is enkel voor studenten Biologie.) Dit hoofdstuk bekijkt heel kort de basis van scripting. - Opstellen van functies. - Conditionele code.

Nadere informatie

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF--- --- Reken om naar EURO---

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF--- --- Reken om naar EURO--- 3UREOHPHQRSORVVHQPHW9%$WRHSDVVLQJHQELMGHHO Naam. NR : Klas. PC : Datum. 23*$9( Hieronder vind je het algoritme om een bedrag in BEF om te rekenen naar EURO. Zet het algoritme om in programmacode. Noem

Nadere informatie

Hoofdstuk 0. Van Python tot Java.

Hoofdstuk 0. Van Python tot Java. Hoofdstuk 0. Van Python tot Java. In dit eerste hoofdstuk maken we de overstap van Python naar Java. We bespreken de verschillen en geven wat achtergrondinformatie. In het volgende hoofdstuk gaan we dieper

Nadere informatie

Labo 2 Programmeren II

Labo 2 Programmeren II Labo 2 Programmeren II L. Schoofs K. van Assche Gebruik Visual Studio 2005 om een programma te ontwikkelen dat eenvoudige grafieken tekent. Deze opgave heb je vorig academiejaar reeds in Java geïmplementeerd.

Nadere informatie

Programmeren met stijl in C++

Programmeren met stijl in C++ Inleiding Programmeren met stijl in C++ Jan Cnops & Kris Coolsaet Hogeschool Gent - Departement INWE Vakgroep Informatica 2000-2007 In de eerste jaren van de opleiding leer je programmeren aan de hand

Nadere informatie

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. 1 Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. Voordat je leert programmeren, moet je jouw pc zo instellen dat

Nadere informatie

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14 Python Vraag 1: Expressies en types Integrated Development Environment (IDE): Ø Wing 101 (gratis te downloaden op www.wingware.com) Oefeningen in de shell >> noemen we de prompt Python commando s = expressies

Nadere informatie

Informatica: C# WPO 11

Informatica: C# WPO 11 Informatica: C# WPO 11 1. Inhoud Pass by reference (ref, out), recursie, code opdelen in verschillende codebestanden 2. Oefeningen Demo 1: Swapfunctie Demo 2: TryParse(int) Demo 3: Recursion Tree Demo

Nadere informatie

extra oefening algoritmiek - antwoorden

extra oefening algoritmiek - antwoorden extra oefening algoritmiek - antwoorden opgave "Formule 1" Maak een programma dat de gebruiker drie getal A, B en C in laat voeren. De gebruiker zorgt ervoor dat er positieve gehele getallen worden ingevoerd.

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is

Nadere informatie

Verslag Opdracht 4: Magische Vierkanten

Verslag Opdracht 4: Magische Vierkanten Verslag Opdracht 4: Magische Vierkanten Stefan Schrama, Evert Mouw, Universiteit Leiden 2007-08-14 Inhoudsopgave 1 Inleiding 2 2 Uitleg probleem 2 3 Theorie 2 4 Aanpak 2 5 Implementatie 4 6 Experimenten

Nadere informatie

Niet-numerieke data-types

Niet-numerieke data-types Intern wordt een karakter voorgesteld als een rij van acht bits, Niet-numerieke data-types string de letter a 01100001 0110 0001 0x61 97 Bij interpretatie van de inhoud van een byte als een geheel getal,

Nadere informatie

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

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/ Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS Laatste aanpassing: 15 oktober 2003 Inhoudsopgave 1 Bestandsnamen 3 2 Organizatie Bestanden 3 3 Indentatie

Nadere informatie

Small Basic Programmeren Text Console 2

Small Basic Programmeren Text Console 2 Oefening 1: Hoogste getal Je leest een reeks positieve gehele getallen in totdat je het getal 0 (nul) invoert. Daarna stopt de invoer en druk je een regel af met het hoogste getal uit de reeks. Voorbeeld:

Nadere informatie

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

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010 Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2009-2010 16 juni, 2010 **BELANGRIJK** 1. Schrijf je naam onderaan op elk blad. 2.

Nadere informatie

PHP. Les 4 : Variabelen

PHP. Les 4 : Variabelen PHP Les 4 : Variabelen Interessante links: o http://www.dbzweb.be/moermant/ o http://php.net/manual/en/function.echo.php o http://www.w3schools.com/php/default.asp Wat zijn variabelen? Variabelen zijn

Nadere informatie

VBA voor Doe het Zelvers deel 20

VBA voor Doe het Zelvers deel 20 VBA voor Doe het Zelvers deel 20 Handleiding van Auteur: leofact Augustus 2015 handleiding: VBA voor Doe het Zelvers deel 20 Vorige aflevering In het vorige deel werd besproken hoe je de structuur en vensteropbouw

Nadere informatie

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59.

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59. Datastructuren 2015 Programmeeropdracht 3: Expressies Deadline. Dinsdag 8 december 23:59. Inleiding. Deze opdracht is losjes gebaseerd op Opdracht 5.13.2 in het boek van Drozdek. U wordt gevraagd expressies

Nadere informatie

eerste voorbeelden in Java

eerste voorbeelden in Java Beginselen van programmeren 2 eerste voorbeelden in Java vereisten: een editor: om programma in te tikken en te bewaren een Java compiler: zet ingetikte (bron-) programma om naar byte-code een Java Virtuele

Nadere informatie

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

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.

Nadere informatie

[8] De ene 1 is de andere niet

[8] De ene 1 is de andere niet [8] De ene 1 is de andere niet Volg mee via 08_Types.py In de volgende leerfiche gaan we rekenen met Python. Dat kan je in een programma doen, maar dat kan je ook gewoon vanuit het Shell-venster doen.

Nadere informatie

10 Meer over functies

10 Meer over functies 10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf

Nadere informatie

1.3 Rekenen met pijlen

1.3 Rekenen met pijlen 14 Getallen 1.3 Rekenen met pijlen 1.3.1 Het optellen van pijlen Jeweetnuwatdegetallenlijnisendat0nochpositiefnochnegatiefis. Wezullen nu een soort rekenen met pijlen gaan invoeren. We spreken af dat bij

Nadere informatie

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby? 1 Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby? Voordat je begint met programmeren, moet je Ruby installeren.

Nadere informatie

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 ) OI 2010 Finale 12 Mei 2010 Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub VOORNAAM :....................................................... NAAM :..............................................................

Nadere informatie

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens Info-books AL20 Toegepaste Informatica Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) Jos Gils Erik Goossens Hoofdstuk 6 Lusstructuren of iteraties 6.1 Probleemstelling Het gebeurt dikwijls

Nadere informatie

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf

Nadere informatie

Java Les 3 Theorie Herhaal structuren

Java Les 3 Theorie Herhaal structuren Java Les 3 Theorie Herhaal structuren Algemeen Een herhaal structuur een is programmeertechniek waarbij bepaalde Java instructies worden herhaald net zo lang tot een bepaalde voorwaarde is bereikt. Een

Nadere informatie

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

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2014. Parallel Systems: Introduction Informatica Deel II: les 1 Java versus Python Jan Lemeire Informatica deel II februari mei 2014 Parallel Systems: Introduction Arabidopsis (zandraket) Arabidopsis (zandraket) MMIQQA Multimodal Microscopic

Nadere informatie

Lab Webdesign: Javascript 11 februari 2008

Lab Webdesign: Javascript 11 februari 2008 H3: HERHALINGSLUSSEN EN LOGICA Om de voorbeelden niet nodeloos lang te maken, zullen we in het vervolg niet altijd de SCRIPT-tags en de HTML-commentaarregels herhalen. Om de JavaScript-opdrachten --de

Nadere informatie

Lineaire data structuren. Doorlopen van een lijst

Lineaire data structuren. Doorlopen van een lijst Lineaire data structuren array: vast aantal data items die aaneensluitend gestockeerd zijn de elementen zijn bereikbaar via een index lijst: een aantal individuele elementen die met elkaar gelinkt zijn

Nadere informatie

De bouwstenen van het programmeren 1

De bouwstenen van het programmeren 1 De bouwstenen van het programmeren 1 I DE BOUWSTENEN VAN HET PROGRAMMEREN. Een programma is een beschrijving van acties (operaties, opdrachten) die moeten uitgevoerd worden. Deze acties spelen in op bepaalde

Nadere informatie

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN 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

Nadere informatie

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15

Nadere informatie

Lab Webdesign: Javascript 11 februari 2008

Lab Webdesign: Javascript 11 februari 2008 H2: BASISBEGRIPPEN In dit hoofdstuk zullen er enkele basisbegrippen worden behandelt PLAATSING VAN JAVASCRIPT-CODE DE SCRIPT-TAG De script-tag geeft aan dat er gebruik zal worden gemaakt van een scripttaal.

Nadere informatie

Hoofdstuk 20: Wiskundige functies

Hoofdstuk 20: Wiskundige functies Hoofdstuk 20: Wiskundige functies 20.0 Introductie Er is een uitgebreid aanbod aan wiskundige functies in Excel, variërend van het simpele + teken tot de esoterische statistiek functies voor een correlatie

Nadere informatie

1 Rekenen in eindige precisie

1 Rekenen in eindige precisie Rekenen in eindige precisie Een computer rekent per definitie met een eindige deelverzameling van getallen. In dit hoofdstuk bekijken we hoe dit binnen een computer is ingericht, en wat daarvan de gevolgen

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

De Leidsche Flesch Studievereniging voor Natuurkunde, Sterrenkunde, Wiskunde en Informatica sinds DLF Pointerworkshop

De Leidsche Flesch Studievereniging voor Natuurkunde, Sterrenkunde, Wiskunde en Informatica sinds DLF Pointerworkshop DLF Pointerworkshop Opgaven 2 maart 2016 XKCD # 371 In dit document staan een aantal oude tentamenopgaven om te oefenen voor het hertentamen PR Bij de selectie is rekening gehouden met de opgaven die het

Nadere informatie

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

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016 Informatie over 5VWO DT51: JavaLogo Casper Bezemer Toetsweek 1 13 oktober 2016 1 Informatie Voor toets DT51 wordt jou gevraagd Java(Logo) programma s te schrijven. De eerste opdracht is een Krimpfiguur,

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

Uitwerkingen Rekenen met cijfers en letters

Uitwerkingen Rekenen met cijfers en letters Uitwerkingen Rekenen met cijfers en letters Maerlant College Brielle 5 oktober 2009 c Swier Garst - RGO Middelharnis 2 Inhoudsopgave Rekenen met gehele getallen 7. De gehele getallen.....................................

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

Objectgericht programmeren 1.

Objectgericht programmeren 1. Objectgericht programmeren 1 joost.vennekens@kuleuven.be http://www.cs.kuleuven.be/~joost/dn Objectgericht ontwerpen 35% Objectgericht ontwerpen 65% OP1 Informatiesystemen 50% Databanken 50% OP1 Evaluatie

Nadere informatie

Zelftest Inleiding Programmeren

Zelftest Inleiding Programmeren Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze

Nadere informatie

Datum, Tijd en Timer-object

Datum, Tijd en Timer-object IX. Datum, Tijd en Timer-object A. Hoe worden tijd en datum in VB aangeduid? Zowel datum als tijd worden als een getal met decimalen opgeslagen. Het gedeelte voor de komma geeft de datum aan, het gedeelte

Nadere informatie

DOMjudge teamhandleiding

DOMjudge teamhandleiding judge DOMjudge teamhandleiding Samenvatting /\ DOM DOM judge Hieronder staat de belangrijkste informatie kort samengevat. Dit is bedoeld om snel aan de slag te kunnen. We raden echter ten zeerste aan dat

Nadere informatie

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen dat er zowel typografische als inhoudelijke onvolkomenheden

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)

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

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet. Les C-02: Werken met Programma Structuur Diagrammen 2.0 Inleiding In deze lesbrief bekijken we een methode om een algoritme zodanig structuur te geven dat er gemakkelijk programmacode bij te schrijven

Nadere informatie

Het installatiepakket haal je af van de website http://www.gedesasoft.be/.

Het installatiepakket haal je af van de website http://www.gedesasoft.be/. Softmaths 1 Softmaths Het installatiepakket haal je af van de website http://www.gedesasoft.be/. De code kan je bekomen op de school. Goniometrie en driehoeken Oplossen van driehoeken - Start van het programma:

Nadere informatie

Verzamelingen, Lijsten, Functioneel Programmeren

Verzamelingen, Lijsten, Functioneel Programmeren Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 17 mei 2010 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen

Nadere informatie

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2012 2013, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

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

{ auteur, toelichting }

{ auteur, toelichting } Programmeren Blok A Trilogie van (programmeer)talen http://www.win.tue.nl/ wstomv/edu/ip0/ College Syntaxis (vormleer): Hoe ziet t eruit, hoe schrijf je t? Tom Verhoeff Technische Universiteit Eindhoven

Nadere informatie

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN Onderdeel van SmartProducts INHOUD COLLEGE 3 Scope van variabelen {3.9} Class ontwerpen en maken,

Nadere informatie