Está en la página 1de 4

Universidad de Pamplona

Programación Estructurada
Taller cooperación entre funciones para solucionar un problema
Elaboró: Luis Alberto Esteban Villamizar
-----------------------------------------------------------------------------------------------------------------------------------------------------------

La mayor parte de ejercicio básicos de programación requieren aplicar la estrategia de divide y


vencerás, que básicamente consiste en dividir problema en pequeños problemas de tal manera que
se solucionan cada uno de los pequeños problemas con una función, y al final se construye una
función que solucione el problema principal planteado en un enunciado.
Por esto se dice que se requiere de cooperación entre varias funciones para solucionar el un
ejercicio, en donde una función inicial (o principal) hace uso de otras funciones.

Para el siguiente ejercicio se diseñaron cuatro funciones una de ellas soluciona el problema
haciendo llamados a las otras tres funciones que solucionan pequeños problemas.
un

Rem Calcular el costo total de los pasajes aéreos para un viajero en la aerolínea VIENTOS AIR,
Rem para ello el viajero debe suministrar los siguientes datos para registrar su reserva:
Rem Clase en la que desea viajar.
Rem Destino.
Rem Tipo de viaje.
Rem Número de pasajes a adquirir.
Rem Los costos de un (1) pasaje (en pesos) de acuerdo a la clase en que se viaja y a su destino son:
Rem Destinos Miami Madrid
Rem Clases
Rem Primera 1300000 2700000
Rem Segunda 1120000 2500000
Rem Tercera 1100000 2320000

Rem Se debe tener en cuenta que el tipo de viaje corresponde a la siguiente tabla:
Rem 1 de negocios
Rem 2 Familiar
Rem 3 Turístico individual
Rem
Rem Cuando el viaje sea de negocios no se realizará descuento al pasaje, cuando sea familiar el
Rem descuento será del 7% para cada pasaje individual, cuando sea turístico individual el
descuento
Rem será del 4,75%. Además, dependiendo del número de pasajes a adquirir se realizará un
descuento

Rem adicional de acuerdo a la siguiente tabla:

Rem rango Descuento


Rem 3–5 2,6%
Rem 6 – 10 5,38%
Rem 11 y más 7,24%

Rem Solución ****************************


Rem El objetivo final es calcular el total a pagar por la compra de tiquetes
Rem teniendo en cuenta el costo individual del tiquete y los dos tipos de descuentos que se pueden
aplicar
Rem descuento por tipo de viaje
Rem descuento por cantidad de tiquetes
Universidad de Pamplona
Programación Estructurada
Taller cooperación entre funciones para solucionar un problema
Elaboró: Luis Alberto Esteban Villamizar
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Rem la función de nombre totalPagar resuelve todo el problema haciendo uso de tres funciones mas
Rem esta función recibe como parámetros el destino, la clase, el tipo de viaje y la cantidad de
tiquetes a comprar
Rem retorna el total a pagar dato que incluye los descuentos según las condiciones del enunciado

Function totalPagar(ByVal destino As String, ByVal clase As Long, ByVal tipo As String, ByVal
cantidad As Long) As Double
Dim valori, pdes1, pdes2, subtotal, total As Double
valori = tiqueteIndividual(destino, clase)
pdes1 = descuentoxTipoViaje(tipo)
pdes2 = descuentoxCantidad(cantidad)
subtotal = valori * cantidad
total = subtotal - (((pdes1 + pdes2) * subtotal) / 100)
totalPagar = total
End Function

Rem la función de nombre tiqueteIndividual tiene como objetivo calcular el costo de un tiquete sin
descuentos
Rem recibe como parámetros el destino y la clase en la que se desea viajar
Rem retorna el valor del tiquete según la tabla presentada en el enunciado
Rem esta función supone que el parámetro destino no contiene exactamente la cadena "Miami",
será porque el destino es "Madrid"

Function tiqueteIndividual(ByVal destino As String, ByVal clase As Long) As Long


Dim pago As Long
If (destino = "Miami") Then
If (clase = 1) Then
pago = 1300000
Else
If (clase = 2) Then
pago = 1120000
Else
pago = 1100000
End If
End If
Else
If (clase = 1) Then
pago = 2700000
Else
If (clase = 2) Then
pago = 2500000
Else
pago = 2320000
End If
End If
End If
tiqueteIndividual = pago
End Function
Universidad de Pamplona
Programación Estructurada
Taller cooperación entre funciones para solucionar un problema
Elaboró: Luis Alberto Esteban Villamizar
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Rem la función de nombre descuntoxTipoViaje tiene por objetivo calcular el porcentaje de descuento
según el tipo de viaje
Rem Recibe como parámetros el tipo de viaje como una cadena de caracteres
Rem retorna el porcentaje de descuento otorgado por el tipo de viaje
Rem retornará uno de los tres posibles valores 0, 7 , 4.75 según las condiciones del enunciado

Function descuentoxTipoViaje(ByVal tipo As String) As Double


Dim pdes As Double
If (tipo = "Negocios") Then
pdes = 0
Else
If (tipo = "Familiar") Then
pdes = 7
Else
pdes = 4.75
End If
End If
descuentoxTipoViaje = pdes
End Function

Rem la función de nombre descuentoxCantidad tiene por objetivo calcular el porcentaje de


descuento según la cantidad de tiquetes comprados
Rem recibe como parámetro el número de tiquetes que se desean comprar
Rem retorna un número decimal que representa el porcentaje de descuento por cantidad de tiquetes
según enunciado del ejercicio
Function descuentoxCantidad(ByVal ntiquetes As Long) As Double
Dim pdes As Double
If (ntiquetes < 3) Then
pdes = 0
Else
If ((ntiquetes >= 3) And (ntiquetes <= 5)) Then
pdes = 2.6
Else
If ((ntiquetes >= 6) And (ntiquetes <= 10)) Then
pdes = 5.38
Else
pdes = 7.24
End If
End If
End If
descuentoxCantidad = pdes
End Function
Universidad de Pamplona
Programación Estructurada
Taller cooperación entre funciones para solucionar un problema
Elaboró: Luis Alberto Esteban Villamizar
-----------------------------------------------------------------------------------------------------------------------------------------------------------

Trabajo a realizar
1. Probar el anterior código en Ecxel o Calc como por ejemplo en una hoja de calculo

2. Pasar este código a PSeInt y hacer las pruebas correspondientes. En el informe se debe
copiar el código en PSeInt. Recuerde que en el curso de moodle se encuentra publicada una
wiki denominada apuntes, en la cual se describe la sintaxis de cada uno de los lenguajes
estructurados recomendados en este curso. Allí encuentran la sintaxis de PSeInt
3. Tome cada una de las tres funciones auxiliares en Basic y cambie las estructuras de
selección anidadas y mediante ajustes a las expresiones boleanas de las estructuras de
selección, quite el anidamiento de las estructuras de selección, convirtiéndolas en
estructuras de selección secuenciales(una después de otra sin anidamientos)
4. Pasar ese nuevo código a PSeInt, haciendo las pruebas respectivas… no olvide ver cada
función de manera gráfica y comparando con el código inicialmente presentado en esta guía.
En el informe solo dejar el código en Basic y en PSeInt

También podría gustarte