Procedimientos
Definición
Creación
Uso de los procedimientos
Variables locales y globales
Paso de información entre procedimientos
Parámetros
Funciones
Definición
Uso de las funciones
Procedimientos predefinidos en Turbo Pascal
HALT y EXIT
INC y DEC (incrementar y decrementar)

Definición de procedimiento

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, unicamente se hace una referencia al procedimiento.

Por ejemplo, es muy común que se quiera visualizar un título determinado varias veces en un programa, para evitar teclear ese título en nuestro programa fuente todas las veces que sea necesario creamos un procedimiento llamado "Titulo" que se encargará de escribirlo.

Una vez creado un procedimiento actuará como una instrucción más de Turbo Pascal, y para ejecutarlo unicamente teclearemos el nombre de dicho procedimiento.

Para poder ejecutar un procedimiento es necesario declararlo en el programa que se este utilizando.

Creación de los procedimientos

El primer paso para crear un procedimiento es saber que queremos que haga. Una vez definiendo este punto declaramos el procedimiento despues de haber declarado variables y constantes, antes del cuerpo del programa principal. La palabra reservada para su declaración es Procedure seguida del nombre del procedimiento. Vamos a crear un procedimiento encargado de escribir en pantalla el enunciado "Programa de Turbo Pascal":

PROCEDURE Titulo;
BEGIN
WriteLn ('Programa de Turbo Pascal');
END;

Uso de los procedimientos

Una vez declarado el procedimiento es posible utilizarlo como una instrucción de Turbo Pascal. Al uso de un procedimiento se le conoce como llamada al procedimiento.

El siguiente programa ilustra el uso o la llamada al procedimiento creado anteriormente:

PROGRAM Procedimientos;

PROCEDURE Titulo;
BEGIN
WriteLn ('Programa de Turbo Pascal');
END;

BEGIN
WriteLn ('Programa ejemplo del uso de procedimientos');
Titulo;
{Llama al procedimiento}
WriteLn;
Titulo;
{Vuelve a llamar al procedimiento}
END;

Variables locales y globales

En Turbo Pascal cada identificador tiene un campo de acción, solo dentro de éste campo es posible utilizarlo. Los ejemplos más claros son las variables, que pueden ser globales o locales. La diferencia estriba en que una variable global puede ser utilizada por cualquier parte del programa, incluyendo a todos los procedimientos, en cambio una variable local puede ser utilizada unicamente por el procedimiento en el que esta declarada, el programa principal y los otros procedimientos la toman como inexistente. Ejemplo:

PROGRAM Variables;
VAR
Hola : String;

PROCEDURE prueba;
VAR
Adios : String;
BEGIN
{En esta sección si es posible usar la variable Hola}
Adios := 'Adios, que les vaya bien';
WriteLn (Adios);
END;

BEGIN
{En esta sección no se reconoce a la variable Adios}
Hola := 'Hola, bienvenidos al programa';
WriteLn (Hola);
WriteLn (Adios);
{Al compilar el programa se generará un error ya que la variable Adios es inexistente en esta sección, para eliminar el problema quites esta linea}
prueba;
END.

Es posible darle el mismo nombre a una variable local y a una global en el mismo programa, pero entonces el procedimiento no podrá utilizar la variable global ya que le da preferencia a las locales sobre las globales. Por ejemplo:

PROGRAM Variables_2;
VAR
Saludo : String;

PROCEDURE Mensaje;
VAR
Saludo : String;
BEGIN
Saludo := 'Este mensaje solo es válido para el procedimiento "Mensaje"';
WriteLn('Saludo');
END;

BEGIN
Saludo := 'Primer saludo (Global)';
WriteLn (Saludo);
Mensaje;
WriteLn (Saludo); {Se escribirá el mensaje "Primer saludo"}
END.

Parámetros

Para poder pasar información entre el programa principal y procedimientos, o entre los mismos procedimientos usamos los parámetros, que son los canales de comunicación de datos.

Los parámetros son opcionales y si no se necesitan no se deben usar. Para utilizarlos es necesario declararlos son la siguiente sintaxis:

PROCEDURE nombre (lista de parámetros);

La lista de parámetros esta compuesta de los nombres de los mismos y del tipo de datos que representan, los del mismo tipo se separan con comas "," y cada tipo diferente se separa con punto y coma ";". Ejemplo:

Procedure Ejemplo(a, b : Integer; c, d : String);

Para llamar a un procedimiento que utiliza parámetros se pueden utilizar como tales otras variables o constantes, siempre y cuando sean del mismo tipo que los declarados. Ejemplo:

Ejemplo(1, 2, 'Hola', 'Adios');

Ejemplo de un programa con procedimiento que utiliza un parámetro.

PROGRAM Parametros;
VAR
Saludo : String;

PROCEDURE Imprime_5 (a : String);
VAR
Contador : Integer;
BEGIN
FOR contador := 1 to 5 DO
{Imprime 5 veces la cadena almacenada }
WriteLn(a);
{en la variable "a", que es la información}
END;
{que llega como parámetro }

BEGIN
Saludo := 'Bienvenidos al programa';
Imprime_5 (Saludo);
{llama al procedimiento Imprime_5, usando como}
{parámetro la variable Saludo }
Imprime_5 ('Fin');
{Utiliza la cadena "fin" como parámetro }
END.

Es válido crear un procedimiento que llame a otro procedimiento siempre y cuando el procedimiento llamado haya sido declarado antes del que lo usará.

Definición de las 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
X := 5.89;
Y := 9.23;
Z := Promedio (X, Y);
{Iguala Z al valor devuelto por la función Promedio}
WriteLn('El promedio de ',X,' y ',Y,' es: ',Z);
END.

Procedimieto HALT

El procedimiento HALT ya se habia revisado anteriormente, pero se tomó como una instrucción, siendo que es realmente un procedimiento predefinido de Turbo Pascal que nos permite terminar nuestro programa en cualquier punto del mismo.

El procedimiento EXIT provoca la salida del procedimiento que se está ejecutando y nos regresa al lugar de donde fue llamado.

Procedimientos INC y DEC

El procedimiento INC incrementa en 1 el contenido de cualquier variable de tipo entero, es lo mismo en un programa teclear:

Variable := Variable + 1;

o telcear:

Inc(Variable);

El procedimiento DEC decrementa en 1 el valor de cualquier variable de tipo entero que se le indique, se usa igual que INC:

DEC (Variable);