Condicionales. Evitar Condición Repetida


Objetivo: 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

Objetivo: 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.

Perfil MP  
Objetivo: 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


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.3965s (PHP: -81% SQL: 181%)
Consultas SQL: 45 - Debug off - GZIP Activado