Programmeren in REXX/Fundamenten: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
Juistere term voor case-insensitive |
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
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'''
|type=info}}
===Bewerkingstekens===
Regel 181:
Voorbeelden:
\1 /* «0» (niet 1) */
-7 * (4+3) /* «-49» */
-7*4 + 3 /* «-25» (volgorde belangrijk)*/
'ABC'=='ABC' /* «1» (= waar) */
'ABC'=='ABC ' /* «0» (= niet waar) */
'ABC'\='abc' /* «1» (= waar) */
(1 | 0) & 1 /* «1» (= waar) */
12 % 7 /* «1» (modulo) */
12 // 7 /* «5» (rest van deling) */
Concatenatie
<!--------------------------------------------------->
=Concatenatie=
Regel 200:
Laten we nu even kijken naar volgende statements:
x=1 ; y=2
say x y /* Toont
say x y /* Toont evenzeer
if x y = '1 2' then say 'OK' /*
say xy /*
say x||y /*
if x||y=12 then say 'OK' /*
if x||,
y = 12 then say 'OK' /*
Tot zover het wel of niet samenvoegen van variabelen. Maar bestudeer nu volgende voorbeelden aandachtig:
x=1 ; y=2
say x"\="y /*
if x"\:"y then say 'OK' /* Syntax error ! */
if x"-"y = '1-2' then say 'OK'/*
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""!" /* «Dit is een zin"!» */
say "Dit is een zin"||"!" /* «Dit is een zin!» */
say "Dit is een zin"'!' /* «Dit is een zin!» */
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 «27» gekregen.
In het tweede geval stelt "hello"
In het derde geval, bij "jan.i" zal REXX zien dat ''i'' de waarde «5» bevat, zodat het element nu "JAN.5" zal noemen en de waarde «17» zal ontvangen.
Net zo zal na de toekenning van de waarde
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 «12». 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
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 «17» 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
{{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
}}
{{sub}}
|