Está en la página 1de 14

Que es un procedimiento?

Procedimiento: Documento ESCRITO que describe SECUENCIALMENTE, la forma de realizar una actividad para lograr un OBJETIVO dado, dentro de un ALCANCE establecido. En dichos documentos se: Describen procesos operativos Definen responsabilidades Establecen los documentos (planillas, informes, registros) a emitir y controlar Define los controles necesarios y los puntos donde deben realizarse QU ELEMENTO DEBE CONTENER UN PROCEDIMIENTO? 1. OBJETIVO: describe la RAZON, el fin ltimo por el que se escribe el Procedimiento. 2. CURSOGRAMA: es una representacin grfica de la actividad y lo primero a elaborar. 3. RESPONSABILIDADES: Quien debe realizar cada actividad 4. INSTRUCCIONES: descripcin detallada de las actividades Ttulo; Cdigo; Alcance; Definiciones; Referencias; Anexos; etc. PASOS A SEGUIR PARA LA ELABORACIN DE UN PROCEDIMIENTO Reunir a todos aquellos que sepan sobre la actividad a documentar Definir el objetivo y alcance del documento Reunir toda la documentacin disponible sobre el tema Elaborar una secuencia de acciones asignando responsabilidades para cada actividad Definir los documentos complementarios, incl uidos los registros Redactar las instrucciones detallando las acciones a seguir anteriormente enunciadas Preparar la versin preliminar del procedimiento Consensuar el mismo con todos los involucrados Preparar la versin definitiva del mismo teniendo en cuenta los comentarios Emitir el documento. Distribuirlo a todos los involucrados. Utilizarlo toda vez que se lleve a cabo la actividad descripta Confeccionar y archivar los registros derivados Los registros brindan las evidencias de que las actividades se han desarrollado de acuerdo a lo descripto en los distintos documentos.

[Fecha]

Nunca se debe sucumbir a la tentacin de escribir un documento si no se est seguro de que este es necesario para el logro de la Calidad (o objetivos) especificada, ya que de no ser necesario su elaboracin solo crear burocracia y el documento desaparecer rpidamente por falta de uso.

MODULO En programacin un mdulo es una porcin de un programa de computadora. De las varias tareas que debe realizar un programa para cumplir con su funcin u objetivos, un mdulo realizar una de dichas tareas. En general un mdulo recibe como entrada la salida que haya proporcionado otro mdulo o los datos de entrada al sistema (programa) si se trata del mdulo principal de ste; y proporcionar una salida que, a su vez, podr ser utilizada como entrada de otro mdulo o bien contribuir directamente a la salida final del sistema (programa), si se retorna al mdulo principal. En programacin, los mdulos suelen estar organizados jerrquicamente en niveles, de forma que hay un mdulo principal que realiza las llamadas oportunas a los mdulos de nivel inferior. Cuando un mdulo es convocado, recibe como entrada los datos proporcionados por otro del mismo nivel o de nivel superior, el que ha hecho la llamada; luego realiza su tarea. A su vez este mdulo convocado puede llamar a otro u otros mdulos de nivel inferior si fuera necesario; cuando ellos finalizan su tarea, devuelven la salida pertinente al mdulo inmediato llamador, en secuencia reversa, finalmente se contina con la ejecucin del mdulo principal. En un lenguaje de programacin un modulo se puede llamar procedimiento o funcin. PROCEDIMIENTOS Y FUNCIONES Las funciones y los procedimientos son conjuntos de instrucciones que realizar una tarea en particular y permiten crear programas complejos, mediante un reparto de tareas que permite construir el programa de forma estructurada y modular. Desde un punto de vista acadmico, se entiende por procedimiento el conjunto de sentencias a las que se asocia un identificador (un nombre), y que realiza una tarea que se conoce por los cambios que ejerce sobre el conjunto de variables.

[Fecha]

Y entendemos por funcin el conjunto de sentencias a las que se asocia un identificador (un nombre) y que genera un valor nuevo, calculado a partir de los argumentos que recibe.

