Escuela de Educación Técnica Nº2 – Modelos y Sistemas Pasaje de parámetros - Pascal Diseño modular: procedimientos y funciones Uno de los métodos fundamentales para resolver un problema es dividirlo en problemas más pequeños, llamados subproblemas. Estos problemas pueden a su vez ser divididos repetidamente en problemas más pequeños hasta que los problemas más pequeños son solucionados. Los subproblemas o módulos se diseñan con subprogramas que a su vez se clasifican en procedimientos y funciones. El proceso de descomposición de un problema en módulos se conoce como modulación y la programación relativa a ellos programación modular. Los procedimientos y funciones que sirven para realizar los módulos son similares aunque presentan notables diferencias entre ellos: 1) Las funciones devuelven un solo valor a la unidad de programa que los referencia. Los procedimientos pueden devolver cero, uno o más valores. En el caso de no devolver ningún valor, realiza alguna tarea tal como alguna operación de salida o de entrada. 2) A un nombre de procedimiento no se puede asignar un valor, y por consiguiente ningún tipo está asociado con un nombre de procedimiento. 3) Una función se referencia utilizando su nombre en una expresión, mientras que un procedimiento se referencia por una llamada o invocación al mismo. Un procedimiento es un subprograma que realiza una tarea específica. Puede recibir cero o más valores del programa que llama y devolver cero o más valores a dicho programa llamador. Un procedimiento está compuesto de un grupo de sentencias a las que se asigna un nombre(identificador) y constituye una unidad de programa. Todos los procedimientos se deben declarar dentro del cuerpo del programa. La declaración de un procedimiento no indica a la computadora que ejecute las instrucciones dadas sino que indica cuáles son las instrucciones que contiene y dónde están ubicadas cuando sean necesarias. Declaración de un procedimiento Procedure nombreproc(lista de parámetros formales); declaraciones locales begin cuerpo del procedimiento end; Llamada al procedimiento: Los procedimientos se llaman dentro de un programa o de otro procedimiento directamente por su nombre. Ej. nombreproc(lista de parámetros actuales) La sentencia nombreproc inicia la ejecución, se ejecuta la sentencia que sigue a la llamada al procedimiento. Un procedimiento, igual que un programa, consta de tres partes: 1) Una cabecera del proporciona el nombre del mismo y caso de existir, una lista de parámetros formales. Escuela de Educación Técnica Nº2 – Modelos y Sistemas Pasaje de parámetros - Pascal 2) Una sección de declaración que puede contener constantes, variables e incluso otros procedimientos. 3) Una sección ejecutable: el cuerpo del procedimiento. Parámetros actuales: Las sentencias llamadas a procedimientos constan de dos partes: un nombre de procedimiento y una lista de parámetros llamados actuales. Nombreproc(pa1,pa2,pa3…); Los parámetros actuales pa1, pa2, pa3…tienen que tener unos valores que se pasan al procedimiento nombreproc. En la declaración de un procedimiento cuando se incluyen parámetros estos se denominan parámetros formales o ficticios (pf1,pf2, …). Ellos sirven para contener los valores de los parámetros actuales cuando se invoca el procedimiento. Procedure nombreproc(pf1, pf2,pf3,…) El valor de los parámetros actuales no se conoce cuando se declara el procedimiento; sin embargo, cuando se ejecuta la sentencia de llamada al procedimiento es preciso que tengan valores asignados, ya que en caso contrario se producirá error. Correspondencia de parámetros Los parámetros actuales en la invocación del procedimiento deben coincidir en número, orden y tipo con los parámetros ficticios de la declaración del procedimiento. Es decir, debe existir una correspondencia entre parámetros actuales y ficticios. Program correspondencia; Var X,Y,A,P:real; Procedure Geometría (longitud, anchura:real; var area, perímetro:real); begin area:=longitud*anchura; perímetro:= 2*(longitud+anchura); end; begin writeln(‘Introducir longitud’); readln(X); writeln(‘Introducir anchura’); readln(Y); geometria(X,Y,A,P); {llamada al procedimiento} writeln(‘El área es ’, A:6:2); writeln(‘El perímetro es ’, P:6:2); end. Los nombres de los parámetros actuales y formales pueden ser los mismos, aunque se recomienda sean diferentes a efectos de la legibilidad del programa.