Programmeren in REXX/Fundamenten: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
GuyDC (overleg | bijdragen)
Juistere term voor case-insensitive
GuyDC (overleg | bijdragen)
Aanpassen aan nieuwe conventies
Regel 122:
Toch een voorbeeldje van een (basis-)functie hier:
say '''length'''('Dit is een tekst')
De functie '''length''' geeft de lengte van zijn parameter terug. Als eerste tussenstap van de interpretatie door REXX zal het deel "length('Dit is een tekst')" vervangen worden door het getal «16». Daarna zal het bevel "say" zorgen dat dit getal op het scherm wordt afgedrukt.
<!--------------------------------------------------->
==Labels==
Regel 136:
exit /* we verlaten het programma */
 
Ook voor labels geldt dat ze hoofdletter ongevoelig voor karaktergrootte zijn, dus MijnLabel en MIJNLABEL zijn hetzelfde.
 
Het is zelfs mogelijk meerdere labels na elkaar te gebruiken, waarbij ze dan te beschouwen zijn als elkaars synoniem.
Regel 159:
* een impliciet scheidingsteken binnen een instructie. REXX veronderstelt een scheidingsteken na THEN, ELSE en OTHERWISE.
Om duidelijk een onderscheid te maken tussen de tekstregels of programmalijnen die de broncode opmaken, en de aparte logische eenheden die REXX als instructies uitvoert zullen we deze laatste vanaf nu liever met het
Engelse woord '''statement''' beschrijvenbenoemen.
|type=info}}
===Bewerkingstekens===
Regel 181:
 
Voorbeelden:
\1 /* &#171;0&#187; (niet 1) */
-7 * (4+3) /* &#171;-49&#187; */
-7*4 + 3 /* &#171;-25&#187; (volgorde belangrijk)*/
'ABC'=='ABC' /* &#171;1&#187; (= waar) */
'ABC'=='ABC ' /* &#171;0&#187; (= niet waar) */
'ABC'\='abc' /* &#171;1&#187; (= waar) */
(1 | 0) & 1 /* &#171;1&#187; (= waar) */
12 % 7 /* &#171;1&#187; (modulo) */
12 // 7 /* &#171;5&#187; (rest van deling) */
Concatenatie wordtgaan onmiddellijkwe hiernanu uitgelegduitleggen.
<!--------------------------------------------------->
=Concatenatie=
Regel 200:
Laten we nu even kijken naar volgende statements:
x=1 ; y=2
say x y /* Toont "&#171;1 2"&#187; */
say x y /* Toont evenzeer "&#171;1 2"&#187; */
if x y = '1 2' then say 'OK' /* "&#171;OK"&#187; want dit is waar! */
say xy /* "&#171;XY"&#187;, want xy niet opgevuld */
say x&#124;&#124;y /* "&#171;12"&#187;, want concatenatie */
if x&#124;&#124;y=12 then say 'OK' /* "&#171;OK"&#187; want ook Waar! */
if x&#124;&#124;,
y = 12 then say 'OK' /* "&#171;OK"&#187; want eveneens "Waar" */
Tot zover het wel of niet samenvoegen van variabelen. Maar bestudeer nu volgende voorbeelden aandachtig:
x=1 ; y=2
say x"\="y /* "&#171;1\=2"&#187; */
if x"\:"y then say 'OK' /* Syntax error ! */
if x"-"y = '1-2' then say 'OK'/* "&#171;OK"&#187; */
if x"-"y = 1-2 then say 'OK' /* Niets, want "1-2" is niet -1 */
 
We willen hiermee duidelijk maken dat geen concatenatieteken nodig is wanneer variabelen aan constanten worden geplakt.
Maar willen we constanten aan constanten ketenen, dan is het concatenatieteken meestal wel nodig:
say "Dit is een zin""!" /* &#171;Dit is een zin"!&#187; */
say "Dit is een zin"&#124;&#124;"!" /* &#171;Dit is een zin!&#187; */
say "Dit is een zin"'!' /* &#171;Dit is een zin!&#187; */
Bij het eerste voorbeeld wordt het dubbele aanhalingsteken door een enkel vervangen zoals we al hadden geleerd.
<!--------------------------------------------------->
Regel 247:
j=7
jan.i.j=12
Tijdens de uitvoering zal REXX het token (de tokens) na het punt interpreteren. Hebben we een constante, zoals in jan.7 dan is "JAN.7" de naam van het element van de stem "JAN.". Dit element heeft in ons voorbeeld de waarde &#171;27&#187; gekregen.
 
In het tweede geval stelt "hello" stelt een geldige variabele voor waaraan echter nergensnooit een waarde is toegekend. Dus is haar impliciete waard "HELLO" en is "JAN.HELLO" een element van de stem "JAN.". Dit element wordt een waarde "''&#171;Gisteren''"&#187; toegewezen.
 
In het derde geval, bij "jan.i" zal REXX zien dat ''i'' de waarde &#171;5&#187; bevat, zodat het element nu "JAN.5" zal noemen en de waarde &#171;17&#187; zal ontvangen.
 
Net zo zal na de toekenning van de waarde "&#171;Hello"&#187; aan de variabele ''hello'', het element "JAN.Hello" (let op de hoofd- en kleine letters), de waarde "&#171;Goeiedag"&#187; hebben gekregen.
 
In het geval van "jan.i.j" tenslotte, hebben beide i en j een waarde gekregen en geven we dus het element "JAN.5.7" de waarde &#171;12&#187;. Op deze manier kan men een matrix met 2 (of meer) dimensies simuleren, doch voor REXX zijn het gewoon allemaal elementen van een stem.
 
Als een stem gebruikt wordt om een reeks elementen te bevatten, gebruikt men vaak numerieke staarten (jan.1, jan.2, ...). Er is dan een soort conventie dat het aantal elementen (de dimensie) dan in het element "''stem.0''" wordt bijgehouden. Verplicht is dit niet, doch sommige programma's of functies volgen deze conventie om aan te geven hoeveel elementen ze als resultaat hebben terug gegeven.
Regel 261:
Noteer dat een eenvoudige assignatie als
piet. = 'Onbekend'
álle elementen van de stem deze ''standaardwaarde'' toekent (ook zij die reeds een waarde hadden). Dus zullen zowel ''PIET.7'' als ''PIET.Morgen'' een waarde "&#171;Onbekend"&#187; hebben zolang er geen anderenieuwe waarde aan wordt gegeven.
 
Merk tenslotte op dat een samengestelde variabele er zeer complex kan uitzien:
a="Dit is een hele volzin"
jan.a=17
zal het element "''JAN.Dit is een hele volzin''" de waarde &#171;17&#187; toekennen. Dit geeft interessante mogelijkheden waar we later nog zullen op terugkomen.
<!---------------------------------------------------------->
=Programmabuffer ofte Stack=
Regel 276:
<br>Worden ze echter onderaan toegevoegd, dan zullen ze pas 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.
 
De bevelen die met de stack werken bespreken we in heteen volgend hoofdstuk.
 
{{Bericht
Regel 282:
|bericht=In dit hoofdstuk leerden we over constanten, variabelen, bevelen en functies. We leerden de lees- en bewerkingstekens kennen. Ook hoe labels eruitzien en wat de stack eigenlijk is. De uitleg over stems mocht zeker niet ontbreken. Termen als token, assignatie en statement werden aangebracht.
 
Probeer deze in gedachten nog eens elk van deze dingen voor de geest te halen zodat we ze als gekend kunnenmogen beschouwen bij het aanvatten van volgendvolgende hoofdstukhoofdstukken.
}}
{{sub}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.