perl | Múltiples subrutinas

Requisito previo: Perl | Subrutinas o Funciones

Una función o subrutina de Perl es un grupo de sentencias que juntas realizan una tarea específica. En cada lenguaje de programación, el usuario quiere reutilizar el código. Entonces, el usuario pone la sección de código en función o subrutina para que no haya necesidad de escribir código una y otra vez.
En Perl, los términos función, subrutina y método son los mismos, pero en algunos lenguajes de programación se consideran diferentes. La palabra subrutinas se usa más en la programación de Perl porque se crea usando la palabra clave sub. Cada vez que hay una llamada a la función, Perl deja de ejecutar todo su programa y salta a la función para ejecutarla y luego regresa a la sección de código que estaba ejecutando anteriormente. Uno puede evitar el uso de la declaración de devolución.

Definición de subrutinas:

La forma general de definir la subrutina en Perl es la siguiente:

sub subroutine_name
{
    # body of method or subroutine
}

En Perl, un programa puede contener varias subrutinas con el mismo nombre sin generar un error, porque Perl permite escribir varias subrutinas con el mismo nombre a menos que tengan firmas diferentes . Esto se puede definir usando una aridad diferente para cada subrutina que tenga el mismo nombre.

Aridad de una subrutina: las subrutinas de Perl pueden tener el mismo nombre a menos que tengan un conjunto diferente de Aridad. La aridad se refiere al número de argumentos que contiene una subrutina. Estos argumentos pueden o no ser del tipo de datos diferente. Siempre que la aridad de las subrutinas difiera entre sí, el programa Perl no generará ningún error.

Uso de la palabra clave ‘multi’:
se pueden crear múltiples subrutinas en Perl usando la palabra clave ‘multi’. Esto ayuda en la creación de múltiples subrutinas con el mismo nombre.

Ejemplo:

multi Func1($var){statement};
multi Func1($var1, $var2){statement1; statement2;}

El uso de múltiples subrutinas es muy común en la creación de funciones integradas y la mayoría de los operadores en un lenguaje de programación como Perl. Esto ayuda a reducir la complejidad del programa al no usar nombres diferentes para cada subrutina. Independientemente de la declaración de código que se requiera, simplemente pase la cantidad de argumentos necesarios para esa función y el trabajo estará hecho. En este caso, el compilador elegirá la versión de la subrutina cuya firma de función coincida con la llamada para la ejecución.

Varios programas como Factorial de un número, serie de Fibonacci, etc. requieren más de una función para resolver el problema. El uso de múltiples subrutinas ayudará a reducir la complejidad de dichos programas.

Ejemplo 1: Suma de series de Fibonacci.

#!/usr/bin/perl
# Program to print sum of fibonacci series
  
# Function for $n = 0
multi Fibonacci_func(0)
{
    1; # returning 1
}
  
# Function for $n = 1
multi Fibonacci_func(1)
{
    1; # returning 1
}
  
# Recursive function to calculate Sum
multi Fibonacci_func(Int $n where $n > 1)
{
    Fibonacci_func($n - 2) + 
    Fibonacci_func($n - 1);
}
  
# Printing the sum 
# using Function Call
print Fibonacci_func(17);

Producción:

2584

El ejemplo anterior utiliza múltiples subrutinas para calcular la Suma de la serie de Fibonacci.
 
Ejemplo 2: factorial de un número

#!/usr/bin/perl
# Program to print factorial of a number
  
# Factorial of 0
multi Factorial(0)
{
    1; # returning 1
}
  
# Recursive Function 
# to calculate Factorial
multi Factorial(Int $n where $n > 0)
{
    $n * Factorial($n - 1); # Recursive Call
}
  
# Printing the result 
# using Function Call
print Factorial(15);

Producción:

3628800

En los ejemplos anteriores, el programa usa la palabra clave ‘multi’ para declarar múltiples subrutinas con el mismo nombre pero con diferente aridad.

Publicación traducida automáticamente

Artículo escrito por Abhinav96 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *