next up previous
Next: Los Actores Up: Interacción Previous: Interacción

Loop de eventos

Es común en todas las bibliotecas gráficas la existencia del llamado loop de eventos (event loop). La activación de este último implica que el programador desea detener el curso secuencial de la aplicación en ese punto, para transferir el control de las instrucciones al usuario.
En muchas aplicaciones la sucesión de operaciones está estáticamente establecida o está determinada por un conjunto información que puede asumirse completamente conocido al comienzo de la aplicación. Leer una imagen de disco, calcular su histograma y verlo en la pantalla es un ejemplo de este tipo de aplicaciones en las cuales se puede prescindir de cualquier interacción. El pseudocódigo correspondiente sería:
Imagen imagen = LeerImagen( "archivo" )
Histograma histograma = CalcularHistograma( imagen )
MostrarHistograma( histograma )

En otras aplicaciones estas hipótesis no son válidas.

Figure 3: Event Loop
\includegraphics[scale=0.4]{EventLoop.eps}


En un caso sencillo supongamos que en el sistema de control de pagos de una empresa existen tres funciones: void credito(char * nombre, int monto), void pago(char * nombre, int monto) y void reporte() cuyas acciones modifican el estado de este de la siguiente forma: Como es evidente que la información en este caso no es conocida al momento de desarrollar el programa, un mecanismo para ingresar la misma mientras la aplicación esté activa es necesario. Es en este punto donde entra el loop de eventos que es el responsable de detectar que el usuario a elegido cierto componente (generalmente gráfico) que está asociado a alguna acción (una función). En este caso el control es transferido a la función mientras esta se ejecuta para volver una vez esta finalice al event loop como puede verse en forma esquemática en Fig.3. La ausencia del esquema secuencial clásico puede redundar en programas complejos y son necesarios mecanismos de alto nivel para facilitar la programación.


next up previous
Next: Los Actores Up: Interacción Previous: Interacción
Claudio Risso 2001-06-02