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 | 
      +--------------------+------------------------+