Razones de Uso. Los procedimientos y funciones tienen un papel fundamental en el diseo de programas. Debido a su importancia existen distintas razones para su utilizacin, las que se describirn a continuacin. 18.1.1. Estructura del algoritmo. Como se vi en la introduccin del concepto en forma informal, los procedimientos permiten describir una tarea en trminos de subtareas, destacando la estructura dominante y suprimiendo los detalles. Permitiendo de esta forma el desarrollo jerrquico (top-down) de programas, y tambin facilitando un lenguaje apto para el mtodo de desarrollo por refinaciones sucesivas. Los nombres que se emplean en el programa principal, y que representan subtareas, se conocen como llamadas o invocaciones al procedimiento. Sintcticamente un identificador de procedimiento es una instruccin (o statement), y la accin que se realiza es la ejecucin del bloque asociado al nombre mediante la declaracin del procedimiento. Una vez ejecutado el bloque del procedimiento, se retorna a la instruccin que sigue a la que produjo la ejecucin del bloque. La declaracin del procedimiento define las acciones que sern realizadas; es en esta parte en la que se especifican los detalles que se abstraen con el nombre que identifica el procedimiento. Los procedimientos permiten dividir y estructurar un programa en componentes lgicamente coherentes; facilitando as la verificacin (prueba por etapas); mejorando la documentacin y

[Fecha]

entendimiento del programa. El estilo y calidad de un programa depende en gran medida de la adecuada eleccin de los procedimientos a emplear. Una forma de aprender eficientemente la tcnica de "dividir para vencer", escogiendo procedimientos simples y poderosos, se logra mediante el anlisis de programas (ojal complejos) escritos por buenos programadores. Otro aspecto, que ayuda, es un proceso reflexivo, casi meditativo, respecto del problema: es decir, pensar en el problema. Tambin ayuda el trabajo previo con papel y lpiz, y no dudar en volver a reescribir varias veces el programa principal y algunas descripciones de procedimientos secundarios. En largos programas y algoritmos complejos es particularmente til el concepto de procedimiento. En casos simples y programas cortos, pueden reemplazarse los procedimientos por las acciones que los representan; sin embargo, si se desea tener claridad en la estructura del programa, es recomendable usar procedimientos explcitos, an en casos simples. 18.1.2. Reduccin de espacio. Si el mismo procedimiento ser invocado en diversas partes del programa, su uso implica reducir el largo del programa. Lo cual lleva asociado una disminucin del tiempo de edicin del texto, ya que no es necesario copiar repetidas veces las secuencias de instrucciones que se repiten. Este uso ve aumentada su potencialidad con el concepto de parmetros, que se ver ms adelante, y que hace posible invocar el mismo procedimiento, en diferentes puntos de un programa, pasndole al procedimiento diferentes valores y variables determinados en el punto de invocacin. Si el largo del texto es menor, la posibilidad de cometer errores es menor. Adems una

[Fecha]

reduccin del texto lleva a una reduccin del tamao del cdigo compilado, produciendo ahorro de memoria. Tambin el tiempo de compilacin es menor. 18.1.3. Facilidad de verificacin y pruebas. En Pascal, la sintaxis de declaracin de procedimientos es similar a la de un programa. En este sentido es fcil editar un procedimiento como un programa, y luego de probarlo, incorporarlo, a travs del editor de textos, al programa. Algunos compiladores ofrecen la posibilidad de compilacin separada de procedimientos; en estos casos, se logran disminuciones notables en el tiempo de desarrollo de un programa. 18.1.4. Acciones especiales. Dado un ambiente de programacin, por la estructura de datos que se emplee, pueden conceptuarse acciones especiales (ms elaboradas que las del lenguaje de alto nivel) para ese ambiente. Es decir procedimientos que manipulen las estructuras a travs de operaciones. Se logra entonces, especializar el repertorio de instrucciones para el ambiente dado. Luego con este Macrolenguaje puede efectuarse la programacin en forma ms eficiente. Lo anterior est relacionado con la tcnica de programacin conocida como mquinas virtuales; consistente en recubrir las primitivas instrucciones de mquina por diferentes capas de software (programas) que permiten al programador ver una mquina especializada con las instrucciones ms adecuadas para su aplicacin. Los elementos que componen un procedimiento son: 1. Un identificador, que es el nombre que sirve para invocar a esa funcin o a ese procedimiento. 2. Una lista de parmetros, que es el conjunto de variables que se facilitan al procedimiento o funcin para que realice su tarea modularizada. Al hacer la abstraccin del sistema, y

[Fecha]

