martes, 4 de diciembre de 2007

Sema


Definición y activación de los procedimientos

     Un procedimiento es un mecanismo en un lenguaje de programación para abstraer un grupo de acciones o de computaciones. El grupo de accidentes se conoce como cuerpo del procedimiento, que está representado en su totalidad por el nombre del procedimiento. Se define procedimiento al proveer una especificación o interfaz y un cuerpo. La especificación le da nombre al procedimiento, una lista de los tipos y nombres de sus parámetros, así como el tipo de su valor devuelto, si es que existe alguno:


                   
     El procedimiento intswap intercambia los valores de sus parámetros x y y utilizando la variable local t.

     En algunos lenguajes y en algunas situaciones, pueden separarse una especificación de procedimiento de su cuerpo, en el caso de que la especificación deba estar disponible por adelantado:


     Note que esta especificación no require que estén especificados los nombres de los parámetros.

     En C++ esta clase de especificacación se conoce (de manera confusa) como una declaración, mientras que la definición completa (incluye el cuerpo) se llama definición (en C, las declaraciones se llaman prototipos). Típicamente, incluso cuando una especificación antecedente a una definición debe repetirse con el cuerpo.

     Se llama o activa un procedimiento al enunciar su nombre, junto con los argumentos de la llamada, que corresponden a sus parámetros:

    Una llamada o un procedimiento transfiere el control al principio del procedimiento llamado (el llamado). Cuando la ejecución llega al final del cuerpo; el control es devuelto al llamador. En algunos lenguajes, puede devolverse el control al llamador antes de llegar al final del cuerpo del llamado, utilizando un enunciado return:



     En algunos lenguajes como FORTRAN, para llamar un procedimiento debe también incluirse lq palabra clave CALL, como en



(en FORTRAN, a los procedimientos se les llama subrutinas)

     Un lenguaje de programación pudiera hacer la distinción entre procedimientos, mismos que llevan a cabo sus operaciones cambiando sus parámetros o variables no locales, y las funciones que aparecen en expresión y que computan valores devueltos.

    Las funciones pueden o no cambiar sus parámetros y variables no locales. En C y C++, todos los procedimientos implícitamente son funciones; aquellas que no devuelvan valores se declaran como void, en tanto que las funciones normales se declaran como que tienen el tipo (devuelto) del valor que devuelven:


En algunos lenguajes, por ejemplo en Ada y FORTRAN, se utilizan diferentes palabras clave para los procedimientos y para las funciones:



     En algunos lenguajes sólo existen funciones (esto es, todos los procedimientos deben devolver los valores). Los lenguajes funcionales en particular tiene esta propiedad.

    En algunos lenguajes, las declaraciones de procedimientos y de funciones se escriben de una forma similar a las declaraciones de constantes, usando el signo de igual, como en la siguiente declaración de función ML para un procedimiento swap:



     El uso de un signo igual para declarar procedimientos está justificado, dado que una declaración de procedimientos le da el nombre del procedimiento un significado que se conserva constante durante la ejecución del programa. Una declaración de procedimiento crea un valor de procedimiento constante y asocia un nombre simbólico –el nombre del procedimiento- a dicho valor.

     Un procedimiento se comunica con el resto del programa a través de sus parámetros y también a través de sus referencias no locales, esto es referencias a variables declaradas fuera de su propio cuerpo. Las reglas de alcance que establecen los significados de las referencias no locales.