Вы находитесь на странице: 1из 6

Funciones, Procedimientos y Arrays en

Turbo Pascal
1.- INTRODUCCIÓN

En la presente práctica se pretende dar las nociones y sintaxis para poder incluir
procedimientos, funciones y arrays dentro de los programas escritos en el lenguaje Pascal.

Desde este momento nuestros programas no vas a estar constituidos únicamente por un
cuerpo de ejecución, habrá tantos cuerpos de ejecución como subprogramas tengamos escritos
dentro de nuestro código.

2.- FUNCIONES

Éste es el primer subprograma que vamos a describir. Debemos tener presente donde
hay que incluir el código de una función y cómo debe ser invocada para poder obtener el
resultado que de ella se espera.

Si recordamos la estructura de un programa en Pascal:

Program <Nombre>;
[Uses
Crt;
]

[Const
<CONS_1> = expresión;
...
<CONS_N> = expresión;
]
[Var
<var1> : Tipo;
...
<varN> : Tipo;
]
Begin
[ Sentencia1;
....
SentenciaN;
]
End.

Vamos a completarlo para ver dónde hemos de colocar las funciones dentro del mismo:

-1-
Program <Nombre>;

[Uses
Crt;
]
[Const
<CONS_1> = expresión;
...
<CONS_N> = expresión;
]

[Var
<var1> : Tipo;
...
<varN> : Tipo;
]
[Function <nombreFuncion> (<lista de parámetros>): Tipo;
[Var
<var1> : Tipo;
...
<varN> : Tipo;
]
Begin {Cuerpo de la función}
[ Sentencia1;
....
SentenciaN;
]
End;
]

Begin {Cuerpo del programa principal}


[ Sentencia1;
....
SentenciaN;
]
End.

Esto quiere decir que las funciones se deben escribir antes del cuerpo del programa
principal. Ahora vamos a pasar a repasar de una forma más precisa la sintaxis de una función:

Function <nombre>(var1:Tipo; var2:Tipo; ...; varN:Tipo): Tipo;


[Var
<var1> : Tipo;
...
<varN> : Tipo;
]
Begin {Cuerpo de la función}
[ Sentencia1;
....
SentenciaN;
]
End;

Una función debe tener un nombre y una lista de parámetros donde se colocan los
nombres de cada uno de sus parámetros formales así como los tipos de los mismos. Todos los
parámetros formales se separan por “;”. Una vez finalizada la declaración de los parámetros
formales se debe poner el tipo de retorno de nuestra función. Todos los tipos implicados dentro
de un subprograma deben de ser simples, es decir, no se puede pasar ningún tipo a la función
que no sea simple o definido por el usuario dentro de la sección Type que pasará a describirse
más adelante.

Como la función debe retornar un valor no debemos de olvidar que dentro de las
sentencias de la función debe asignarse este valor al nombre de la función por medio de una

-2-
sentencia de asignación, es decir, dentro del cuerpo de la función el nombre de la misma es
como una variable más y para devolver el valor se debe asignar el mismo como si se tratara de
una variable más dentro del programa. Lo más cómodo es que la última sentencia de nuestra
función tuviera la forma siguiente:

nombreFuncion := ValorDeRetorno;

Dentro de la función las únicas variables que tienen sentido para nosotros son los
parámetros formales de la función así como las nuevas variables que definamos dentro de la
sección Var de la propia función. Cualquier otra variable no podrá ser utilizada para la
resolución de la función.

Para poder llamar a una función previamente definida deben realizarse los siguientes
pasos:

1. La función debe estar escrita anteriormente a su llamada, es decir, si una función llama
a otra función la función que es llamada debe haberse escrito dentro del programa
Pascal antes que la que realiza la llamada. Si sólo se llama a la función dentro del
programa principal esta comprobación es superflua pues por la sintaxis hemos de tener
escrita la función antes de poder escribir el cuerpo principal de nuestro programa.
2. Dentro de la sentencia donde se invoca a la función debemos asegurarnos que la misma
se encuentra dentro de una expresión correcta y la invocación se realizará:
NombreFuncion(para1,para2,...,paraN)
Donde la lista de parámetros con la que se invoca la función deben ser variables o
valores calculables dentro del cuerpo de ejecución donde queremos llamar a nuestra
función y además deben coincidir con el tipo de los parámetros formales previamente
escritos en la definición de la misma.

2.- PROCEDIMIENTOS

Éste es el segundo subprograma que vamos a describir. Debemos tener presente donde
hay que incluir el código y cómo debe ser invocada para poder obtener el resultado esperado

Si recordamos la estructura de un programa en Pascal:

Program <Nombre>;

[Uses
Crt;
]
[Const
<CONS_1> = expresión;
...
<CONS_N> = expresión;
]

[Var
<var1> : Tipo;
...
<varN> : Tipo;
]
Begin
[ Sentencia1;
....
SentenciaN;
]

-3-
End.

Vamos a completarlo para ver dónde hemos de colocar los procedimientos dentro del
mismo:

Program <Nombre>;
[Uses
Crt;
]

[Const
<CONS_1> = expresión;
...
<CONS_N> = expresión;
]
[Var
<var1> : Tipo;
...
<varN> : Tipo;
]
[Procedure <nombreProcedimiento> (<lista de parámetros>);
[Var
<var1> : Tipo;
...
<varN> : Tipo;
]
Begin {Cuerpo del procedimiento}
[Sentencia1;
....
SentenciaN;
]
End;
]
Begin {Cuerpo del programa principal}
[ Sentencia1;
....
SentenciaN;
]
End.