modularlo en partes ms accesibles, hay que especificar los parmetros formales que permiten la comunicacin y definen el dominio (tipo de dato) de los datos de entrada. Esa lista de parmetros define el modo en que podrn comunicarse el programa que utiliza la funcin y la funcin usada. 3. Un cuerpo o conjunto de sentencias. Las necesarias para poder realizar la tarea para la que ha sido definida la funcin o el procedimiento. Dentro de las sentencias tambin se encuentran las declaraciones de variables locales. 4. Un entorno. Entendemos por entorno el conjunto de variables globales al procedimiento o funcin, que pueden ser usadas y modificadas dentro del mbito de la funcin. Esas variables, por ser globales y por tanto definidas en un mbito ms amplio al mbito local de la funcin, no necesitan ser explicitadas en la lista de parmetros de la funcin.

18.2. Sintaxis de Procedimientos. Parmetros. <invocacin> ::= <identificador de procedimiento> [<lista parmetros actuales>] <declaracin> ::= 'PROCEDURE' <identificador> [<lista parmetros formales>] ';' <bloque> ';' En un ambiente de programacin se dice que un parmetro es un mecanismo de substitucin que permite repetir un proceso con una variacin de sus argumentos. Los parmetros describen la comunicacin entre un procedimiento y su ambiente. La lista de parmetros del programa principal tambin establece la comunicacin entre el ambiente externo, teclado, consola y archivos, y el programa.

[Fecha]

De esta forma los parmetros equivalen a las instrucciones de entrada y salida (read y write) del programa principal. La sintaxis de lenguajes actuales de alto nivel, como el Ada, califican los parmetros formales como de entrada, salida y entrada/salida; haciendo nfasis en el aspecto de comunicacin. En Pascal, en forma ms tradicional, se habla de paso de parmetros y retorno de stos. Una prctica recomendable es que la comunicacin de un procedimiento con su ambiente sea slo a travs de los parmetros; evitando la comunicacin mediante asignaciones a variables globales dentro de procedimientos. Esto ltimo se conoce como efectos laterales y es equivalente a tener salidas secundarias; quebrantando la regla de programacin estructurada de que cada accin tenga slo una entrada y una salida. En Pascal existen cuatro tipos de parmetros: parmetros de valor, parmetros variables, parmetros funcin y parmetros procedimientos. En este curso introductorio slo se desarrollarn los dos primeros; considerndose demasiado especializados los dos ltimos. Con estas consideraciones: <lista parmetros formales> ::= '(' {( ['var'] {<identificador>* ','} ':' <tipo>)* ';' } ')' <lista parmetros actuales> ::= '(' {( <expresin>)* ',' } ')' Ntese que los parmetros formales se separan con un punto y coma y los actuales por comas. Tambin hay que notar que los formales deben especificar el tipo. Para cada parmetro formal debe existir uno actual asociado, ste ltimo debe tener igual tipo que el formal correspondiente. La correspondencia se establece por las posiciones de los parmetros en las listas. Esto permite al compilador verificar si se ha suministrado un parmetro actual apropiado y si las listas son compatibles. Conviene dibujar los grafos

[Fecha]

sintcticos de las producciones anteriores. Los parmetros variables van precedidos por la palabra reservada var en la lista de formales; y deben tener asociado una variable (caso ms simple de expresin) en la lista de actuales, y cuyo tipo debe ser igual al declarado para la formal. Los parmetros valor, no van precedidos por var, en la lista de formales; y deben tener asociado una expresin (en el caso ms simple una variable o constante) en la lista de actuales, y el tipo de la expresin debe ser compatible con el tipo declarado para el formal. Todos los identificadores que aparecen en la lista de parmetros formales son locales al procedimiento; as tambin todos los objetos declarados o definidos en el bloque correspondiente. Es decir, ellos no son conocidos fuera del bloque. Especficamente las variables locales tienen indefinidos sus valores al iniciar la parte ejecutable del bloque. Es importante notar que en la lista de parmetros formales debe aparecer un nombre de un tipo. En Pascal estndar no puede efectuarse una definicin de tipo en la lista de parmetros. Tipos de Procedimientos. 18.3.1. Sin parmetros. Slo accin. En estos procedimientos no se suministran datos, desde el ambiente hacia el procedimiento; ni se esperan resultados, desde el procedimiento hacia el punto de invocacin. Se emplean slo para ejecutar una serie de instrucciones al invocar o llamar al identificador que da nombre al procedimiento. Ejemplo: Procedimientos sin parmetros. Limpiar la pantalla, dejndola en blanco. procedure limpiepantalla; var i:integer; begin for i:=1 to 24 do writeln end; Al invocar a limpiepantalla, se desplazan (scroll en ingls) las lneas, quedando el cursor en

[Fecha]

el borde inferior izquierdo; no importando la posicin inicial del cursor. Ntese que la variable i es local al procedimiento, y existe mientras se ejecuta ste. Se emplean procedimientos sin parmetros cuando se desea realizar una accin compleja, bajo un nombre abstracto que las represente. El bloque del procedimiento debe quedar completamente especificado y no se espera realizar variaciones de la accin. Algunos programadores emplean estos procedimientos, y se comunican con otros bloques a travs de variables globales. Esto debe evitarse, pues dificulta el anlisis y las pruebas del programa. Una variante del ejemplo anterior es: procedure clearscreen; const ff = 12; begin write(chr(ff)) end; Esta accin deja el cursor en el borde superior izquierdo. Sin embargo debe probarse en la prctica, pues algunos terminales no reconocen dicho carcter de formato. En este caso debe consultarse el manual tcnico del terminal que se est empleando. 18.3.2. Parmetros de valor. Slo entrada. Se pasan valores desde el punto de invocacin hacia el procedimiento. Es decir, slo se suministran datos de entrada y no se esperan resultados. El bloque de accio nes, asociado al procedimiento, depende de los valores que se le pasen. El parmetro formal es una variable local. El parmetro actual es una expresin. Se evala, el parmetro actual, y el valor de la expresin sustituye el correspondiente parmetro formal. Es decir, se asigna inicialmente el valor a la variable local o parmetro formal. A este tipo de procedimientos se los denomina sustitucin por valor, o llamado por valor, o paso de parmetros valor. Una vez realizado el procedimiento, se retorna a la instruccin siguiente a la que produjo la

[Fecha]

invocacin, sin producir cambios en este ambiente; salvo que dentro del bloque se hayan modificado variables accesibles en el ambiente y en el bloque. Esta ltima prctica es posible, pero no es recomendable. Ejemplo. Procedimiento con parmetro valor. Se desea lograr un margen variable a la izquierda. procedure margen(x:integer); const blanco = ' '; var i:integer; begin for i:=1 to x do write(blanco) end; El parmetro formal es un parmetro valor y corresponde a la variable local x. La variable i es local, slo existe mientras dure el procedimiento. La constante blanco tambin es local. Ntese que el tipo queda definido en la declaracin; es decir, x es de tipo integer. Dentro de un segmento, donde el procedimiento margen es accesible, puede invocarse a margen con diferentes valores: . . m:=5; {m debe ser entero} margen(m); {se llama con variable; produce 5 espacios} . . margen(3); {se llama con constante; produce 3 espacios} . . margen(m+3); {se llama con expresin; produce 8 espacios} . . x:=6; {x debe ser entero} margen(x); {se pasa valor 6} {no se modifica valor de x; este x no tiene que ver} {con la variable local del procedimiento margen} . . Cuando se invoca a un procedimiento de este tipo, se crea espacio para las variables

[Fecha]

10

locales, includas las variables formales. Luego, estas ltimas se inician con los valores calculados de las expresiones asociadas a los parmetros actuales. Dentro del bloque, no quedan iniciadas las variables estrictamente locales, lo cual es tarea del programador; tambin dentro del bloque pueden modificarse, mediante manipulaciones, todas las variables accesibles. Una vez terminado el bloque, desaparece el espacio asignado a todas las variables. Los parmetros formales tienen igual comportamiento que las variables locales, excepto que comienzan con valores asignados al iniciar el bloque del procedimiento. Si un parmetro valor es de tipo estructurado, deben copiarse los valores de las expresiones en los elementos de la estructura; esto puede consumir tiempo y espacio. Si en las expresiones ocurren variables estructuradas, debe accesarse a la estructura (en el caso de un arreglo, debe evaluarse el ndice) y obtener el valor. Una tcnica que es general para todo tipo de procedimientos es detectar todos los objetos que no se usan fuera del procedimiento, y declararlos locales a ste. En general, los parmetros valor son los ms usados. 18.3.3. Parmetros variables. Entrada y Salida. Este tipo de procedimiento permite transferir informacin desde el punto de invocacin hacia el procedimiento; y el retorno de resultados desde el procedimiento. Los resultados los entrega modificando variables visibles o accesibles en el punto de invocacin, que se pasan al procedimiento. Es en el parmetro actual, en el que se retorna el resultado del procedimiento. Los parmetros formales variables van precedidos por var en su declaracin. Tambin se llaman sustitucin por variable, o llamado por referencia. Cuando se invoca a un procedimiento de este tipo, no se crea nuevo espacio para el parmetro formal; sino que se hace referencia a la variable actual. Es decir, el parmetro formal representa a la variable

