Funciones y Procedimientos Procedimientos Concepto Un procedimiento es un programa que realiza una tarea específica. Puede recibir cero o más valores del programa que llama y devolver cero o más valores al programa que realizó la llamada. Un procedimiento está compuesto de un grupo de sentencias a las que se asigna un nombre (identificador) y constituye una unidad de programa. La tarea asignada al procedimiento se ejecuta siempre que Pascal encuentra el nombre del procedimiento. Los procedimientos es obligatorio declararlos y deben ser declarados antes de que puedan ser referenciados en el cuerpo del programa. En Pascal reciben el nombre de PROCEDURE. Declaración de un procedimiento Al igual que los identificadores, los procedimientos deben declararse dentro del cuerpo del programa. La declaración de un procedimiento NO indica a la computadora que ejecute las instrucciones dadas, sino que indica a la computadora cuáles son estas instrucciones y dónde están localizadas cuando sea necesario. El formato del procedimiento es el siguiente: Procedure nombreprocedimiento; Declaraciones locales Begin Cuerpo del procedimiento End; A las variables que se encuentran dentro de un procedimiento se les llaman Variables Locales y a las que se ubican en el cuerpo principal, fuera de los procedimientos, se les llama Variables Globales. En resumen, un procedimiento, al igual que un programa, consta de tres partes: Una cabecera del procedimiento que proporciona el nombre del mismo y, en caso de existir, una lista de parámetros formales. Una sección de declaración que puede contener constantes, variables e incluso otros procedimientos. Una sección ejecutable: el cuerpo del procedimiento. Ejemplo: Program Recuadro; Var I : Integer; (* Este procedimiento visualiza 15 asteriscos *) Procedure Estrellas; Begin For I := 1 to 15 do Write (`*´) End; Begin Estrellas; (* Llamado del procedure *); Write (`Mensajes´); Estrellas; (* Nuevo llamado del procedure *); End. Ventajas de utilizar procedimientos La organización de un programa en procedimientos lo hace más fácil de escribir y depurar. Los procedimientos no deben exceder de 25 líneas. Las ventajas de utilizar procedimientos son: Facilita el diseño descendente. Los procedimientos se pueden ejecutar más de una vez en un programa y/o en diferentes programas, ahorrando tiempo de programación. El uso de procedimientos facilita la división de las tareas entre un equipo de programadores y se pueden comprobar individualmente. Funciones en Turbo Pascal Una función es un subprograma que recibe como argumentos o parámetros datos de un tipo numérico o no numérico (char, string, bolean u otros) y devuelve un resultado. Esta característica le diferencia de un procedimiento. El pseudocódigo es el siguiente: Nombre_función (argumento1,argumento2,...); Los argumentos es lo que se conoce en Pascal como parámetros. Para poder calcular el valor o resultado de la función, todo lo que se necesita conocer es el valor o valores de los parámetros respectivos. Funciones aritméticas o matemáticas Ejemplo: Cuadrado := sqr(num); esto devuelve el cuadrado de la variable num es equivalente a decir cuadrado:= num*num; Funciones definidas por el usuario Además de las funciones predefinidas citadas anteriormente, es posible que el usuario pueda declarar sus propias funciones de igual modo que declara sus procedimientos. Una función es un subprograma que devuelve un único resultado al programa o subprograma que le llamó. La sintaxis es muy similar a la de un procedimiento. Function nombre (parámetros): tipo (declaración de variables locales) begin <cuerpo de la función> nombre de la función := valor de la función end; Comparación entre funciones y procedimientos En vez de la palabra procedure se debe utilizar la palabra function 1. Al igual que en los procedimientos, el nombre de una función es un identificador. Sin embargo, el nombre de la función se refiere a la posición de memoria que contiene el valor devuelto por la función. 2. La lista de los parámetros formales son los identificadores utilizados para recibir valores del programa. 3. El tipo de datos del resultado coincide con el tipo expresado en la cabecera de la función. 4. En el cuerpo de la función tiene que existir una sentencia de asignación como la siguiente: Nombre_función := valor_función 5. La función sólo devuelve un valor, el procedimiento puede devolver cero, uno o varios valores. 6. El tipo de dato del resultado de la función debe estar indicado en la cabecera y puede ser tipo char, integer, real o bolean. Ejemplo: Program Cubo; Uses crt; Var Num,valor : integer; Function El_cubo (Numero: integer):integer; Begin valor := Num*Num*Num; End; Begin Write ('Digite un número entero: '); Readln (Num); El_cubo(Num); Write ('El cubo de ',Num,' es ',valor); End.