Rexx - Funções
O código em Rexx é normalmente dividido em funções e sub-rotinas. O uso de funções ajuda a segregar o código em muitas unidades lógicas. Vamos examinar essas funções em detalhes.
Definindo uma função
A sintaxe de uma declaração de função é a seguinte -
FunctionName:
PARSE ARG arguement1, arguement2… arguementN
Return value
Onde,
FunctionName - Este é o nome atribuído à função.
PARSE ARG - São palavras-chave no Rexx que são usadas para mencionar que os parâmetros estão sendo passados para a função.
arguement1, arguement2… arguementN - Esses são os argumentos passados para a função.
Return value - Este é o valor retornado pela função.
O programa a seguir é um exemplo simples de como as funções são usadas no Rexx.
/* Main program */
say add(5,6)
exit
add:
PARSE ARG a,b
return a + b
As seguintes coisas devem ser observadas sobre o programa acima -
Estamos definindo uma função chamada add que aceita 2 parâmetros a e b.
A função usa a instrução return para retornar a soma de a e b.
A instrução de saída deve ser usada para significar o fim do programa principal.
A saída do programa acima seria a seguinte -
11
Trabalhando com Argumentos
No Rexx, existem funções específicas que podem ser feitas para trabalhar com argumentos. Vejamos alguns desses argumentos.
arg
Este método é usado para retornar o número de argumentos definidos para a função.
Syntax -
arg()
Parameters - nenhum
Return Value - Este método retorna o número de argumentos definidos para a função.
Example -
/* Main program */
say add(5,6)
exit
add:
PARSE ARG a,b
say arg()
return a + b
Output - Quando executarmos o programa acima, obteremos o seguinte resultado.
2
11
arg (índice)
Este método é usado para retornar o valor do argumento na posição específica.
Syntax -
arg(index)
Parameter -
Index - Posição do índice do argumento a ser retornado.
Return Value - Este método retorna o valor do argumento na posição específica.
Example -
/* Main program */
say add(5,6)
exit
add:
PARSE ARG a,b
say arg(1)
return a + b
Output - Quando executarmos o programa acima, obteremos o seguinte resultado.
5
11
Funções Recursivas
Uma função ou rotina recursiva é aquela que chama a si mesma. Qualquer função recursiva pode ser codificada de forma tradicional não recursiva (ou iterativamente), mas às vezes a recursão oferece uma solução de problema melhor. Nem todas as linguagens de programação suportam recursão; Rexx, sim.
Vamos ver um exemplo do famoso programa fatorial usando funções recursivas no Rexx.
/* Main program */
do n = 1 to 5
say 'The factorial of' n 'is:' factorial( n )
end
return
/* Function to get factorial */
factorial : procedure
n = arg(1)
if n = 1 then
return 1
return n * factorial( n - 1 )
O resultado do programa acima é o seguinte -
The factorial of 1 is: 1
The factorial of 2 is: 2
The factorial of 3 is: 6
The factorial of 3 is: 24
The factorial of 3 is: 120