Sentencia RETURN

La sentencia RETURN finaliza el proceso actual de forma inmediata, como si se llegara al END de su BEGIN.

Esta sentencia en el código principal lo finalizará, pero si quedan procesos vivos éstos se seguirán ejecutando. Para terminar un programa y todos sus procesos se puede utilizar, por ejemplo, la función exit().

Un RETURN dentro de un proceso lo finalizará, matando a dicho proceso.

Ejemplo:
PROGRAM mi_juego;
BEGIN
    LOOP
        IF (key(_esc))
            RETURN;
        END
        FRAME;
    END
END


En este ejemplo, al pulsarse la tecla de escape (ESC) se ejecutará la sentencia RETURN, finalizando el programa.

Uso de RETURN para retornar un valor


Es posible construir procesos con un comportamiento similar a las funciones de otros lenguajes de programación, que reciban una serie de parámetros y devuelvan un valor. Por ejemplo, un proceso que reciba dos valores numéricos y devuelva el mayor de ambos.

Para ello, se debe utilizar esta sentencia con la siguiente sintaxis:

RETURN(<expresión>)

También es importante no utilizar la sentencia FRAME dentro del proceso, pues ésta retornará inmediatamente al proceso llamante. Cuando el compilador encuentra la sentencia FRAME dentro de un PROCESS lo cataloga directamente como proceso, descartando su posible uso como función.

Importante: Para poder retornar un valor con la sentencia RETURN después de haber ejecutado una o varias sentencias FRAME, se debe construir un bloque de tipo FUNCTION.


A continuación se muestra el ejemplo antes propuesto: una implementación de la función matemática max que devuelve el mayor de sus dos parámetros.

Ejemplo:
PROGRAM mi_juego;
BEGIN
    x=max(2, 3)+max(5, 4);
END
PROCESS max(a, b)
BEGIN
    IF (a>b)
        RETURN(a);
    ELSE
        RETURN(b);
    END
END


Tras ejecutarse este programa, la variable x del proceso principal valdrá 8 (3+5).


Nota: Por defecto, si se utiliza la sentencia RETURN sin la expresión entre paréntesis o la sentencia FRAME en un proceso, el valor de retorno del mismo será su código identificador de proceso.


Ver: Sintaxis