PROCEDIMIENTOS y FUNCIONES

En algunas ocasiones se debe llamar un bloque de código mas de una vez, una forma de hacerlo es escribir las instrucciones tantas veces como se necesite, tornando de esta manera programas con exceso de código y dificultad para descubrir posibles errores, la otra es meter las instrucciones en subprogramas que se invocan cada vez que se necesiten.

Los procedimientos y funciones se declaran o escriben antes del begin principal, un procedimiento o función puede contener otros procedimientos y funciones.

En resumen: Las subrutinas son escensialmente partes separadas de código que ejecutan tareas pequeñas de un programa GRANDE.

PROCEDIMIENTOS

Un procedimiento es un grupo de sentencias que realizan una tarea concreta. En lugar de reescribir el código completo de esa tarea cada vez que se necesite, únicamente se hace una referencia al procedimiento. Estos pueden recibir o enviar información el programa principal, técnicamente se conoce como PASO DE PARAMETROS, que puede ser POR TRANSFERENCIA o POR VALOR.

Sintaxis

Procedure NOMBRE_DEL_PROCEDIMIENTO

CONSTANTES

TIPOS

VARIABLES

PROCEDIMIENTOS Y FUNCIONES

BEGIN

{Bloque de instrucciones}

END;

Este sencillo programita ilustra la forma de utilizar procedimientos sencillos

program Procedimientos_sencillos;

procedure Nombre;

begin

Writeln('Este Robot aun no tiene nombre');

end;

procedure Direccion;

begin

Writeln('C:\mis documentos\imágenes\caricaturas\');

end;

procedure Telefono;

begin

Writeln('0000 sin corriente');

end;

begin{Inicio del programa principal}

{Se invocan los diferentes procedimientos

Declarados anteriormente}

Nombre;

Dirección;

Telefono;

Readln;

end. {Final del programa principal}

Ahí te va otro ejemplo:

program Otro_procedimiento_sencillo;

var Contador : integer;

procedure Escribe_el_titulo;

begin

Writeln('Este es el Título');

end;

procedure Escribe_un_mensaje;

begin

Writeln('Este es el mensaje y el contador es ',Contador);

end;

procedure Escribe_el_final;

begin

Writeln('Este es el mensaje final');

end;

Begin {Inicio del programa principal}

Escribe_el_titulo;

for Contador := 1 to 10 do Escribe_un_mensaje;

{Observa detenidamente este ciclo FOR, como tiene una sola instrucción no lleva ni BEGIN ni END}

Escribe_el_final;

End. {Final del programa principal}

 

Paso de Parámetros

Pasar un parámetro significa direccionar el valor de una variable del programa principal al procedimiento hay dos clases:

 

Paso de parámetros por REFERENCIA

Cuando se pasa una variable a un procedimiento como parámetro por referencia, los cambios que se efectúen sobre dicha variable dentro del procedimiento se mantienen incluso después de que este haya terminado, es decir los cambios afectan al programa principal.

 

Los cambios producidos POR PARAMETRO POR REFERENCIA son permanentes, pues TURBO PASCAL no pasa al procedimiento el valor de la variable sino la dirección de memoria de esta.

 

Sintaxis

PROCEDURE Nombre_procedimiento( VAR variable : tipo de dato)

BEGIN

{Bloque de instrucciones}

END;

 

Paso de parámetros por VALOR

 

La diferencia de pasar parámetros por referencia respecto a parámetros por valor radica en que en estos últimos se guarda en memoria una copia temporal de la variable, dentro del procedimiento solo se utiliza la copia, cuando se modifica el valor del parámetro solo afecta al almacenamiento temporal, la variable actual fuera del procedimiento nunca se toca.

Sintaxis

PROCEDURE Nombre_procedimiento(variable : tipo de dato)

BEGIN

{Bloque de instrucciones}

END;

 

Ejemplo:

program Ambos_procedimientos;

var Contador : integer;

Indice : integer;

procedure Imprime_Datos(estable : integer);

{Este es un procedimiento de PARAMETRO por VALOR}

begin

Writeln('Esta es la rutina : ',estable);

estable := 12;

end;

procedure Imprime_y_modifica(var cambia : integer);

{Este es un procedimiento de PARAMETRO por REFERENCIA}

begin

Writeln('Esta es el procedimiento de impresión y modificación ', Cambia);

Cambia := 35;

end;

begin (* Programa principal *)

for Contador := 1 to 3 do

begin

Indice := Contador;

Imprime_Datos(indice);

Writeln('Volvemos al procedimiento de impresión, Indice =',Indice);

Imprime_y_modifica(Indice);

Writeln('Volvemos al procedimiento de impresión, Indice =',Indice);

Imprime_datos(indice);

Writeln('Regresamos de nuevo a la impresión de nuevo y el valor del índice es =',Indice);

Writeln; {Imprimimos una linea en blanco}

end;{Final del ciclo for}

readln;{Se hace una espera hasta que se presiona la tecla ENTER}

end. (* Final del programa principal *)

Si deseas ver el resultado de este programa por favor codifícalo en TURBO PASCAL (suena como redundante, pero no falta el que lo meta en lenguaje C, y después ande diciendo que estos ejemplos no funcionan) y saca tus propias conclusiones.

FUNCIONES

 Las funciones son, al igual que los procedimientos, un conjunto de sentencias que se ejecutan constantemente, la diferencia entre éstas y los procedimientos es que las funciones regresan un valor. La declaración de las funciones se realiza de la siguiente forma: FUNCTION nombre(parámetros) : tipo_de_datos; A continuación se escribe el contenido de la función como una sentencia normal (sencilla o compuesta), normalmente terminando con la igualación de la función al valor que regresará. Ejemplo:

Function Promedio (A, B : Real) : Real; {Promedio De Dos Números Reales}
Begin
Promedio := (A + B) / 2;
End;

Uso De Las Funciones

Como Las Funciones Devuelven Un Valor Específico La Forma Más Usual De Utilizarlas Es Por Medio De Asignaciones De Una Variable A La Función. Ejemplo:

Program Funciones;
Var
X, Y, Z : Real;
Function Promedio (A, B : Real) : Real;

{Promedio De Dos Números Reales}
Begin
Promedio := (A + B) / 2;
End;

Begin
{Inicio Del Programa Principal}

{A Continuación Inicializamos Las Variables}
X := 12.78;
Y := 6.38;
Z := Promedio (X, Y);
{Iguala Z Al Valor Devuelto Por La Función Promedio De X, Y}
Writeln('El Promedio De ',X,' Y ',Y,' Es: ',Z);
{Impresión De La Información}
End.
{Final Del Programa Principal}


Anterior Pulsa aquí para regresar

Siguiente Pulsa aquí para continuar

Indice Presiona aquí para regresar al índice