Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs...

12
223 Module 4 Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. Imperatief programmeren is het stapsgewijs in code omschrijven wat een programma moet doen, net als een algoritme of een PSD. 3.2 If Then Else Bij imperatief programmeren omschrijf je in een code stapsgewijs wat een programma moet doen, net als een algoritme en PSD. Wanneer een PSD selecties (keuzes) bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. Denk nog maar even terug aan dit schema: is het vuur uit? ja nee vuur aansteken Als je imperatief gaat programmeren, krijg je veel met zulke keuzes of voorwaardes te maken. Hiertoe zijn er de ‘if then’-statements en de ‘else’-statements. Voorbeeld: toegangsprijs We kijken weer even naar het voorbeeld dat de procedure beschrijft voor het bepalen van de toegangsprijs voor een pretpark. De code wordt sequentieel, van boven naar beneden afgewerkt. Je ziet dat er allerlei keuzes gemaakt moeten worden. Uiteindelijk is het resultaat dat mensen jonger dan 12 en ouder dan, of net zo oud als 60, voor de toegang 5 euro betalen; de overige leeftijden betalen 10 euro. Niet elke If heeft een Else, maar wel elke Else een If Het if-statement is niet onlosmakelijk verbonden aan het else-statement; het is niet noodzakelijk dat elke if-statement ook een else heeft. Aan de andere kant hoort elke else- statement wel bij een if. ALS leeftijd < 12 DAN toegang := 5 euro ANDERS ALS leeftijd >= 60 DAN toegang := 5 euro ANDERS toegang := 10 euro EINDE-ALS EINDE-ALS Voorbeeld Imperatief programmeren HOOFDSTUK 3

Transcript of Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs...

Page 1: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

223

Module 4 – Programmeren

3.1 Stapsgewijs programmerenDe programmeertalen die tot nu toe genoemd zijn, zijn imperatieve ofprocedurele programmeertalen. Imperatief programmeren is het stapsgewijs in code omschrijven wat een programma moet doen, net als een algoritme of een PSD.

3.2 If Then ElseBij imperatief programmeren omschrijf je in een code stapsgewijs wat een programma moet doen, net als een algoritme en PSD.

Wanneer een PSD selecties (keuzes) bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. Denk nog maar even terug aan dit schema:

is het vuur uit? ja neevuur aansteken

vraag leeftijd leeftijd <12ja nee leeftijd >=60toegang is 5 euro ja nee toegang is 5 euro toegang is 10 eurovertel toegang

druk af “Dit bestand bestaat al.”druk af “Toch onder deze naam opslaan? (J/N)” wacht op toetsindruktotdat een J of N is ingedrukt is ingedrukte toets J?ja neesla het bestand op

Als je imperatief gaat programmeren, krijg je veel met zulke keuzes of voorwaardes te maken. Hiertoe zijn er de ‘if then’-statements en de ‘else’-statements.

Voorbeeld: toegangsprijs

We kijken weer even naar het voorbeeld dat de procedure beschrijft voor het bepalen van de toegangsprijs voor een pretpark.

De code wordt sequentieel, van boven naar beneden afgewerkt. Je ziet dat er allerlei keuzes gemaakt moeten worden. Uiteindelijk is het resultaat dat mensen jonger dan 12 en ouder dan, of net zo oud als 60, voor de toegang 5 euro betalen; de overige leeftijden betalen 10 euro.

Niet elke If heeft een Else, maar wel elke Else een If

Het if-statement is niet onlosmakelijk verbonden aan het else-statement; het is niet noodzakelijk dat elke if-statement ook een else heeft. Aan de andere kant hoort elke else-statement wel bij een if.

ALS leeftijd < 12DAN toegang := 5 euroANDERS ALS leeftijd >= 60 DAN toegang := 5 euro ANDERS toegang := 10 euro EINDE-ALSEINDE-ALS

Voorbeeld

Imperatief programmeren

HOOFDSTUK 3

Page 2: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

224

