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