Programmeren in REXX/Voorbeeldprogramma's: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Vangelis (overleg | bijdragen)
sub
GuyDC (overleg | bijdragen)
Aanpassingen
Regel 1:
{{Programmeren in REXX}}
 
==Letterlijke tekst==
==Maximum van twee getallen==
Zonder PARSE wordt de tekst omgezet naar hoofdletters.
{{Code| | Taal= REXX | Titel= echoMaximum.rex | Code= <pre>
/* echo.rexMaximum berekenen */
ok=0
PARSE PULL tekst
do while \ok
DO WHILE tekst \== "" /* '\==' betekent 'niet gelijk aan' */
say "Geef me twee getallen gescheiden door een komma"
SAY tekst
parse pull a ',' b
PARSE PULL tekst
if a<>"" & b<>"" & datatype(a,'N') & datatype(b,'N') then ok=1
END
end
say max(a,b) "is het grootste van" a "en" b
exit 0
</pre> }}
 
==Waardeconversie==
==Omwisselen van twee variabelen==
{{Code| | Taal= REXX | Titel= omwisselingconversies.rex | Code= <pre>
/* omwisselingconversies.rex */
ok=0
SAY "Geef me twee getallen"
do while \ok
PULL A
say "Geef een waarde die moet worden omgezet"
PULL B
parse pull waarde
X = A
if waarde<>"" then ok=1
A = B
end
B = X
/* Indien 1 enkel teken: omzetting (met ASCII tabel) */
SAY "Omgewisseld:" A B
if length(waarde)=1 then do
say '['waarde'] ASCII -> Decimaal = ' c2d(waarde)
say '['waarde'] ASCII -> Hexadecimaal = ' c2x(waarde)
end
/* Indien decimaal getal */
if datatype(waarde,'N') then do
say '['waarde'] Decimaal -> ASCII = ' d2C(waarde)
say '['waarde'] Decimaal -> Hexadecimaal = ' d2x(waarde)
end
/* indien hexadecimaal getal */
if datatype(waarde,'X') then do
say '['waarde'] Hexadecimaal -> ASCII = ' x2C(waarde)
say '['waarde'] Hexadecimaal -> Decimaal = ' x2d(waarde)
end
exit
</pre> }}
 
==Antwoordvalidatie==
==Als ... dan ...==
Wachten op een geldig antwoord.
Maximum van 2 getallen:
{{Code| | Taal= REXX | Titel= maximum_van_tweekoffievraag.rex | Code= <pre>
/* maximum_van_tweeKoffievraag.rex */
do while \(koffie="J" | koffie="N")
SAY "Geef me twee getallen"
say "Wil je koffie ?"
PULL getal1
parse upper pull koffie
PULL getal2
end
IF (getal1 > getal2)
</pre> }}
THEN
 
SAY getal1 "is het grootste"
==Gebruik van subroutines==
ELSE
{{Code| | Taal= REXX | Titel= oppervlakte_donut.rex | Code= <pre>
SAY getal2 "is het grootste"
/* Oppervlakte_donut.rex */
ok=0
do while \ok
say 'Geef de grote en kleine straal van de donut'
parse pull r1 r2 .
if r1<>"" & r2<>"" & datatype(r1,"N") & datatype(r2,"N") then ok=1
end
say "De oppervlakte van de donut is" area(r1) - area(r2)
exit
 
area: procedure
parse arg straal
return 3.14 * straal**2
</pre> }}
 
Regel 60 ⟶ 91:
</pre> }}
 
==Gebruik van een stem==
==Waardeconversie==
{{Code| | Taal= REXX | Titel= omzetting.rex | Code= <pre>
/* omzetting.rex */
SAY "Geef om te zetten waarde."
PULL n
/* Indien 1 teken: omzetting ervan uitgaande dat het ASCII is */
IF LENGTH(n) = 1
THEN DO
SAY '['n'] ASCII -> Decimaal = ' c2d(n)
SAY '['n'] ASCII -> Hexadecimaal = ' c2x(n)
END
/* Indien decimaal getal */
IF DATATYPE(n,'N')
THEN DO
SAY '['n'] Decimaal -> ASCII = ' d2C(n)
SAY '['n'] Decimaal -> Hexadecimaal = ' d2x(n)
END
/* indien zestiENDelig getal*/
IF DATATYPE(n,'X')
THEN DO
SAY '['n'] Hexadecimaal -> ASCII = ' x2C(n)
SAY '['n'] Hexadecimaal -> Decimaal = ' x2d(n)
END
</pre> }}
 
