Programmeren in REXX/Fundamenten: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
GuyDC (overleg | bijdragen)
kGeen bewerkingssamenvatting
GuyDC (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 42:
 
===Getallen===
Een getal is een reeks van nummerscijfers, met eventueel een decimaal <u>punt</u> (geen komma dus!) en/of een minteken voor negatieve getallen. Exponentiële notatie kan ook worden gebruikt.
Dit zijn allemaal geldige getallen:
17 98.07 -101 12.2e6 73e-128 '-17.9'
Regel 52:
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.
ElkElke ''symbool''token is van andere gescheiden door één of meer blanco karakters of bewerkingstekens.
 
Deze symbolen worden dan, naargelang hun plaats in het programma, geïnterpreteerd als variabelen of als instructies (commando's).
Regel 59:
De initiële waarde van een variabele is haar eigen naam in hoofdletters. Dus zal
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.
 
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 65:
say do
end
Dit is perfect geldig doch, omwille van de leesbaarheid, ten stelligste af te vermijdenraden. Gebruik geen namen voor variabelen die de naam van een commando (of functie) zijn.
 
===Instructies===
Regel 88:
waarbij het open-haakje zonder spatie na de functienaam moet komen.
 
Standaard bezit de REXX taal reeds een hele reeks standaardfuncties. Een opsomming zou ons hier dus te ver leiden.
Een opsomming is hier niet mogelijk, want het zijn er vele. Ze kunnen ook verschillen per besturingssysteem, en er kunnenbestaan ooktevens externe functiepakketten die kunnen worden toegevoegd aan de basisset.
Het is tenslotte mogelijk zijn eigen functies te schrijven (zie later).
 
EénToch een voorbeeldje van een (basis-)functie hier:
say '''length'''("Dit is een tekst")
De functie '''length''' retourneert de lengte van zijn parameter. We verwachten hier dus een waarde 16 als antwoord.
Dit zal 16 als antwoord geven, want er zijn 16 tekens in de parameter en de functie berekent de lengte ervan.
 
===Leestekens===
Regel 103 ⟶ 105:
 
====Scheidingsteken====
Verder is er deDe '''puntkomma''' dielaat toelaattoe instructies van elkaar te scheiden, zoals hier:
/* Meerdere instructies op één regel */
Say "Hello" ; say "Nice weather, isn't it?"
Regel 131 ⟶ 133:
Deze variabelen zullen ten gepaste tijde meer uitleg krijgen.
 
==Stems (arrays)==
REXX kent een speciaal soort variabelen, namelijk '''stems''' genaamd. Ze laten o.a. toe om vectoren (arrays) en matrices te simuleren.
In REXX is het ook mogelijk te werken met arrays (vectoren of matrices). Ze worden '''stems''' genoemd.
 
Een stem bestaat uit een geldig symbool (token), gevolgd door een punt. Zo zijn '''jan.''' en '''p.''' geldige namen van stems.
Zoals voor andere variabelen zijn de basiswaarde van een stem zijn eigen naam in hoofdletters, dus ''JAN.'' en ''P.'' in voorbeeld.
Op deze manier is enkel een impliciete definitie gemaakt van een arrayverzameling variabelen. Er zullen pas elementen in voorkomen indien we waarden toekennen aan '''samengestelde variabelen'''.
 
Een '''samengestelde variabele''' is opgebouwd uit de naam van een stem en een symbool.
Regel 149 ⟶ 151:
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.
<br>In het geval van ''jan.hello'' komen we terug tot de fundamenten van REXX. ''hello'' is een variabele, die als waarde ''HELLO'' heeft (haar eigen naam in hoofdletters) gezien we er vooraf geen waarde aan hebben toegekend.
''JAN.HELLO'' is dus een element van de stem ''JAN.'' en zal de waarde ''Gisteren'' bevattenworden toegewezen.
<br>In het geval van ''jan.i'' zal REXX zien dat ''i'' de waarde 5 bevat, zodat het element nu ''JAN.5'' zal noemen en de waarde 17 zal bevatten.
<br>In het geval ''jan.i.j'' tenslotte hebben beide i en j een waarde gekregen en creërengeven we op die manierdus het element ''JAN.5.7'' met alsde waarde 12. Op deze manier kan men een matrix met 2 (of meer) dimensies simuleren, doch voor REXX zijn het allemaal elementen van de stem.
 
De dimensie van de stem wordt conventioneelbij conventie in het element 0 gezet, dus in '''jan.0''' in ons voorbeeld.
 
Noteer dat we met een eenvoudige assignatie zoals
piet. = 'Onbekend'
alle elementen van de stem waaraan niet ''expliciet'' een waarde is toegekend deze ''standaardwaarde'' (default waarde) zullen hebben. Dus zullen zowel ''PIET.7'' als ''PIET.Morgen'' zullen deeen waarde "Onbekend" hebben zolang er geen andere waarde aan wordt toegekend.
 
Merk tenslotte op dat deeen samengestelde variabele er zeer complex kan uitzien:
a="Dit is een hele volzin"
jan.a=17
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.