Programmeren in REXX/Fundamenten: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
GuyDC (overleg | bijdragen)
Toevoeging concatenatie en foutjes verbeterd
GuyDC (overleg | bijdragen)
Toevoeging uitleg over labels
Regel 24:
* symbolen (instructies of variabelen)
* functies
* labels
 
===Commentaren===
Commentaren worden in REXX begrensd door een beginnende <span style="color:red">/*</span> en een eindigende <span style="color:red">*/</span>.
Regel 59:
Met symbolen bedoelen we ''woorden'' bestaande uit de volgende karakters:
A tot Z, a tot z, 0 tot 9, @ # $ &cent; . ? | _
Cijfers en het punt mogen niet als eerste voorkomen.
 
De term ''woorden'' moet dus in een brede context gezien worden, want er kunnen naast letters ook andere tekens voorkomen. In het Engels spreekt men van '''token'''s, en omdat de term ''woorden'' een meer beperkte betekenis heeft, zullen we deze Engelse term verder liever gebruiken.
Regel 69:
say a
als resultaat <span style="color:red">A</span> op het scherm toveren. Maar gezien de fundamentele karakteristiek van REXX heeft het woord ''say'' eigenlijk de waarde <span style:"color:red">SAY</span>. Door de plaats in het programma is het voor REXX duidelijk dat hier het commando '''say''' moet worden uitgevoerd, en het niet gaat om een variabele.
 
{{Bericht
|titel=Case-insensitive
|bericht=We kunnen geen onderscheid maken tussen kleine letters en hoofdletters (Engels: case-insensitive). "ABC" is dus hetzelfde symbool (variabele, instructie) als "abc" of "Abc", want uiteindelijk worden ze voor REXX toch allemaal "ABC".
|type=waarschuwing}}
 
In onderstaand voorbeeldje is het symbool '''do''' op de eerste instructie tweemaal gebruikt. De eerste maal is het een instructie en de tweede maal een variabele.
Regel 78 ⟶ 83:
===Instructies===
Deze zullen in meer detail beschreven in volgende hoofdstukken, maar de lijst is zo beperkt dat we ze hier toch even kunnen opsommen: '''ADDRESS,'''
'''[[Programmeren in REXX/SyntaxisCommando1#ARG|ARG]]''', '''[[Programmeren in REXX/Commando2#CALL|CALL]]''',
'''[[Programmeren in REXX/SyntaxisCommando1#DO|DO]],''' '''[[Programmeren in REXX/Commando2#DROP|DROP]],'''
'''[[Programmeren in REXX/SyntaxisCommando1#EXIT|EXIT]],'''
'''[[Programmeren in REXX/SyntaxisCommando1#IF|IF]],''' '''INTERPRET,'''
'''[[Programmeren in REXX/SyntaxisCommando1#Iteratiestappen overslaan|ITERATE]],'''
'''[[Programmeren in REXX/SyntaxisCommando1#Eindeloze lussen|LEAVE]],'''
'''[[Programmeren in REXX/SyntaxisCommando1#NOP|NOP]],''' '''NUMERIC, OPTIONS,'''
'''[[Programmeren in REXX/SyntaxisCommando1#PARSE|PARSE]],''' '''[[Programmeren in REXX/Commando2#PROCEDURE|PROCEDURE]],'''
'''[[Programmeren in REXX/SyntaxisCommando2#PULL|PULL]],'''
'''[[Programmeren in REXX/SyntaxisCommando2#PUSH|PUSH]],'''
'''[[Programmeren in REXX/SyntaxisCommando2#QUEUE|QUEUE]],'''
'''[[Programmeren in REXX/SyntaxisCommando2#RETURN|RETURN]],''' '''[[Programmeren in REXX/Commando1#SAY|SAY]],'''
'''[[Programmeren in REXX/SyntaxisCommando1#SELECT|SELECT]],''' '''[[Programmeren in REXX/Commando2#SIGNAL|SIGNAL]], TRACE''' en '''UPPER'''. Van de meeste kan men nu al vermoeden waartoe ze zullen dienen.
'''TRACE''' en '''[[Programmeren in REXX/Commando1#UPPER|UPPER]]'''. Van de meeste kan men nu al vermoeden waartoe ze zullen dienen.
 
===Functies===
Regel 104 ⟶ 110:
say '''length'''("Dit is een tekst")
De functie '''length''' retourneert de lengte van zijn parameter. We verwachten hier dus een waarde 16 als antwoord.
 
===Labels===
Labels (letterlijk: etiketten), zijn plaatsen naar waar een programma kan springen (met een [[Programmeren in REXX/Commando2#SIGNAL|SIGNAL]], [[Programmeren in REXX/Commando2#CALL|CALL]] of een oproep van een functie).
 
Een label wordt gevormd door een token gevolgd door een dubbel punt, en moet als eerste token van een lijn voorkomen. Bijvoorbeeld:
signal MijnLabel /* We springen verder */
[instructies]
exit /* we verlaten het programma */
MijnLabel: /* Hier kunnen we naartoe springen */
[Andere instructies]
exit /* we verlaten het programma */
 
Ook voor labels geldt dat ze ''case-insensitive'' zijn, dus MijnLabel en MIJNLABEL zijn hetzelfde, en gewoon een speciale vorm van token.
 
===Leestekens===
Regel 226 ⟶ 245:
Worden ze echter onderaan toegevoegd, dan zullen ze dus als laatste terug van de stapel worden genomen en spreken we van '''FIFO''' (First In, First Out). De kaarten kruipen als het waren van onder naar boven, waarbij de oudst toegevoegde eerst worden weggenomen.
 
Er zijn verschillende instructies ('''[[Programmeren in REXX/SyntaxisCommando1#PARSE|PARSE]],'''
'''[[Programmeren in REXX/SyntaxisCommando1#PULL|PULL]],'''
'''[[Programmeren in REXX/SyntaxisCommando1#PUSH|PUSH]],'''
'''[[Programmeren in REXX/SyntaxisCommando1#QUEUE|QUEUE]],''') die met de stack werken, en we zullen ze bestuderen in het volgende hoofdstuk.
{{sub}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.