Para las condiciones usaremos las
sentencias condicionales.
Estas sentencias son las encargadas de
tomar una decisión dentro
de nuestro programa.
Para que se cumplan estas condiciones
usaremos los comparadores.
OPERADOR DE COMPARACIÓN |
SIGNIFICADO
|
> | Mayor que |
< | Menor que |
>= | Mayor o igual que |
<= | Menor o igual que |
INSTRUCCIONES DE COMPARACIÓN |
FUNCIÓN
|
AND |
Y
|
OR |
O
|
NOT |
Negación
|
Una sintaxis posible puede ser esta:
si variable1 condición variable2
entonces hacer
Las sentencias condicionales podemos
escribirlas en solo una linea,
cuando las sentencias son simples y en
un grupo cuando son mas complejas.
Ejemplo de condicionales simple:
Si Juan > 18 Entonces Mostrar “Juan
es mayor de edad”
IF Juan > 18 THEN PRINT “Juan es
mayor de edad”
Veamos un ejemplo erróneo
SI Juan>=18 Entonces Mostrar “Juan
mayor de edad”
Mostrar “Juan no es mayor de edad”
En el caso de que Juan no tenga 18 o
más. La primera condición no se cumple
y salta a la siguiente instrucción.
Pero ,¿ y si Juan tiene 18? .
Se cumpliría la condición y luego
continuaría con la siguiente
instrucción. Mostrando también que no
es mayor de edad.
¿ Como evitamos eso ?.
Usaremos una condicional doble. (Juan
tiene que estar cansado..:-D)
SI Juan>=18 Entonces
Mostrar “Juan mayor de edad”
SINO
Mostrar “Juan es menor de edad”
FIN DE SI
----código---
IF Juan>=18 Then
PRINT “Juan es mayor de edad”
ELSE
PRINT “Juan es menor de edad”
END
---código---
Ahora usaremos las instrucciones de
comparación:
Las dos condiciones se cumple.
SI JUAN=12 Y MARIA=12 Entonces
Mostrar “Juan y María tienen la
misma edad”
SINO
Mostrar “Juan y Maria no tienen la
misma edad”
FIN DE SI
---código---
IF Juan=12 AND Maria=12 THEN
PRINT “Juan y María tienen la
misma edad”
ELSE
PRINT “Juan y Maria no tienen la
misma edad”
ENDIF
---código---
Una de las condiciones se cumple.
Si Juan=12 Ó Maria=12 Entonces
Mostrar “Juan o Maria tienen 12
años”
SINO
Mostrar “Juan o Maria no tienen 12
años”
FIN DE SI
---código---
IF Juan=12 OR Maria=12 THEN
PRINT “Juan o María tienen 12 años”
ELSE
PRINT “Juan o María no tienen 12
años”
ENDIF
--código---
Ejemplo de negación:
Si Juan No es >=18 Entonces
Mostrar “Juan es menor de edad”
IF NOT (Juan>=18) Entonces Mostrar
“Juan no es mayor de edad”
Ahora hagamos una selección con
múltiples condiciones.
SI edad < 2 Y edad > 0 ENTONCES
PRINT “Bebé”
EN CAMBIO SI edad<12 Entones
PRINT “Niño”
EN CAMBIO SI edad< 18 Entones
PRINT “Joven”
SINO
PRINT “Adulto”
FIN DE SI
Como veis la “Y” es una forma de
decir que tiene que cumplirse
las dos condiciones y actúa como un
intervalo de valores.
---código---
IF edad < 2 AND edad > 0 THEN
PRINT “Bebé”
ELSE IF edad < 12 THEN
PRINT “Niño”
PRINT “Niño”
ELSE IF edad < 18 THEN
PRINT “Adulto”
ELSE
PRINT “Adulto”
ENDIF
---código---
Bien como veis. Cuando tenemos muchos
IF..ELSE IF,logramos
hacer código un poco confuso y
aumentamos considerablemente
el número de lineas.
Para solucionar esto y tener un código
mas claro usamos
La sentencia condicional múltiple
“SELECT CASE”
---código---
DIM edad AS INTEGER
SELECT CASE edad
CASE 0 TO 2
PRINT “Bebé”
CASE 2 TO 12
PRINT “Niño”
CASE 13 TO 17
PRINT “Joven” 'No lo toméis al
pie de la letra. ;-)
CASE 18
PRINT “Mayor de edad”
CASE ELSE
PRINT “Adulto"
END SELECT
---código---
Hemos usados unos rangos de valores.
Y en caso de que la edad sea mayor a
18, sera “adulto” la respuesta
Veis un código mucho mas claro de
entender y más estético.
Buenas tardes, me parece sencillo el tutorial... pero trato de hacer un ejercicio con esa sintaxis y no me funciona... mi código es el siguiente:
ResponderEliminarPublic Sub Button1_Click()
If TxBRespuesta.Text = "Círculo" And Imagen1.Picture = Picture.Load("~/Gambas3/ComoSeLlama/PNG/Circulo.png") Then 'No Funciona esto
Exec ["aoss", "espeak", "-ves", "-s150", "Excelente, ¡Es un Círculo!"]
Else
Exec ["aoss", "espeak", "-ves", "-s150", "Lo siento, no es una " & TxBRespuesta.Text]
Endif
End
Prueba a cambiar la línea con esto:
ResponderEliminarIf TxBRespuesta.Text = "Círculo" And Imagen1.Picture = Picture["~/Gambas3/ComoSeLlama/PNG/Circulo.png"]
No es una forma correcta. Mejor usar cadenas.
Ejemplo:
Public Sub Form_Open()
Dim lenguajeicono As New Collection
Dim respuestausuario As String
Dim nombredeimagen As String
'Asignamos como valor la ruta y el nombre de la imagen. La clave es el nombre del lenguaje
'Las imágenes en este caso están dentro del proyecto
lenguajeicono.Add(Application.Path &/ "gambas3.png", "Gambas")
lenguajeicono.Add(Application.Path &/ "python.png", "Python")
lenguajeicono.Add(Application.Path &/ "java.png", "Java")
lenguajeicono.Add(Application.Path &/ "c.png", "C")
'Asignamos a respuestausuario el nombre de un lenguaje
respuestausuario = "Gambas"
'Asignamos una clave de la colección lenguajeicono a la variable nombreimagen
nombredeimagen = "Gambas"
'Asignamos al control Picture la imagen para mostrarla en el formulario.
PictureBox1.Picture = Picture[lenguajeicono[nombredeimagen]]
'Es más sencillo comparar cadenas
If respuestausuario = nombredeimagen Then
Print "Correcto"
Else
Print "Error"
Endif
End
Como ves no es el lugar adecuado para una respuesta así.
Mejor en el foro de Gambas.