Procedimientos_y_Funciones.doc

Anuncio
Procedimientos y Funciones
Los Procedimientos y 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 pueden ser:
•
ENT (entrada): recogen el valor que se ha pasado desde el programa principal.
•
SAL (salida): usados para devolver un valor.
•
ENTSAL (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 Procedimientos no retornan
directamente un valor.
Las variables pueden ser pasadas como parámetros a las 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.
Procedimientos
Consideraciones a la hora de crear un Procedimiento:

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 )
1

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.
2
Código fuente del programa principal:
ALGORITMO Meses;
VAR
ENTERO numero;
CARACTER mes ← "";
INICIO.
ESCRIBIR("Dime un número");
LEER( numero );
DevolverMes( numero, mes );
SI( mes == "" )
ESCRIBIR("El número introducido no es válido");
SINO
ESCRIBIR( "El número [", numero, "] corresponde al mes: ", mes );
FIN_SI17.
FIN
Código fuente del Procedimiento
PROCEDIMIENTO DevolverMes( E ENTERO num, S CARACTER nombre )
INICIO
SI( (num >= 1) AND (num <= 12) )
EN_CASO_DE num HACER
1: nombre ← "Enero";
2: nombre ← "Febrero";
3: nombre ← "Marzo";
4: nombre ← "Abril";
5: nombre ← "Mayo";
6: nombre ← "Junio";
7: nombre ← "Julio";
8: nombre ← "Agosto";
9: nombre ← "Septiembre";
10: nombre ← "Octubre";
11: nombre ← "Noviembe";
12: nombre ← "Diciembre";
FIN CASO
SINO
nombre ← "";
FIN SI
RETORNAR;
FIN_PROCEDIMIENTO
Explicación: desde el programa principal se llama al Procedimiento DevolverMes(), que
tras comprobar si el número es válido carga el nombre del mes correspondiente en la
variable 'nombre', o una cadena vacía (indicado con las dos comillas) en caso de no
serlo.
Posteriormente desde el programa principal se muestra el nombre del mes, o un mensaje
de error en caso de haber recibido una cadena vacía.
3
Programa que usando una Función, muestra el nombre del mes que corresponde a un
número
Código fuente del programa principal:
ALGORITMO Meses;
VAR
ENTERO numero;
CARACTER mes ← "";
INICIO
ESCRIBIR("Dime un número");
LEER( numero );
mes ← Devolver_Mes( numero );
SI( mes == "" )
ESCRIBIR("El número introducido no es válido");
.
SINO
ESCRIBIR( "El número [", numero, "] corresponde al mes: ", mes );
FIN_SI
FIN
Código fuente de la Función:
CARACTER FUNCION Devolver_Mes( E ENTERO num )
VAR
LOCAL CARACTER nombre ← "";
INICIO
SI( (num >= 1) AND (num <= 12) )
EN_CASO_DE num HACER
1: nombre ← "Enero";
2: nombre ← "Febrero";
3: nombre ← "Marzo";
4: nombre ← "Abril";
5: nombre ← "Mayo";
6: nombre ← "Junio";
7: nombre ← "Julio";
8: nombre ← "Agosto";
9: nombre ← "Septiembre";
10: nombre ← "Octubre";
11: nombre ← "Noviembe";
12: nombre ← "Diciembre";
FIN CASO
FIN SI
DEVOLVER nombre;
FIN_FUNCION
Explicación: desde el programa principal se llama a la Función Devolver_Mes(), que
tras comprobar si el número es válido modificará el valor de la variable 'nombre' (que
previamente se ha inicializado con una cadena vacía) con el nombre del mes
correspondiente. En caso de que el número no sea válido la variable 'nombre' continuará
teniendo el valor de cadena vacía.
4
Posteriormente desde el programa principal se muestra el nombre del mes, o un mensaje
de error en caso de haber recibido una cadena vacía.
Fuente
http://www.informaticapc.com
5
Descargar