Bucles
Fundamentos de la programación y la informática
Grado en ingeniería aeroespacial en vehículos aeroespaciales 2018-2019
Escuela Técnica Superior de Ingeniería de Telecomunicación
Universidad Rey Juan Carlos


Cambios en el documento

Práctica 7.1. Ángulo de ataque, v01

En este ejercicio practicarás el uso de bucles while.

Tenemos un simulador de vuelo. Estamos trabajando en el control del ángulo de ataque. Nuestro programa recibe

  1. El ángulo actual del ala.

  2. El ángulo objetivo, que es el ángulo que tenemos que alcanzar.

  3. Una constante llamada tolerancia.

Estas tres magnitudes están en grados.

Nuestro programa tiene que conseguir que el ángulo actual se acerque lo suficiente al ángulo objetivo. Para ello deberá invocar a dos procedimientos:

Escribe un procedimiento llamado nivela que, si es necesario, invoque a los procedimientos incrementa_angulo y decrementa_angulo hasta que la distancia entre el ángulo actual y el objetivo esté dentro del margen de toleracia. Son aceptables los ángulos cuya diferencia con el ángulo objetivo sea menor o igual que el margen de tolerancia.

Ten en cuenta que es posible que el incremento o decremento producido sea mayor del necesario, y por tanto sea necesario rectificar.

Los procedimientos incrementa_angulo y decrementa_angulo ya están implementados. También un procedimiento inicia_valores que da valor inicial a angulo_actual y angulo_objetivo. Casi todo el problema está resuelto, lo tienes disponible en este enlace.

Lo que debes hacer es:

  1. Copiar el programa en tu cuenta, con el nombre ~/fpi/practica07/angulo_ataque_01.pas

  2. El programa indenta con tabuladores, si lo prefieres puedes convertirlos en espacios de alguna de estas formas:

    Recuerda que en ningún caso puedes mezclar tabuladores y espacios.

  3. Escribir el procedimiento nivela

El resto de detalles sobre el uso de los procedimientos inicia_valores, incrementa_angulo y decrementa_angulo, consúltalos en el mismo fuente del programa.

Práctica 7.2. Máximo y Mínimo desde teclado

Escribe un programa en un fichero llamado ~/fpi/practica07/maximo_minimo.pas que vaya pidiendo números positivos al usuario. Cuando se introduce un 0, el programa debe terminar indicando antes el máximo y el mínimo de los números introducidos.

Si el usuario introduce algo diferente a lo solicitado (la entrada no es un número o no es un número positivo) el programa debe ignorarlo, escribir un mensaje de error y seguir funcionando con normalidad, solicitando un nuevo número.

Si el usuario no introduce ningún número positivo antes del 0, el programa terminará pero no debe mostrar el máximo ni el mínimo, sino un mensaje de error específico.

Ejemplo de funcionamiento:

./maximos
Introducir número positivo (0 para terminar): 12
Introducir número positivo (0 para terminar): -1
Valor no válido.
Introducir número positivo (0 para terminar): 8
Introducir número positivo (0 para terminar): 23
Introducir número positivo (0 para terminar): 0
Máximo: 23
Mínimo: 8
  

Práctica 7.3. Ángulo de ataque, v02

En el ejercicio 7.1, tu programa monitorizaba continuamente una magnitud y daba continuamente órdenes para corregirla. Este es un enfoque muy habitual, pero a veces no es posible medir tantas veces y dar tantas órdenes. Hay entornos donde es necesario leer una única vez una magnitud, estimar la corrección deseada, dar una única orden y aceptar que, si el sistema está bien diseñado, esto será suficiente.

Ejemplos:

Copia de nuevo el esqueleto de programa que usaste en la práctica 7.1, dale el nombre ~/fpi/practica07/angulo_ataque_02.pas y añade todo lo necesario para que cumpla la siguiente especificación:

  1. En primer lugar, una función llamada estima_incremento calculará el incremento medio del ángulo que genera el procedimiento incrementa_angulo.

    Para ello, la función hará n veces lo siguiente:

  2. Otra función llamada estima_decremento hará el cálculo análogo para los decrementos.

  3. Modifica el procedimiento nivela para que reciba, además, el incremento medio y el decremento medio.

  4. El procedimiento nivela estimará los incrementos o decrementos necesarios, invocará a incrementa_angulo y decrementa_angulo las veces necesarias, observará en incremento o decremento que se ha producido realmente y escribirá un mensaje en pantalla indicando.

    Naturalmente, el procedimiento nivela invocará a las funciones y procedimientos que necesite.

Revisión de los nombres de los ficheros

Ejecuta ~mortuno/revisa practicas fpi para comprobar que los nombres de los programas son los correctos.