Programmeren in REXX/Functies deel 2: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
GuyDC (overleg | bijdragen)
Toevoegen functies
GuyDC (overleg | bijdragen)
Kleine aanpassingen
Regel 1:
{{Programmeren in REXX}}
In dit hoofdstuk behandelen we een tweede reeks functies vanstandaard REXX die standaard aanwezig zijnfuncties.
 
Het gaat om functies die toelaten getallen te formatteren of om te zetten, en functies die met datum en tijd werken.
Regel 7:
 
=NUMERIC - nauwkeurigheid van bewerkingen bepalen=
Alvorens dieper in te gaan op de numerieke functies die met getallen werken moeten we het bevel '''numeric''' nog onder de loep nemen.
'''numeric digits''' [uitdrukking]
of
Regel 14:
'''numeric form''' [formaat]
In deDe eerste vorm bepaalt het numeriek resultaat van de uitdrukking met hoeveelaantal cijfers waarmee getallen intern moeten worden opgeslagen. Standaard worden getallen metdaarvoor 9 significante cijfers opgeslagengebruikt, dus enkel getallen tussen 0,00000001 en 999.999.999 zijn bruikbaar. Wil men met grotere getallen kunnen werken dan moet uitdrukking leiden tot een getal groter dan 9.
<br id=DIGITS>Noteer dat met de functie '''digits()''' de actuele cijfergrootte kan worden opgevraagd.</br>
Standaard zijn dus enkel getallen tussen 0,00000001 en 999.999.999 bruikbaar. Wil men met grotere getallen kunnen werken dan moet uitdrukking leiden tot een groter getal dan 9.
Noteer dat met de functie '''digits()''' de actuele cijfergrootte kan worden opgevraagd.
 
Met '''numeric fuzz''' kunnen we opgevenbepalen tot op hoeveel decimalen significant zijn bijde berekeningen. De rest van de decimalenmoeten worden dus geïgnoreerduitgevoerd. We bepalen hiermee m.a.w. de nauwkeurigheid van de berekeningen.
<br id=FUZZ>De actuele decimale nauwkeurigheid kan worden opgevraagd met de functie '''fuzz'''. De "numeric fuzz" kan lokaal voor een subroutine worden veranderd.
De fuzz-waarde zal dus ook invloed hebben op eventuele afrondingen van getallen.</br>
 
Met '''numeric form''' tenslotte controleertcontroleren we de vorm van de exponentiële notatie van getallen. We kunnen kiezen voor eenhet ''formaat'':
*'''scientific''', waarbij slechts één significant cijfer voor de komma geplaatst wordt. Dit is de standaard;
*'''engeneering''', waarbij in het exponentieel deel de macht steeds een veelvoud van 3 is.
<br id=FORM>De actuele exponentvormexponent-vorm kan men opvragen met de functie '''form()'''.</br>
 
=Manipulatie van getallen=
De meeste functies en de bewerkingen die we hier beschrijven zullen tot fouten leiden indien de tokens geen geldig getal voorstellen. Daarom is de volgende functie om te kunnen anticiperen op dat soort fouten.
Daarom is deze allereerste functie heel nuttig om na te gaan of latere bewerkingen wel mogelijk zullen zijn.
<!------------------------------------------------->
==DATATYPE - controle op type gegevengegevens==
'''datatype'''(''string''[,''type''])
Als we geen ''type'' opgeven, dan geeftantwoord deze functie '''&#171;NUM&#187;''' als antwoord alsde ''string'' een geldig numeriek getal is. In het ander geval is het antwoord '''&#171;CHAR&#187;'''.
 
MetMaar dewe nukunnen volgendeook expliciet een ''typestype'' opgeven. Dan is het antwoord '''&#171;1&#187;''' (waar) als de string aanvan hetdat type voldoet.is, Andersanders krijgen we '''&#171;0&#187;''' (onwaar). Het vetjes gedrukte karakter is voldoende bij de opgave van het type controle:.
* '''A'''lphanumeric (enkel A-Z, a-z en/of 0-9 karakters),
* '''B'''inary (enkel 1 en 0 karakters),
Regel 46 ⟶ 45:
* he'''X'''adecimal (enkel 0-9 en/of A-F karakters)
 
DitHier zijnenkele voorbeelden:
say datatype("Abc") datatype("12") &#171;CHAR NUM&#187;
say datatype("Abc","N") datatype("Abc","M") &#171;0 1&#187;
say datatype('11101110','Binary') &#171;1&#187;
say datatype('01000001'b,'B') &#171;0&#187;
say datatype('3','Logical') datatype(12,'O') &#171;0 0&#187;
say datatype('01000001'b,'B') &#171;0&#187;
In het laatste geval is de ''binaire string'' gelijk aan '41'x, of letter &#171;A&#187; (in het ASCII) stelsel, en dat is geen combinatie van 1- en 0-karakters.
 
Met de gelijkwaardige types '''V'''ariable en '''S'''ymbol wordt getest of de string een syntactisch geldige naam is voor een REXX variabele, dus of hij kan gebruikt worden als linker lid van een assignatie.
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.