Wijze van weergevenMerk op dat alle operaties binnen een statement iets naar rechts zijn geplaatst. Dit principe noemen we inspringen. In de meeste programmeertalen zal het programma ook werken als je dit niet doet, maar het is belangrijk om het wel te doen, omdat de code er overzichtelijker van wordt.

Informatie

3.3 LusWanneer een programma een iteratie (herhaling) bevat, zeggen we ook wel dat er sprake is van een lus (of ‘loop’ in het Engels). De operaties die in een lus zitten worden namelijk uitgevoerd zolang aan een bepaalde voorwaarde voldaan wordt. De meest bekende is de while-lus, hieronder aangegeven als ‘ZOLANG’.

Hier zie je een voorbeeld van een lus:

getal := 0ZOLANG getal < 3 getal := getal + 1EINDE-ZOLANG

VoorbeeldIn dit voorbeeld wordt een getal net zolang opgehoogd totdat deze niet meer kleiner is dan 3. Met andere woorden: de lus stopt zodra het getal 3 is geworden.

Oneindige lus

Wanneer de voorwaarde van een while-lus nooit onwaar wordt, zal de lus niet vanzelf stoppen (het programma ‘blijft hangen’). Dit noem je een ‘oneindige lus’. Meestal is dit niet de bedoeling en heeft de programmeur een fout in de voorwaarde gemaakt, of ergens anders, of allebei.

3.4 Booleaanse expressiesIn de eerder gegeven voorbeelden heb je (misschien onbewust) al kennis gemaakt met Booleaanse expressies.

Een Booleaanse expressie is een expressie die de waarden true of false aan kan nemen.

De naam Booleaans komt van de wiskundige en filosoof George Boole, die het redeneren in waarden als true en false heeft geïntroduceerd in de 19e eeuw.

Informatie

Page 3: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

225

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

De voorwaarde van een if-statement is een Booleaanse expressie. Als die de de waarde true heeft, wordt de direct onderliggende code uitgevoerd en niet de code onder de else - als de else aanwezig is. Als de Booleaanse expressie de waarde false heeft, is het andersom.

Symbolen Booleaanse logica

De symbolen in onderstaande tabel worden vaak gebruikt in de Booleaanse expressies van programmeertalen.

Symbool Naam Gebruik

> groter-dan x > y is true als x groter is dan y

>=groter-dan-of-gelijk-aan

x >= y is true als x groter is dan y of net zo groot

< kleiner-dan y < y is true als x kleiner is dan y

<=kleiner-dan-of-gelijk-aan

x <= y is true als x kleiner is dan y of net zo groot

not notnot x is true als x false is en andersom; de Booleaanse waarde van x wordt geïnverteerd

and and x and y is true als x en y beide true zijn

or or x or y is true als x of y true is (of als ze allebei true zijn)

xor exclusive or x xor y is true als x of y true is (en niet als ze allebei true zijn)

Misschien had je het al opgemerkt: de code van de toegangsprijs van het pretpark kunnen we met deze logica korter omschrijven:

ALS leeftijd < 12 OF leeftijd >= 60DAN toegang := 5 euroANDERS toegang := 10 euroEINDE-ALS

Voorbeeld

Wijze van weergeven

Bij het opstellen van een Booleaanse expressie moet je zorgvuldig te werk gaan. Een verschil in de volgorde van de expressie kan bijvoorbeeld hele andere resultaten opleveren. Het is daarom veilig om delen van je expressie te voorzien van haakjes: ‘(‘ en ‘)’. Door delen tussen haakjes te zetten, geef je aan dat deze als geheel geïnterpreteerd moeten worden.

Page 4: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

226

Waarheidstabel

De volgende expressie:

\(x EN y) OF z

is niet hetzelfde als:

x EN (y OF z)

Je kunt dit gemakkelijk zien door voor deze expressies een waarheidstabel te maken. Dit is een tabel waarin je aangeeft wanneer de expressie true of false is bij welke waarden. Hieronder zijn van beide expressies de verschillende waarheidstabellen weergegeven.

