Está en la página 1de 5

Universidad de Pamplona

Programación 1

Taller o guía para Estructuras de Selección


Elaboró: Yesid Madrid
-----------------------------------------------------------------------------------------------------------------------------------------------------------

Estructura de Selección o Condicionales

En una estructura de selección/decisión, el algoritmo al ser ejecutado toma una decisión, ejecutar o
no ciertas instrucciones si se cumplen o no ciertas condiciones. Las condiciones devuelven un valor,
verdadero o falso, determinado así la secuencia a seguir.

En Visual basic, la estructura general de esta sentencia es la siguiente

If condición then

bloque de sentencias

Else

bloque de sentencias

End If

Aunque, basándose en las buenas prácticas para la enseñanza de programación, esta sentencia
puede tener también la siguiente estructura:

If condición1 then

bloque de sentencias

End If

If condición2 then

bloque de sentencias

End If

Veamos un par de ejemplos de la aplicación de esta sentencia


Universidad de Pamplona
Programación 1

Taller o guía para Estructuras de Selección


Elaboró: Yesid Madrid
-----------------------------------------------------------------------------------------------------------------------------------------------------------

Ejercicio 33 de la guía de programación: Calcular el número de pulsaciones que debe tener una
persona por cada 10 segundos de ejercicio aeróbico; la fórmula que se aplica cuando el sexo es
femenino es:
num. pulsaciones = (220 - edad)/10
y si el sexo es masculino:
num. pulsaciones = (210 - edad)/10

Solución:

‘Se crear la función que recibe como parámetros la edad y el sexo

Function pulsaciones(ByVal edad As Double, ByVal sexo As String) As Double


Dim pul As Double ‘Se define la variable donde se guardara el calculo
‘Se crea la primera estructura de selección, la cual aplicara la formula
‘para el sexo femenino
If (sexo = “femenino”) Then
pul = (220 - edad) / 10
End If
‘Se crea la segunda estructura de selección, la cual aplicara la formula
‘para el sexo masculina
If (sexo = “masculino”) Then
pul = (210 - edad) / 10
End If
‘Asignamos el valor que retornara la función cuando sea llamada desde Excel
pulsaciones = pul
End Function

La respectiva llamada desde Excel sería:

Ejercicio 28 de la guía de programación: Calcular el valor a pagar de la factura del celular


conociendo el tipo de plan, la cantidad de minutos y de mensajes de texto consumidos en el
mes, según la siguiente tabla:

Cada minuto extra tiene un costo de 855 pesos y los mensajes de texto un costo de 370
pesos (Para cualquier plan).

Solución:
En esta caso presentamos dos soluciones, la primera usando sentencias anidadas:

'Se crea la función que recibe como parámetros el tipo de plan, los minutos y mensajes gastados
Function miplan2(ByVal tipo As String, ByVal min, tex As Double) As Double
Universidad de Pamplona
Programación 1

Taller o guía para Estructuras de Selección


Elaboró: Yesid Madrid
-----------------------------------------------------------------------------------------------------------------------------------------------------------
'’Se define la variable factura para realizar el calculo
Dim factura As Double
'’Se define el primer condicional, el cual evaluara las condiciones si está en el plan ideal
If (tipo = "Ideal") Then
'Se define el primer condicional anidado, el cual evaluara las condiciones de los minutos
If (min > 100) Then
'Se define el segundo condicional anidado, el cual evaluara las condiciones de los mensajes
If (tex > 10) Then
'Se asigna el valor básico mas recargo por mensajes y minutos
factura = 80000 + (min - 100) * 855 + (tex - 10) * 370
Else
factura = 80000 + (min - 100) * 855 'Se asigna el valor básico mas recargo por minutos
End If
Else
If (tex > 10) Then
factura = 80000 + (tex - 10) * 370 'Se asigna el valor básico mas recargo por mensajes
Else
factura = 80000 'Se asigna el valor básico a pagar en la factura
End If
End If
Else
'Se define el primer condicional, el cual evaluara las condiciones si está en el plan extensión
If (tipo = "Extensión") Then
'Se define el primer condicional anidado, el cual evaluara las condiciones de los minutos
If (min > 135) Then
'Se define el segundo condicional anidado, el cual evaluara las condiciones de los mensajes
If (tex > 20) Then
'Se asigna el valor básico mas recargo por mensajes y minutos
factura = 80000 + (min - 135) * 855 + (tex - 20) * 370
Else
factura = 80000 + (min - 135) * 855 'Se asigna el valor básico mas recargo por minutos
End If
Else
If (tex > 10) Then
factura = 80000 + (tex - 20) * 370 'Se asigna el valor básico mas recargo por mensajes
Else
factura = 80000 'Se asigna el valor básico a pagar en la factura
End If
End If
Else
'Se define el primer condicional anidado, el cual evaluara las condiciones de los minutos
If (min > 425) Then
'Se define el segundo condicional anidado, el cual evaluara las condiciones de los mensajes
If (tex > 30) Then
'Se asigna el valor básico mas recargo por mensajes y minutos
factura = 80000 + (min - 425) * 855 + (tex - 30) * 370
Else
factura = 80000 + (min - 425) * 855 'Se asigna el valor básico mas recargo por minutos
End If
Else
If (tex > 10) Then
factura = 80000 + (tex - 30) * 370 'Se asigna el valor básico mas recargo por mensajes
Else
factura = 80000 'Se asigna el valor básico a pagar en la factura
End If
End If
End If
End If

