Informatica

Solo disponible en BuenasTareas
  • Páginas : 5 (1214 palabras )
  • Descarga(s) : 0
  • Publicado : 4 de abril de 2010
Leer documento completo
Vista previa del texto
Subprogramas
Definición, declaración y uso.
Un subprograma es un procedimiento (procedure) o una función (function). La diferencia entre un procedimiento y una función es que el primero sólo indica la ejecución de una secuencia de instrucciones, en función de unos parámetros, mientras que la segunda representa un valor que se genera como resultado de su ejecución. Se pueden usar funciones parasobrecargar los operadores del lenguaje, otorgándoles nuevos significados.
Definición de un subprograma.
Y SU EXTRUCTURA
La definición de un subprograma consta de tres elementos: (1) cabecera, donde se fija su clase y nombre, se describen sus parámetros formales y, si es una función, se especifica el tipo de su resultado, terminando todo ello con la palabra "is", expresando que a continuaciónse desarrolla el subprograma, (2) declaraciones locales, de cualquier elemento declarable (tipos, variables, constantes, ...), incluyendo la definición anidada de otros subprogramas y (3) el bloque de sentencias ejecutables del subprograma delimitado por las palabras reservadas "begin" y "end" (esta última suele ir acompañada del nombre del subprograma). Si el subprograma es una función, entre lassentencias ejecutables debe incluirse al menos una sentencia de retorno ("return") con una expresión que indique el valor a devolver a quien la llamó; si la ejecución de una función alcanza el final sin encontrar una sentencia de retorno, se produce una excepción "Program_Error", dado que la sentencia de retorno se utiliza en las funciones para especificar el valor a devolver. En losprocedimientos puede omitirse la sentencia de retorno cuando el único punto de retorno se encuentra al final, como en el siguiente ejemplo.
procedure Intercambia(A,B: in out Integer) is
C: integer;
begin
C := A;
A := B;
B := C;
end Intercambia;

function Media(A,B: Float) return Float is
begin
return (A + B) / 2.0;
end Media;
Las declaraciones locales están sujetas a lasreglas de ámbito generales de Ada.
Un subprograma puede constituir por sí mismo una unidad de librería o estar anidado dentro de una unidad mayor. Si un subprograma está anidado en una unidad mayor, la definición del subprograma debe escribirse en una sección de declaraciones de esa unidad.
procedure Principal is
...
procedure Intercambia(A,B: in out Integer) is
...begin
...
end Intercambia;
...
begin
...
end Principal;
En un mismo ámbito se pueden tener varios subprogramas con el mismo nombre, siempre que se diferencien en los parámetros o en el tipo del resultado (si son funciones). Esto se conoce como sobrecarga de subprogramas. La sobrecarga de operadores es una clase de sobrecarga de subprogramas.
...
procedureIntercambia(A,B: in out Integer) is
...
begin
...
end Intercambia;
...
procedure Intercambia(A,B: in out Float) is
...
begin
...
end Intercambia;
...
Definición separada (separate).
La definición de un subprograma que está anidado en otra unidad puede extraerse de la misma para compilarse por separado, dejándolo indicado en la unidad matriz mediante una declaracióncon cláusula "separate". A efectos de reglas de ámbito es como si la definición del subprograma estuviera donde está dicha declaración. El subprograma separado debe indicar quién es su unidad matriz.
procedure Ejemplo_Matriz is
...
-- Indicación de que Intercambia se desarrollará aparte
procedure Intercambia(A,B: in out Integer) is separate;
...
begin
...
endEjemplo_Matriz;

-- Lo siguiente posiblemente irá en un fichero diferente
separate(Ejemplo_Matriz)
procedure Intercambia(A,B: in out Integer) is
...
begin
...
end Intercambia;
...

Llamada a un subprograma.
La llamada a un procedimiento constituye una sentencia, mientras que la llamada a una función sólo puede hacerse como parte de una expresión:
Intercambia(X,Y);
Z :=...
tracking img