[Fecha]

11

actual, durante la ejecucin del procedimiento. El parmetro formal es realmente una variable muda. Si las variables son estructuradas, todos los accesos se realizan en el tiempo de la invocacin. Si una variable es una componente de un arreglo se evala el ndice cuando se invoca al procedimiento. Al no crear espacio adicional para los parmetros formales, no hay prdida de tiempo en la copia y accesos. Por esta razn es preferible definir parmetros variables, cuando stos sean estructurados; existe ahorro de espacio y tiempo. Adicionalmente, en Pascal estndar se impide emplear estructuras empaquetadas como parmetros variables. Si existen varios parmetros variables, debe evitarse, en el momento de la invocacin, que existan nombres duplicados de variables en la lista. Es decir, la lista de parmetros actuales debe ser disjunta. Ejemplo. Procedimiento con parmetros variables. Se desea descartar espacios y leer un carcter. procedure getchr(var ch:char); begin repeat read(ch) until ch<>' ' end; Se tiene que ch es un parmetro formal variable, de tipo char. En un segmento, en que sea accesible getchr, pueden asignarse valores a variables de tipo char, que sean visibles en el momento de la invocacin. . . getchr(a); {se asigna valor a variable a} . . getchr(b); {se asigna valor a b} . . El ejemplo ilustra el uso de un parmetro variable para depositar el resultado. O sea se usa slo de salida. Tambin pueden emplearse para pasar una variable (con su valor) como

[Fecha]

12

entrada, y luego de procesar sacar el resultado. En este caso se usa el valor viejo de la variable actual, antes de cambiarlo. Esta subclase es realmente de entrada/salida. Ejemplo. Procedimiento con entrada/salida. Se desea incrementar variables enteras que funcionan como contadores. procedure incremente(var n:integer); begin n:=n+1 end; Si v1 y v2 son contadores enteros: . . incremente(v1); . . incremente(v2); Mezcla de parmetros. Los puntos anteriores, con objeto de aclarar conceptos, han usado slo un parmetro de determinado tipo. Sin embargo, en un caso general, pueden existir parmetros de diferente tipo en una lista. Ejemplo. Paso por valor y por referencia. program mezcla(output); var a,b:integer; {globales} procedure h(x:integer; var y:integer);{x par. valor} begin {y par. variable} x:=x+1; y:=y+1; {p1} writeln(x,y) {p2} end; {h} begin {mezcla} a:=0; b:=0; {1} h(a,b); {2} {se pasa valor cero y var b} writeln(a,b) {3} end. Traza: # a b Observaciones. -------------------------------------------------------1 0 0 Se inician a y b. 2 y x Se entra a proc. h. -----------------------------------------0 0 Se inicia x con valor de a y toma lugar de b.

[Fecha]

13

p1 1 1 Se incrementa x e y. p2 Se escribe: 1 1 -----------------------------------------1 Al salir, desaparece x. b toma el valor de y. La variable a, no cambia. 3 Se escribe: 0 1 Si en el paso 2, se hubiera invocado: h(b, a) puede comprobarse que se escribe: 11 10 En este caso al salir del procedimiento, se modifica el valor de a; y b no cambia su valor. Ntese que en la traza, se crea espacio slo para parmetros formales de valor. Los parmetros variables ocupan igual columna que las variables que reemplazan. 18.4. Procedimientos Estndares. Se asumen declarados en un bloque que anida al programa principal. Y por lo tanto son accesibles en cualquier lugar del programa. Tambin puede advertirse, que si se emplea un procedimiento de igual nombre que uno estndar; ste tendr vigencia en el bloque que define su alcance, de acuerdo a la regla de alcance de nombres. Esto permite redefinir las acciones de los procedimientos estndar. Las instrucciones primitivas: read, write, writeln y readln, son efectivamente procedimientos en Pascal. Se las ha introducido como instrucciones bsicas, por las ventajas conceptuales que esto presenta. Debe notarse que son procedimientos especiales, ya que aceptan un nmero variable de parmetros; y adems se pueden pasar parmetros de distintos tipos.

[Fecha]

14