Esto quiere decir que los procedimiento se deben escribir antes del cuerpo del programa
principal.

NOTA: Es indistinto si primero ponemos todos los procedimientos y luego las funciones o
viceversa. También se puede llegar a mezclar la escritura de los procedimientos y funciones. Lo
que sí se debe cumplir es que antes del cuerpo del programa principal deben haberse escrito
TODOS los procedimientos y funciones que tenga ese programa Pascal.

-4-
Ahora vamos a pasar a repasar de una forma más precisa la sintaxis de un procediento:

Function <nombre>(var1:Tipo; var2:Tipo; ..; VAR varN:Tipo)


[Var
<var1> : Tipo;
...
<varN> : Tipo;
]
Begin {Cuerpo del Procedimiento}
[ Sentencia1;
....
SentenciaN;
]
End;

Un procedimiento debe tener un nombre y una lista de parámetros donde se colocan los
nombres de cada uno de sus parámetros formales así como los tipos de los mismos. Todos los
parámetros formales se separan por “;”. Alguno de estos parámetros deben devolver los datos
calculados dentro del mismo. Estor parámetros se distinguen porque van precedidos por la
palabra reservada VAR. El número de estos parámetros no esta predeterminado y debe ser de
uno o más, puesto que siempre se debe calcular algún valor para que la escritura de un
procedimiento esté justificada. Todos los tipos implicados dentro de un subprograma deben ser
simples, es decir, no se puede pasar ningún tipo a la función que no sea simple o definido por el
usuario dentro de la sección Type que pasará a describirse más adelante.

A diferencia de las funciones un procedimiento no devuelve un valor como parte de su


proceso de llamada, por el contrario alguno de sus parámetros debe tener los valores que en él se
han calculado. A estos parámetros se les conoce como parámetros de salida.

Dentro del procedimiento las únicas variables que tienen sentido para nosotros son los
parámetros formales del procedimiento así como las nuevas variables que definamos dentro de
la sección Var del propio procedimiento. Cualquier otra variable no podrá ser utilizada para la
resolución del procedimiento.

Para poder llamar a un procedimiento previamente definido deben realizarse los


siguientes pasos:

1. El procedimiento debe estar escrito anteriormente a su llamada.


2. Dentro de la sentencia donde se invoca al procedimiento debemos asegurarnos que se
encuentra escrito como si se tratara de una sentencia más de nuestro lenguaje, es decir,
no puede formar parte de una expresión y la invocación se realizará:

nombreProcedimiento(para1,para2,...,paraN)

Donde la lista de parámetros con la que se invoca al procedimiento deben ser variables
o valores calculables dentro del cuerpo de ejecución donde queremos llamar a nuestro
procedimiento y además deben coincidir con el tipo de los parámetros formales
previamente escritos en la definición del mismo. Otra cosa que debemos garantizar es
que TODOS los parámetros de salida de nuestro procedimiento están asociados a
variables y no a expresiones, es decir, cada uno de los parámetros con los que se invoca
el procedimiento y que corresponden a parámetros de salida son variables definidas
dentro del cuerpo de ejecución donde se invoca al procedimiento y que además
coinciden en tipo.

-5-
4.- ARRAYS

Un array se define dentro de la sección Var del programa principal siguiendo la


siguiente sintaxis:

<nombre> : Array [1..<valorTope1>, ..., 1..<valorTopeN>] of Tipo;

Donde el array debe tener un nombre, como cualquier variable, y entre “[..]” se lista los
valores apropiados para cada uno de sus índices. El valorTope debe de ser un literal numérico o
una constante de tipo entero. Si hay más de un índice para el array éstos se deben de separar por
“,”. Como paso final debe declararse de qué tipo es el array que debe de ser uno de los tipos
simples o cualquier otro definido por el usuario dentro de la sección Type.

Para poder acceder a una posición del array se realiza de la siguiente manera:

<nombreArray>[indice1,..,indiceN]

Es decir, se debe poner el nombre de array y seguidamente se abre “[“ luego el valor
para cada uno de sus índices separados todos ellos por “,” y para terminar se cierra “]”.

5.- SECCIÓN Type

Esta es una nueva sección que no hemos visto hasta el momento. Esta sección se coloca,
si la hubiera, justo antes de la sección Var del programa principal. Esta sección sirve para
declarar nuevos tipos por el usuario para poder utilizarlos dentro de nuestro programa Pascal. La
sintaxis es la siguiente:

Type
<identificador> = Tipo;

Donde identificador es el nombre con el que se conocerá el nuevo tipo que hemos
declarado. Nosotros utilizaremos esta sección para poder pasar arrays como parámetros a
nuestras funciones y procedimientos. Necesitamos definir un tipo para cada uno de los arrays
que pretendamos pasar a nuestras funciones y procedimientos. Desde el momento que
definamos el tipo dentro de la sección Type todas las variables que queramos crear de ese tipo
de array serán referenciadas por el identificador que hayamos utilizado dentro de la sección
Type. La sintaxis es la siguiente:

Type
<identificador> = Array [1..tope1,..., 1..topeN] of Tipo;

Desde este momento para poder crear variables de nuestro array haremos lo siguiente:

Var
<nombre> : identificadorArray;

Lo mismo pasa si queremos referirnos al tipo dentro de lo parámetros y variables de un


procedimiento o función.

-6-

Вам также может понравиться