Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Fundamentos de Programación
Fundamentos de Programación
CASO PRÁCTICO
CASO 1. BITÁCORA DEL VIAJE DE MARCO1
PREGUNTA 1
Marco inicia la búsqueda andando a paso firme y ansioso por encontrar a su madre. La
velocidad del chaval –en promedio diario- es de 10 a 15 Km/h (teniendo en cuenta que
a ratos corre, a otros ratos trota y a otros camina), y que realiza de 8 a 10 horas de
trayecto.
El camino en sí tiene pocos inconvenientes –además del caminar, claro está-, aunque
existe la probabilidad de lluvia. Hay un 10% de probabilidad de lluvia fuerte (en cuyo
1 Marco, de los Apeninos a los Andes es un relato breve de ficción incluido por Edmundo de Amicis en su novela
Corazón, publicada en 1886. Narra la historia del extenso y complicado viaje de un niño de trece años, Marco, desde
Italia hacia Argentina, en busca de su madre, que había emigrado a aquel país sudamericano dos años antes. (Fuente:
Wikipedia https://es.wikipedia.org/wiki/Marco,_de_los_Apeninos_a_los_Andes)
1
caso la velocidad de Marco se reduce al 25%) y un 30% de probabilidad de lluvia normal
(en cuyo caso la velocidad se reduce en un 25%). El restante 60% de probabilidad le
corresponde a un buen clima.
Y, por supuesto, Marco viaja con su mono Amedio, quien le hace de buena compañía.
Sin embargo, Amedio, mono al fin, tiene días mejores y peores: en algunos se cansa y
Marco tiene que llevarlo en brazos (lo que reduce su velocidad en un 10%) y otros días
–¡los peores!– se escapa, lo que obliga a Marco a correr en su búsqueda, perdiendo dos
valiosas horas de recorrido2.
Por su parte, la madre –que inicialmente está a 350 kilómetros de Marco- recorre
Argentina en un carruaje tirado por caballos, avanzando 100 kilómetros cada día…
import random
def buscar_madre():
distancia_madre = 350 # distancia inicial en kilómetros
velocidad_minima_marco = 10
velocidad_maxima_marco = 15
horas_diarias_marco = random.randint(8, 10)
dias = 0
if clima_marco == 'lluvia_fuerte':
velocidad_marco = velocidad_maxima_marco * 0.75 # reducción del 25%
elif clima_marco == 'lluvia_normal':
velocidad_marco = velocidad_maxima_marco * 0.75 # reducción del 25%
else:
velocidad_marco = random.uniform(velocidad_minima_marco,
velocidad_maxima_marco)
dias += 1
return dias
dias_encontrar_madre = buscar_madre()
2
Pregunta 1.1
Extienda el programa anterior para que la madre, en lugar de avanzar 80 kilómetros por
día, recorra el camino a una velocidad de 6 a 9 km/h al día, haciendo tramos de entre 6
a 9 horas de trayecto por día. Durante el trayecto, cada día, debido a lo irregular del
clima, hay un 60% de probabilidad de buen tiempo, un 30% de probabilidad de lluvia y
un 10% de probabilidad de lluvia muy fuerte. Si llueve, la velocidad del carruaje se ve
disminuida en un 25% y si llueve muy fuerte, el carruaje ve disminuida su velocidad en
un 50%.
import random
def buscar_madre():
distancia_madre = 350 # distancia inicial en kilómetros
velocidad_minima_marco = 10
velocidad_maxima_marco = 15
horas_diarias_marco = random.randint(8, 10)
dias = 0
distancia_madre_inicial = 350
velocidad_minima_madre = 6
velocidad_maxima_madre = 9
horas_diarias_madre_min = 6
horas_diarias_madre_max = 9
if clima_marco == 'lluvia_fuerte':
velocidad_marco = velocidad_maxima_marco * 0.75 # reducción del 25%
elif clima_marco == 'lluvia_normal':
velocidad_marco = velocidad_maxima_marco * 0.75 # reducción del 25%
else:
velocidad_marco = random.uniform(velocidad_minima_marco,
velocidad_maxima_marco)
horas_diarias_madre = random.uniform(horas_diarias_madre_min,
horas_diarias_madre_max)
if clima_madre == 'lluvia_fuerte':
velocidad_madre = velocidad_maxima_madre * 0.5 # reducción del 50%
elif clima_madre == 'lluvia_normal':
velocidad_madre = velocidad_maxima_madre * 0.75 # reducción del 25%
else:
velocidad_madre = random.uniform(velocidad_minima_madre,
velocidad_maxima_madre)
dias += 1
return dias
dias_encontrar_madre = buscar_madre()
print(f"Al final del día {dias_encontrar_madre} Marco encuentra a su madre!!!")
3
Pregunta 1.1.1
Extienda el programa anterior para que contemple que si al final del día la distancia entre
la madre y Marco es menor a 50 km, existe el 50% de probabilidad que Marco encuentre
alguien que le diga que ha visto a su madre, lo que le emocionaría y rompería a correr
–sin importar el clima, el cansancio ni el mono– 25 kilómetros adicionales a lo avanzado
ese día.
import random
def buscar_madre():
distancia_madre = 350 # distancia inicial en kilómetros
velocidad_minima_marco = 10
velocidad_maxima_marco = 15
horas_diarias_marco = random.randint(8, 10)
dias = 0
distancia_madre_inicial = 350
velocidad_minima_madre = 6
velocidad_maxima_madre = 9
horas_diarias_madre_min = 6
horas_diarias_madre_max = 9
if clima_marco == 'lluvia_fuerte':
velocidad_marco = velocidad_maxima_marco * 0.75 # reducción del 25%
elif clima_marco == 'lluvia_normal':
velocidad_marco = velocidad_maxima_marco * 0.75 # reducción del 25%
else:
velocidad_marco = random.uniform(velocidad_minima_marco,
velocidad_maxima_marco)
horas_diarias_madre = random.uniform(horas_diarias_madre_min,
horas_diarias_madre_max)
if clima_madre == 'lluvia_fuerte':
velocidad_madre = velocidad_maxima_madre * 0.5 # reducción del 50%
elif clima_madre == 'lluvia_normal':
velocidad_madre = velocidad_maxima_madre * 0.75 # reducción del 25%
else:
velocidad_madre = random.uniform(velocidad_minima_madre,
velocidad_maxima_madre)
dias += 1
4
return dias
dias_encontrar_madre = buscar_madre()
print(f"Al final del día {dias_encontrar_madre} Marco encuentra a su madre!!!")