miplan2 = factura 'Se asigna el valor a retornar cuando sea llamada desde Excel
End Function

Y la segunda, que implicaría IF secuenciales:

'Se crea la función que recibe como parámetros el tipo de plan y los minutos
'gastados y devuelve el valor a pagar por minutos adicionales
Function recargominutos(ByVal tipo As String, ByVal min As Double) As Double
'Se define la variable valor para realizar el calculo
Universidad de Pamplona
Programación 1

Taller o guía para Estructuras de Selección


Elaboró: Yesid Madrid
-----------------------------------------------------------------------------------------------------------------------------------------------------------
'Se define también la varibale minadi para calculos auxiliares
Dim valor, minadi As Double
valor = 0
'Se define el primer condicional, el cual evaluara las condiciones si está en el plan ideal
If (tipo = "Ideal") Then
minadi = min - 100 'Se calcula los minutos adicionales gastados por el usuario
End If
'Se define el primer condicional, el cual evaluara las condiciones si está en el plan extensión
If (tipo = "Extensión") Then
minadi = min - 135 'Se calcula los minutos adicionales gastados por el usuario
End If
'Se define el primer condicional, el cual evaluara las condiciones si está en el plan familiar
If (tipo = "Familiar") Then
minadi = min - 425 'Se calcula los minutos adicionales gastados por el usuario
End If
'Sabiendo que cuando los minutos adicionales (minaadi) sean igual a 0, el usuario gasto el limite
'exacto y que cuando minadi es negativo al usuario le sobraron minutos, se pregunta:
If (minadi > 0) Then
valor = minadi * 855 'se agrega al valor de la factura el cargo adicional
End If
'Asignamos el valor que retornara la función cuando sea llamada
recargominutos = valor
End Function

'Se crea la función que recibe como parámetros el tipo de plan y mensajes
'gastados y devuelve el valor a pagar por mensajes adicionales
Function recargomensajes(ByVal tipo As String, ByVal tex) As Double
'Se define la variable valor para realizar el calculo
'Se define también la varibale menadi para calculos auxiliares
Dim valor, menadi As Double
valor = 0
'Se define el primer condicional, el cual evaluara las condiciones si está en el plan ideal
If (tipo = "Ideal") Then
menadi = tex - 10 'Se calcula los minutos adicionales gastados por el usuario
End If
'Se define el primer condicional, el cual evaluara las condiciones si está en el plan extension
If (tipo = "Extensión") Then
menadi = tex - 20 'Se calcula los minutos adicionales gastados por el usuario
End If
'Se define el primer condicional, el cual evaluara las condiciones si está en el plan familiar
If (tipo = "Familiar") Then
menadi = tex - 30 'Se calcula los minutos adicionales gastados por el usuario
End If
'Sabiendo que cuando los mensajes adicionales (menaadi) sean igual a 0, el usuario uso el limite
'exacto y que cuando menadi es negativo al usuario le sobraron minutos, se pregunta:
If (menadi > 0) Then
valor = menadi * 370 'se agrega al valor de la factura el cargo adicional
End If
'Asignamos el valor que retornara la función cuando sea llamada
recargomensajes = valor
End Function

'Se crea la función que recibe como parámetros el tipo de plan, los minutos y mensajes gastados
Function miplan(ByVal tipo As String, ByVal min, tex As Double) As Double
'Se define la variable factura para realizar el calculo
Dim factura As Double
'Se define el primer condicional, el cual evaluara las condiciones si está en el plan ideal
Universidad de Pamplona
Programación 1

Taller o guía para Estructuras de Selección


Elaboró: Yesid Madrid
-----------------------------------------------------------------------------------------------------------------------------------------------------------
If (tipo = "Ideal") Then
factura = 80000 'Se asigna el valor básico a pagar en la factura
End If
'Se define el segundo condicional, evaluara las condiciones si está en el plan extensión
If (tipo = "Extensión") Then
factura = 120000 'Se asigna el valor básico a pagar en la factura
End If
'Se define el tercer condicional, evaluara las condiciones si está en el plan familiar
If (tipo = "Familiar") Then
factura = 180000 'Se asigna el valor básico a pagar en la factura
End If
'Hasta ahora se tiene el cargo básico asignado a la factura, ahora se evaluará si el usuario
'ha pasado los limites de minutos o mensajes, para agregar el cargo adicional
factura = factura + recargominutos(tipo, min)
factura = factura + recargomensajes(tipo, tex)
miplan = factura 'Se asigna el valor a retornar cuando sea llamada desde Excel
End Function

La diferencia en estas soluciones radica en la aplicación de las buenas prácticas de la sentencia IF,
donde evidenciamos que la programación secuencial facilita el trabajo, además permite observar el
problema como pequeños problemas y con esto, mejorar la técnica de programación.

La respectiva llamada desde Excel sería:

Para reforzar los conceptos aplicados en este taller se proponen los siguientes ejercicios como
método de refuerzo:

 Ejercicio 29 de la guía de programación.


 Ejercicio 30 de la guía de programación:

También podría gustarte