Ingeniería Informática
Estructuras de Datos
Laboratorio
Curso 1998/99
Universitat de València

PRÁCTICA Nš 2: 1 sesión

(del 8 de Marzo al 12 de Marzo de 1999)

1. Tablas

Las tablas son estructuras de datos homogéneas (todos los elementos que guardan son del mismo tipo), estáticas (tienen un tamaño preestablecido antes de compilar) y en las que se asocia cada valor contenido en la estructura con uno o varios índices.

En esta práctica vamos a implementar algunas operaciones sobre tablas, que después deberán funcionar con un programa ya escrito.

2. Unidad para la especificación de la estructura de datos "Matriz de enteros"

En esta práctica vamos a implementar en una unidad algunas operaciones sobre el tipo de datos 'Matriz de Enteros' definido como

    Type
        Indice = 1..MAX;

        Matriz = Record
                     Info: Array [Indice, Indice] Of Integer;
                     N_fil, N_col: Indice;
                 End;

Donde Info es la información guardada en la matriz y N_fil y N_col el número efectivo de filas y columnas de la matriz. MAX es una constante previamente declarada como 10.

Las operaciones que vamos a tener que definir serán:

    Procedure Iniciar_Matriz ( Var mat: Matriz );
Que pide el número de filas y columnas de nuestra matriz y los valores guardados en ella

    Function Calcular_Determinante ( mat: Matriz; Var det: Entero ): Boolean;
Calcula el determinante de la matriz mat, lo pone en det y devuelve True. Si la matriz no es cuadrada devuelve False.

    Procedure Reducir_Matriz ( mat: Matriz; fil, col: Indice; Var mat_red: Matriz );
Reduce la matriz mat, eliminando de ella la fila fil y la columna col.

    Function Ver_Matriz ( mat: Matriz );
Nos muestra el contenido efectivo de la matriz

Tanto la constante MAX, como el tipo Matriz y las operaciones mencionadas se definirán en una unidad de Pascal.

Cálculo del determinante

El cálculo del determinante se puede hacer de diversas maneras, pero se aconseja utilizar el método del desarrollo por filas o columnas.

Este método nos dice que el valor del determinante de una matriz cuadrada (n x n) es igual a la suma de los productos de los elementos de una columna (o fila) por los respectivos adjuntos.

Se llama adjunto, Aij, de un elemento aij perteneciente a una matriz, al producto del menor complementario del elemento por (-1)i+j. Y el menor complementario de un elemento aij es el determinante de orden n-1 que se obtiene eliminando la fila i y la columna j, del determinante original de orden n.

Así un determinante general de orden n será:

para cualquier valor de j.

El determinante de una matriz de 1x1 es el propio elemento almacenado en la matriz.

Con esta definición de determinante, es fácil construir una función recurrente que calcule el determinante, que contenga como condición de final el determinante 'trivial' (determinante de orden 1). Y como caso general el desarrollo por la fila o la columna 1.

3. Realización de la práctica

En esta práctica tenemos que escribir una unidad en Pascal que contenga las definiciones antes vistas y la implementación de las operaciones mencionadas.

La cabecera de la unidad será:

    Unit Uni_Matr;

    INTERFACE

    Const
        MAX = 10;

    Type
        Indice = 1..MAX;

        Matriz = Record
                     Info: Array [Indice, Indice] Of Integer;
                     N_fil, N_col: Indice;
                 End;

        Procedure Iniciar_Matriz ( Var mat: Matriz );

        Procedure Ver_Matriz ( mat: Matriz );

        Function Calcula_Determinante ( mat: Matriz; Var det: Integer ): Boolean;

        Procedure Reducir_Matriz ( mat: Matriz; fil, col: Indice; Var mat_red: Matriz );

    IMPLEMENTATION

        ... (* A rellenar por el alumno *)

    Begin
    End.

Se recuerda que en la parte de implementación se pueden definir otras operaciones auxiliares además de las de la INTERFACE.

Esta unidad debidamente finalizada (recordar que se deben cumplir las especificaciones de la Guía de Estilo de Pascal) deberá servir para que el programa dete00.pas , proporcionado por el profesor compile y se ejecute correctamente.

4. Trabajo opcional

Se propone como trabajo opcional, realizar un programa que determine el rango de una matriz, utilizando para ello las operaciones declaradas en la unidad.

NOTA: Se recuerda a los alumnos que las normas de corrección siguen vigentes y que por lo tanto se tendrán en cuenta a la hora de evaluar la práctica

Recordar también la necesidad de entregar una hoja con las tareas que se van a realizar en la práctica para poder acceder al laboratorio.

ENTREGA DE PROGRAMAS: Al finalizar la sesión de prácticas correspondiente.


Última actualización: 8 de Marzo de 1999