Anda di halaman 1dari 3

CESAR TOLOZA AYALA

1. INTRODUCCIN A LOS SUBPROGRAMAS O SUBALGORITMOS: La programacin modular es una de las tcnicas fundamentales de la programacin. Se apoya en el diseo descendente y en la filosofa de divide y vencers, es decir se trata de dividir el problema dado, en problemas ms simples en que cada uno de los cuales lo implementaremos en un mdulo independiente. A cada uno de estos mdulos es a lo que llamamos subalgoritmos o subprogramas. Siempre existir un mdulo o programa principal que es con el que comienza la ejecucin de todo el programa, y a partir de l iremos llamando al resto. Cada vez que se llama a un subprograma se le pasa la informacin que necesita en la llamada, a continuacin comienza a ejecutarse el subprograma llamado, y cuando termine su ejecucin, devuelve el control a la siguiente instruccin a la de llamada en el programa que lo llam. En cuanto a la estructura de un subprograma es igual a la estructura de un programa, va a tener una informacin de entrada que es la que le pasamos al hacer la llamada y que se coloca junto al nombre del subprograma. Despus va a tener un conjunto de acciones, declarar otras variables propias del subprograma, y al terminar la ejecucin puede que devuelva o no resultados al programa que lo llam. Hay dos tipos fundamentales de subprogramas: Funciones y procedimientos.

2. FUNCIONES: Desde el punto de vista matemtico, una funcin es una operacin que toma uno o varios operandos, y devuelve un resultado. Y desde el punto de vista algortmico, es un subprograma que toma uno o varios parmetros como entrada y devuelve a la salida un nico resultado. Pascal: En las funciones se puede devolver ms de un nico resultado mediante parmetros. C: Se devuelve todo por parmetros. Para llamar a una funcin se da su nombre, y entre parntesis van los argumentos o parmetros que se quieren pasar. Declaracin de una funcin: La estructura de una funcin es semejante a la de cualquier subprograma. Tendr una cabecera (con el nombre y los parmetros) y un cuerpo(con la declaracin de los parmetros de la funcin y las instrucciones). Sintaxis: Funcion <nombre_funcion> (n_parametro: tipo, n_parametro: tipo): tipo funcion Var <variables locales funcion> Inicio <acciones> retorno <valor> fin <nombre_funcion> La lista de parmetros es la informacin que se le tiene que pasar a la funcin. Los parmetros luego dentro de la funcin los podemos utilizar igual que si fueran variables locales definidas en la funcin y para cada parmetro hay que poner su nombre y tipo. El nombre de la funcin lo da al usuario y tiene que ser significativo. En las variables locales se declaran las variables que se pueden usar dentro de la funcin. Entre las acciones tendr que existir entre ellas una del tipo retorno <valor>. Esta sentencia pondr fin a la ejecucin de la funcin y devolver el valor de la funcin, es decir, como valor asociado al nombre de mismo tipo que el tipo de datos que devuelve a la funcin, este valor por tanto tiene que ser del mismo tipo que el tipo de datos que devuelve la funcin, que es el que habremos indicado al declarar la funcin en la parte final de la cabecera. No se permiten funciones que no devuelvan nada.* La funcin solo puede ser llamada desde una expresin.

3. PROCEDIMIENTOS: El inconveniente de una funcin es que solo puede devolver un nico valor, por lo que s nos interesa devolver 0 o N valores, aunque puedo usarlo para devolver un solo valor, debo usar un procedimiento. Un procedimiento es un subprograma o un subalgoritmo que ejecuta una determinada tarea, pero que tras ejecutar esa tarea no tienen ningn valor asociado a su nombre como en las funciones, sino que si devuelve informacin, lo hace a travs de parmetros. Al llamar a un procedimiento, se le cede el control, comienza a ejecutarse y cuando termina devuelve el

CESAR TOLOZA AYALA


control a la siguiente instruccin a la de llamada. Sintaxis: Procedimiento <nombre_proc> (<tipo_paso_par> <nombre_par>: tipo_par,...) Var <variables locales>: tipo Inicio Inicio <sentencias> fin <nombre_proc> La cabecera va a estar formada por el nombre del procedimiento que ser un identificador y que debe de ser significativo, y luego entre parntesis los parmetros o la informacin que se le pasa al procedimiento. Para cada parmetro hay que indicar el tipo de paso de parmetro. Hay dos tipos fundamentales de paso de parmetros, por valor y por referencia, si no ponemos tipo de paso de parmetros, se toma el tipo de paso de parmetros por valor. En el cuerpo del procedimiento donde van las sentencias ya no habr ninguna de tipo <retorno valor>, ahora bien, si el procedimiento devuelve resultados a travs de sus parmetros, cosa que solo podr hacer a travs de los parmetros que se pasan por referencia, tendrn que existir sentencias de asignacin de valores a estos parmetros pasados por referencia, a travs de los cuales se van a devolver los resultados. Diferencias entre funciones y procedimientos: Una funcin devuelve un nico valor y un procedimiento puede devolver 0,1 o N. Ninguno de los resultados devueltos por el procedimiento se asocian a su nombre como ocurra con la funcin. Mientras que la llamada a una funcin forma siempre parte de una expresin, la llamada a un procedimiento es una instruccin que por s sola no necesita instrucciones. Esta llamada consiste en el nombre del procedimiento y va entre parntesis van los parmetros que se le pasan. En algunos lenguajes (como el C), se pone delante la palabra Llamar a (Call) procedimiento (parmetro).

Las variables locales se declaran dentro de un mdulo o subalgoritmo y slo tienen utilidad dentro de ese mdulo, no se podr acceder a ellas desde otros mdulos. Pueden existir variables locales con el mismo nombre siempre que estn en mdulos diferentes. Las variables globales son declaradas de forma que puedan ser utilizadas (consultada y/o modificada) desde cualquiera de los mdulos que forman el programa. En este caso, no puede haber dos variables globales con el mismo nombre, ya que esto producira una ambigedad que el compilador no podra resolver. En el diseo estructurado de algoritmos se desaconseja el uso de variables globales ya que este producira acoplamiento comn.
Variables Locales Una

variable local es una variable que esta declarada dentro de un subprograma y se dice que es local al subprograma. Una variable local solo esta disponible durante el funcionamiento del subprograma, al terminar su funcin el subprograma y regresar al programa llamador, se pierde el valor que se encontraba guardado en la variable local.
Variables Globales Las

variables declaradas en el programa principal se denominan variables globales. Al contrario que las variables locales cuyos valores se pueden utilizar solo dentro del subprograma en que fueron declaradas, las variables globales se pueden utilizar en todo el programa principal y en todos los subprogramas, donde se haga referencia al identificador de esta variable, salvo que
alguno de esos subprogramas tenga definida una variable local con el mismo nombre que la variable global, en este caso si utilizo el nombre de esa variable me referir a la local, nunca a la global(ya que tienen 2 zonas de memoria distintas). Por valor: Nos interesa el valor del parmetro actual a la entrada, para ello este valor se copia en la direccin de memoria del parmetro formal asociado. En este caso el parmetro real puede se una constante, expresin o variable, y nunca se va a usar para devolver resultado a travs de l, por esa razn precisamente puede ser una constante o una expresin, porque al no devolver resultados a travs de l no

CESAR TOLOZA AYALA


necesita tomar ninguna zona de memoria en la que este almacenado, es ms, incluso si el parmetro actual fuera una variable y la modificsemos dentro del subprograma (algo que no deberamos hacer), fuera del subprograma no tendra ninguna repercusin esta modificacin, es decir, esa variable servira valiendo lo mismo en el programa desde el que se hace la llamada despus y antes de hacerla. El funcionamiento sera el siguiente: Al hacer la llamada al subprograma se evala el valor del parmetro real, y ese es el que se asocia, es decir, el que se guarda o asigna al parmetro formal asociado. Comenzamos a ejecutar el subprograma y si por casualidad se produce algn cambio en el parmetro formal, el parmetro actual no se ver afectado, es decir, su valor seguir siendo el mismo en el subprograma desde donde se llama que antes de hacer la llamada al subprograma. Algoritmo Ej Var A:entero 3 3 6 Inicio A del PP X de P A3 P (A) Paso de parmetros por referencia: Ahora la caracterstica principal de este tipo de paso de parmetros es que el parmetro formal va a tener tambin asignada una direccin de memoria en la que se almacena, pero en esa direccin NO SE GUARDA SU VALOR, sino que se almacena la direccin de su parmetro real asociado, es decir, el parmetro formal apunta al parmetro real que tiene asociado y cualquier modificacin que se efecte sobre el parmetro formal tendr una repercusin directa en el parmetro real asociado ya que lo que modificar ser el valor almacenado en la direccin que indica el parmetro formal que es la de su parmetro formal asociado. El proceso ser por tanto el siguiente: Al hacer la llamada al procedimiento en el parmetro formal que se pasa por referencia, se va a guardar la direccin del parmetro real asociado para que apunte a l. Durante la ejecucin cualquier referencia al parmetro formal se har accediendo a la direccin apuntada por dicho parmetro, es decir, accediendo directamente al parmetro real asociado, por lo que cualquier cambio en el parmetro formal afectar directamente al parmetro real asociado. De esta manera habremos pasado el resultado. Para indicar que el tipo de paso de parmetro es por referencia, vamos a utilizar la palabra clave entsal precediendo al parmetro que se pasa por referencia. A estos parmetros tambin se les llama parmetros variables (porque su valor vara), por eso en Pascal se usa la palabra clave Var para indicarlo. En otros lenguajes como C, se usan como parmetros punteros para indicar que son direcciones. Algoritmo EJ Var A apunta Inicio/A 3/P1(A) 3 direccin A/Escribir (A)/Fin A del PP X del P1/Procedimiento P1(entsal x:entero) Inicio X x*2 48 Por valor: Solo lo usamos cuando un parmetro solo sirve para informacin de entrada, no devolvemos nada con l. Por eso este paso puede ser una constante, variable o expresin. Para simbolizarlo en la declaracin de variables no ponemos nada. Por referencia: Lo usamos cuando un parmetro lo usamos como entrada de informacin y como salida o solo como salida. Por esta razn ahora s que se va a variar el parmetro formal y por lo tanto no podemos usar constantes ni expresiones, solo variables. Lo simbolizamos con la palabra entsal.

Anda mungkin juga menyukai