Rexx - Функции

Код в Rexx обычно делится на функции и подпрограммы. Использование функций помогает разделить код на множество логических единиц. Давайте подробно рассмотрим эти функции.

Определение функции

Синтаксис объявления функции следующий:

FunctionName: 
PARSE ARG arguement1, arguement2… arguementN 
Return value

Где,

  • FunctionName - Это имя, присвоенное функции.

  • PARSE ARG - Это ключевые слова в Rexx, которые используются для упоминания о том, что параметры передаются в функцию.

  • arguement1, arguement2… arguementN - Это аргументы, переданные функции.

  • Return value - Это значение, возвращаемое функцией.

Следующая программа представляет собой простой пример использования функций в Rexx.

/* Main program */ 
say add(5,6) 
exit 
add: 
PARSE ARG a,b 
return a + b

Следующие вещи следует отметить об указанной выше программе:

  • Мы определяем функцию с именем add, которая принимает 2 параметра a и b.

  • Функция использует оператор return для возврата суммы a и b.

  • Оператор выхода должен использоваться для обозначения конца основной программы.

Результат вышеупомянутой программы будет следующим:

11

Работа с аргументами

В Rexx есть специальные функции, которые можно заставить работать с аргументами. Давайте рассмотрим парочку таких аргументов.

аргумент

Этот метод используется для возврата количества аргументов, определенных для функции.

Syntax -

arg()

Parameters - нет

Return Value - Этот метод возвращает количество аргументов, определенных для функции.

Example -

/* Main program */ 
say add(5,6) 
exit 
add: 
PARSE ARG a,b 

say arg() 
return a + b

Output - Когда мы запустим указанную выше программу, мы получим следующий результат.

2 
11

arg (индекс)

Этот метод используется для возврата значения аргумента в определенной позиции.

Syntax -

arg(index)

Parameter -

  • Index - Индексная позиция возвращаемого аргумента.

Return Value - Этот метод возвращает значение аргумента в определенной позиции.

Example -

/* Main program */ 
say add(5,6) 
exit 
add: 
PARSE ARG a,b 

say arg(1) 
return a + b

Output - Когда мы запустим указанную выше программу, мы получим следующий результат.

5 
11

Рекурсивные функции

Рекурсивная функция или процедура - это функция, которая вызывает сама себя. Любая рекурсивная функция может быть закодирована традиционным нерекурсивным способом (или итеративно), но иногда рекурсия предлагает лучшее решение проблемы. Не все языки программирования поддерживают рекурсию; Рекс делает.

Давайте посмотрим на пример известной факториальной программы, использующей рекурсивные функции в 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 )

Результат вышеупомянутой программы выглядит следующим образом -

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