Sie sind auf Seite 1von 13

Facultad de Ingeniera

Programa de Ingeniera de Sistemas


Algoritmos
2014

CASO DE ESTUDIO: Aplicacin del
movimiento parablico - Angry Birds

EC2: Solucionar casos matemticos, estadsticos y financieros por medio de
programas, teniendo en cuenta estructuras de datos bsicas que permitan almacenar
secuencias de valores.

Semana Saber Hacer Ser
6
Conceptos
bsicos de
programacin.
Variables y
tipos de datos.
Sintaxis y
semntica
bsica.
Entornos de
programacin.
Analiza el caso 4 de
estudio propuesto.
Realiza la abstraccin
del caso.
Disea una posible
solucin.
Resuelve el caso con
estructuras de datos
estticas, procesos y
entrega de datos
resultado.
Proactivo al analizar el
caso.
Ordenado al realizar
la abstraccin del
caso.
Propositivo al disear
la posible solucin.
Creativo al resolver el
caso.
CE7: Utiliza las estructuras de datos estticas con valores numricos o alfanumricos
como elementos para la solucin a problemas





Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014


1. ENUNCIADO
Desarrolle un Algoritmo donde se calcule que permita encontrar cul es la velocidad de
lanzamiento necesaria para que un Angry Bird lanzado desde el piso con una
inclinacin de 45 sobrepase un objetivo dispuesto a 503 metros de distancia, tomando
en cuenta que se rige mediante el clculo del movimiento parablico. Tenga en cuenta
lo siguiente:

El clculo de lLa velocidad de lanzamiento no debe hacerse por calcularse
mediante despeje de formulafrmula.
El algoritmo debe estar diseado de forma tal que el usuario pueda probar Usted
debe probar con distintos valores de velocidad hasta:

Lograr Encontrar la velocidad de lanzamiento con la que se logra
sobrepasar el objetivo de 503 metros
Lograr el objetivo despus de un X nmero de intentos
o continuar probando distintos valores de velocidad hasta que ya no
quiera seguir con las pruebas.


Contexto del caso
Desde tiempos inmemoriales el ser humano usa la ciencia para dominar el entorno, sus
amigos o enemigos, desde la carrera armamentista en la antigedad hasta los juegos
en nuestros telfonos y tabletas de hoy, el clculo rpido del movimiento parablico es
fundamental.

Formatted: Indent: Left: 0.28", No bullets or
numbering
Formatted: Indent: Left: 0", Right: 0"

Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014




Movimiento parablico
Es el realizado por un objeto cuya trayectoria describe una parbola. Se
corresponde con la trayectoria ideal de un proyectil que se mueve en un medio que
no ofrece resistencia al avance y que est sujeto a un campo gravitatorio uniforme.
Tomado de Wikipedia
Para entender mejor el ejercicio se debe abstraer la solucin, simplificando los datos
que se extraen de la informacin inicial, sealando el plano ( x, y ) donde se realizar el
movimiento.

Describiendo el sistema fsico mediante el siguiente esquema:


Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014

Simplificando los datos se tiene un ngulo (), una distancia recorrida R necesaria para
acertar el lanzamiento y se debe buscar la velocidad de lanzamiento necesaria.
Para realizar el proceso es necesaria una ecuacin que calcula la distancia mxima en
el plano x alcanzada por el Angry Bird ( proyectil ) o como se ve en la grfica R, por lo
general la gravedad se define como 9.8 m/s
2
, quedando la ecuacin as:


Se lee as: R es igual a la velocidad inicial del proyectil elevada al cuadrado, dividido
dividida por la gravedad, el resultado se multiplica por el valor del seno de dos veces el
ngulo de lanzamiento.
2. ESTRUCTURA DE DATOS
En este punto entonces es necesario considerar qu informacin debe ser definida al
iniciar el algoritmo y cul debe ser introducida por el usuario.

En la siguiente tabla se define el uso, el nombre de la variable y el valor inicial que
debera tener cada una de estas variables:
Explicacin de la variable Variable Valor inicial
Distancia necesaria recorrida distancia_objetivo 503
Distancia alcanzada por el proyectil distancia_alcanzada 0
Constante de gravedad en la tierra gravedad 9.8
ngulo de lanzamiento angulo 45
Formatted: Font color: Text 1, Superscript

Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014

Variable introducida por el usuario que servir
para guardar el valor de la velocidad necesaria de
lanzamiento
velocidad 0
Velocidad inicial a evaluar velocidad_inicial 0
Velocidad final a evaluar velocidad_final 0

Como deseamos encontrar la velocidad ideal del lanzamiento, ms adelante en el
ejercicio se explica cmo se inicializan estas variables y que opciones tenemos.
3. REQUERIMIENTOS FUNCIONALES

RF1. El Algoritmo debe calcular e imprimir la distancia mxima que alcanza el Angry
Bird al ser lanzado con una cierta velocidad inicial.
RF2. El programa algoritmo debe solicitar al usuario al menos 5 veces las velocidades
valores de velocidad de lanzamiento para realizar los clculos.
4. REQUERIMIENTOS INSTRUCCIONALES
A. ANLISIS
Este tipo de algoritmos bsicamente realizan operaciones matemticas simples, la
ecuacin que se debe transformar en un algoritmo y describe el movimiento es:


En la anterior ecuacin es necesario el reemplazo de los valores por las variables
previamente definidas.

B. DISEO
Se puede implementar el algoritmo de diversas maneras, una de ellas -prctica y
funcional-, es despejar la velocidad inicial del lanzamiento para calcular el valor exacto

Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014

o mayor necesario para sobrepasar el objetivo, pero este no es nuestro caso. Para
este ejercicio, se van a pedir valores sucesivos de velocidad, cada valor de velocidad
va a ser probado en la frmula, y se va a calcular un valor de distancia, distancia que
va a ser comparada con el valor objetivo, y con base en esto se va a emitir un juicio
que indicar si no se alcanz, o se sobrepas el objetivo.
De est manera el clculo de la velocidad de lanzamiento se realiza mediante la
solicitud al usuario de la velocidad inicial, se realiza la operacin y se compara en cada
oportunidad, para esto el usuario debe escribir una velocidad diferente muchas veces
hasta cumplir el objetivo del ejercicio.

Otra manera de realizarlo es pidiendo que el usuario escriba un rango de velocidades y
el algoritmo las evale una a una, sin interaccin alguna y en caso de que la velocidad
o velocidades requeridas sean parte de ese rango se imprimen los resultados
correspondientes.

C. IMPLEMENTACIN
Las variables es son lo primero que se debe definir para desarrollar un un algoritmo
debe definir:
distancia_objetivo = 503
distancia_alcanzada = 0
gravedad = 9.8
angulo = 45
velocidad_inicial = 0
velocidad_final = 0
velocidad = 0

Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014


Usando las variables previamente definidas podemos describir la ecuacin como un
algoritmo de la siguiente forma:
distancia_alcanzada = ( ( velocidad* velocidad ) / gravedad ) * sin (2*angulo)
En este punto reemplazamos la ecuacin con sus respectivas variables, el detalle
faltante es como calcular el SENO de un ngulo, para esto se deben usar funciones
trigonomtricas por lo tanto es necesario decirle a python que debe importarlas y as,
trabajar con ellas. En la cabecera, al inicio del algoritmo y cdigo fuente se debe
adicionar:
import math
Con esto disponemos de una gran cantidad de funciones predefinidas, por el momento
nos interesa profundizar sobre dos de ellas:
math.sin() : calcula el seno de un ngulo, estos valores deben estar en radianes.
math.radians(ngulo): es una funcin usada para convertir los ngulos de grados a
radianes, necesarios para el clculo de las funciones trigonomtricas.
math.pi : es una constante que contiene el valor del nmero pi, por ejemplo 45 es igual a
pi/4


Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014


La frmula convertida quedara as:
distancia_alcanzada = ( ( velocidad* velocidad ) / gravedad ) * math.sin( 2 * math.radians(angulo) ) )
Con estas funciones se facilita el clculo de la ecuacin usada para encontrar la
distancia X mxima recorrida.

Ahora, si se integra todo en un algoritmo completo, podemos describirlo de dos
maneras, la primera de ellas es indicarle al usuario escribir una a una las velocidades a
probar:

# -*- coding: utf-8 -*-
import math
distancia_objetivo = 503
distancia_alcanzada = 0
gravedad = 9.8
angulo = 45
velocidad = 0
velocidad_inicial = 0
velocidad_final = 0
continuar = "s"

while(continuar=="s"):
velocidad = float(raw_input("Por favor indica una velocidad para probar:"))
distancia_alcanzada = ( ( velocidad* velocidad ) / gravedad ) * math.sin( 2 * math.radians(angulo) )
print "la distancia alcanzada fue de: ",distancia_alcanzada
if distancia_alcanzada >= distancia_objetivo:
print "Se sobrepas el objetivo, con una velocidad de ",velocidad
else:
print "NO se sobrepas el objetivo"

continuar = raw_input("Desea continuar? s/n:")
print "Hasta la prxima!"


Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014




En La segunda forma, se define un rango de velocidades:


# -*- coding: utf-8 -*-
import math

distancia_objetivo = 503
distancia_alcanzada = 0
gravedad = 9.8
angulo = 45
velocidad = 0
velocidad_inicial = 0
velocidad_final = 0
continuar = "s"

while(continuar=="s"):
velocidad_inicial = int(raw_input("Por favor indica una velocidad inicial para probar:"))
velocidad_final = int(raw_input("Por favor indica una velocidad final de la prueba:"))
for velocidad_temporal in range(velocidad_inicial,velocidad_final):
distancia_alcanzada = ( ( velocidad_temporal * velocidad_temporal ) / gravedad ) * math.sin( 2 * math.radians(angulo) )
print "la distancia alcanzada fue de: ",distancia_alcanzada
if distancia_alcanzada >= distancia_objetivo:
print "Se sobrepas el objetivo ", velocidad_temporal
else:
print "NO se sobrepas el objetivo",velocidad_temporal

Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014


continuar = raw_input("Desea continuar? s/n:")
print "Hasta la prxima!"

D. PRUEBAS
El programa deber entregar como resultado el valor de la velocidad de lanzamiento
necesaria para golpear el objeto a la distancia deseada.
Si probamos sucesivamente con varios valores de velocidad por velocidad , escribiendo
50, 70 y 80 como valores posibles de velocidad:

Por favor indica una velocidad para probar:60
la distancia alcanzada fue de: 367.346938776
NO se sobrepas el objetivo

Desea continuar? s/n:s

Por favor indica una velocidad para probar:70
la distancia alcanzada fue de: 500.0
NO se sobrepas el objetivo

Desea continuar? s/n:s

Por favor indica una velocidad para probar:80
la distancia alcanzada fue de: 653.06122449
Se sobrepas el objetivo, con una velocidad de 80.0

Desea continuar? s/n:n

Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014

Hasta la prxima!

En este ejercicio es necesario lanzar el Angry Bird a ms de 80 m/s para sobrepasar el
objetivo, se tiene la sensacin de es tedioso incluir valor por valor no?, ahora
intentaremos entregndole al algoritmo un rango para evaluar las velocidades, por
ejemplo, velocidad inicial de 60 y velocidad final de 80, el algoritmo probar 60, 61, 62,
etc.


Por favor indica una velocidad inicial para probar:60

Por favor indica una velocidad final de la prueba:80
la distancia alcanzada fue de: 367.346938776
NO se sobrepas el objetivo
la distancia alcanzada fue de: 379.693877551
NO se sobrepas el objetivo
la distancia alcanzada fue de: 392.244897959
NO se sobrepas el objetivo
la distancia alcanzada fue de: 405.0
NO se sobrepas el objetivo
la distancia alcanzada fue de: 417.959183673
NO se sobrepas el objetivo
la distancia alcanzada fue de: 431.12244898
NO se sobrepas el objetivo
la distancia alcanzada fue de: 444.489795918
NO se sobrepas el objetivo
la distancia alcanzada fue de: 458.06122449
NO se sobrepas el objetivo

Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014

la distancia alcanzada fue de: 471.836734694
NO se sobrepas el objetivo
la distancia alcanzada fue de: 485.816326531
NO se sobrepas el objetivo
la distancia alcanzada fue de: 500.0
NO se sobrepas el objetivo
la distancia alcanzada fue de: 514.387755102
Se sobrepas el objetivo, con una velocidad de 71
la distancia alcanzada fue de: 528.979591837
Se sobrepas el objetivo, con una velocidad de 72
la distancia alcanzada fue de: 543.775510204
Se sobrepas el objetivo, con una velocidad de 73
la distancia alcanzada fue de: 558.775510204
Se sobrepas el objetivo, con una velocidad de 74
la distancia alcanzada fue de: 573.979591837
Se sobrepas el objetivo, con una velocidad de 75
la distancia alcanzada fue de: 589.387755102
Se sobrepas el objetivo, con una velocidad de 76
la distancia alcanzada fue de: 605.0
Se sobrepas el objetivo, con una velocidad de 77
la distancia alcanzada fue de: 620.816326531
Se sobrepas el objetivo, con una velocidad de 78
la distancia alcanzada fue de: 636.836734694
Se sobrepas el objetivo, con una velocidad de 79

Desea continuar? s/n:n
Hasta la prxima!

Desde que velocidad de tiro inicial se sobrepasa el objetivo planteado?

Facultad de Ingeniera
Programa de Ingeniera de Sistemas
Algoritmos
2014


5. ENTREGABLES
a. Cdigo fuente (AngryBirds-T000000.py)
b. El cdigo fuente debe estar documentado.
c. Impresin del pantallazo con los datos de salida.

Das könnte Ihnen auch gefallen