El Importante Uso De Banderas


Objetivo: El Importante Uso De Banderas
Buenos días!

En el ejemplo del "generador de lluvia". Se presentan dos formas de resolver el mismo problema.
El autor del libro lo resuelve con el uso de banderas pero también hace referencia que se puede
resolver con el uso de "else".

Este es como se hace en gambas, aprovechando el tiempo Unix.
La idea del problema es averiguar cuando una gota de lluvia pasa de la altura de la ventana para eliminarla del grupo
que forma "el chaparrón" o también si está sobre el personaje Mike. Cuando la gota de lluvia está sobre Mike
se debe almacenar ese momento de tiempo para luego compararlo con el momento que ya no le llueve encima.
Van a ser muchas las gotas que les va a caer.

Esto es con el uso de banderas.
i = 0
While i < unanube.chaparron.Length
unanube.chaparron[i].Mover()
unanube.chaparron[i].dibujar()
bandera = False
If unanube.chaparron[i].fueradepantalla() Then bandera = True
If unMike.TocadoPor(unanube.chaparron[i]) Then
bandera = True
unMike.tiempodeimpacto = ModuloTiempo.SegundosDesdeEpoch()
Endif
If bandera
unanube.chaparron.Remove(i)
i -= 1
Endif
i += 1
Wend


Y ahora este mismo problema pero sin el uso de banderas.
Lo hice rápidamente.

i = 0
While i < unanube.chaparron.Length
unanube.chaparron[i].Mover()
unanube.chaparron[i].dibujar()
If unanube.chaparron[i].fueradepantalla() Then
unanube.chaparron.Remove(i)
i -= 1
Else If unMike.TocadoPor(unanube.chaparron[i]) Then
unMike.tiempodeimpacto = ModuloTiempo.SegundosDesdeEpoch()
unanube.chaparron.Remove(i)
i -= 1
Endif
i += 1
Wend


¿ Qué os parece sin banderas ?. Se repite código. En las dos condiciones se debe eliminar una gota de lluvia.
Y es lo que se repite de esta forma.

Ahora ya sabemos que puede ser más practico el uso de banderas cuando en nuestra condicional se van
a repetir las mismas instrucciones. En este caso son dos condiciones distintas que acaban haciendo lo mismo
eliminar los objetos gotas de lluvia del array chaparrón que pertenece a la nube.

Saludos

Objetivo: Re: El Importante Uso De Banderas
Una cuestión que podría hacer:

En la condicional se observan dos opciones o condiciones.
- La gota de lluvia ha pasado de la ventana
- La gota de lluvia esta sobre Mike.

Bien. Cuando hablamos de crear una condicional múltiple.
¿ Debemos referirnos siempre a que algo cumpla una cosa u otra ó se puede considerar otro algo que cumpla otra condición ?.
En este caso:

If unanube.chaparron[i].fueradepantalla() Then
unanube.chaparron.Remove(i)
i -= 1
Else If unMike.TocadoPor(unanube.chaparron[i]) Then
....


He mezclado la condición del array de la nube y luego en el Else If no hice referencia a otra condición de la misma (unanube.chaparron[i])
y comprobé la condición del objeto Mike.

¿ Es eso una forma habitual de crear una condicional ?.

Saludos


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.5779s (PHP: -82% SQL: 182%)
Consultas SQL: 45 - Debug off - GZIP Activado