Voorbeeld – berekenen van de som S hierboven gedefinieerd
De START...NEXT-constructie bevat een index waarvan de waarde niet
toegankelijk is voor de gebruiker. Omdat voor de berekening van de som de
index zelf (k, in dit geval) nodig is, moeten we onze eigen index k aanmaken
die we steeds zullen verhogen in de lus, wanneer die lus wordt uitgevoerd.
Een mogelijke implementatie voor de berekening van S is het programma:
0. DUP → n S k
«
«
NEXT S "S" TAG » »
Voer het programma in en sla het op in een variabele met de naam @@@S1@@@.
Hier volgt een korte uitleg over hoe het programma werkt:
1. Dit programma heeft een heel getal nodig als invoer, daarom bevindt dit
getal (n) zich voor de uitvoering van het programma op niveau 1 van het
stapelgeheugen. Daarna wordt het programma uitgevoerd.
2. Er wordt een nul ingevoerd, wat in verplaatst naar niveau 2 van het
stapelgeheugen.
3. Het commando DUP, dat kan worden ingevoerd als ~~dup~,
kopieert de inhoud van niveau 1 van het stapelgeheugen, verplaatst alle
niveaus van dat stapelgeheugen naar boven en plaatst de kopie die het
zojuist heeft gemaakt op niveau 1 van het stapelgeheugen. Dus bevindt n
zich, nadat DUP is uitgevoerd, op niveau 3 van het stapelgeheugen en
bevatten de niveaus 1 en 2 een nul.
4. Het codefragment → n S k slaat de waarden van respectievelijk n, 0 en
0 op in de locale variabelen n, S en k. We zeggen dat de variabelen n,
S en k werden geïnitialiseerd (S en k naar nul, n naar een waarde die de
gebruiker kiest).
5. Het codefragment 0. n START identificeert START lus waarvan de
index de waarden 0, 1, 2, ..., n zal aannemen.
6. De som S wordt verhoogd met k
7. De index k wordt verhoogt met 1 in het codefragment: 1. k +
8. Op dit moment zijn de bijgewerkte waarden van S en k beschikbaar op
respectievelijk niveaus 2 en 1 van het stapelgeheugen. Het codefragment
'k' STO slaat de waarde van niveau 1 van het stapelgeheugen op in de
0. n START k SQ S + 1. 'k' STO+ 'S' STO
2
in het codefragment : k SQ S +
Blz. 21-59