Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PC - 2021 II - Práctica 1 - Solucionario
PC - 2021 II - Práctica 1 - Solucionario
-
.UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
(Universidad del Perú, DECANA DE AMÉRICA)
FACULTAD DE INGENIERÍA INDUSTRIAL
Escuela de Ingeniería de la Seguridad, Salud en el Trabajo.
Escuela de Ingeniería de Textil y Confecciones.
Escuela de Ingeniería Industrial
PROGRAMACIÓN Y COMPUTACIÓN
2021 - II
Práctica Calificada 1
Para cada una de las preguntas propuestas se solicita que plantee la solución a través de la definición,
análisis y diseño. En el diseño desarrollo el correspondiente algoritmo representado tanto en diagrama
de flujo como en pseudocódigo
Definición
Conociendo la distancia del sol a la tierra y la velocidad con la que viaja la luz podemos
calcular el tiempo que demora en llegar las luz a la tierra.
Datos de entrada: distanciaSolTierraKm,velocidadLuz_m_s
fórmulas: tiempo=distancia/velocidad (MRU)
1km=1000m
1min=60seg
Análisis
leer datos
calcular tiempo
mostrar tiempo
Diseño
Solución 1
Pseudocodigo;
Inicio HallarTiempo
//lectura de datos
Escribir “Ingrese la distancia del sol a la tierra en Km”
leer distanciaSolTierraKm
Escribir “Ingrese la velocidad de la luz en m/s”
leer velocidadLuzm_s
//procesos cálculos
//1km=1000mt
distanciaSolTierraMetros← distaciaSolTierraKm*1000
tiemposeg← distanciaSolTierraMetros/velocidadLuzm_s
//1min=60seg
tiempomin← tiemposeg/60
Fin HallarTiempo
Diagrama de flujo:
Solución 2
pseudocódigo
Inicio HallarTiempoViajeLuz
//leer datos-- sin lectura de datos, considerando datos fijos
distanciaSolTierraKm ← 150 000 000
velocidadLuz_m_s← 299 792 458
//cálculos del tiempo
distanciaSolTierraMe← distanciaSolTierraKm*1000
tiempoSeg<--distanciaSolTierraMe/velocidadLuz_m_s
timepoMin← tiempoSeg/60
//mostrar tiempos
escribir “el tiempo de viaje de la luz desde el sol a la tierra en segundos es: ”,tiempoSeg
escribir “el tiempo de viaje de la luz desde el sol a la tierra en minutos es: ”,tiempoMin
Fin HallarTiempoViajeLuz
Diagrama de flujo
Solución 3
pseudocódigo
Inicio HallarTiempoViajeLuz
//leer datos
escribir “Ingresar la distancia del Sol a la tierra Km”
leer distanciaSolTierraKm
escribir “Ingresar la velocidad de la luz en m/s”
leer velocidadLuz_m_s
//cálculos del tiempo
distanciaSolTierraMe← distanciaSolTierraKm*1000
tiempoSeg<--distanciaSolTierraMe/velocidadLuz_m_s
timepoMin← tiempoSeg/60
//mostrar tiempos
escribir “el tiempo de viaje de la luz desde el sol a la tierra en segundos es: ”,tiempoSeg,” y en
minutos es: ”,tiempoMin
Fin HallarTiempoViajeLuz
Diagrama de flujo
2. Un inspector de obras deja caer una memoria usb desde la azotea del edificio más alto de Lima, si
el usb parte del reposo y cae libremente, calcule su posición y su velocidad después de un tiempo t
en segundos.
Se sabe que:
Análisis
leer datos
calcular velocidadfinal
calcular distancia
mostrar velocidadfinal, distancia
Diseño
Pseudocódigo
Inicio HallarDistanciayVelocidadfinal
Escribir “ingrese el tiempo en segundos”
Leer tiempoSeg
gravedad← 9,8
Vf← gravedad*tiempoSeg
distancia← vf*tiemposeg/2
Escribir “la velocidad en el tiempo ”,tiempoSeg,” seg. es de: “, Vf,”m/s,” y la distancia
recorrida hasta ese tiempo es de: “, distancia
Fin HallarDistanciayVelocidadfinal
Diagrama de flujo
3. Dos jóvenes, Tito y Mateo, caminan cada uno con sus respectivas velocidades en m/s Determine la
distancia que los separa luego de t segundos partiendo de un mismo punto, y se puede dar
cualquiera de las siguientes situaciones:
a) se mueven en el mismo sentido
b) se mueven en sentidos contrarios
Solución 1
Definición del problema:
determinar la distancia que separa a Tito y Mateo después de un tiempo dado, teniendo en
cuenta el sentido en la que se mueven.
Datos de entrada: VelocidadTito,VelodidaMateo, tiempoSeg
Fórmulas: distancia=velocidad*tiempo
distanciaSeparaciónMismoSentido=valorabsoluto(distanciaTito- distanaciaMateo)
distanciaSeparacionSentiodoContrario=distanciaTito+distanciaMateo
Datos de salida: distancias de separación
Análisis
leer datos
calcular distancias
mostrar distancias separación
Diseño
Pseudocódigo
Inicio HallarDistanciaSeparacion
Escribir “Ingrese velocidad de Tito m/s”
Leer velocidadTito
Escribir “Ingrese velocidad de Mateo m/s”
Leer velocidadMateo
Escribir “Ingrese tiempo en segundos”
Leer tiempoSeg
distanciaTito← velocidadTito*timepoSeg
distanciaMateo← velocidadMateo*tiempoSeg
distanciaSeparacionMismoSentido← absoluto(distanciaTito-distanciaMateo)
distanciaSeparacionSentidoContrario<--distanciaTito+distanciaMateo
Diagrama de flujo
Solución 2
Definición del problema:
determinar la distancia que separa a Tito y Mateo después de un tiempo dado, teniendo en
cuenta el sentido en el que se mueven.
Datos de entrada: VelocidadTito,VelodidaMateo, tiempoSeg, sentidodemovimiento
Fórmulas: distancia=velocidad*tiempo
distanciaSeparaciónMismoSentido=valorabsoluto(distanciaTito- distanaciaMateo)
distanciaSeparacionSentiodoContrario=distanciaTito+distanciaMateo
Datos de salida: distancia de separación
Análisis
leer datos
calcular distancias
mostrar distancias separación
Diseño
Pseudocódigo
Inicio HallarDistanciaSeparacion2
Escribir “Ingrese velocidad de Tito m/s”
Leer velocidadTito
Escribir “Ingrese velocidad de Mateo m/s”
Leer velocidadMateo
Escribir “Ingrese tiempo en segundos”
Leer tiempoSeg
Escribir “Ingrese sentido de movimiento, escriba M si se mueven en el mismo sentido o
escriba C si se mueven en sentido contrario”
Leer sentidoMovimiento
distanciaTito← velocidadTito*timepoSeg
distanciaMateo← velocidadMateo*tiempoSeg
//condicional simple
Si sentidoMovimiento es igual a M entonces
distanciaSeparacion← absoluto(distanciaTito-distanciaMateo)
Fin HallarDistanciaSeparacion2
Diagrama de flujo
Solucion 3
Inicio HallarDistanciaSeparacion3
Escribir “Ingrese velocidad de Tito m/s”
Leer velocidadTito
Escribir “Ingrese velocidad de Mateo m/s”
Leer velocidadMateo
Escribir “Ingrese tiempo en segundos”
Leer tiempoSeg
Escribir “Ingrese sentido de movimiento, escriba M si se mueven en el mismo sentido o
escriba C si se mueven en sentido contrario”
Leer sentidoMovimiento
//Selectivas simple
distanciaTito← velocidadTito*timepoSeg
distanciaMateo← velocidadMateo*tiempoSeg
Fin HallarDistanciaSeparacion3
Diagrama de flujo
Solucion 4
Inicio HallarDistanciaSeparacion4
Escribir “Ingrese velocidad de Tito m/s”
Leer velocidadTito
Escribir “Ingrese velocidad de Mateo m/s”
Leer velocidadMateo
Escribir “Ingrese tiempo en segundos”
Leer tiempoSeg
Escribir “Ingrese sentido de movimiento, escriba M si se mueven en el mismo sentido o
escriba C si se mueven en sentido contrario”
Leer sentidoMovimiento
distanciaTito← velocidadTito*timepoSeg
distanciaMateo← velocidadMateo*tiempoSeg
//Selectivas anidadas
Si sentidoMovimiento es igual a M entonces
{ distanciaSeparacion← absoluto(distanciaTito-distanciaMateo)
escribir “la distancia de separación en metros entre Tito y Mateo si se mueven en el
mismo sentido es de ”, distanciaSeparacion
}
Caso contrario
Si sentidoMovimiento es igual a C entonces
{ distanciaSeparacion<--distanciaTito+distanciaMateo
escribir “la distancia de separación en metros entre Tito y Mateo si se mueven
en sentido contrario es de ”, distanciaSeparacion
}
Caso contrario
{ distanciaSeparacion← 0
escribir “la distancia de separación en metros entre Tito y Mateo no se
puede definir porque ingreso sentido no válido ”,
}
Fin HallarDistanciaSeparacion4
4. Un agente del banco MiMoneda solo cuenta con billetes de las siguientes denominaciones 50, 20 y
10. Cuando un cliente pide el retiro de una cantidad x de dinero, el agente desea conocer la menor
cantidad de billetes que se requiere para entregar la cantidad x de dinero. En caso no se consiga la
cantidad exacta, deberá indicarse además el monto faltante para llegar a x.
Definición
al indicar el monto a retirar determinar la cantidad de billetes de cada nominación a entregar
por retiro, si hubiera una diferencia que no se puede cubrir con los billetes se indica el monto
faltante.
análisis
leer datos
calcular numerobilletes
mostrar cantidad de billetes y resto.
diseño
pseudocódigo
Iniciar DeterminarNumeroBilletes
escribir (“ingrese monto a retirar:”)
leer montoRetiro
billete50← 50
billete20← 20
billete10← 10
// cálculos
//determinar el número de billetes de 50 para el retiro
numBilletes50← cocienteEntero(montoRetiro/billete50)
resto← residuo(montoRetiro/billete50)
//determinar el número de billetes de 20 para el retiro
numBilletes20← cocienteEntero(resto/billete20)
resto← residuo(resto/billete20)
//determinar el número de billetes de 10 para el retiro
numBilletes10← cocienteEntero(resto/billete10)
resto← residuo(resto/billete10)
//mostrar
escribir (“para retirar el monto de ”,montoRetiro, “requiere de: “)
escribir (“billetes de 50: “,numBilletes50)
escribir (“billetes de 20: “,numBilletes20)
escribir (“billetes de 10: “,numBilletes10)
escribir (“quedando por cubrir una diferencia de “,resto)
fin DeterminarNumeroBilletes
Diagrama de flujo
5. Se desea calcular la suma de los números naturales y la suma de los cuadrados de los números
naturales que existen en un rango [a;b], validar que tanto a como b son números naturales mayores
que 0 y que se cumple que a < b.
Se sabe que:
Definición:
Calcular la suma de los números y la suma de los cuadrados de los números contenidos en un
rango de números naturales [a;b] donde a y b deben ser positivo y a menor que b.
datos de entrada: a, b
fórmulas: a>0,b>0,a<b
suma de n primeros números=n(n+1)/2
suma de cuadrados de n primeros números=n(n+1)(2n+1)/6
sumNumEntreayb=sumaNumeroshastab-sumaNumeroshastaa
sumCuaNumEntreayb=sumaCuadradosNumeroshastab-sumaCuadradosNumeroshastaa
datos de salida: sumNumEntreayb, sumCuaNumEntreayb
Diseño:
Solución 1
Pseudocódigo
Inicio SumaNumerosRango
Escribir (“indicar el rango de los números a sumar [a;b]”)
Escribir (“ingrese el valor de a:”)
Leer a
Escribir (“ingrese el valor de b:”)
Leer b
//validar a y b sean mayores de cero
si (a>0) y (b>0) y (a<b) entonces
{ //calcular sumas
sumhastab← b*(b+1)/2
sumhastaa← a*(a+1)/2
sumCuahastab← b*(b+1)*(2*b+1)/6
sumCuahastaa← a*(a+1)*(2*a+1)/6
sumadeahastab← sumhastab-sumhastaa
sumaCuadradosdeahastab← sumCuahastab-sumCuahastaa
Escribir (“la suma de los números en el rango [”,a,”;”,b,”] es: ”,sumadeahastab)
Escribir (“la suma de los cuadrados de los números en el rango [”,a,”;”,b,”] es:”,
sumaCuadradosdeahastab)
}
caso contrario
Escribir (“los valores ingresados no forman un rango válido”)
finsi
Fin SumaNumerosRango
Diagrama de flujo
solución 2
Pseudocódigo
Inicio SumaNumerosRango2
Escribir (“indicar el rango de los números a sumar [a;b]”)
Escribir (“ingrese el valor de a:”)
Leer a
Escribir (“ingrese el valor de b:”)
Leer b
Análisis
leer datos
calcular cantidad de pintura
mostrar número de galones
diseño
pseudocódigo
Inicio HallarCantidadPintura
Escribir (“Ingrese rendimiento de 1 litro de pintura por metro cuadrado”)
Leer rendimieroLitroM2
Escribir(“Ingrese las dimensiones de la pared a pintar”)
Escribir(“Ingrese el largo en metros (L):”)
Leer L
Escribir(“Ingrese el alto en metros (A):”)
Leer A
galon← 0.2641720512415584
areaParedMe2← L*A
numLitroPintura← areaParedMe2/rendimientoLitroM2
numGalPintura← redonderoEnteroSuperior(numLitroPintura*galon)
Escribir (“para pintar una pared de ”,L,”metros de largo por “,A,”metros de alto, se
requiere “, numGalPintura,” galones de pintura”
Fin HallarCantidadPintura
diagrama de flujo
7. Un violinista se encuentra en un barco, sabe que la nota musical RE tiene una frecuencia, por
convenio internacional, de 294 Hz. Si en el aire se propaga con una velocidad de 340 m=s y en el
agua lo hace a 1400 m=s, determine la longitud de onda en cada uno de estos medios.
definición:
conociendo la velocidad de propagación de la nota Re en el aire y el agua y su
frecuencia calcular la longitud de onda en el agua y el aire.
datos entrada: frecuenciaReHz=294
VelocidaReAire=340m/s
VelocidaReAgua=1400m/s
formulas: longituOnda=velocidadOnda/frecuenciaOnda
tiempo=1/frecuencia
datos de salida: longitud de onda en agua y aire
Diseño
pseudocódigo
solución 1
inicio HallarLongitudOnda
FrecuenciaRe← 294
VelocidadenAgua← 1400
VelocidadenAire← 340
LongitudOndaAgua← VelocidadenAgua/FrecuenciaRe
LongitudOndaAire← VelocidadenAire/FrecuenciaRe
Escribir “la longitud de onda de Re en aire es: “”, LongitudOndaAire,”metros”
Escribir “la longitud de onda de Re en agua es: “”, LongitudOndaAgua,”metros”
Fin HallarLongitudOnda
solución 2
inicio HallarLongitudOnda2
Escribir “Ingrese la nota musical”
leer NotaMusica
Escribir “Ingrese la frecuencia de la nota musical”
leer frecuenciaNotaMusica
Escribir “Ingrese la velocidad de propagación de la nota musical en el
agua”
leer VelocidadenAgua
Escribir “Ingrese la velocidad de propagación de la nota musical en el
aire”
leer VelocidadenAire
LongitudOndaAgua← VelocidadenAgua/FrecuenciaNotaMusica
LongitudOndaAire← VelocidadenAire/FrecuenciaNotaMusica
Escribir “la longitud de onda de “,NotaMusical,” en aire es: “”,
LongitudOndaAire,”metros”
Escribir “la longitud de onda de “,NotaMusical,” en agua es: “”,
LongitudOndaAgua,”metros”
Fin HallarLongitudOnda2
Definición
Teniendo la escala de un mapa determinar las distancias entre dos puntos, teniendo la medida
en el mapa podemos saber la medida en la realidad y viceversa.
datos de entrada: la escala,distancia real, distancia en mapa.
fórmulas: dibujo/realidad=escala
datos de salida: distanciaenmapa, distanciareal
Diseño
Solución 1
pseudocodigo
Inicio HallarDistancia
Escribir “Ingrese distancia en mapa entre ciudades (A-B) ”
leer distanciaMapaAB
Escribir “ingresar distancia real entre ciudades (C-D)”
leer distanciaRealCD
escala← 1/50000
//escala <--distanciaMapa/distanciaReal
distanciaRealAB← distanciaMapaAB/escala
distanciaMapaCD← escala*distanciaRealCD
Fin HallarDistancia
Solución 2
pseudocodigo
Inicio HallarDistancia2
Escribir “Indicar que tipo de distancia requiere calcular”
Escribir “Ingresar M: para distancia en mapa ”
Escribir “Ingresar R: para distancia Real ”
leer tipoDistancia
//escala <--distanciaMapa/distanciaReal
escala← 1/50000
Si tipoDIstancia=R entonces
{ Escribir “Ingrese la distancia en mapa entre ciudades (A-B) ”
leer distanciaMapaAB
distanciaRealAB← distanciaMapaAB/escala
escribir “la distancia real entra ciudades (A-B) es ”, distanciaRealAB }
Si tipoDIstancia=M entonces {
Escribir “ingresar distancia real entre ciudades (C-D)”
leer distanciaRealCD
distanciaMapaCD← escala*distanciaRealCD
escribir “la distancia en el mapa entra ciudades (C-D) es ”, distanciaMapaCD }
Si TipoDistancia<>M y tipoDIstancia<>R entonces
Escribir “el tipo de distancia que ingreso no es válido”
Fin HallarDistancia2
Diagrama de flujo
Solución 3
pseudocodigo
Inicio HallarDistancia3
Escribir “Indicar que tipo de distancia requiere calcular”
Escribir “Ingresar M: para distancia en mapa ”
Escribir “Ingresar R: para distancia Real ”
leer tipoDistancia
//escala <--distanciaMapa/distanciaReal
escala← 1/50000
Si tipoDIstancia=R entonces
{ Escribir “Ingrese la distancia en mapa entre ciudades (A-B) ”
leer distanciaMapaAB
distanciaRealAB← distanciaMapaAB/escala
escribir “la distancia real entra ciudades (A-B) es ”, distanciaRealAB }
caso contrario
Si tipoDIstancia=M entonces {
Escribir “ingresar distancia real entre ciudades (C-D)”
leer distanciaRealCD
distanciaMapaCD← escala*distanciaRealCD
escribir “la distancia en el mapa entra ciudades (C-D) es ”, distanciaMapaCD }
caso contrario
Escribir “el tipo de distancia que ingreso no es válido”
Fin HallarDistancia3
Diagrama de flujo