Logo Desarrollo


Funciones

Es bastante probable que hayamos utilizado funciones nativas de un lenguaje alguna vez sin darnos cuenta, sin embargo también podemos definir funciones propias.
Cualquier función tendrá un nombre, unos argumentos de entrada, un código a ejecutar y unos parámetros de salida. Al igual que las funciones matemáticas, en programación nos permiten realizar diferentes operaciones con la entrada, para entregar una determinada salida que dependerá del código que escribamos dentro.
Prototipo de la definición de una función


PalabraReservada NombreDeLaFunción(Parámetros)
    CuerpoDeLaFunción
    return ValorDeRetorno


Algo que diferencia en cierto modo las funciones en el mundo de la programación, es que no sólo realizan una operación con sus entradas, sino que también parten de los siguientes principios:

Argumentos de entrada

Empecemos por la función más sencilla de todas. Una función sin parámetros de entrada ni valores de retorno.
Nota:
En los ejemplos el código está envuelto entre 2 comentarios que indican el inicio y el fin del código.


# Python, inicio del código
def di_hola():
    print("Hola")
# Fin del código


Hemos declarado o definido la función. El siguiente paso es llamarla con di_hola(). Lo que imprime es "Hola".


// JavaScript, inicio del código
function di_hola() {
    alert("Hola");
}
// Fin del código


Vamos a complicar un poco las cosas pasando un argumento de entrada. Ahora si pasamos como entrada un nombre, se imprimirá Hola y el nombre.


# Python, inicio del código
def di_hola(nombre):
    print("Hola ", nombre)

di_hola("Mateo")
# Fin del código

// JavaScript, inicio del código
function di_hola(nombre) {
    alert("Hola " + nombre);
}

di_hola("Mateo");
// Fin del código


Argumentos por posición

Los argumentos por posición o posicionales son la forma más básica e intuitiva de pasar parámetros. Si tenemos una función resta() que acepta dos parámetros, se puede llamar como se muestra a continuación.


# Python, inicio del código
def resta(a, b):
    return a-b

resta(5, 3)
# Fin del código


Al tratarse de parámetros posicionales, se interpretará que el primer número es la a y el segundo la b. El número de parámetros es fijo, por lo que si intentamos llamar a la función con solo uno, dará error. De la misma forma tampoco es posible usar mas argumentos de los que tiene la función definidos, ya que no sabría que hacer con ellos.

Instrucción return

Una instrucción return termina la ejecución de una función y devuelve el control a la función de llamada. La ejecución se reanuda en la función de llamada, en el punto que sigue inmediatamente. Una instrucción return puede devolver o no algún valor a la función de llamada.


# Python, inicio del código
def es_par(num):
    if num%2 == 0:
        return "Es par"
    else:
        return "Es impar"

resultado = es_par(3)
print(resultado)
# Fin del código


Argumentos y parámetros

En muchas ocasiones hablamos indistintamente de parámetros y argumentos para referirnos a los valores que “pasamos” entre paréntesis en una función.
Pero ¿Cuál es ladiferencia?
Una función puede tener cero o más parámetros. Así, los parámetros son los nombres que aparecen en la definición de una función. Por su parte, los argumentos son los valores que le pasamos (y que, por tanto, recibe) una función.


# Python, inicio del código
def saludo(nombre):
    print(nombre)

saludo("Mateo")
# Fin del código


En este ejemplo (nombre) es el parámetro de la función, que trabaja como una variable interna dentro del cuerpo, y que contiene como valor la cadena "Mateo", que es el argumento en la llamada a la función.

Parámetros opcionales

Tal vez queramos tener una función con algún parámetro opcional, que pueda ser usado o no dependiendo de diferentes circunstancias. Para ello, lo que podemos hacer es asignar un valor por defecto a la función. En el siguiente caso c valdría cero salvo que se indique lo contrario.


// JavaScript, inicio del código
function suma(a, b, c=0) {
    return a+b+c;
}

resultado = suma(5,5,3);
// Fin del código


En el ejemplo anterior el valor devuelto es 13. Sin embargo el parámetro c tiene un valor por defecto, por lo que la función puede ser llamada sin ese argumento.

suma(4,3)

En este ejemplo se devuelve "7".

También podemos asignar un valor por defecto a todos los parámetros, por lo que se podría llamar a la función sin ningún argumento de entrada.


// JavaScript, inicio del código
function suma(a=3, b=5, c=0) {
    return a+b+c
}

suma()
// Fin del código


Lo que devolvería "8". O haciendo uso de lo que hemos visto antes y usando los nombres de los argumentos. suma(a=5, b=3) #8


Las funciones tienen implementaciones particulares en los diferentes lenguajes. Argumentos variables, funciones anónimas, etcétera. Pero tocará revisarlo en cada uno de ellos.