Codificación aprenderaprogramar.com: CU00253A
DIAGRAMAS DE FLUJO Y DISCUSIÓN DE RESULTADOS PARA EL PROBLEMA DEL TIRO PARABÓLICO.
Continuamos con el ejercicio de la entrega anterior. Recordemos que se trataba de un ejercicio con el siguiente enunciado:
Un fabricante de motocicletas de cross desea generar un programa que le permita proporcionar a los clientes distancias de avance previsible en función de la velocidad en el punto de salida de una rampa de altura h y un ángulo respecto a la horizontal α expresado en grados.
Diagrama de flujo:
Comentarios: Uno de los módulos, el denominado Cuadratica, no es llamado desde el algoritmo principal sino desde otro módulo. Todas las variables conocidas por el módulo Calcular son conocidas por el módulo Cuadratica debido a la relación de subordinación. En cambio, hay variables estrictamente locales del módulo Cuadratica que no son conocidas en el módulo Calcular. A modo de ejemplo, g tiene por ámbito todo el programa, i el módulo Calcular y el módulo Cuadratica y d sólo el módulo Cuadratica. El módulo Cuadratica se ha simplificado después de un pequeño análisis de las posibilidades matemáticas. d resulta siempre mayor que cero, ya que a siempre es negativo y c siempre es positivo o cero. e siempre es negativo.
Por tanto las posibles soluciones se reducen a:
Si a = 0 resulta b = 0 y negativo. x1 sería una solución que no nos interesa puesto que x representa un tiempo.
Si h = 0 resulta b = con lo que x1 = 0 y por el mismo motivo que en el caso anterior se desecha esta solución.
Si a > 0 y h > 0 tendremos b = Vo sen a y con lo que siempre es mayor que b por lo que la solución es negativa y no es la apropiada.
Por lo tanto la solución que nos interesa, y a la que podemos acudir directamente es:
Esto no necesariamente tenía que haber sido así. Podíamos haber usado un método capaz de resolver cualquier caso de ax2 + bx + c = 0 en vez de éste particular, y después seleccionar la solución correcta. De hecho, normalmente un programador no se detiene siempre a estudiar este tipo de decisiones. Una cosa sí queremos resaltar: al operar con letras todo es perfecto, pero recordemos las “gracias” que nos pueden ocurrir a cuenta de los decimales... puede que tratáramos de buscar la solución adecuada como x ¹ 0 y encontrarnos con situaciones como -b + SQR(b2) <> 0 ... porque se perdieron decimales por el camino. Ojo avizor y si aparecen resultados extraños, para eso están las verificaciones.
El módulo EntrarDatos trata de bloquear la posibilidad de que se pueda acceder al cálculo con datos no válidos.
En el módulo Calcular se pasa el valor del ángulo a radianes porque, como dijimos en su momento, los ordenadores suelen trabajar en radianes.
Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo.
Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.