(x EN y) OF z x EN (y OF z)

x y z Waarde van expressie x y z Waarde van expressie

true true true true true true true true

true true false true true true false true

true false true true true false true true

true false false false true false false false

false true true true false true true false

false true false false false true false false

false false true true false false true false

false false false false false false false false

Meestal worden in waarheidstabellen de termen true en false vervangen door respectievelijk 1 en 0. Dit kan zo’n tabel een stuk beknopter maken.

Informatie

3.5 VariabelenEen variabele is een element dat een bepaalde waarde aan kan nemen.

Een voorbeeld van een variabele is de toegangsprijs van een pretpark. De waarde die een variabele kan hebben, is afhankelijk van het type van de variabele. Er zijn verschillende typen die voorkomen in verschillende programmeertalen, maar doorgaans zijn de volgende typen in ieder geval aanwezig:

Geheel getalDit wordt een integer genoemd, vaak afgekort tot int. ‘42’ is bijvoorbeeld een heel getal.

Page 5: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

227

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

KommagetalDit wordt vaak een double of fl oat genoemd. Bijvoorbeeld: ‘109,75’. In veel programmeertalen moet je deze getallen op z’n Engels noteren, met een decimale punt.

KarakterDit noemt men een character of kortweg char (spreek uit: kar). Een karakter kan elk ANSI-, EBCDIC- of Unicode-teken zijn, bijvoorbeeld ‘$’.

BooleanDit wordt ook wel bool genoemd (Nederlands: booelaanse). Een boolean kan alleen maar true of false zijn. Sommige programmeertalen (waaronder C en C++) laten hier ook gehele getallen in toe, waarbij 0 staat voor false en alle andere getallen voor true.

Een apart soort variabele is de string. Dit is een reeks karakters, bijvoorbeeld ‘tijger’ of ‘$2,50’.

3.6 ArraysDe meeste programmeertalen bieden de mogelijkheid om arrays (Nederlands: rij) te maken. Een array is een geordende rij van variabelen van hetzelfde type. Zo kun je bijvoorbeeld een array van gehele getallen maken. De variabelen van een array zijn genummerd; het volgnummer noemen we de index. In veel programmeertalen begint de indexering van een array altijd met 0 (en niet met 1).

Voorbeeld

De code:

rij_van_getallen := [32, 59, 825, 9042]

De indexering:

rij_van_getallen

index: 0 1 2 3

waarde: 32 59 825 9042

3.7 FunctiesJe kunt een functie (een verwant begrip is procedure) gebruiken als je een bepaald stuk code vaker moet gebruiken of als je een programma overzichtelijker wilt maken. Met een functie maak je een ‘subprogrammaatje’. Als in het programma de naam van een functie staat, wordt daar het subprogrammaatje dat erbij hoort, uitgevoerd. We noemen dat het aanroepen van de functie.

Page 6: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

228

Van een functie moeten de volgende zaken worden gedefi nieerd:

De naamElke functie moet een unieke naam hebben. Sommige programmeertalen laten toe dat namen van functies vaker voorkomen, zolang de parameters verschillen. Dit principe noem je overloading.

De parametersDit zijn speciale variabelen die een waarde krijgen bij het aanroepen van de functie. Zo kan de functie werken met de meegegeven waarden. Een functie kan nul of meer parameters hebben.

Het returntypeDit is het waarde-type dat de functie na uitvoeren oplevert. Een functie kan maar één returntype hebben. Deze waarde wordt op de plek van de aanroep verder gebruikt.

De bodyDit is de code die uitgevoerd wordt als de functie aangeroepen wordt.

Voorbeeld

In dit voorbeeld wordt voor elke variabele, het type van de variabele gespecifi ceerd (net als bij de meeste programmeertalen).

som(int getal1, int getal2) : int int optelling := getal1 + getal2 return optelling

Voorbeeld

