Fundamentos de la programación y la
informática
Grados en ingeniería aeroespacial, turno de tarde
2025-2026
Escribe un programa en el fichero
~/fpi/practica08/tabla.pas que haga lo indicado a
continuación.
Tendrá una función que devuelva una tabla. La tabla estará
formada por N números reales que habrán sido generados
aleatoriamente, mayores o iguales que 0 y menores que
Valor_maximo, donde N será una constante
global y Valor_maximo será una constantes local del cuerpo
del programa principal. Dale a estas constantes el valor que
quieras.
Tendrá un procedimiento que recibirá una tabla como la creada en el apartado anterior, y muestre todos los valores almacenados en el array, en orden.
Tendrá un procedimiento como el anterior, pero que muestre los valores en orden inverso.
Tendrá una función que reciba una tabla y devuelva la suma de sus valores.
Tendrá una función que reciba una tabla y devuelva la media de sus valores. Esta función usará la función anterior.
Tendrá procedimientos que llamen a estas dos funciones y escriban el resultado, para probarlo todo.
Calculará (y mostrará) el máximo y el mínimo de los valores del array.
Tendrá un procedimiento que muestre solamente los valores del array mayores o iguales que \(K * valor\_maximo\), donde \(K\) será un número real mayor que 0 y menor o igual que 1.
Ejemplo: si \(K=0.9\) y el máximo es 951, se mostrarán los valores mayores o iguales a 855.9.
\(K\) será una constante local del cuerpo del programa principal. Si no se cumple la precondición de ser mayor que 0 y menor o igual a 1, el programa mostrará un mensaje y finalizará.
Observaciones
El programa trabajará siempre con el mismo array, no generará uno nuevo en cada apartado.
Escribe un programa en el fichero
~/fpi/practica08/cambia_tabla.pas que haga lo indicado a
continuación:
Tendrá una función que devuelva una tabla de N (constante global) números enteros aleatorios entre 1 y 100.
Tendrá una función que calcule la media de una tabla de enteros.
Tendrá un procedimiento llamado elimina_peores que recibirá un tabla de enteros y la modificará de forma que los valores que sean (estrictamente) menores que la media pasarán a ser 0. Este procedimiento tendrá un único parámetro, una tabla. Será un parámetro de entrada y de salida: el procedimiento recibirá aquí la tabla, la modificará y la modificación afectará al resto del programa.
Tendrá un procedimiento para mostrar el contenido de la tabla.
Mostrará la tabla antes de modificar, indicará el valor medio y mostrará la tabla después de ser modificada.
Observaciones
El programa trabajará siempre con el mismo array, no generará uno nuevo en cada apartado.
Escribe un programa en el fichero
~/fpi/practica08/matriz.pas que:
El programa trabajará con una matriz del tamaño que prefieras, pero que no sea cuadrada. Y que tampoco sea muy grande (porque multiplicaremos todos sus valores, si son muchos, el resultado desbordará la capacidad de un número entero longint).
El programa comprobará la precondición de que la matriz no sea cuadrada. Si la precondición se incumple, el programa hará lo que creas adecuado.
Genere una matriz de números reales aleatorios. Cada número será un valor comprendido entre -Max y Max, extremos excluidos. Por ejemplo, si Max vale 3, cada número será estrictamente mayor que -3 y estrictamente menor que 3.
Escriba la matriz en pantalla, con dos decimales.
Escriba en pantalla la matriz formada por los valores absolutos de la matriz. Con dos decimales.
Muestre el producto total de todos los valores positivos. Ignorando los negativos y el 0.
Muestre el producto de cada fila.
Muestre el producto de cada columna.
Observaciones
Para generar un número aleatorio entre a y
b, puedes usar la expresión a + r * (b-a),
donde r es un número aleatorio entre 0 y 1.
Naturalmente, cada apartado deberá estar realizado en uno (o más) subprogramas.
El programa trabajará siempre con la misma matriz, no genererá una nueva para cada apartado.
Escribe un programa llamado
~/fpi/practica08/maximos_matriz.pas que calcule un vector
con los máximos de una matriz, por columnas. (Muy similar al ejemplo del
tema 8). Pero el subprograma que calcula el máximo de una columna ha de
ser un procedimiento, no una función. Como sabes, esto significa que el
vector devuelto será un parámetro de salida del procedimiento.
Escribe un programa en Pascal llamado
~/fpi/practica08/por_columnas.pas que:
Tenga un subprograma que genere una matriz de números reales aleatorios. Cada número, dentro del rango que quieras.
Tenga un subprograma que escriba en pantalla una matriz de números reales. Con los decimales que creas conveniente.
Tenga un procedimiento que reciba una matriz de números aleatorios y devuelva un vector con el sumatorio por columnas de la matriz.
Tenga un procedimiento que escriba en pantalla el resultado del procedimiento descrito en el punto anterior.
Ejecuta ~mortuno/revisa practicas fpi para comprobar que
los nombres de los programas son los correctos.