Variables.Limitar A Un Rango De Valores

Variables.Limitar A Un Rango De Valores
Artículo
Citar    Descargar mensaje  
Mensaje Variables.Limitar A Un Rango De Valores 
 
Hola Comunidad!.

Aunque un poco liado,como de costumbre.Estuve dándole vueltas a la variables.
Veréis.Suponer que tenemos una variable de cadena y queremos limitar sus valores a unos valores predefinidos o constantes.

Ejemplos:

Figuras={triangulo,cuadrado,trapecio,circulo}
Colores={rojo,amarillo,verde}

¿ Cual seria la mejora forma de hacerlo ?. Bien.Estuve repasando muy poco el tema del tipo Enumerado.
Lo vimos en su día.Fabian explico un ejemplo con los días de la semana que iban cambiando.
Aparentemente hoy en día no se le da tanta importancia al tipo de enumerados, pero creo que esto es un error.

También aplique un array  o conjunto que contiene una serie de valores con un indice.

En el caso de las figuras hice este ejemplo:

Public Sub Ejemplo1()
Dim grupovalores As String[] = ["triangulo","cuadrado","trapecio", "circulo"]
Dim tomavalor As String
Dim x As Integer
Dim y As Integer

Print "Escoge un valor para asignar a la variable:"
Do While tomavalor = ""
  'Damos las opciones a escoger
  For x = 0 To grupovalores.Count - 1
    Print x & " - la variable contendra " & grupovalores[x]
  Next
  Input y
  'Limitamos los valores del 0 al 3  
  If y > 0 And y <= 3 Then
    tomavalor = grupovalores[y]  
  Else
    Print "Escoge un valor para asignar a la variable:"
  Endif
Loop
Print "La variable contiene " & tomavalor    
  
End
 


Y en el caso de un tipo enumerado.Uso un ejemplo con los colores de un semáforo.

Defino una clase que contendrá los tres colores.

Clase EnumSemaforo

Public Enum rojo, amarillo, verde
 


Y en el FMain Tengo:

Public Sub ejemploSemaforo()
  Dim semaforo As New EnumSemaforo
  Dim colorsemaforo As Byte
  
  'Desde el punto de vista del peatón.
  
  colorsemaforo = semaforo.verde

  Select Case colorsemaforo
      Case 0
        Print "Rojo - Prohibido el paso"
      Case 1
        Print "Amarillo - Precaución"
      Case 2
        Print "Verde - El peatón puede cruzar"
  End Select
      
End
 


¿ Que harías vosotros ?.¿ Que creéis que es lo mas adecuado ?.
Dado los lenguajes nuevos tenemos unas posibilidades que los de antes no disponían.

Si queréis hacerlo desde un punto mas primitivo a uno mas moderno usando clases, mejor.

P.d, viendo el ejemplo del semáforo se pueden cambiar cosas.

Saludos.



 
última edición por Shell el Lunes, 10 Septiembre 2012, 12:39; editado 1 vez 
Shell - Perfil MP  
Shell [ Lunes, 10 Septiembre 2012, 11:22 ]


Variables.Limitar A Un Rango De Valores
Comentarios
Citar    Descargar mensaje  
Mensaje Re: Variables.Limitar A Un Rango De Valores 
 
Shell:

Usando clases queda muy curioso.


Saludos



 
jsbsan - Perfil MP  
jsbsan [ Lunes, 10 Septiembre 2012, 15:56 ]
Citar    Descargar mensaje  
Mensaje Re: Variables.Limitar A Un Rango De Valores 
 
Julio:

jsbsan escribió: [Ver mensaje]


Usando clases queda muy curioso.



Ademas es curioso por que puedes hasta jugar con esos valores y crear un valor aleatorio con ellos.
El problema es que RND siempre usa uno mas, Si es un número entre 1 y 6:

INT(RND(1,7))

Entonces con los colores del semáforo, ocurre que el verde nunca saldría.

  
   colorsemaforo = Int(Rnd(semaforo.rojo, semaforo.verde))

 


Lo que me fije que en vez de usar

Case 0, Case 1, podríamos poner:

Case colorsemaforo.rojo...etc

Pero el código se alarga algo mas.Aunque resulta didáctico.

Saludos



 
Shell - Perfil MP  
Shell [ Martes, 11 Septiembre 2012, 08:40 ]
Citar    Descargar mensaje  
Mensaje Re: Variables.Limitar A Un Rango De Valores 
 
Shell:

Puede ser interesante usarlo con Choose ( http://cursogambas.blogspot.com.es/2012/08/choose.html )

Saludos



 
jsbsan - Perfil MP  
jsbsan [ Martes, 11 Septiembre 2012, 09:46 ]
Citar    Descargar mensaje  
Mensaje Re: Variables.Limitar A Un Rango De Valores 
 
Julio:

Ok, apuntado.Aunque resulta algo mas confusa.

Saludos.



 
Shell - Perfil MP  
Shell [ Martes, 11 Septiembre 2012, 12:45 ]
Mostrar mensajes anteriores:    
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


 


   

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.1223s (PHP: -25% SQL: 125%)
Consultas SQL: 24 - Debug off - GZIP Activado