Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Condicionales. Evitar Condición Repetida
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Condicionales. Evitar Condición Repetida 
 
Hola!.

Supongamos el caso de que una vez cumplida una condición, no queremos que se vuelva
a repetir esa misma condición.

Un ejemplo muy simple y cotidiano. Saludar a un conocido, pero si lo volvemos a ver no le saludamos.
No cuento la condición de tiempo.  

Debes asignar un nombre a la variable nombre actual y llamar al procedimiento. Dos instrucciones
He repetido el nombre de María para que solo la salude una vez.

Private nombre_actual As String  
Private nombre_anterior As String

Public Sub Main()
  
  nombre_actual = "María"
  Dar_saludo(nombre_actual)
  
  nombre_actual = "María"
  Dar_saludo(nombre_actual)
  
  'nombre_actual = "Julio"
  'Dar_saludo(nombre_actual)
  
End

Public Sub Dar_saludo(ves_persona As String)
  
  If ves_persona <> nombre_anterior Then
    Print "Hola " & ves_persona
  Else
    Print "..."
  Endif
  nombre_anterior = ves_persona
  
End
 


Ahora vamos a recordar a las personas que hemos saludado.
Private nombre_actual As String  
Private personas_saludadas As New String[]

Public Sub Main()
    
  nombre_actual = "María"
  Dar_saludo2(nombre_actual)
  
  'nombre_actual = "María"
  'Dar_saludo2(nombre_actual)

  nombre_actual = "Julio"
  Dar_saludo2(nombre_actual)

  nombre_actual = "María"
  Dar_saludo2(nombre_actual)
  
End

Public Sub Dar_saludo2(ves_persona As String)
  
  If Not personas_saludadas.Exist(ves_persona) Then
    Print "Hola " & ves_persona
  Else
    Print "..."
  Endif
  personas_saludadas.Add(ves_persona)
  
End
 


Con el primer ejemplo he resuelto un problema en donde constantemente se leía el valor de una variable.
Este valor se repetía una y otra vez ya que no cambiaba. Y solo me interesaba ejecutar el mismo grupo de instrucciones
cada vez que cambiaba "esa variable". De la otra forma se ejecutaba el grupo de instrucciones siempre llegando a volver
loca la aplicación.

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: Condicionales. Evitar Condición Repetida 
 
La evaluación de si ya has visto o no a la persona la has puesto en la función de dar_saludo, no está mal (yo lo habría hecho en la función principal, pero vale). El problema es que añades la persona la saludes o no, con lo cual duplicas a los que ya has saludado.
Deberías colocar la adición al string[] justo después de dar el saludo, dentro del if.

 If Not personas_saludadas.Exist(ves_persona) Then
    Print "Hola " & ves_persona
    personas_saludadas.Add(ves_persona)
  Else
    Print "..."
  Endif
 
Para el ejemplo no pasa nada con que estén duplicadas, pues siguen existiendo, pero no parece correcto...

Saludos.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Condicionales. Evitar Condición Repetida 
 
Shordi:

Cierto, en el segundo ejemplo es como  has dicho.
Parece que lo hice por imitación del primero. Es que era el que me preocupaba
para solucionar el problema.

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 Imprimir Con 2 Impresoras Según Condició... CanihoJR General 8 Domingo, 23 Enero 2011, 13:48 Ver último mensaje
CanihoJR
No hay nuevos mensajes Buscar Registros Repetidos Con Alguna Cond... netking86 Bases de Datos 4 Viernes, 27 Abril 2012, 20:35 Ver último mensaje
netking86
No hay nuevos mensajes Reportes Condicionales Con Gb.report Dani26 Videotutoriales 0 Martes, 29 Julio 2014, 14:57 Ver último mensaje
Dani26
No hay nuevos mensajes Primos. Condicionales Shell General 4 Jueves, 30 Abril 2015, 12:21 Ver último mensaje
Shell
 

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