Post on 08-Dec-2014
description
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
Estructuras de Decisión
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
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
Decisión
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
Si (condición) entonces
acción 1
sino
acción 2
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
Que son Estructuras de Decisión
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
Tipos de Estructuras de Decisión
If-Then-Else (3 formas)
If-Then
If-Then Else
If Anidados
Case
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
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
Decisión simple
Cierra el bloque a ejecutar si la condición es Verdadera
Son palabras claves
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
If condición Then
Instrucciones
End if
Instrucciones
En caso contrario (si la condición es
Falsa) continúa el flujo del
programa con la instrucción
inmediatamente después del End If
se ejecutan si la condición es
Verdadera
Decisión simple
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
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
Ejemplo de decisión simple
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
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
Decisión compuesta
Son palabras reservadas
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
If condición Then
Instrucciones1
Else
Instrucciones2
End if
Decisión compuesta
Se ejecutan en caso contrario, es
decir, si la condición es Falsa
Se ejecutan si la condición es
Verdadera
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
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
Ejemplo de decisión compuesta
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
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
Instrucciones1
Else
Instrucciones2
End If
Else
Instrucciones3
End If
Decisión anidada
Recuerda usar el tabulador (sangría) para darle mayor visualización a este estructura
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
If condición1 Then
If condición2 Then
Instrucciones1
Else
Instrucciones2
End If
Else
Instrucciones3
End If
Decisión anidada
Si la condición es Verdadera, pregunta por la siguiente condición
Se ejecutan si la condición1 es
Verdadera y la condición2 es
Falsa
Se ejecutan si la condición1 y la condición2 son Verdaderas
Se ejecutan si la condición1 es
Falsa
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
Option Explicit
Dim Edad As String
Sub principal( )
Edad = InputBox("Cuál es tu edad?", “Edad")
Call VerificarEdad
If Edad < 18 Then
If Edad > 12 Then
MsgBox (“Eres un adolescente”)
Else
MsgBox (“Eres un niño”)
End If
Else
MsgBox (“Eres mayor de edad”)
End If
End Sub
Ejemplo de decisión anidada
Importante! Estos If anidados son equivalentes a los siguientes If anidados:
If Edad < 18 and Edad > 12 Then MsgBox (“Eres un adolescente”)Else If Edad <= 12 Then
MsgBox (“Eres un niño”)
Else
MsgBox (“Eres mayor de edad”)
End If
End If
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
If condición1 Then
If condición2 Then
Instrucciones1
Else
Instrucciones2
End If
Else
If condición3 Then
Instrucciones3
Else
Instrucciones4
End If
End If
Decisión anidada
Otra forma de decisión anidada es la siguiente:
La estructura de la decisión anidada dependerá del buen análisis que se realice del problema.
Estos If anidados son equivalentes a los siguientes:
If condición1 And condición2 ThenInstrucciones1
End If
If condición1 And Not(condición2) ThenInstrucciones2
End If
If Not(condición1) and condición3 ThenInstrucciones3
End If
If Not(condición1) and Not(condición3) Then Instrucciones4
End If
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
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.
Decisión Case
Select Case expresión Case valor1
Instrucciones1Case valor2
Instrucciones2
Case valor3
Instrucciones3
End Select
son palabras reservadas
Importante! Este Case es equivalente a los siguientes If anidados:
If expresión = valor1 Then Instrucciones1Else If Expresión = valor2 Then
Instrucciones2
Else
If expresión = valor3 Then
Instrucciones3
End If
End If
End If
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
‘ En este ejemplo se evalúa el estado civil de la persona
Ejemplo de decisión Case (Variable tipo String)
Option Explicit
Dim EdoCiv As String
Dim Solteros as Integer
Dim Casados as Integer
Dim Otros as Integer
Sub principal( )
EdoCiv = InputBox(“Cuál es tu estado civil?”, “Estado Civil”)
Call VerficaEdoCivil
Select Case EdoCivCase “s” , “S” Solteros = Solteros + 1Case “c”, “C” Casados = Casados + 1Case “d” , “o” , “D”, “O” Otros = Otros + 1Case Else MsgBox (“Error”)End Select
End Sub
Entra por esta opción solamente si no se cumplen ninguna de las anteriores
Importante! Este Case es equivalente a los siguientes If anidados:
If EdoCiv = “s” or EdoCiv = “S” Then Solteros = Solteros + 1Else If EdoCiv = “c” or EdoCiv = “C” Then
Casados = Casados + 1
Else
If EdoCiv = “d” or EdoCiv = “D” or
EdoCiv = “o” or EdoCiv = “O” Then
Otros = Otros + 1
Else
MsgBox (“Error”)
End If
End If
End If
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
‘En este ejemplo se envía un mensaje indicando a que grupo de ‘edad pertenece la persona.
Ejemplo de decisión Case (Variable tipo Integer)
Option Explicit
Dim Edad As Integer
Sub principal( )
Edad = InputBox(“Cuál es tu edad?”, “Edad”)
Call VerificarEdad
Select Case Edad
Case Is >=65
MsgBox(“Usted es de la Tercera edad”)
Case Is >=18
MsgBox(“Usted es mayor de edad”)
Case Is >12
MsgBox(“Usted es adolescente”)
Case Else
MsgBox (“Usted es un niño”)
End Select
End Sub
Si Edad es 70 entrará por la primera opción y termina
Si Edad es 15 entrará por la tercera opción y termina
Si Edad es 40 entrará por la segunda opción y termina
Es importante considerar que siempre entra por la primera opción verdadera:
Importante: Cuando el valor viene dado por una condición (<,>,=, etc.) automáticamente se coloca la palabra clave “Is”
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
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
Uso de decisión Case
Ventajas:
Solamente se puede utilizar cuando la expresión del condicional se refiere a la misma variable.
Solamente entra por una opción
Desventajas:
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
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
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
Nuevamente el ejemplo que envía un mensaje indicando a que grupo de ‘edad pertenece la persona, pero con otros intervalos de valores:
Otros ejemplos de decisión Case (Comentario 1)
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 >=AncianoMsgBox(“Usted es de la Tercera edad”)
Case Is >=18MsgBox(“Usted es mayor de edad”)
Case 13, 14, 15, 16, 17MsgBox(“Usted es adolescente”)
Case 0 to 4MsgBox (“Usted es un niño”)
End Select
End Sub
Observe los diferentes intervalos de valores
mrodriguez@unimet.edu.veDepartamento de Programación y
Tecnología Educativa
Option Explicit
Const Divo =“Divorciado”
Dim EdoCiv As String
Dim Solteros as Integer
Dim Casados as Integer
Dim Otros as Integer
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 ElseMsgBox (“Error”)
End Select
End Sub
Otros ejemplos de decisión Case (Comentario 2)
Observe los diferentes intervalos de valores
Nuevamente el ejemplo que evalúa el estado civil de la persona, pero considerando posibles errores de trascripción: