0% encontró este documento útil (0 votos)
60 vistas9 páginas

Caso 03

El documento presenta un caso de estudio sobre el movimiento parabólico de Angry Birds. El objetivo es desarrollar un algoritmo que calcule la velocidad necesaria para que un Angry Bird lanzado a 45° sobrepase un objetivo a 503 metros. El algoritmo debe solicitar valores de velocidad al usuario e ir calculando la distancia alcanzada hasta lograr el objetivo, sin despejar la fórmula directamente. Se definen las variables, ecuación y estructura básica del algoritmo para resolver el problema a través de múltiples pruebas

Cargado por

art photogrsfy
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
60 vistas9 páginas

Caso 03

El documento presenta un caso de estudio sobre el movimiento parabólico de Angry Birds. El objetivo es desarrollar un algoritmo que calcule la velocidad necesaria para que un Angry Bird lanzado a 45° sobrepase un objetivo a 503 metros. El algoritmo debe solicitar valores de velocidad al usuario e ir calculando la distancia alcanzada hasta lograr el objetivo, sin despejar la fórmula directamente. Se definen las variables, ecuación y estructura básica del algoritmo para resolver el problema a través de múltiples pruebas

Cargado por

art photogrsfy
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

Facultad de Ingeniería

Programa de Ingeniería de Sistemas


Programación I
CASO 3

CASO DE ESTUDIO: APLICACIÓN DEL


MOVIMIENTO PARABÓLICO
Angry Birds
1. ENUNCIADO
Desarrolle un Algoritmo donde se calcule la velocidad de lanzamiento necesaria para
que un Angry Bird lanzado desde el piso con una inclinación de 45° sobrepase un
objetivo dispuesto a 503 metros de distancia, tomando en cuenta que se rige mediante
el cálculo del movimiento parabólico. Tenga en cuenta lo siguiente:

● El cálculo de la velocidad no debe hacerse por despeje de formula.


● Usted debe probar con distintos valores de velocidad hasta: lograr sobrepasar el
objetivo de 503 metros, lograr el objetivo después de un X número 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 antigüedad hasta los juegos
en nuestros teléfonos y tabletas de hoy, el cálculo rápido del movimiento parabólico es
fundamental.
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 3

Movimiento parabólico

Es el realizado por un objeto cuya trayectoria describe una parábola. 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 solución, simplificando los datos
que se extraen de la información inicial, señalando el plano ( x, y ) donde se realizará el
movimiento.

Describiendo el sistema físico mediante el siguiente esquema:

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 ecuación que calcula la distancia máxima en
el plano x alcanzada por el Angry Bird ( proyectil ) o como se ve en la gráfica R, por lo
general la gravedad se define como 9.8 m/s, quedando la ecuación así:
v02
R= g sin 2θ

Se lee así: R es igual a la velocidad inicial del proyectil al cuadrado, dividido por la
gravedad, el resultado se multiplica por el valor del seno de dos veces el ángulo de
lanzamiento.
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 3

2. ESTRUCTURA DE DATOS
En este punto entonces es necesario considerar qué información debe ser definida al
iniciar el algoritmo y cuál debe ser introducida por el usuario.

En la siguiente tabla se define el uso, el nombre de la variable y el valor inicial que


debería tener cada una de estas variables:

Explicación 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

Variable introducida por el usuario que servirá velocidad 0


para guardar el valor de la velocidad necesaria
de lanzamiento

Velocidad inicial a evaluar velocidad_inicial 0

Velocidad final a evaluar velocidad_final 0

Como deseamos encontrar la velocidad ideal del lanzamiento, más adelante en el


ejercicio se explica cómo se inicializan estas variables y que opciones tenemos.

3. REQUERIMIENTOS FUNCIONALES
RF1​. El Algoritmo debe calcular e imprimir la distancia máxima que alcanza el Angry
Bird al ser lanzado.

RF2​. El programa debe solicitar al usuario al menos 5 veces las velocidades de


lanzamiento para realizar los cálculos.
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 3

4. REQUERIMIENTOS INSTRUCCIONALES
A. ANÁLISIS

Este tipo de algoritmos básicamente realizan operaciones matemáticas simples, la


ecuación que se debe transformar en un algoritmo y describe el movimiento es:
v02
R= g sin 2θ

En la anterior ecuación es necesario el reemplazo de los valores por las variables


previamente definidas.

B. DISEÑO
Se puede implementar el algoritmo de diversas maneras, una de ellas ­práctica y
funcional­, es despejar la velocidad inicial del lanzamiento para calcular el valor exacto
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 fórmula, 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 cálculo de la velocidad de lanzamiento se realiza mediante la


solicitud al usuario de la velocidad inicial, se realiza la operación 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 evalúe una a una, sin interacción alguna y en caso de que la velocidad
o velocidades requeridas sean parte de ese rango se imprimen los resultados
correspondientes.
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 3

C. IMPLEMENTACIÓN
Las variables es lo primero que un algoritmo debe definir:

distancia_objetivo = 503;
distancia_alcanzada = 0;
gravedad = 9.8;
angulo = 45;
velocidad_inicial = 0;
velocidad_final = 0;
velocidad = 0;
Usando las variables previamente definidas podemos describir la ecuación como un
algoritmo de la siguiente forma:

distancia_alcanzada = ( ( velocidad* velocidad ) / gravedad ) * ​


sin​
(2*angulo)

En este punto reemplazamos la ecuación con sus respectivas variables, el detalle


faltante es como calcular el SENO de un ángulo, para esto se deben usar funciones
trigonométricas por lo tanto es necesario decirle a C++ que debe importarlas y así,
trabajar con ellas. En la cabecera, al inicio del algoritmo y código fuente se debe
adicionar:
#include <cmath>

Con esto disponemos de una gran cantidad de funciones predefinidas, por el momento
nos interesa profundizar sobre una de ellas:

sin() : calcula el seno de un ángulo, estos valores deben estar en radianes.

Para pasar de grados a radianes, define una constante , al inicio del algoritmo y código
fuente así:
#define PI 3.141592654

La fórmula del paso grados a radianes entonces sería: ​


angulo*PI/180

La fórmula quedaría así:


distancia_alcanzada=((velocidad*velocidad)/gravedad)*sin(2*(angulo*PI/180));
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 3

Con estas funciones se facilita el cálculo de la ecuación usada para encontrar la


distancia X máxima recorrida.
Ahora, si se integra todo en un algoritmo completo:
#include <iostream>
#include <cmath>
#define PI 3.141592654
using namespace std;

int main()
{
float distancia_objetivo, distancia_alcanzada;
float velocidad_inicial, velocidad_final, gravedad, angulo, velocidad;
char continuar;

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

while(continuar=='s' || continuar=='S')
{
cout<<"\nPor favor indica una velocidad para probar:";
cin>>velocidad;
distancia_alcanzada=((velocidad*velocidad)/gravedad)*sin(2*(angulo*PI/180));
​out<<"\nLa distancia alcanzada fue de: "<<distancia_alcanzada;
c
if (distancia_alcanzada >= distancia_objetivo)
cout<<"\nSe sobrepaso el objetivo, velocidad de "<<velocidad;
else
cout<<"\nNO se sobrepasó el objetivo";
cout<<"\n\nDesea continuar? s/n:";
cin>>continuar;
}
cout<<"\n\nHasta la proxima!\n\n";
return 0;
}
D. PRUEBAS

El programa deberá entregar como resultado el valor de la velocidad de lanzamiento


necesaria para golpear el objeto a la distancia deseada.
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 3

Si probamos 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

Hasta la próxima!

En este ejercicio es necesario lanzar el Angry Bird a más de 80 m/s para sobrepasar el
objetivo, se tiene la sensación de es tedioso incluir valor por valor ¿no?, ahora
intentaremos entregándole 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


Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 3

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

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


Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
CASO 3

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 próxima!

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

5. ENTREGABLES
a. Código fuente (AngryBirds-T000000.cpp)
b. El código fuente debe estar documentado.
c. Impresión del pantallazo con los datos de salida.

También podría gustarte