De functie ‘som’ telt twee getallen van het type ‘int’ bij elkaar op en geeft het resultaat (wat hier de naam ‘optelling’ heeft gekregen) als int terug. De termen ‘getal1’ en ‘getal2’ zijn de parameters en worden gescheiden door een komma. We kunnen nu naar deze functie refereren, of anders gezegd: we kunnen deze functie aanroepen en het resultaat in een andere variabele stoppen. Bijvoorbeeld:

int getalA := som(10, 20)int getalB := som(getalA, 70)int getalC := som(som(50, 50), getalB)

Voorbeeld

Als bovenstaande code uitgevoerd zou worden, zou na afl oop getalA de waarde 30 hebben, getalB 100 en getalC 200. Je ziet: na een aanroep van een functie kan het resultaat precies zo worden behandeld als het returntype van de functie. In dit geval is het returntype van de functie een integer en kun je dus dit resultaat direct weer gebruiken, zoals op de derde regel hier ook gebeurt.

Page 7: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

229

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

3.8 Parameters en argumentenWe hebben eerder aangegeven dat getal1 en getal2 de parameters zijn van de functie ‘som’. Bij het aanroepen worden deze parameters ingevuld door, wat we noemen, de argumenten. Een argument is een waarde die meegegeven wordt bij een functie-aanroep. We herhalen het voorbeeld uit de vorige paragraaf:

int getalA := som(10, 20)int getalB := som(getalA, 70)int getalC := som(som(50, 50), getalB)

Voorbeeld

Als bij het aanroepen van een functie een variabele meegegeven wordt - zoals in ons voorbeeld op de tweede regel het geval is - dan wordt niet de variabele zelf meegestuurd, maar de waarde van de variabele. Omdat de waarde wordt meegegeven, verandert de variabele zelf dus niet na het aanroepen van een methode, ongeacht wat de methode met de parameters doet.

We proberen dit in het volgende voorbeeld te verduidelijken.

Voorbeeld

We defi niëren eerst een functie (die eigenlijk niets zinnigs doet):

zomaarEenFunctie(int eenGetal) : int eenGetal := 999 return 0

Voorbeeld

Vervolgens roepen we deze aan:

mijnEersteGetal := 5mijnTweedeGetal := zomaarEenFunctie(mijnEersteGetal)

Voorbeeld

Na het zogenaamd uitvoeren van deze code zal mijnEersteGetal nog altijd de waarde 5 hebben en mijnTweedeGetal de waarde 0.

Page 8: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

230

3.9 VoidAlle voorbeeldfuncties tot nu toe hadden een returnwaarde, namelijk een int. Maar een functie hoeft niet per se een returnwaarde te hebben. Dat geef je aan met het returntype void. Void is eigenlijk geen variabele-type, maar is eerder de afwezigheid van een waarde. Letterlijk vanuit het Engels vertaald betekent void dan ook ‘leegte’. Hieronder is een voorbeeldfunctie zonder returnwaarde gedefi nieerd:

zegHallo() : void print(“hallo”)

Voorbeeld

Deze functie heeft geen parameters en geen returnwaarde. Bovendien wordt er een andere functie aangeroepen met de naam ‘print’, waarbij een string als argument wordt meegegeven.

3.10 SyntaxDe syntaxis (Engels: syntax) is de grammatica van een programmeertaal. Hij beschrijft hoe de code er in een bepaalde programmeertaal uit moet komen te zien, wat de grammaticale regels zijn. Elke programmeertaal heeft een eigen syntax, maar sommige programmeertalen hebben onderling veel syntactische overeenkomsten, zoals C, C++, Java, C#. De reden dat veel programmeertalen een overeenkomstige syntax hebben, is om het programmeurs makkelijker te maken een andere taal te leren.

int som(int getal1, int getal2){ return getal1 + getal2;}

Voorbeeld

Voorbeeld van een functie die zou werken in C, C++, Java en C#.

Page 9: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

231

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

3.11 Vragen en opdrachten

3.11.1 Open vragen

