21
mrodriguez @unimet.edu.ve epartamento de Programación y Tecnología Educativa Estructuras de Decisión

Estructura decision

Embed Size (px)

DESCRIPTION

Material de apoyo para la asignatura bptpr01 Programación para Ingeniería de la Universidad Metropolitana.

Citation preview

Page 1: Estructura decision

[email protected] de Programación y

Tecnología Educativa

Estructuras de Decisión

Page 2: Estructura decision

[email protected] 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

Page 3: Estructura decision

[email protected] 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

Page 4: Estructura decision

[email protected] 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

Page 5: Estructura decision

[email protected] 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

Page 6: Estructura decision

[email protected] 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

Page 7: Estructura decision

[email protected] 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

Page 8: Estructura decision

[email protected] 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

Page 9: Estructura decision

[email protected] 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

Page 10: Estructura decision

[email protected] 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

Page 11: Estructura decision

[email protected] 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

Page 12: Estructura decision

[email protected] 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

Page 13: Estructura decision

[email protected] 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

Page 14: Estructura decision

[email protected] 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

Page 15: Estructura decision

[email protected] 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

Page 16: Estructura decision

[email protected] 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

Page 17: Estructura decision

[email protected] 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”

Page 18: Estructura decision

[email protected] 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:

Page 19: Estructura decision

[email protected] 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

Page 20: Estructura decision

[email protected] 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

Page 21: Estructura decision

[email protected] 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: