Usar funciones
Anterior | Capítulo 5. Conceptos de GEL | Siguiente

## Usar funciones

Sintaxis:

    NombreFuncion(argumento1, argumento2, ...)

Ejemplo:

    Factorial(5)
    cos(2*pi)
    gcd(921,317)

Para evaluar una funcion introduzca el nombre de ésta seguido de los argumentos (si si los hay) entre paréntesis. Esto devolverá el resultado de aplicar la función a sus argumentos. El número de argumentos es, por supuesto, diferente para cada función.

Hay muchas funciones integradas, como `sin`, `cos` y `tan`. Puede usar la función integrada `help` para obtener una lista de todas las funciones integradas, o consultar la Capítulo 11, Lista de funciones GEL para obtener una lista completa..

### Usar completado con el tabulador

Puede usar completado con el tabulador para que Genius complete nombres de funciones. Pruebe a escribir las primeras letras del nombre y pulse `Tab`.

### Los nombres de las funciones son sensibles a mayúsculas.

Los nombres de las funciones son sensibles a la capitalización. Esto significa que las funciones `haceralgo`, `HACERALGO` y `HacerAlgo` son todas diferentes entre sí.

### Definir funciones

Sintaxis:

    function <identifier>(<comma separated arguments>) = <function body>
    <identifier> = (`() = <function body>)

El caracter ``` es el acento invertido y significa función anónima. Estableciéndoselo a una variable se define una función.

Una función toma cero o más argumentos separados por comas y devuelve el resultado del cuerpo de dicha función. Definir funciones propias es primordialmente una cuestión de conveniencia; un posible uso es tener un conjunto de funciones definidas en archivos GEL que Genius pueda cargar para tenerlas disponibles. Ejemplo:

    function addup(a,b,c) = a+b+c

por lo que `addup(1,4,9)` devuelve 14.

### Listas de argumentos de variables

Si se incluye `...` después del último argumento en la declaración de una función Genius permitirá pasar a dicha función un número de argumentos arbitrario. Si no se pasa ningún argumento el último tendrá el valor `null`. De lo contrario, será un vector que contiene todos los argumentos. Por ejemplo:

    function f(a,b...) = b

Por tanto `f(1,2,3)` devuelve `[2,3]`, mientras que `f(1)` devuelve `null`.

### Pasar funciones a funciones

En Genius es posible pasar una función como argumento de otra función. Esto se puede hacer usando «nodos de funciones» o funciones anónimas.

Si no se escriben los paréntesis después del nombre de la función, en lugar de evaluarse, la función se devolverá como un «nodo función». El nodo función se puede pasar a como argumento a otra función. Ejemplo:

    function f(a,b) = a(b)+1;
    function b(x) = x*x;
    f(b,2)

Para pasar funciones que no están definidas se puede hacer uso de la función anónima (consulte la “Definir funciones”). Es decir, cuando se quiere pasar una función sin dar un nombre. Sintaxis:

    function(<comma separated arguments>) = <function body>
    `(<comma separated arguments>) = <function body>

Ejemplo:

    function f(a,b) = a(b)+1;
    f(`(x) = x*x,2)

Devuelve 5.

### Operaciones con funciones

Algunas funciones permiten operaciones aritméticas y algunos argumentos de función tales como `exp` o `ln`, para operar en la función. Por ejemplo,

    exp(sin*cos+4)

devolverá una función que toma `x` y devuelve `exp(sin(x)*cos(x)+4)`. Esta funcionalidad es equivalente a escribir

    `(x) = exp(sin(x)*cos(x)+4)

Esta operación puede ser útil cuando se definen funciones rápidamente. Por ejemplo, para crear una función llamada `f` que realice la operación arriba descrita, simplemente puede escribir:

    f = exp(sin*cos+4)

También se puede usar al dibujar. Por ejemplo, para dibujar el cuadrado de un seno puede utilizar:

    LinePlot(sin^2)

### Aviso

No todas las funciones se pueden usar de este modo. Por ejemplo, cuando usa una función binaria las funciones deben aceptar el mismo número de argumentos.

Anterior | Subir | Siguiente
Usar variables | Inicio | Separador