8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL. 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 nombreproc; Declaraciones locales Begin Cuerpo del procedimiento End; Variables Locales: son las variables que se encuentran dentro de un procedimiento. Variables Globales: son las que se ubican en el cuerpo principal, fuera de los procedimientos. 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. Ing. Nahiby Castillo 1 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; Procedure Estrellas; (* Este procedimiento visualiza 15 asteriscos *) 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. PARÁMETROS. CONCEPTO Un parámetro es un método para pasar información (valores a variables) del programa principal a un procedimiento y viceversa. Ing. Nahiby Castillo 2 Un parámetro es, prácticamente, una variable cuyo valor debe ser ya sea proporcionado por el programa principal al procedimiento o ser devuelto desde el procedimiento hasta el programa principal. Por consiguiente, existen dos tipos de parámetros: Parámetros de entrada: Sus valores deben ser proporcionados por el programa principal. Parámetros de salida: Son parámetros cuyos valores se calcularán en el procedimiento y se deben devolver al programa principal para su proceso posterior. Transferencia de información desde y/o hasta los procedimientos Existen dos tipos de procedimientos: Procedimientos sin parámetros: No existe comunicación entre el programa principal y los procedimientos ni viceversa. Procedimientos con parámetros: Existe comunicación entre el programa principal y los procedimientos o entre dos procedimientos. Ejemplo 1: Ejemplo 2: (Parámetros de entrada) (Parámetros de entrada/salida) Procedure RecuadroDos (N : Integer); El procedimiento Geometría recibe la longitud y Var anchura de un rectángulo, calcula el área y J : Integer; Begin perímetro del rectángulo y devuelve los valores obtenidos al programa principal. For J := 1 to N do Write(`*´) End; Procedure Geometria (Longitud, Anchura : Real; Var Area, Perímetro : Real); Begin Area := Longitud * Anchura; Perimetro := 2 * (Longitud + Anchura) End; 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. Ing. Nahiby Castillo 3 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 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ó. EXISTEN 3 CLASES USUALES DE FUNCIONES. • Las primeras son de tipo computacional que son diseñadas para realizar operaciones con los argumentos y regresan un valor basado en el resultado de esa operación. • Las segundas funciones son aquellas que manipulan información y regresan un valor que indican la terminación o la falla de esa manipulación. • Las terceras son aquellas que no regresan ningún valor, es decir son estrictamente procedurales. 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; p1,p2,... lista de parámetros formales tipo tipo de dato del resultado que devuelve la función Ing. Nahiby Castillo 4 Comparación entre funciones y procedimientos • En vez de la palabra procedure se debe utilizar la palabra function • 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. • La lista de los parámetros formales son los identificadores utilizados para recibir valores del programa. • El tipo de datos del resultado coincide con el tipo expresado en la cabecera de la función. • En el cuerpo de la función tiene que existir una sentencia de asignación como la siguiente: Nombre_función := valor_función • La función sólo devuelve un valor, el procedimiento puede devolver cero, uno o varios valores. • 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 Wincrt; 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. Ing. Nahiby Castillo 5