1. Pontificia Universidad Católica de Valparaíso
Facultad de Ingeniería
Escuela de Ingeniería Informática
[PAUTA] Control I – Informática 1 (INF 140)
Pamela Hermosilla Monckton Daniel Gómez Cornejo
Profesores: Ayudantes:
Daniel Cabrera Paniagua Enrique Urra Coloma
Nombre:
1.- Verdadero – Falso. (12 puntos)
Instrucciones: Indicar, en cada caso, si el enunciado presentado es Verdadero o Falso. Si la respuesta es Falso, es
requerido justificar claramente el por qué. La negación simple no es admisible como respuesta. Cada respuesta correcta
equivale a 3 puntos.
a) Un algoritmo se caracteriza por tener un conjunto finito de instrucciones para resolver un problema
determinado, en donde el orden de las instrucciones existentes en él no altera mayormente el resultado final.
Falso. Por definición, un algoritmo es un conjunto finito de instrucciones que especifican la secuencia de operaciones a
realizar, en orden, para resolver un problema determinado. Por lo anterior, si se altera el orden de las operaciones o
instrucciones en un algoritmo, no existe forma de asegurar que dicho algoritmo continuará resolviendo de manera
adecuada el problema abordado.
b) Una de las características que se espera que posea un algoritmo es la eficacia. Esta característica permite
asegurar una óptima utilización de recursos y tiempo en alcanzar el objetivo deseado.
Falso. La eficacia permite alcanzar el objetivo propuesto. En alcanzar el objetivo propuesto, se pueden utilizar diferentes
alternativas, las que presentarán algunas variaciones en cuanto a la utilización de recursos y tiempo. En otras palabras, estas
alternativas (ó procesos) poseen diferentes niveles de eficiencia (eficiencia <> eficacia).
c) Desde la perspectiva algorítmica, la resolución de problemas pasa necesariamente por identificar claramente las
salidas requeridas (resultado esperado), por lo que la fase más importante en la resolución de un problema es
una adecuada implementación de la solución en forma de programa.
Falso. Si bien la clara identificación de las salidas requeridas forma parte del análisis propio del problema a resolver, la fase
más importante en la resolución de un problema corresponde a la comprensión del problema. A partir de este punto, se
plantea una solución en forma algorítmica, la que finalmente es implementada en forma de programa. Si se falla en la
comprensión del problema, sus consecuencias se arrastran hasta la solución final.
d) Un lenguaje de programación permite escribir programas para computadores, de tal modo que puedan ser
entendidos por estos últimos. En este sentido, el lenguaje mayormente utilizado es el Lenguaje Máquina, pues
permite a los computadores comprender directamente que es lo que deben realizar en cada operación.
Falso. Los lenguajes de alto nivel son los que se emplean con mayor frecuencia como lenguajes de programación, porque
permiten expresar los algoritmos de una manera y con un estilo fácilmente reconocible por parte de diversos programadores.
PHM/DCP
14/04/2008
2. Pontificia Universidad Católica de Valparaíso
Facultad de Ingeniería
Escuela de Ingeniería Informática
2.- Desarrollo de algoritmos. (48 puntos)
Instrucciones Generales
Indicar cualquier suposición que exista en el desarrollo de los problemas. Recordar que estos supuestos
no deben cambiar la orientación de ellos.
Responder en forma ordenada y con letra legible. Los desarrollos que no cumplan con esta condición no
serán considerados en la corrección.
Los algoritmos deben implementarse en pseudolenguaje y de forma completa.
Además, se debe incluir la estrategia utilizada para enfrentar el desarrollo del problema (Análisis).
a) [24 Puntos] Una empresa encargada del cobro de peajes en una carretera de gran importancia en una región determinada,
está redefiniendo el manejo de sus cobros a los conductores, con el fin de distribuir los costos del servicio de forma más
adecuada en relación a los destinos que sigue cada usuario. A modo de plan piloto para el nuevo sistema, se ha seleccionado
una estación de peajes estratégica desde la cual se puede llegar a tres diferentes localidades. De acuerdo a la localidad que el
vehículo tenga destinada, se cobrará un cargo adicional al precio base del peaje que debe cancelar cada vehículo,
alcanzándose un precio final para cada usuario. El precio base es calculado considerando dos aspectos: el peso que el
vehículo posee al momento de pasar por el peaje; y el tipo de vehículo (automóvil, bus, ó camión). La fórmula matemática
para el cálculo del precio base es la siguiente:
Peso Vehículo
+ τ * 500
Precio Base =
8
Donde el peso del vehículo está en Kg., y ‘τ ’ puede se determina de acuerdo a:
Si el vehículo es un automóvil, τ = 2 .
•
Si el vehículo es un bus, τ = 3 .
•
τ = 5.
Finalmente, si el vehículo corresponde a un camión,
•
Por otro lado, el precio final a pagar depende del destino a alcanzar por cada vehículo. Los recargos o rebajas aplicadas al
precio base se describen en la siguiente tabla:
Destino Modificación al precio base
Se suman $130 al precio base. Luego, se debe agregar el 5% extra del
Ciudad ‘A’
precio base original al precio total a pagar.
Ciudad ‘B’ Se descuenta un 15% del precio base.
Ciudad ‘C’ Se calcula un 20% del precio base y se agrega al precio total a pagar.
Para la automatización del plan piloto en la estación de peajes, se le solicita desarrollar un algoritmo que permita al
operador realizar lo siguiente:
Calcular el costo del peaje para n vehículos, en base a sus destinos, el peso que transportan y el tipo de vehículo (cada
•
vez que se termina con el cálculo del costo del peaje para un vehículo, el operador tendrá la opción de terminar la
ejecución del algoritmo. En caso contrario, se deberá continuar con otro vehículo).
Si un vehículo pertenece a un cliente preferencial de la empresa, se aplica un descuento de 10% al precio final de peaje.
•
b) [24 Puntos] Se tiene una máquina que permite “sencillar” un monto de dinero. La máquina está diseñada para que, dado
un monto cualquiera, indique cuantos billetes de $10.000, $5.000, $2.000 y $1.000 se deben entregar. Asimismo, permite
determinar la cantidad de monedas de $500, $100, $10, $5 y $1 que se deben entregar. Una característica de la máquina es
que siempre intenta entregar la menor cantidad de billetes y monedas posible. En base a lo anterior, desarrollar un algoritmo
que provea el funcionamiento antes descrito. En otras palabras, el algoritmo debe recibir como entrada un monto de dinero,
y tiene como salida la cantidad de billetes y de monedas de las distintas denominaciones que equivalen a dicho monto.
PHM/DCP
14/04/2008
3. Pontificia Universidad Católica de Valparaíso
Facultad de Ingeniería
Escuela de Ingeniería Informática
Desarrollo (Pregunta 2a):
Algoritmo Cobro_peajes
Var real: precio_base, peso_veh, precio_fin
entero: var_T
caracter: tipo_veh, opcion, dest
Inicio
repetir
escribir (quot;Ingrese el tipo de vehículo: ‘A’ para automóvil; ‘B’ para bus; ‘C’ para camiónquot;)
leer (tipo_veh)
segun_sea tipo_veh hacer
'A': var_T <- 2
'B': var_T <- 3
'C': var_T <- 5
fin_si
escribir (quot;Ingrese el peso del vehículo en kgs.quot;)
leer (peso_veh)
precio_base <- peso_veh / 8 + var_T * 500
escribir (quot;Ingrese destino del vehículo: Ciudad ‘A’ || Ciudad ‘B’ || Ciudad ‘C’ quot;)
leer (dest)
segun_sea dest hacer
'A': precio_fin <- 130 + precio_base * 1.05
'B': precio_fin <- precio_base * 0.85
'C': precio_fin <- precio_base * 1.2
fin_si
escribir (quot;¿El cliente corresponde a un Cliente Preferencial? s/n” )
leer (opcion)
si (opcion = ‘s’) entonces
precio_fin <- precio_fin * 0.9
fin_si
escribir (quot;El costo final del peaje es: quot;, precio_fin)
escribir (quot;¿Desea realizar otro cálculo de peaje? s/nquot;)
leer (opcion)
hasta_que (opcion = 'n')
Fin
PHM/DCP
14/04/2008
4. Pontificia Universidad Católica de Valparaíso
Facultad de Ingeniería
Escuela de Ingeniería Informática
Desarrollo (Pregunta 2b):
Algoritmo Sencillar_Monto
Var entero: monto_ingresado, contador_diezMil, contador_cincoMil, contador_dosMil, contador_mil,
contador_quinientos, contador_cien, contador_diez, contador_cinco, contador_uno
Inicio
contador_diezMil <- 0
contador_cincoMil <- 0
contador_dosMil <- 0
contador_mil <- 0
contador_quinientos <- 0
contador_cien <- 0
contador_diez <- 0
contador_cinco <- 0
contador_uno <- 0
escribir (quot;Ingrese monto a sencillarquot;)
leer (monto_ingresado)
Mientras (monto_ingresado >= 10000) hacer
contador_diezMil <- contador_diezMil + 1
monto_ingresado <- monto_ingresado - 10000
fin_mientras
Mientras (monto_ingresado >= 5000) hacer
contador_cincoMil <- contador_cincoMil + 1
monto_ingresado <- monto_ingresado - 5000
fin_mientras
Mientras (monto_ingresado >= 2000) hacer
contador_dosMil <- contador_dosMil + 1
monto_ingresado <- monto_ingresado - 2000
fin_mientras
Mientras (monto_ingresado >= 1000) hacer
contador_mil <- contador_mil + 1
monto_ingresado <- monto_ingresado - 1000
fin_mientras
Mientras (monto_ingresado >= 500) hacer
contador_quinientos <- contador_quinientos + 1
monto_ingresado <- monto_ingresado - 500
fin_mientras
Mientras (monto_ingresado >= 100) hacer
contador_cien <- contador_cien + 1
monto_ingresado <- monto_ingresado - 100
fin_mientras
Mientras (monto_ingresado >= 10) hacer
contador_diez <- contador_diez + 1
monto_ingresado <- monto_ingresado - 10
fin_mientras
PHM/DCP
14/04/2008
5. Pontificia Universidad Católica de Valparaíso
Facultad de Ingeniería
Escuela de Ingeniería Informática
Mientras (monto_ingresado >= 5) hacer
contador_cinco <- contador_cinco + 1
monto_ingresado <- monto_ingresado - 5
fin_mientras
Mientras (monto_ingresado >= 1) hacer
contador_uno <- contador_uno + 1
monto_ingresado <- monto_ingresado - 1
fin_mientras
escribir (quot;Cantidad de billetes de $10000: quot;, contador_diezMil)
escribir (quot;Cantidad de billetes de $5000: quot;, contador_cincoMil)
escribir (quot;Cantidad de billetes de $2000: quot;, contador_dosMil)
escribir (quot;Cantidad de billetes de $1000: quot;, contador_mil)
escribir (quot;Cantidad de monedas de $500: quot;, contador_quinientos)
escribir (quot;Cantidad de monedas de $100: quot;, contador_cien)
escribir (quot;Cantidad de monedas de $10: quot;, contador_diez)
escribir (quot;Cantidad de monedas de $5: quot;, contador_cinco)
escribir (quot;Cantidad de monedas de $1: quot;, contador_uno)
Fin
PHM/DCP
14/04/2008