Foros en Español > Documentación

[SAMPLE] Uso de rutinas locales

(1/4) > >>

SplinterGU:
Hace tiempo, mucho tiempo... implemente los CALL, GOTO, etc... intente buscar un ejemplo, pero no encontre... asi que aca pongo uno


--- Código: ---import "mod_say";

global
    int a, i;

begin
    a = 1;
    say(a);

    for (i = 0; i < 10; i++)
        call inc_a;
        say(a);
    end
    return;

inc_a:
    a = a + 1 ;
    return;

end

--- Fin del código ---

Beneficios de esto? son mucho mas rapidas que las funciones normales, consumen menos memoria, comparten las variables del proceso (en algunos casos puede ser ventaja y en otros desventajas)... y quizas otras mas que no se me ocurren...

warrior_rockk:
Entiendo que sin el primer return ejecutaría la línea de inc_a: por ser una especie de label ¿cierto?

Drumpi:
Anda, pues eso viene mejor que lo que hice con el motor de scroll tileado: coger el trozo de código que se repite, escribirlo en un fichero aparte, y poner una línea "include" donde debería ir esa "función" :D
¿Por casualidad recuerdas más o menos la versión en la que se implementó?

Por cierto, en Fenix se implementaron las "corutinas" (o las "rutinas", no recuerdo el nombre exacto, y seguro que lo ando confundiendo con alguno de C#). Se escribían como las funciones, pero si el compilador detectaba que no se usaban variables locales (y creo que globales), se almacenaba como corrutina, que es una función con menos carga a la hora de generarse en memoria y de ejecución más rápida. No sé si eso se trasladó a BennuGD.

SplinterGU:

--- Cita de: warrior_rockk en Marzo 14, 2016, 11:42:35 am ---Entiendo que sin el primer return ejecutaría la línea de inc_a: por ser una especie de label ¿cierto?

--- Fin de la cita ---

cierto

SplinterGU:

--- Cita de: Drumpi en Marzo 14, 2016, 04:40:57 pm ---Anda, pues eso viene mejor que lo que hice con el motor de scroll tileado: coger el trozo de código que se repite, escribirlo en un fichero aparte, y poner una línea "include" donde debería ir esa "función" :D
¿Por casualidad recuerdas más o menos la versión en la que se implementó?

Por cierto, en Fenix se implementaron las "corutinas" (o las "rutinas", no recuerdo el nombre exacto, y seguro que lo ando confundiendo con alguno de C#). Se escribían como las funciones, pero si el compilador detectaba que no se usaban variables locales (y creo que globales), se almacenaba como corrutina, que es una función con menos carga a la hora de generarse en memoria y de ejecución más rápida. No sé si eso se trasladó a BennuGD.

--- Fin de la cita ---

hace mucho se implemento.

las "corutinas" que dices, son procesos que se comportan como funcion... sigue igual, pero sigue siendo pesado...

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa