Denkende Machines -- Computers, rekenen, redeneren - CWI
Denkende Machines -- Computers, rekenen, redeneren - CWI
Denkende Machines -- Computers, rekenen, redeneren - CWI
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.