TEMA 2: Sección del Código Es esta sección, la que se puede considerar como el corazón del algoritmo. En ella van los procedimientos, las funciones y el cuerpo del programa, dentro de los cuales van las sentencias que indican los pasos a realizar por el programa. 2.1 Bloque del Programa. El bloque del programa es como el centro neurálgico del programa, desde él, se controla las entradas a los procedimientos y funciones principales (aunque estos pueden llamar a otros procedimientos y funciones secundarios). En el programa anterior se representa como la siguiente parte: +-Algoritmo Circunferencia | | Constante real PI=3.1416 | Variable real r,c | +---->Escribir "Introduzca el radio de la circunferencia" Bloque | | Leer r del | | c=2*Pi*r Programa+---->Escribir "Su longitud es: ",c | +-Final 2.2 Procedimientos y Funciones. Tanto los procedimientos como las funciones son los módulos en los que se puede descomponer un algoritmo. Cada modulo se encarga de realizar una operación independiente de los restantes desde el punto de vista funcional pero este puede estar relacionado con otros procedimientos y funciones para el intercambio de valores de variables. Hay que decir, que cualquier algoritmo se puede transformar en un procedimiento para ser utilizado dentro de otro algoritmo mayor. Así, uno de los programas anteriores quedaría de la siguiente forma: +-Procedimiento Factor(a,b) <- Parámetros Formales. | | Parámetro real a,b | Variable entera c | | b = 1 | +-Para c desde 2 hasta a hacer | | b=b*c | +-FinPara | +-FinFactor 2.2.1 Parámetros Formales y Actuales. Como hemos visto, entre los procedimientos (funciones también) y su entorno se producen una relación en base a un intercambio de valores de las variables. Estas variables reciben nombres diferentes según este en el código Padre o en el código Hijo. Vamos a definir como código Padre, aquel desde el cual se llama a una subrutina y, el código Hijo, la subrutina que estamos llamando. Parámetros Actuales son los que utiliza el programa Padre para relacionarse con una subrutina en concreto, y parámetro Formales son los que posee el programa Hijo y que lo relaciona con el Padre. +-Algoritmo Factorial | | Variable real num,valor | | Escribir "Introduzca el número a factorizar:" | Leer num | | Factor(num,valor) <- Llama al Procedimiento Factor | | | | +---+---> Parámetro Actuales. | | Escribir "El factorial es: ",valor | +-Final Obsérvese que los parámetros actuales y formales no tienen por que llamarse de igual forma, sin embargo es condición necesaria que sean del mismo tipo y que estén en el mismo orden. La transmisión de un parámetro como valor y no como variable, hace que el programa Padre no reciba las posibles modificaciones que pueda sufrir dicho parámetro dentro del código Hijo. Ejemplo: +-Algoritmo Factorial Constante | | Variable real num,valor | | Escribir "Introduzca el número a factorizar:" | Leer num | | valor=0 | Factor(num,3) <- Llama al Procedimiento Factor | | Escribir "El factorial es: ",valor | +-Final Se puede observar claramente que siempre que introduzcamos cualquier número vamos a obtener que el factorial es 0, pues al introducir la variable de forma numérica no se actualiza en el procedimiento. 2.2.2 Variables Globales y Locales. De igual forma que en el apartado anterior diferenciábamos entre parámetros formales y actuales, ahora vamos a realizar una distinción entre variables globales y locales. Podemos definir variable global como aquella que puede ser utilizada (leída, modificada, etc.) a lo largo de todo el algoritmo principal y también por cualquiera de los subalgoritmos (entiéndase funciones y procedimientos) que componen el algoritmo en sí. De igual forma, una variable local, es aquella que sólo puede ser referenciada dentro del subalgoritmo en el cual ha sido declarada. Para simplificar, podemos decir que las variables globales pueden ser referenciadas desde cualquier parte del algoritmo mientras que las locales únicamente serán referenciadas dentro del subalgoritmo al que pertenece: +--------------------+------------------------+ | Variables Locales | Subalgoritmo propio | | Variables Globales | Cualquier subalgoritmo | +--------------------+------------------------+