1. Wanneer zal van een else-statement de inhoud worden uitgevoerd?Geef de waarheidstabel van de volgende expressie: x OR (NOT y).a. Noem de Engelse namen van de verschillende typen variabelen die je kent.b. Wat valt je op als je de string met de lijst vergelijkt?

2. a. Welke eigenschappen moet je van een functie of procedure defi niëren?

b. Wat is het verschil tussen een parameter en een argument?

3. Leg in je eigen woorden uit wat syntax betekent.

3.11.2 Meerkeuzevragen

1. Welke van onderstaande beweringen over lijsten is niet waar?a. De eerste waarde van een lijst staat altijd op index 0.b. Een lijst heeft een volgorde waarin de waardes gerangschikt zijn.c. In één lijst kunnen verschillende waardes worden opgeslagen van verschillende

typen.d. Een lijst wordt ook wel array genoemd.

2. Bekijk dit voorbeeld:

int a = 2;int b = 4;int c = 6;

vermenigvuldig(int x, int y) : int return x * y

c := vermenigvuldig(a, b)

Stel dat deze code uitgevoerd zou worden, welke waardes zouden dan correct zijn ná het uitvoeren:a. x is 2, y is 4 en c is 6.b. a is 2, b is 4 en c is 8.c. b is 4, y is 4 en c is 4.d. a is 2, b is 4 en c is 6.

3. Welke van onderstaande beweringen over lussen is niet waar?a. Van een lus wordt de booleaanse expressie herhaaldelijk gecontroleerd.b. Een lus is vergelijkbaar met de iteratie van een PSD.c. Een ander woord voor lus is loop.d. Bij een oneindige lus wordt niet aan de booleaanse expressie voldaan.

Page 10: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

232

4. Van de volgende booleaanse expressie zijn de operatoren vervangen door cijfers. De waarden voor x en y zijn: x = true, y = false. Welke operatoren kunnen hier staan om de expressie de waarde true te laten zijn?

x 1 y 2 3 (x 4 y)

a. 1 = XOR, 2 = AND, 3 = OR, 4 = XORb. 1 = OR, 2 = AND, 3 = NOT 4 = ANDc. 1 = AND, 2 = AND, 3 = NOT, 4 = ANDd. 1 = OR, 2 = XOR, 3 = NOT, 4 = AND

3.11.3 Korte opdrachten

1. Zoek ten minste vijf syntactische regels voor de programmeertaal Java en beschrijf deze kort in je eigen woorden.

2. a. Schrijf zelf code voor het zetten van koffi e. Maak hierbij gebruik van variabelen, ten minste één lus en ten minste één functie.b. Beschrijf vervolgens stapsgewijs de werking van jouw code. Geef hierbij onder

andere aan welke variabelen op welk moment welke waarde hebben.

Page 11: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

233

Hoofdstuk 3

Module 4 – ProgrammerenImperatief programmeren

3.12 Samenvatting Imperatief programmeren is het stapsgewijs schrijven van instructies die van boven naar beneden uitgevoerd worden. Kenmerken hierbij zijn: if-, then-, else-statemens: gebruikt om voorwaarden aan variabelen te stellen lussen: herhalingen, denk hierbij aan de while-lus functies of procedures: kleine deelprogramma’s om het programma overzichtelijker

te maken en herhalende code slechts één keer te hoeven schrijven.

Een parameter is een variabele die gedefi niëerd is bij een functie. Een argument is de waarde die je meegeeft bij het aanroepen van een functie.

Er zijn verschillende typen variabelen: int: heel getal double of fl oat: kommagetal char: een karakterteken bool of boolean: heeft de waarde true of false.

Een string is een reeks van karakters.

Een lijst (of array) is een reeks van waardes van één type variabele.

De syntax van een programmeertaal beschrijft de grammaticaregels waaraan een programmeur zich voor die taal moet houden.

Page 12: Module 4 – Programmeren HOOFDSTUK 3 - instruct.nl · Module 4 – Programmeren 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of

234

Fundament Informaticadeel 1AANTEKENINGEN