ACTIVIDAD FORMATIVA NRO 1: ELABORAR EL RESPECTIVO PROGRAMA EN PYTHON DE CADA UNO DE LOS ENUNCIADOS PROPUESTOS. INSTRUCCIONES:
Analiza el problema planteado. Considera el diseño de la solución planteado pl anteado y elabora el programa en Python respectivo. Envía tus soluciones al aula virtual en un único archivo comprimido. comprimid o.
1. Diseñar un algoritmo para calcular el área y el perímetro de un rectángulo Definición del problema
Calcular área y perímetro de un rectángulo Análisis del problema
Para desarrollar este problema es necesario conocer las fórmulas para obtener tanto el área como el perímetro de un rectángulo. b h
Sea b = base y h = altura, las fórmulas a utilizar son: Área = b * h Perímetro = 2 * (b + h) Datos de entrada: Se requiere se entreguen como datos b y h (base y altura) Datos de salida: Se deben dar como respuestas el área y perímetro Procesos: Se requiere procesar de acuerdo a las siguientes fórmulas
Área = b * h Perímetro = 2 * (b + h) Diseño de la solución
Inicio Entero: b, h, a, p Leer b, h a=b*h p = 2 (b + h) Escribir “área:”, a Escribir “perímetro:”, p
Fin algoritmo
Programa en Python:
Prueba:
2. Calcular el área de un triángulo. Datos de entrada: Se requiere se entreguen como datos b y h (base y altura) Datos de salida: Se deben dar como respuestas el área del triangulo Procesos: Se requiere procesar de acuerdo a las siguientes fórmulas
Área = (b * h) /2e: /2 e: Diseño de la Solución:
Programa en Python:
Prueba:
3.
Un maestro desea saber qué porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes. Definición del problema
Calcular porcentaje de hombres y mujeres en un grupo Análisis del problema
Datos a tener en cuenta: Número hombres Número mujeres Total estudiantes Porcentaje hombres Porcentaje mujeres Datos de Entrada: número hombres, número mujeres Datos salida: porcentaje hombres, porcentaje mujeres Procesos:
tot estudiantes = núm. hombres + núm. Mujeres Porc.hombres = núm. Hombres / tot estudiantes*100 Porc.hombres = núm. mujeres / tot estudiantes*100 Diseño de la solución
Inicio Entero: num_m, num_h, tot_est Real: porc_h, porc_m Leer num_m, num_h tot_est = num_m + num_h porc_m = num_m / tot_est * 100 porc_h = num_h / tot_est * 100 Escribir “porcentaje Mujeres:”, porc_m Escribir “porcentaje hombres:”, p orc_h Fin algoritmo
Programa en Python:
Prueba:
4. Un profesor prepara tres tres cuestionarios para una evaluación evaluación final: A, B y C. Se sabe que se tarda 5 minutos en revisar el cuestionario A, 8 en revisar el cuestionario B y 6 en el C. La cantidad de exámenes de cada tipo se entran por teclado. ¿Cuántas horas y cuántos minutos se tardará en revisar todas las evaluaciones? Definición del problema
Calcular el tiempo, en horas y minutos, mi nutos, requerido para calificar exámenes. Análisis del problema
Se tienen tres tipos de examen A, B, C y el tiempo en minutos requerido para cada tipo son: A=5 B=8 C=6 El tiempo en minutos debe ser convertido a horas, 1 hora = 60 minutos Para pasar de minutos a horas se realiza r ealiza operación división entera, para conocer los minutos excedentes se utiliza la operación módulo. Datos de entrada: número exámenes tipo A, B y C Datos de salida : horas y minutos requeridos
Procesos
:
Total A = número tipo A * 5 Total B = número tipo B * 8 Total C = número tipo C * 6 Tiempo total = total A + total B + total C Horas = tiempo total / 60 Minutos = tiempo total Mod 60 60 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, real, a continuación el programa deberá deberá mostrar el número número de horas, minutos y segundos que se han ingresado. Definición de problema:
Convertir un valor de horas en formato decimal a horas, minutos y segundos. Análisis del problema:
Se tiene el valor decimal en horas. Para saber el valor de horas transcurridas se obtiene el valor entero del valor real. Para saber el valor de minutos mi nutos 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. Datos de Entrada: horas en formato decimal (total_tiempo) Datos de Salida: Enteros de Horas: minutos: segundos en formato “00:00:00”. Procesos:
H=entero (total_tiempo) M= (total_tiempo – H) * 60 S= (decimal (M) – entero (M)) * 60
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 propu esto y su respectiva solución en pseudocódigo, analiza cual es el planteamiento de solución y luego: lu ego: Diseña el diagrama de flujo equivalente a la l a 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 ←
←
←
sino Fin
escribir (“Pendiente infinito”)
escribir (m) Fin de si
Diagrama de Flujo:
Programa en Python:
Prueba:
2) Hallar el valor absoluto de la l a suma de dos números.
El algoritmo toma como entrada dos números (x, y) y devuelve la salida (abs). 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:
3) Dados dos números enteros determinar si el primero es divisible entre el segundo.
el algoritmo toma como entradas los dos números enteros (x, y) y muestra un mensaje en pantalla con la solución.
Acción Principal Entorno x, y: entero d: lógico Inicio leer(x, y) Si xMody = 0 Sino
escribir(“Son divisibles”) escribir(“No son divisibles”)
Fin
Fin de si
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 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 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 sustituyéndolos en la ecuación de la recta. Diagrama de Flujo:
Programa en Python:
Prueba:
5) Determinar el mayor de tres números.
El algoritmo toma como entrada tres números (a, b, c) y devuelve el mayor (mayor). Este algoritmo puede ser resuelto de varias formas, mostrándose a continuación tres de ellas en los programas Mayor_de_tres_1, Mayor_de_tres_2 y Mayor_de_tres_3. Mayor_de_tres_3.
Acción Principal (Mayor_de_tres Entorno a, b, c: real mayor: real Inicio leer(a, b, c) Si a >= b y a >=c mayor a ←
Sino Si b >= a y b >= c mayor b Sino mayor c Fin de si Fin de si escribir (mayor) Fin ←
←
Diagrama de Flujo:
1)
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 tomar como entrada la cantidad cantidad en soles del viajero (cantidad) y devolver devolver a la salida un número (destino) que indica hasta hasta dónde puede llegar. Los números que puede devolver devolver el algoritmo son: 0-Ningún destino, 1-Mala, 2-Cañete, 3-Ayacucho, 4-Villa Rica Acción Principal Entorno cantidad: entero destino: entero Inicio leer(cantidad) Si cantidad >= 17000 17000 destino 4 Sino Si cantidad >= 15000 destino 3 Sino Si cantidad >= 8000 destino 2 ←
←
←
Sino
Acción Principal Entorno cantidad: entero destino: entero Inicio leer(cantidad) Si cantidad >= 17000 17000 destino 4 Fin de si Si cantidad >= 15000 15000 y cantidad cantidad < 17000 destino 3 Fin de si Si cantidad >= 8000 8000 y cantidad cantidad < 15000 destino 2 Fin de si Si cantidad >= 5000 5000 y cantidad cantidad < 8000 destino 1 Fin de si Si cantidad < 5000 5000 destino 0 Fin de si escribir(destino) Fin ←
←
←
Si cantidad >= 5000 destino 1 ←
Sino destino 0 Fin de si Fin de si Fin de si Fin de si escribir(destino) ←
Diagrama de Flujo:
Otra forma de resolver este mismo problema, sería:
←
←
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:
9) Dado un punto en el plano determinar en qué c uadrante se encuentra.
El algoritmo tomará como entradas las coordenadas de un punto (x, y) y devuelve el cuadrante donde se encuentra (cuadrante). En el caso en que el punto esté en los ejes se devolverá el número 5. Una forma posible de resolver este problema es: Accion Principal
Entorno x, y: real cuadrante: entero Inicio Leer(x, y) Si x = 0.0 ó y = 0.0 cuadrante 5 Sino Si x > 0.0 Si y > 0.0 cuadrante 1 Sino cuadrante 4 Fin de si Sino Si y > 0.0 cuadrante 2 Sino cuadrante 3 Fin de si Fin de si Fin de si escribir (cuadrante) Fin ←
←
←
←
←
Diagrama de Flujo:
Programa en Python:
Prueba:
10)Se 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 devolución no sea posible se mostrará un mensaje indicativo. Acción Principal Entorno importe, num100, num25, num5, resto, dif100, dif25: entero sal100, sal25, sal5: entero error:lógico Inicio leer (importe) leer (num100, num25, num5) resto = importe Mod 5 si resto > 2 importe = importe - resto + 5 sino importe = importe – resto Fin de si sal100 importe/100 sal25 (importe - sal100 * 100) / 25 sal5 (importe - sal100 * 100 - sal25 * 25) / 5 Si sal100 > num100 dif100 (sal100 - num100) ←
←
←
←
sal100 sal100 – dif100 sal25 sal25 + dif100*4 Fin de si Si sal25 > num25 dif25 (sal25 – num25) sal25 sal25 – dif25 sal5 sal5 + dif25*5 Fin de si Si sal5 > num5 error V Sino error F Fin de si si no error escribir(“Las monedas de 100, 25 y 5 son: ”, sal100, sal25, sal5) sino ←
←
←
←
←
←
←
escribir (“no hay suficientes monedas”)
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.
Acción Principal Entorno importe_bruto, años, edad, sexo: entero descuento: real Inicio leer(importe_bruto) leer(años), leer(edad), leer(sexo) importe_bruto*0.1 Si años <= 3 descuento 0.0 Sino Si sexo <> 1 Si edad < 25 descuento (real)importe_b (real)importe_bruto ruto * 0.05 Sino Si edad >= 25 y edad <= 40 descuento importe_bruto*0. importe_bruto*0.1 1 Sino descuento importe_bruto * 0.3 Fin de si Fin de si Sino Si edad < 25 descuento (real)importe_bruto*0.1 Sino Si edad >= 25 y edad <= 40 descuento descu ento (rea (real)im l)importe porte_brut _bruto*0. o*0.15 15 Sino descuento (real)importe_bruto*0.3 Fin de si Fin de si Fin de si Fin de si escribir (descuento) Fin ←
←
Diagrama de flujo:
hombre mujer
menor de 25 años
de 25 a 40 años
mayor de 40 años
5% 10%
10% 15%
30% 30%
Programa en Python:
Prueba: