31.07.2013 Views

Denkende Machines -- Computers, rekenen, redeneren - CWI

Denkende Machines -- Computers, rekenen, redeneren - CWI

Denkende Machines -- Computers, rekenen, redeneren - CWI

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.

74 HOOFDSTUK 3. MODELLEN VAN BEREKENING<br />

Begin van de berekening van 3 2 .<br />

x y z regel<br />

••• 0<br />

••• 1<br />

•• 2<br />

•• • 3<br />

•• • 4<br />

• • 5<br />

• • • 6<br />

• • •• 7<br />

• • ••• 8<br />

• • ••• 4<br />

• • ••• 5<br />

•• ••• 6<br />

•• •••• 7<br />

•• ••••• 8<br />

•• ••••• 9<br />

•• ••••• 10<br />

• ••••• 11<br />

• • ••••• 9<br />

• • ••••• 10<br />

• ••••• 11<br />

•• ••••• 9<br />

•• ••••• 0<br />

Een voorbeeld RePro-programma is<br />

afgebeeld in Figuur 3.8. Deze Figuur<br />

bevat de code om het getal dat is opgeslagen<br />

in register x te kwadrateren en<br />

het resultaat vervolgens op te slaan in<br />

register z. De tabel hiernaast geeft het<br />

begin van de uitvoering van het programma,<br />

voor het geval waarin aan het<br />

begin van het programma x drie eenheden<br />

bevat en y en z leeg zijn. In de<br />

laatste stap die in de tabel wordt getoond,<br />

wordt het programma weer op<br />

regel 0 gezet, zodat de hele procedure<br />

zich zal herhalen. Het tussenresultaat<br />

is nu dat x twee eenheden bevat, y leeg<br />

is en z vijf eenheden bevat. Bij de verdere<br />

verwerking zullen de twee eenheden<br />

in x ook nog worden gekwadrateerd,<br />

en daarmee zal het eindresultaat<br />

in z inderdaad gelijk worden aan<br />

2 2 + 5 = 9.<br />

De registermachine waarop het RePro-programma uit Figuur 3.8 draait, werkt vrijwel op dezelfde<br />

manier als de kwadraterende Turing machine uit Figuur 3.6. Er is dan ook geen wezenlijk verschil<br />

in rekenkracht tussen Turing machines en registermachines: elk probleem dat berekenbaar is op<br />

een Turing machine is ook berekenbaar met een registermachine, en andersom. Omdat Turing<br />

machines meer symbolen aankunnen, is het wel noodzakelijk om problemen te hercoderen in een<br />

unair talstelsel voor je ze met een registermachine te lijf kunt gaan.<br />

3.3.2 Stroomdiagrammen en Structuurdiagrammen<br />

De code van een RePro-programma is niet zo gemakkelijk te doorgronden, en het is dus niet echt<br />

gemakkelijk om RePro-programma’s te schrijven. Een RePro-programma staat in feite nog (te)<br />

dicht bij de operaties die de machine daadwerkelijk uitvoert. Daarom zijn er voor mensen beter<br />

hanteerbare programmeertalen bedacht om het leven van de programmeur te vergemakkelijken.<br />

Als we het programma van Figuur 3.8 bekijken dan is niet in één oogopslag duidelijk hoe<br />

het algoritme werkt. Met name de expliciete regeltransities maken de code bijzonder lastig<br />

te doorgronden. Wat inzichtelijker wordt de zaak als we het algoritme schematiseren in een<br />

zogenaamd stroomdiagram zoals in Figuur 3.9. De rekeninstructies zijn in de rechthoeken als<br />

zogenaamde transitie labels weergegeven. De tests verschijnen in de ruitjes. Elke ruit heeft twee<br />

uitgangen: een ‘ja’ uitgang voor het geval dat de test slaagt en een ‘nee’ uitgang voor het geval<br />

dat hij faalt. De ‘stop’ doosjes representeren de eindtoestanden.

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

Saved successfully!

Ooh no, something went wrong!