miércoles, 3 de enero de 2007

Capitulo 5 (condicionales: if / then Select Case)

Este capitulo lo dedicaremos a los condicionales, estos son If/ then y select case. Proceso a explicar.

Con los condicionales lo que haces el cambiar el flujo de ejecucion dependiendo del valor de una variable por ejemplo:

Private Sub Form_Load()
Show
Dim num As Integer

num = 2

If num = 2 Then
Print "num vale 2"
End If
End Sub

Aqui tiene su primer aparicion el if. Lo que esta haciendo en este caso es "decirle" al ordenador que si num vale 2 que haga lo que esta entre el then y el end if. Si num no vale dos simplemente saltea ese pedazo de codigo y continua desde el End If. La sintaxis del if es:

If [variable o variables] Then
[Intrucciones (si se cumple el if)]
End if

En el ejemplo anterior no tiene sentido usar el if ya que sabemos que num va a valer 2 siempre. Pero hay casos en que no sabemos cuanto va a valer este numero.
Por ejemplo, nosotros hicimos un juego. Este juego no lo pueden jugar personas menores a 16 años. Por consecuencia hacemos un TextBox en donde se escriba la edad del jugador. Si es menor a 16 aparecera un mensaje diciendo que no puede jugar y si es mayor o tiene 16 aparecera un mensaje que dice que puede jugar. El codigo quedaria asi:


Private Sub Form_Load()
Show

Label1 = "Tu edad es:"
Text1 = ""
Command1.Caption = "Aceptar"
End Sub

Private Sub Command1_Click()
If Text1 <16 style="color: rgb(0, 0, 153);">Else
Print "Tu puedes jugar a este juego"
End If
End Sub

No hace falta que muestre la ventana, creo que pueden imaginarla sencillamente. En este codigo podemos ver bastantes cosas nuevas. Como ven dice Text1 <16> mayor que
< que =" igual">= mayor o igual a
<> distinto que

Tambien en el codigo anterior vieron por primera vez la aparicion del Else, esto es por si el if no es cumplido se saltea lo que esta a continuacion del then hasta el else, y se cumple el contenido del else. En resumen Si la condicion se cumple se hace el then y si no se cumple se hace el else.

Tambien se puede hacer un if del siguiente modo

if a = 2 then Print "a vale 2"

Cuando el if tiene solo una instruccion no hace falta escribirla debajo del then y tampoco hace falta escribir el end if. Pero si la instruccion esta debajo del then tendra que haber un end if. Cuando se usa esto de escribir la instruccion al lado del then no podra haber un else. Para que haya else tendra que ser escrita obligatoriamente bajo el then.

Tambien es posible hacer que se cumplan varias condiciones para un if. Por ejemplo:


Private Sub Form_Load()
Show

Dim a As Integer
Dim b As Integer

a = 5
b = 2

If a = 5 And b = 2 Then Print "a vale 5 y b vale 2"
End Sub


En este codigo se esta haciendo lo que habia nombrado antes. Como solo hay una intruccion pude ponerla al lado del then y no hace falta un end if. Tambien como habran notado hay 2 condiciones que se deberan cumplir para que el if sea verdadero. a tiene que valer 5 y b tiene que valer 2. si alguna de estas dos variables no cumple con la condicion no sera cumplido el if, por lo tanto se pasara al else si es que lo hay.

Para que se cumpla el if cuando solo una de esas variables cumple la condicion se tiene que usar el Or. Quedaria asi:

If a = 5 Or b = 2 Then Print "a vale 5 o b vale 2"

Entonces, mientras una de las dos condiciones se cumpla el if sera verdadero.

Veamos otro ejemplo con otra cosa nueva, la ultima:


Private Sub Form_Load()
Show

Dim a As Integer

a = 5

If Not a = 5 Then Print "a vale 5 y b vale 2"
End Sub


Si ejecutan este codigo se daran cuenta que el if no es verdadero (osea no es cumplido). Esto se debe al Not delante del if. El not lo que hace es invertir la condicion de la variable contigua. En este caso a = 5. El if sera verdadero si a no vale 5. Otro ejemplo:

a = 5
b = 2
If Not a = 5 Or b = 2 Then Print "a vale 5 o b vale 2"

Aqui la condicion sera cumplida ya que aunque a no sea diferente de 5 b si vale 2 y como hay un or mientras alguna de las dos condiciones se cumpla el if sera verdadero.


Select Case


El select case es como un if. Con el if se puede hacer todo lo que se hace con el select case. Y ustedes se preguntaran -Entonces ¿para que sirve?. Hay veces en que una variable puede tener muchos valores y para cada valor se necesita una reaccion diferente. Para estos casos usamos el select case. Veamos un ejemplo (un poco largito):

Supongamos que queremos un programa que nosotros le decimos el numero del dia de la semana en que estamos y el nos diga que dia es, por ejemplo: nosotros le decimos 3, el nos dice miercoles. Asi seria el codigo:

Imagen hospedada por Subir-Imagenes.com

Private Sub Form_Load()
Label1 = "¿En que dia de la semana estamos?"
Label2 = ""
Command1.Caption = "Aceptar"
Text1 = ""
End Sub

Private Sub command1_click()
Select Case Text1
Case 1
Label2 = "Hoy es lunes"
Case 2
Label2 = "Hoy es martes"
Case 3
Label2 = "Hoy es miercoles"
Case 4
Label2 = "Hoy es jueves"
Case 5
Label2 = "Hoy es viernes"
Case 6
Label2 = "Hoy es sabado"
Case 7
Label2 = "Hoy es domingo"
End Select
End Sub


Perdon por un ejemplo tan raro pero no se me ocurria otra cosa. Si quisieramos hacer esto con if seria practicamente inentendible ya que deberia haber 7 if seguidos.

Primero para usar el Select case hay que escribir:

Select Case [Variable o control en cuestion]
Case [posible contenido de variable o control]
[intrucciones]
Case [posible contenido de variable o control]
[intrucciones]
End Select

Puede haber tantos case como ustedes deseen.

Paso a explicar el codigo, no linea a linea ya que no es necesario.

Case 1
Label2 = "Hoy es lunes"

Esto lo que hace es que si text1 vale 1 cambiara el contenido del label 2 por hoy es lunes. Creo que con esto entienden el resto.

Tambien es posible hacer esto:

Select Case a
Case "hola"
Print "hola"
Case "chau"
Print "Chau"
End Select

Con esto quiero decir que un case no tiene porque ser con numeros solamente.


Y con esto terminamos con los condicionales, no se olviden de practicar. Ya con esto pueden hacer programas algo mas "entretenidos".