next up previous contents
Siguiente: Resumen Subir: Traza Anterior: Traza sin subprogramas   Índice General

Traza con subprogramas

Generalmente todos nuestros programas estarán compuestos de subprogramas. Para hacer la traza deberemos hacer lo siguiente:

  1. Cuando se realiza la llamada debemos añadir (siempre por la derecha de la traza) todos los parámetros del subprograma y poner el valor inicial de los parámetros de entrada. El valor inicial será el valor pasado en la llamada o su valor por omisión (en caso de que exista).
  2. En la línea siguiente debemos añadir todas las variables locales del subprograma.
  3. A continuación, igual que en la traza sin subprogramas, en las líneas siguientes colocamos los nuevos valores que va guardando Ada en cada una de las variables.
  4. Cuando se termina la ejecución del subprograma debemos copiar el valor de los parámetros de salida en las variables utilizadas en la llamada.

Si el subprograma llama a otro subprograma, realizamos de nuevo la misma secuencia de pasos.

Como ejemplo vamos a ver a continuación la traza del siguiente ejemplo:

      procedure Ejemplo is

         procedure Sumar
            (Numero_1  : in Integer;
             Numero_2  : in Integer;
             Resultado : out Integer)
         is
            Auxiliar  : Integer;
         begin
            Auxiliar  := Numero_1 + Numero_2;
            Resultado := Auxiliar;
         end Sumar;

         Dato_1    : Integer := 12;
         Dato_2    : Integer := 10;
         Resultado : Integer;
      begin
         Sumar (Dato_1, Dato_2, Resultado);
         --  Aqui resultado contiene el valor 22.
      end Ejemplo;

             Ejemplo

    Dato_1    Dato_2   Resultado
  (Integer) (Integer)  (Integer)
  ------------------------------
     12        10               |
  ------------------------------|
                                |              Sumar
  ---------------------------------------------------------------
                                   Numero_1  Numero_2  Resultado |
                                  (Integer)  (Integer)  (Integer)|
  ---------------------------------------------------------------|
                                     12         10               |
  --------------------------------------------------------------------------
                                                                    Auxiliar|
                                                                   (Integer)|
  --------------------------------------------------------------------------|
                                                                            |
  --------------------------------------------------------------------------|
                                                                       22   |
  --------------------------------------------------------------------------|
                                                            22              |
  --------------------------------------------------------------------------
                           22    |
  -------------------------------

Debemos tener mucho cuidado en representar correctamente el margen derecho de nuestra traza, ya que cuando cerramos este margen (hacia la izquierda) estamos representando que Ada elimina las variables del subprograma.


next up previous contents
Siguiente: Resumen Subir: Traza Anterior: Traza sin subprogramas   Índice General
Javier Miranda 2002-10-03