Los Procedimientos y las Funciones facilitan la estructuración y reutilización del código fuente, evitando la duplicación del mismo y facilitando su comprensión, así como el buscar errores en el programa.
Al ser posible la reutilización del código fuente, pueden ser llamados desde diferentes partes del programa: tanto desde el programa principal como desde otros Procedimientos y Funciones.
Sus parámetros o argumentos pueden ser de uno de los siguientes tipos:
- ENT (de entrada): recogen el valor que se ha pasado desde el programa principal.
- SAL (de salida): usados para devolver un valor.
- ENTSAL (de entrada y salida): el mismo parámetro se usa tanto de entrada (para recibir un valor), como de salida (para devolver un valor como resultado).
Es importante que los Procedimientos y Funciones validen internamente que los datos recibidos son válidos.
A continuación describiremos los pasos necesarios para crear Procedimientos y Funciones usando algoritmos en pseudocódigo: ten en cuenta que podrás encontrar otras nomenclaturas válidas para hacerlo.

La diferencia entre Procedimientos y Funciones es que los primeros no retornan directamente un valor.

Las variables pueden ser pasadas como parámetros a Funciones y Procedimientos de los siguientes modos: por valor (se pasa realmente una copia de la variable) o por referencia (lo que se pasa realmente es la dirección de memoria de la variable, con lo que se estará usando la misma en ambas partes del código fuente, no una copia).

Las variables creadas dentro de un Procedimiento o Función existen y son visibles sólo dentro de ellas.
Consideraciones a la hora de crear un Procedimiento en pseucódigo:
- Crearemos una variable en el programa principal para guardar el resultado devuelto por el Procedimiento.
Al crear el Procedimiento se usa la nomenclatura...
PROCEDIMIENTO nombre( param_entrada_1, ..., param_entrada_n, param_salida_1, ..., param_salida_n )- Las variables internas, que será usadas sólo dentro del Procedimiento se declaran con LOCAL seguido de su tipo.
- Terminan con RETORNAR y FIN_PROCEDIMIENTO.
Ejemplo: programa que usando un Procedimiento, muestre el resultado de sumar los números 10 y 20:
Programa principal:
ALGORITMO Principal;
VAR
REAL num1 <- 10;
REAL num2 <- 20;
REAL resultado;
INICIO
Sumar(num1, num2, resultado);
ESCRIBIR("El resultado es: ", resultado);
FIN
Procedimiento:
PROCEDIMIENTO Sumar( ENT REAL numero_1, ENT REAL numero_2, SAL REAL res )
INICIO
res <- numero_1 + numero_2;
RETORNAR;
FIN_PROCEDIMIENTO
Explicación: en el programa principal creamos tres variables: 'num1' y 'num2' en las que almacenaremos los números que pasaremos al Procedimiento (también se podrían haber escrito directamente los números, sin necesidad de usar variables), y otra de nombre 'resultado' que pasaremos como tercer parámetro y con la que se recogerá el valor devuelto por éste.
En el Procedimiento definimos como de entrada los dos primeros parámetros y de salida el tercero (ya que a través de él, el programa principal recogerá el resultado).
Hemos definido las variables como de tipo REAL, puesto que así pueden ser usadas también con números decimales.

Las variables creadas dentro de un Procedimiento existen y son visibles sólo dentro de él.

Vea también: [ Ejemplos ]
Consideraciones a la hora de crear una Función:
- Hay que crear una variable en el programa principal para guardar el valor devuelto (aunque no es imprescindible ya que se puede recuperar usándola en una expresión o en otra Función).
Al crear la Función se usa la nomenclatura...
[TIPO_DATO_DEVUELTO] FUNCION nombre( param_entrada_1, ..., param_entrada_n )- Las variables internas de la Función se declaran con LOCAL seguido de su tipo.
- Terminan con DEVOLVER valor y FIN_FUNCION, (donde 'valor' puede ser una variable local, o un valor '1, "hola", etc.")
Ejemplo: programa que usando una Función, muestre el resultado de sumar los números 10 y 20:
ALGORITMO Principal;
VAR
ENTERO num1 <- 10;
ENTERO num2 <- 20;
REAL resultado;
INICIO
resultado <- Sumar(num1, num2);
ESCRIBIR("El resultado es: ", resultado);
FIN
Función:
REAL FUNCION Sumar( ENT REAL numero_1, ENT REAL numero_2 )
VAR
LOCAL REAL res;
INICIO
res <- numero_1 + numero_2;
DEVOLVER res;
FIN_FUNCION
EXPLICACIÓN: en el programa principal creamos tres variables: 'num1' y 'num2' en las que almacenaremos los números que pasaremos a la Función (también se podrían haber escrito directamente los números, sin necesidad de usar variables), y otra de nombre 'resultado' en la que se recogerá el valor devuelto por ésta.
En la Función definimos como de entrada los parámetros recibidos, y creamos una variable propia de la misma que posteriormente será usada para devolver su valor (el resultado de la suma).
Hemos definido las variables como de tipo REAL, puesto que así pueden ser usadas también con números decimales.

Las variables creadas dentro de una Función existen y son visibles sólo dentro de ella.

Vea también: [ Ejemplos ]