Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
El Importante Uso De Banderas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Ejemplo Con Banderas Y Banderas Múltiples Shell General 5 Lunes, 11 May 2015, 09:28 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron