Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Prueba:
Prueba:
Prueba:
Diseño de la solución
Inicio
Entero: numa, numb, num, tota,totb, totc, totmin, horas, minutos
Leer numa, numb, numc
tota = numa * 5
totb = numb * 8
totc = numc * 6
totmin = tota + totb + totc
horas = totmin / 60
minutos = totmin Mod 60
Escribir “tardará:”,horas, “horas y”, minutos, “minutos”
Fin algoritmo
Programa en Python:
Prueba:
5. Desarrollar un programa en el cual se ingrese el número de horas transcurridas en
un proceso en formato real, a continuación el programa deberá mostrar el número de
horas, minutos y segundos que se han ingresado.
Definición de problema:
Para saber el valor de horas transcurridas se obtiene el valor entero del valor real.
Para saber el valor de minutos transcurridos se resta el valor en decimales con las horas, luego
se multiplica por 60.
Para saber el valor de segundos transcurridos se resta el valor en decimales de minutos menos
el valor entero de minutos para multiplicarlo por 60.
Luego se imprimen los valores enteros de horas minutos y segundos.
Programa en Python:
Prueba:
ACTIVIDAD FORMATIVA Nº 2
ELABORAR EL DIAGRAMA DE FLUJO Y EL PROGRAMA EN PYTHON
INSTRUCCIONES:
En los siguientes ejercicios se muestra el problema propuesto y su respectiva solución en
pseudocódigo, analiza cual es el planteamiento de solución y luego:
Diseña el diagrama de flujo equivalente a la solución planteada
Implementa en el lenguaje de programación Python el programa correspondiente.
1) Dados dos puntos de una recta en el plano, hallar su pendiente.
El algoritmo toma como entrada las coordenadas de los dos puntos en el plano (x1, y1, x2, y2) y devuelve
la pendiente (m). En el caso en que ésta sea infinito se indica con un mensaje de error.
Acción Principal
Entorno
x1, y1, x2, y2:
real m: real error:
lógico Inicio
leer(x1, y1, x2, y2)
Si (x2 – x1) == 0.0
Error ← V
Sino
error ← F
m ← (y2 - y1) / (x2 –x1)
Fin de si Si error
escribir (“Pendiente infinito”)
sino
escribir (m)
Fin de si
Fin
Diagrama de Flujo:
Programa en Python:
Prueba:
Acción Principal
Entorno x, y:
real abs: real
Inicio
leer(x, y)
abs ← x + y
Si (abs) < 0.0
abs ← -abs
Fin de si
escribir (abs)
Fin
Diagrama de Flujo:
Programa en Python:
Prueba:
Recuerde que el operador resto de la división (Mod) solo admite operandos de tipo
entero.
Diagrama de Flujo:
Programa en Python:
Prueba:
4) Dada una recta de la forma y = ax + b y un intervalo numérico, determinar si la recta corta
al eje X para alguno de los valores del intervalo.
El algoritmo toma como entrada los datos de la recta (a, b) y del intervalo (x1, x2), devolviendo la salida
(corta).
Acción Principal
Entorno a, b, x1, x2:
real
corta: lógico
fx1, fx2: real
Inicio
leer(a, b)
leer(x1, x2)
fx1 ← a * x1 + b
fx2 ← a * x2 + b
Si fx1*fx2 < 0.0
corta ← V
Sino
corta ← F
Fin de si
escribir (corta)
Fin
Como puede apreciarse, el algoritmo comprueba si hay cambio de signo en los valores de Y para
cada valor de X (límite inferior y superior del intervalo), sustituyéndolos en la ecuación de la
recta.
Diagrama de Flujo:
Programa en Python:
Prueba:
Sino
Si b >= a y b >= c
mayor ← b
Sino
mayor ← c
Fin de si
Fin de si
escribir (mayor)
Fin
Diagrama de Flujo:
Programa en Python:
Prueba:
6) Determinar hasta dónde puede llegar un viajero con una determinada cantidad en soles si el
precio de los billetes es el siguiente: Mala: 50, Cañete: 80, Ayacucho: 150, Villa Rica: 170
Este algoritmo debe tomar como entrada la cantidad en soles del viajero (cantidad) y devolver a la
salida un número (destino) que indica hasta dónde puede llegar. Los números que puede devolver el
algoritmo son: 0-Ningún destino, 1-Mala, 2-Cañete, 3-Ayacucho, 4-Villa Rica
Acción Principal Otra forma de resolver este mismo problema, sería:
Entorno cantidad:
entero Acción Principal
destino: entero Entorno cantidad:
Inicio entero
leer(cantidad) destino: entero
Si cantidad >= 17000
Inicio
destino ← 4
leer(cantidad)
Sino Si cantidad >= 17000
Si cantidad >= 15000
destino ← 4
destino ← 3
Fin de si
Sino
Si cantidad >= 15000 y cantidad < 17000
Si cantidad >= 8000
destino ← 3
destino ← 2
Fin de si
Si cantidad >= 8000 y cantidad < 15000
Sino destino ← 2
Fin de si
Si cantidad >= 5000 Si cantidad >= 5000 y cantidad < 8000
destino ← 1 destino ← 1
Fin de si
Si cantidad < 5000
Sino destino ← 0
destino ← 0 Fin de si
Fin de si escribir(destino)
Fin de si Fin
Fin de si
Fin de si
escribir(destino)
Diagrama de Flujo:
Programa en Python:
Prueba:
7) Determinar la cantidad a pagar por una llamada telefónica, teniendo en cuenta lo siguiente:
a) Toda llamada que dure tres minutos o menos tiene un coste de 10 céntimos
b) Cada minuto adicional cuesta 5 céntimos.
El algoritmo tomará como entrada el número de minutos (minutos), devolviendo la cantidad a pagar
(cantidad).
Acción Principal
Entorno
minutos: entero
cantidad: entero
Inicio
leer (minutos)
Si minutos <= 3
cantidad ← 10
Sino
cantidad ← 10 + (minutos–3)*5
Fin de si
escribir(cantidad)
Fin
Diagrama de Flujo:
Programa en Python:
Prueba:
8) Calcular el importe total de una factura para un solo artículo, considerando que se pueden
adquirir varias unidades, el IGV a aplicar es el 18%, y si el precio bruto (precio de venta +
IGV) es mayor de 5000 soles, se debe aplicar el 5% de descuento.
Este algoritmo tomará como entradas el precio sin i.v.a. del artículo (precio) y el número de unidades
(unidades), a partir de los cuales calculará el importe final de la factura (imp_final)
Accion Principal
Entorno
precio, unidades: entero imp_final: real
precio_bruto: real
Inicio
leer(precio, unidades)
precio_bruto ← unidades *precio * 1.18
Si precio_bruto > 5000
imp_final ← precio_bruto * 0.95
Sino
imp_final ← precio_bruto
Fin de si
escribir(imp_final)
Fin
Diagrama de Flujo:
Programa en Python:
Prueba:
Prueba:
10) Se desea diseñar un algoritmo para determinar de qué forma se deberá realizar la devolución
del cambio en una máquina. La máquina dispone de monedas de 5, 25 y 100 pesos, y
devolverá siempre el menor número de monedas posible.
El algoritmo tomará como entradas el importe (importe) a devolver y el número de monedas disponibles
de cada tipo (num100, num25, num5), obteniendo como salida el número mínimo de monedas de 100, 25
y 5 (sal100, sal25, sal5). En caso de que la devolución no sea posible se mostrará un mensaje indicativo.
Acción Principal sal100 ← sal100 – dif100
Entorno sal25 ← sal25 + dif100*4
importe, num100, num25, num5, resto, Fin de si
dif100, dif25: entero sal100, Si sal25 > num25
sal25, sal5: entero dif25 ← (sal25 – num25)
error:lógico sal25 ← sal25 – dif25
Inicio leer (importe) leer
sal5 ← sal5 + dif25*5
(num100, num25, num5)
Fin de si
resto = importe Mod 5
Si sal5 > num5
si resto > 2
importe = importe - resto + 5 error ← V
sino Sino
importe = importe – resto error ← F
Fin de si Fin de si
sal100 ← importe/100 si no error
sal25 ← (importe - sal100 * 100) / 25 escribir(“Las monedas de 100, 25 y 5 son: ”,
sal100, sal25, sal5)
sal5 ← (importe - sal100 * 100 - sal25 * 25) / 5
sino
Si sal100 > num100
escribir (“no hay suficientes monedas”)
dif100 ← (sal100 - num100)
fin de si Fin
Para comprender el algoritmo debe recordarse que las divisiones entre enteros dan como resultado un
entero (la parte entera de la división).
Se ha dividido el algoritmo en 1ªParte y 2ªParte que explicamos a continuación:
• 1ªParte: En ella se calculan los valores de las variables de salida sin considerar que existe una
limitación en el número de monedas de cada tipo.
• 2ªParte: A partir de los valores de salida calculados en 1ªParte, éstos se reajustan según el
número de monedas disponibles de cada tipo.
Diagrama de Flujo:
Programa en Python:
Prueba:
11) Una determinada empresa de seguros de automóviles aplica los siguientes descuentos a sus
clientes de más de 3 años en la compañía.
Calcular el descuento aplicable a un cliente conociendo el importe en bruto del seguro, el número
de años que lleva en la compañía, la edad, y el sexo.
Para distinguir el sexo se utiliza un entero, de forma que el valor 1 indica mujer y otro valor indica hombre.
Diagrama de flujo:
Programa en Python:
Prueba: