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.