Las estructuras de decisión permiten tomar distintos cursos de acción dependiendo de si se cumple o no una condición. Existen diferentes tipos como if-then-else, if anidados y case que permiten evaluar una o más condiciones para ejecutar instrucciones.
2. Decisión
Generalmente cuando se nos plantea un problema nos
vemos ante la necesidad de tomar una o más
decisiones.
A veces hay que escoger entre una o mas alternativas
posibles
Los problemas que resolvemos con el computador no
se escapan de esta situación
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
3. Que son Estructuras de Decisión
Son estructuras de selección que permiten tomar
distintos cursos de acción de acuerdo a una condición.
Esta condición viene dada por una expresión lógica
Si (condición) entonces
acción 1
sino
acción 2
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
4. Tipos de Estructuras de Decisión
If-Then-Else (3 formas)
If-Then
If-Then Else
If Anidados
Case
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
5. Decisión simple
Se ejecuta un grupo de instrucciones en caso de cumplirse
una sola condición (valor booleano verdadero)
Sintaxis:
If condición Then
Instrucciones
End if
Son palabras claves
Cierra el bloque a ejecutar si la condición es Verdadera
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
6. Decisión simple
se ejecutan si la condición es
If condición Then
Verdadera
Instrucciones
En caso contrario (si la condición es
End if Falsa) continúa el flujo del
Instrucciones programa con la instrucción
inmediatamente después del End If
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
7. Ejemplo de decisión simple
Por ejemplo: Leer los datos de una persona e decir el
nombre si y solo si es del sexo masculino.
Option Explicit
Dim Nombre As String, Sexo As String
Sub Principal( )
Nombre = InputBox ("Cuál es tú nombre?", "Nombre")
Sexo = InputBox ("Escriba M (Masculino) o F (femenino)", "Sexo")
If Sexo = "M" Then
Sheets(“Salida”).Cells(2, 1) = Nombre
End If
End Sub
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
8. Decisión compuesta
Se ejecuta un grupo de instrucciones en caso de cumplirse
una condición y otro en caso contrario.
Sintaxis:
If condición Then
Instrucciones1
Else
Instrucciones2
End if
Son palabras reservadas
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
9. Decisión compuesta
If condición Then Se ejecutan si la condición es
Instrucciones1 Verdadera
Else
Instrucciones2
Se ejecutan en caso contrario, es
decir, si la condición es Falsa
End if
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
10. Ejemplo de decisión compuesta
Option Explicit
Dim Nombre As String
Sub principal ( )
Nombre = InputBox(“Cuál es tú nombre?”, “Nombre")
If Nombre = “Pepe” Then
MsgBox (“El nombre real es José”)
Else
MsgBox (“Tiene otro nombre”)
End If
End Sub
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
11. Decisión anidada
Muchas veces tenemos situaciones donde hay más de
una condición a tomar en cuenta.
Una forma de expresarlo es con una Decisión Anidada.
Sintaxis:
If condición1 Then
If condición2 Then
Recuerda usar el tabulador
Instrucciones1
(sangría) para darle
Else mayor visualización a
Instrucciones2 este estructura
End If
Else
Instrucciones3
End If
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
12. Decisión anidada
Si la condición es Verdadera, pregunta
por la siguiente condición
If condición1 Then
Se ejecutan si la
If condición2 Then condición1 y la
condición2 son
Instrucciones1 Verdaderas
Else
Instrucciones2
Se ejecutan si la condición1 es
End If Verdadera y la condición2 es
Else Falsa
Instrucciones3
Se ejecutan si la condición1 es
End If Falsa
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
13. Ejemplo de decisión anidada
Option Explicit
Dim Edad As String
Sub principal( )
Edad = InputBox("Cuál es tu edad?", “Edad")
Importante! Estos If anidados son Call VerificarEdad
equivalentes a los siguientes If anidados:
If Edad < 18 Then
If Edad < 18 and Edad > 12 Then If Edad > 12 Then
MsgBox (“Eres un adolescente”)
MsgBox (“Eres un adolescente”)
Else
If Edad <= 12 Then Else
MsgBox (“Eres un niño”) MsgBox (“Eres un niño”)
Else End If
MsgBox (“Eres mayor de edad”) Else
End If
MsgBox (“Eres mayor de edad”)
End If
End If
End Sub
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
14. Decisión anidada
Otra forma de decisión anidada es la siguiente:
If condición1 Then
If condición2 Then
La estructura de
Instrucciones1 Estos If anidados son equivalentes a los siguientes:
la decisión
anidada Else
If condición1 And condición2 Then
dependerá del
Instrucciones2 Instrucciones1
buen análisis End If
que se realice End If
del problema. If condición1 And Not(condición2) Then
Else
Instrucciones2
If condición3 Then End If
Instrucciones3 If Not(condición1) and condición3 Then
Instrucciones3
Else End If
Instrucciones4
If Not(condición1) and Not(condición3) Then
End If Instrucciones4
End If
Departamento de Programación y End If
Tecnología Educativa mrodriguez@unimet.edu.ve
15. Decisión Case
En esta estructura de decisión, se consideran una serie de
valores alternativos para una misma expresión. La condición
se evalúa en diferentes valores hasta encontrar el que coincide.
Para cada valor se realizan instrucciones diferentes.
Importante! Este Case es
Select Case expresión equivalente a los siguientes If
anidados:
Case valor1
Instrucciones1 If expresión = valor1 Then
Case valor2 Instrucciones1
Else
son palabras Instrucciones2 If Expresión = valor2 Then
reservadas Case valor3 Instrucciones2
Else
Instrucciones3
If expresión = valor3 Then
End Select Instrucciones3
End If
End If
End If
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
16. Ejemplo de decisión Case
(Variable tipo String)
„ En este ejemplo se evalúa el estado civil de la persona
Option Explicit
Dim EdoCiv As String
Dim Solteros as Integer
Importante! Este Case es equivalente a los
siguientes If anidados: Dim Casados as Integer
Dim Otros as Integer
If EdoCiv = “s” or EdoCiv = “S” Then
Solteros = Solteros + 1 Sub principal( )
Else
EdoCiv = InputBox(“Cuál es tu estado civil?”, “Estado Civil”)
If EdoCiv = “c” or EdoCiv = “C” Then
Casados = Casados + 1 Call VerficaEdoCivil
Else Select Case EdoCiv
If EdoCiv = “d” or EdoCiv = “D” or Case “s” , “S”
EdoCiv = “o” or EdoCiv = “O” Then Solteros = Solteros + 1
Otros = Otros + 1 Case “c”, “C”
Else Casados = Casados + 1
MsgBox (“Error”) Case “d” , “o” , “D”, “O” Entra por esta opción
End If Otros = Otros + 1 solamente si no
End If Case Else se cumplen
End If MsgBox (“Error”) ninguna de las
End Select anteriores
End Sub
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
17. Ejemplo de decisión Case
(Variable tipo Integer)
„En este ejemplo se envía un mensaje indicando a que grupo de
„edad pertenece la persona.
Importante: Cuando el valor viene dado por
Option Explicit una condición (<,>,=, etc.) automáticamente
Dim Edad As Integer se coloca la palabra clave “Is”
Sub principal( )
Edad = InputBox(“Cuál es tu edad?”, “Edad”)
Call VerificarEdad
Select Case Edad
Es importante considerar que
Case Is >=65
siempre entra por la primera
MsgBox(“Usted es de la Tercera edad”) opción verdadera:
Case Is >=18
MsgBox(“Usted es mayor de edad”)
Si Edad es 70 entrará por la primera
Case Is >12 opción y termina
MsgBox(“Usted es adolescente”)
Case Else Si Edad es 40 entrará por la
MsgBox (“Usted es un niño”) segunda opción y termina
End Select
End Sub Si Edad es 15 entrará por la tercera
opción y termina
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
18. Uso de decisión Case
Ventajas:
Utiliza menos instrucciones que las instrucciones
equivalentes en un If anidado
Se evitan errores al no tener que hacer coincidir los If con
los Else y End If.
Más fácil de visualizar
Desventajas:
Solamente se puede utilizar cuando la expresión del
condicional se refiere a la misma variable.
Solamente entra por una opción
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
19. Comentarios sobre los valores
en el decisión Case
1. Se pueden utilizar expresiones múltiples o intervalos en cada
cláusula Case. Por ejemplo, cualquiera de las siguientes líneas
son válidas:
Case 1 To 4, 7 To 9
Case 1 To 4, 11, 13
Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber
2. También puede especificar intervalos y expresiones múltiples
para cadenas de caracteres. En el siguiente ejemplo, Case
coincide con las cadenas que son exactamente “iguales a todo”,
cadenas que están entre “nueces” y “sopa” en orden alfabético y
el valor actual de ElemPrueba:
Case "iguales a todo", "nueces" To "sopa", ElemPrueba
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
20. Otros ejemplos de decisión
Case (Comentario 1)
Nuevamente el ejemplo que envía un mensaje indicando a que grupo
de „edad pertenece la persona, pero con otros intervalos de valores:
Option Explicit
Const Anciano = 65
Dim Edad As Integer
Sub principal( )
Edad = InputBox(“Cuál es tu edad?”, “Edad”)
Call VerificarEdad
Select Case Edad
Case Is >=Anciano
MsgBox(“Usted es de la Tercera edad”)
Observe los
Case Is >=18 diferentes
MsgBox(“Usted es mayor de edad”) intervalos
Case 13, 14, 15, 16, 17
MsgBox(“Usted es adolescente”) de valores
Case 0 to 4
MsgBox (“Usted es un niño”)
End Select
End Sub
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve
21. Otros ejemplos de decisión
Case (Comentario 2)
Nuevamente el ejemplo que evalúa el estado civil de la persona, pero
considerando posibles errores de trascripción:
Option Explicit
Const Divo =“Divorciado” Observe los
Dim EdoCiv As String diferentes
Dim Solteros as Integer
intervalos
Dim Casados as Integer
Dim Otros as Integer
de valores
Sub principal( )
EdoCiv = InputBox(“Cuál es tu estado civil?”, “Estado Civil”)
Select Case EdoCiv
Case “s” to “so” , “S” to “SO”
Solteros = Solteros + 1
Case “c”, “Casada” to “Casado”, “csaada” to “csaado”, “C”
Casados = Casados + 1
Case “d” to “di” , “D” to “DI”, “o” , “O”, “Divo”
Otros = Otros + 1
Case Else
MsgBox (“Error”)
End Select
End Sub
Departamento de Programación y
Tecnología Educativa mrodriguez@unimet.edu.ve