Estructuras de control condicionales Por defecto, las instrucciones de un programa se ejecutan secuencialmente:
El orden secuencial de ejecución no altera el flujo de control del programa respecto al orden de escritura de las instrucciones.
Sin emb
– Leer una variable entera, calcular su valor absoluto (en la misma variable) y mostrar el resultado
sí
n n2 Then If n1 > n3 Then m = n1 Else m = n3 End If Else If n2 > n3 Then m = n2 Else m = n3 End If End If MsgBox "El mayor de " & CStr (n1) & ", " & _ …
11
12
Condicionales
Ej10: Cond. cascada
Condicionales
Ej10: Cond. cascada
Ej10: Diagrama de Flujo
4. Ejemplo 10 • Título:
cmd10_Click
– Condicional en cascada
• Nombre
n1, n2, n3: entero m: entero
n1 ← LeeEntero n2 ← LeeEntero n3 ← LeeEntero
– cmd10_Click
• Descripción (Mismo problema que el ejemplo anterior) – Leer tres variables enteras, calcular cuál es la mayor de ellas y mostrar el resultado – Variante distinta de la solución
no
• Observaciones
no
– Condicional en cascada – Tras la alternativa Else inmediatamente viene una nueva condición, convirtiendose en ElseIf
n2 > n3
m ← n3
sí
n1 > n2 ∧ n1 > n3 sí m ← n2
m ← n1
Escribe n1, n2, n3, m
Único punto de fin
Fin 13
Condicionales
14
Ej10: Cond. cascada
Condicionales
Ej10: Codificación VB (I)
Ej10: Cond. cascada
Ej10: Versión anidada (II) …
Sub cmd10_Click() Dim s As String Dim n1 As Integer, n2 As Integer, n3 As Integer Dim m As Integer s = InputBox "Introduce primer número: " n1 = CInt (s) s = InputBox "Introduce segundo número: " n2 = CInt (s) s = InputBox "Introduce tercer número: " n3 = CInt (s) … MsgBox "El mayor de " & CStr (n1) & ", " & _ CStr (n2) & " y " & CStr (n3) & _ " es: " & CStr (m) End Sub
n3 = CInt (S)
If n1 > n2 And n1 > n3 Then m = n1 Else If n2 > n3 Then m = n2 Else m = n3 End If Dos puntos de fin End If MsgBox "El mayor de " & CStr (n1) & ", " & _ …
15
16
Condicionales
Ej10: Cond. cascada
Condicionales
Ej10: Versión en cascada (III)
5. Recomendaciones
5. Recomendaciones (I) • El cuerpo de las instrucciones condicionales normalmente irá sangrado dos espacios en cada anidamiento, a añadir al cuerpo del subprograma • Es por legibilidad, ya que Visual Basic lo entenderá de igual manera • Ejemplo:
… n3 = CInt (S)
If n1 > n2 And n1 > n3 Then m = n1 ElseIf n2 > n3 Then m = n2 Else Único punto de fin m = n3 End If
Sub ejemplo () . . . If a > b Then t = a a = b b = t End If End Sub
MsgBox "El mayor de " & CStr (n1) & ", " & _ …
17
Condicionales
5. Recomendaciones
Condicionales
5. Recomendaciones (II)
5. Recomendaciones
5. Recomendaciones (III)
• Para facilitar la programación es conveniente identificar conjuntos disjuntos y la condición que las distingue • Es mejor no volver a verificar condiciones excluidas • Ejemplo: If nota < 5 Then cal = "suspenso" ElseIf nota < 7 Then cal = "aprobado" ElseIf nota < 9 Then cal = "notable" Else cal = "sobresaliente" End If
18
• Cuando hay dos condiciones a las que queremos asociar la misma acción se agruparán en una sola
No volvemos a mirar si es mayor o igual a 5
sí
no c1
A1
sí A1
19
c2
no ...
sí A1
c1 ∨ c2
no ...
20
Condicionales
5. Recomendaciones
Condicionales
5. Recomendaciones (IV)
6. Resumen (I) •
• Cuando han de cumplirse dos condiciones simultaneas no pondremos dos instrucciones condicionales sino una sola con la conjunción de las condiciones
Condicional simple If condición Then
no
...
condición
sí
sí ...
End If no
6. Resumen
condición
no
...
sí c1
no
c2
sí
no
•
sí
c1 ∧ c2
Condicional doble If condición Then ...
A1
A1
Else
no condición
...
End If
...
sí
sí
no condición
...
...
...
21
Condicionales
22
6. Resumen
Condicionales
6. Resumen (II) •
6. Resumen (III)
Condicional anidada If condición Then ...
Else If condición Then
6. Resumen
no no
condición
...
condición
•
sí
If condición Then Else . . . End If
sí
...
Condicional simple incorrecta
...
. . .
•
Else
sí
no
no
condición
sí condición
...
Negar la condición y OK
...
. . .
End If End If
•
Condicional en cascada
• no
If condición Then
condición
Representaciones incorrectas (confusión con bucles)
sí
. . .
ElseIf condición Then
no
condición
sí
no
. . .
Else
...
...
...
. . .
condición
condición
sí
no ...
...
End If
...
23
sí ...
24
Condicionales
7. Relacionales
Condicionales
7. Operadores relacionales
7. Booleanas
7. Operaciones booleanas o lógicas
– Comparan valores y tienen resultado lógico True ó False
– Relacionan expresiones lógicas – El resultado es de tipo lógico (Boolean): True ó False