==Antwoordvalidatie==
Wachten op een geldig antwoord.
{{Code| | Taal= REXX | Titel= koffievraag.rex | Code= <pre>
/* Koffievraag.rex */
DO WHILE \(koffie="J" | koffie="N")
SAY "Wil je koffie?"
PULL koffie
END
</pre> }}
 
==Herhalen==
{{Code| | Taal= REXX | Titel= herhaling.rex | Code= <pre>
/* herhaling.rex */
DO 3
SAY x
END
 
DO i = 1 to 10
SAY i
END
 
DO j = 1 to 2
DO k = 1 to 3
SAY "j=" j "k=" k
END /*k*/
END /*j*/
SAY "j=" j "k=" k
</pre> }}
 
==Meerdere mogelijkheden==
{{Code| | Taal= REXX | Titel= weekdagen.rex | Code= <pre>
/* Weekdagen.rex */
SAY "Geef me volgnummer van de dag"
PULL D
SELECT
WHEN D = 1 THEN SAY "maandag"
WHEN D = 2 THEN SAY "dinsdag"
WHEN D = 3 THEN SAY "woensdag"
WHEN D = 4 THEN SAY "DOnderdag"
WHEN D = 5 THEN SAY "vrijdag"
OTHERWISE SAY "weekeinde"
END
</pre> }}
 
==Subroutines==
{{Code| | Taal= REXX | Titel= oppervlakte_DOnut.rex | Code= <pre>
/* Oppervlakte_DOnut.rex */
SAY "Grootte van de grote straal?"
PULL r1
SAY "Grootte van de kleine straal?"
PULL r2
opp = area(r1) - area(r2)
SAY opp
 
EXIT
 
area:
arg r
cirkel = 3.14 * r * r
return cirkel
</pre> }}
 
histogram:
{{Code| | Taal= REXX | Titel= lijnen.rex | Code= <pre>
/* lijnen.rex */
CALL lijn 5
CALL lijn 1
CALL lijn 33
EXIT
 
lijn:
arg lengte
SAY COPIES('-',lengte)
return
</pre> }}
 
De speciale variabele RESULT:
{{Code| | Taal= REXX | Titel= product.rex | Code= <pre>
/* product.rex */
CALL product 3, 4
SAY "=" result /* het resultaat staat in de speciale variabele 'RESULT'*/
 
SAY product(4,5)
 
EXIT
 
product:
arg eerste, tweede
return eerste * tweede
</pre> }}
 
==Gegevens in een rij==
{{Code| | Taal= REXX | Titel= stad.rex | Code= <pre>
/******************** stad.rex *********************/
stad. = "onbekENDonbekend" /* Standaardwaarde zetten */
stad.1000="Brussel"
stad.2000="Antwerpen"
Regel 186 ⟶ 101:
stad.9000="Gent"
 
do while code<>""
SAY "Geef uw postcode"
say 'Geef een postcode (4 cijfers), of blank om te eindigen'
SAY "(4 cijfers)"
parse pull code
PULL postcode
IF if stad.postcodecode <>\= stad. then
say "U woont in" stad.postcode "!"
THEN
SAY else say "UDe woontpostcode dus inis" stad.postcode "!"
end
ELSE
exit
SAY "De postcode is" stad.
</pre> }}
Dit werktkan ook omgekeerd:
{{Code| | Taal= REXX | Titel= postcode.rex | Code= <pre>
/* postcode.rex */
postcode. = "onbekENDonbekend"
postcode.Brussel=1000
postcode.Antwerpen=2000
Regel 205 ⟶ 120:
postcode.Gent=9000
 
SAYdo "In welkewhile stad woont u?<>""
say 'Geef de naam van uw stad, of blank om te eindigen'
PULL stad
parse pull stad
IF postcode.stad <> postcode.
if postcode.code \= postcode. then
THEN
SAY "De postcode van" stad say "isU woont in" postcode.stad "!"
else say "De postcode is" postcode.
ELSE
end
SAY "De postcode is" postcode.
exit
</pre> }}
 
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.