09.01.2014 Views

HANDLEIDING PROGRAMMEREN (5e kwartaal natuur- en ...

HANDLEIDING PROGRAMMEREN (5e kwartaal natuur- en ...

HANDLEIDING PROGRAMMEREN (5e kwartaal natuur- en ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

8 HOOFDSTUK 2: Programmer<strong>en</strong> 8<br />

programmeertal<strong>en</strong> ontwikkeld om de kans op logische fout<strong>en</strong> zo klein mogelijk <strong>en</strong> de kans op juiste uitvoering<br />

van e<strong>en</strong> programma zo groot mogelijk te mak<strong>en</strong> èn om de ontwerpfase zo veel mogelijk te bekort<strong>en</strong>.<br />

Concept<strong>en</strong> <strong>en</strong> method<strong>en</strong> om betere <strong>en</strong> betrouwbaarder programma’s te schrijv<strong>en</strong> word<strong>en</strong> hierna behandeld. De<br />

bedoeling van het practicum is om deze te ler<strong>en</strong> gebruik<strong>en</strong>.<br />

2.1 Algoritm<strong>en</strong><br />

Recept<strong>en</strong>, voorschrift<strong>en</strong>, handleiding<strong>en</strong> <strong>en</strong> dergelijke zijn allemaal onder te br<strong>en</strong>g<strong>en</strong> onder het begrip algoritme:<br />

e<strong>en</strong> beschrijving om e<strong>en</strong> bepaalde handeling op e<strong>en</strong> gew<strong>en</strong>ste manier uit te voer<strong>en</strong>. Maar waaruit bestaat e<strong>en</strong><br />

algoritme bij programmer<strong>en</strong> precies <strong>en</strong> waaraan moet e<strong>en</strong> algoritme voldo<strong>en</strong>? Hieronder volg<strong>en</strong> e<strong>en</strong> aantal punt<strong>en</strong><br />

die k<strong>en</strong>merk<strong>en</strong>d zijn:<br />

• E<strong>en</strong> algoritme bestaat uit stapp<strong>en</strong> die in e<strong>en</strong> bepaalde volgorde uitgevoerd moet<strong>en</strong> kunn<strong>en</strong> word<strong>en</strong>. Bij<br />

uitvoering wordt die ope<strong>en</strong>volging van stapp<strong>en</strong> het door het algoritme beschrev<strong>en</strong> proces g<strong>en</strong>oemd. De<br />

uitvoerder van zo’n proces is de processor. Dit kan bijvoorbeeld e<strong>en</strong> computer zijn die e<strong>en</strong> computerprogramma<br />

uitvoert, of e<strong>en</strong> persoon die e<strong>en</strong> kookrecept uitvoert.<br />

• De beschrijving van e<strong>en</strong> algoritme is eindig. De uitvoering van e<strong>en</strong> algoritme hoeft niet eindig te zijn,<br />

omdat er onbeperkte herhaling van e<strong>en</strong> aantal stapp<strong>en</strong> van e<strong>en</strong> algoritme voor kan kom<strong>en</strong>.<br />

• E<strong>en</strong> algoritme moet op e<strong>en</strong> bepaald abstracti<strong>en</strong>iveau beschrev<strong>en</strong> zijn. De processor die het algoritme uit<br />

moet gaan voer<strong>en</strong>, moet dit abstracti<strong>en</strong>iveau ook begrijp<strong>en</strong>.<br />

• Elke stap moet éénduidig zijn, dus niet voor meerdere interpretaties vatbaar.<br />

• De volgorde waarin de verschill<strong>en</strong>de stapp<strong>en</strong> uitgevoerd word<strong>en</strong>, kan precies bepaald zijn: de uitvoering<br />

wordt dan serieel g<strong>en</strong>oemd.<br />

De volgorde van uitvoering kan ook willekeurig zijn, het is niet belangrijk welke stap eerst uitgevoerd wordt:<br />

de uitvoering wordt collateraal g<strong>en</strong>oemd.<br />

T<strong>en</strong>slotte is het ook mogelijk dat e<strong>en</strong> aantal stapp<strong>en</strong> naast elkaar uitgevoerd moet<strong>en</strong> word<strong>en</strong>: de uitvoering<br />

wordt parallel g<strong>en</strong>oemd.<br />

E<strong>en</strong> uitvoering wordt sequ<strong>en</strong>tieel g<strong>en</strong>oemd als er ge<strong>en</strong> parallelliteit in voorkomt.<br />

Merk op, dat voor echt parallelle uitvoering van e<strong>en</strong> programma op e<strong>en</strong> computer e<strong>en</strong> multi-processor systeem<br />

of e<strong>en</strong> aantal via e<strong>en</strong> netwerk gekoppelde system<strong>en</strong> nodig is.<br />

• E<strong>en</strong> algoritme dat één of meer stapp<strong>en</strong> bevat die zelf weer e<strong>en</strong> algoritme bevatt<strong>en</strong>, wordt e<strong>en</strong> sam<strong>en</strong>gesteld<br />

algoritme g<strong>en</strong>oemd. E<strong>en</strong> algoritme dat dergelijke stapp<strong>en</strong> niet bevat, wordt e<strong>en</strong> elem<strong>en</strong>tair algoritme<br />

g<strong>en</strong>oemd.<br />

• Bij de uitvoering van e<strong>en</strong> algoritme kunn<strong>en</strong> operaties op object<strong>en</strong> uitgevoerd word<strong>en</strong>. Object<strong>en</strong> die aanwezig<br />

zijn voordat de uitvoering begint, word<strong>en</strong> met invoer of input aangeduid, object<strong>en</strong> die na beëindiging<br />

van het algoritme overblijv<strong>en</strong>, word<strong>en</strong> met uitvoer of output aangeduid. Object<strong>en</strong> die alle<strong>en</strong> tijd<strong>en</strong>s de<br />

uitvoering van e<strong>en</strong> algoritme bestaan — bijvoorbeeld om tuss<strong>en</strong>resultat<strong>en</strong> van e<strong>en</strong> berek<strong>en</strong>ing te bevatt<strong>en</strong><br />

— word<strong>en</strong> lokale object<strong>en</strong> g<strong>en</strong>oemd.<br />

• Sam<strong>en</strong>gestelde algoritm<strong>en</strong> kunn<strong>en</strong> parameters hebb<strong>en</strong>, die de invoer <strong>en</strong>/of uitvoer van dat algoritme<br />

vorm<strong>en</strong>.<br />

• Object<strong>en</strong> zijn — min of meer analoog aan algoritm<strong>en</strong> — elem<strong>en</strong>tair als ze uit één elem<strong>en</strong>t bestaan; object<strong>en</strong><br />

zijn sam<strong>en</strong>gesteld als ze uit e<strong>en</strong> aantal elem<strong>en</strong>t<strong>en</strong>, die weer van verschill<strong>en</strong>d type kunn<strong>en</strong> zijn, bestaan.<br />

E<strong>en</strong> programmeur die e<strong>en</strong> algoritme opstelt, moet over dit algoritme e<strong>en</strong> aantal bewering<strong>en</strong> kunn<strong>en</strong> do<strong>en</strong>. Deze<br />

betreff<strong>en</strong> de volg<strong>en</strong>de zak<strong>en</strong>:<br />

• Voorwaard<strong>en</strong><br />

Onder welke voorwaard<strong>en</strong> werkt het algoritme? Wat zijn de toegestane invoerwaard<strong>en</strong>? Wat zijn de daarbij<br />

behor<strong>en</strong>de mogelijke uitvoerwaard<strong>en</strong>? Welke beperking<strong>en</strong> <strong>en</strong> veronderstelling<strong>en</strong> zijn er t<strong>en</strong> opzichte van het<br />

te realiser<strong>en</strong> proces gemaakt?<br />

• Correctheid<br />

Wordt het proces door het algoritme precies beschrev<strong>en</strong>? Is het verband tuss<strong>en</strong> invoer- <strong>en</strong> uitvoerwaard<strong>en</strong><br />

juist?<br />

• Terminatie<br />

Eindigt het door het algoritme beschrev<strong>en</strong> proces voor alle mogelijke invoerwaard<strong>en</strong>? Is het onmogelijk de<br />

processor in e<strong>en</strong> niet eindig<strong>en</strong>de herhaling te br<strong>en</strong>g<strong>en</strong>?<br />

Dit geldt dus niet voor niet eindig<strong>en</strong>de process<strong>en</strong>.<br />

<strong>HANDLEIDING</strong> <strong>PROGRAMMEREN</strong> August 27, 2009

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!