Sie sind auf Seite 1von 8

SUBPROGRAMAS

Una técnica que facilita el desarrollo de algoritmos complejos es la


“programación modular, descendente o top-down”. Es el proceso mediante el cual un
problema se descompone en una serie de niveles o pasos sucesivos de refinamiento
(stepwise). La metodología descendente consiste en efectuar una relación entre las
sucesivas etapas de estructuración de modo que exista una relación entre ellas mediante
entradas y salidas de información. El problema se descompone en varias estructuras
jerárquicas, de forma que se pueda considerar cada estructura desde dos puntos de vista:
¿qué hace? y ¿cómo lo hace? Esto significa dividir el programa en subprogramas, cada
uno con un objetivo particular, que resuelvan solo una parte del algoritmo, formando un
módulo.

El programa llamador solo invocará a ese módulo en el momento adecuado


y luego de resuelto el problema por el cual fue creado, retornará al programa llamador los
valores resultantes, aunque esto no es indispensable, y el programa continuará con los
restantes objetivos. Dicho en forma más simple, los subprogramas (módulos) son
programas dentro del mismo programa. El programa llamador puede ser el programa
principal u otro subprograma.

Hay de dos tipos de subprogramas:

1. procedimientos
2. funciones.

Los procedimientos se invocan (se llaman) por su nombre, como si fuera


una sentencia Pascal, mientras que las funciones se las menciona dentro de una
expresión, en forma similar a las estçandar. Las funciones siempre devuelven un solo
valor a la expresión que la referencia. Los procedimientos, en cambio, pueden o no
devolver valores y cuando lo hacen, pueden ser uno o varios valores. En los casos en que
no devuelven valores, realizan alguna tarea predeterminada como por ejemplo, imprimir
un título. Cuando cumplen su cometido, retornan el control a la sentencia inmediata
siguiente en que fue invocado el procedimiento.

PROCEDIMIENTOS
Los procedimientos están formados por un conjunto de sentencias, del
mismo tipo de las que se usan en el programa principal, a las que se le asigna un nombre
(identificador), con el que después es invocado.

Formato 1 Procedure <nombre_procedimiento>;

Declaraciones locales

Begin

Sentencias Pascal (cuerpo)

End;

1
Formato 2: Procedure <nombre_procedimiento> (lista de parámetros formales)

Declaraciones locales

Begin

Sentencias Pascal (cuerpo)

End;

Nombre_procedimiento: Es un identificador Pascal válido.


Lista parámetros formales: Sirven para recibir y devolver información al programa
llamador. La lista de parámetros estará compuesta por variables representadas con
nombres de identificadores y tienen el siguiente formato:

Lista_1: tipo_de_dato_1; Lista_2: tipo_de_dato_2; ...

Lista_i puede ser uno o varios identificadores separados por comas (“,”).

Tipo_de_Dato_i es cualquier tipo de dato válido Pascal o del usuario.

Declaraciones locales: Esta formado por declaraciones de tipo, constantes, variables


e incluso procedimientos, que solo tienen validez dentro del procedimiento que los
incluye.

LLAMADA A UN PROCEDIMIENTO

Se los invoca por medio de su nombre y en caso de estar definido con una
lista de parámetros, éstos serán indicados en el mismo orden de la lista de parámetros
formales definida en el procedimiento, colocados entre paréntesis “()”.

Formato 1: Nombre_Procedimiento

Formato 2 Nombre_Procedimiento (Lista de parámetros Actuales)

La lista de parámetros estará compuesta por variables, con nombres de


identificadores que deberán estar definidos convenientemente con su tipo de dato,
constantes e incluso expresiones aritméticas y lógicas o funciones estándar o del usuario.
Deberán tener el mismo orden que la lista que recibirá sus valores.

Los procedimientos deben estar definidos antes del Begin del “programa
principal”. Si un procedimiento es llamado por otro procedimiento, se debe cumplir
la misma regla: debe estar definido previamente.

Program Demo; Cuando en el programa principal es


...... invocado el Procedimiento A, el control es
Procedure A; adquirido por éste, comenzando su
...... ejecución hasta alcanzar el End, momento a
End; partir del cual, el control vuelve al programa
Procedure B; principal, ejecutándose la sentencia
…… siguiente a la invocación.
End; Lo mismo ocurre con el procedimiento B
2
Begin cuando es invocado en el programa
… principal.
A El Procedimiento A tiene la particularidad
… que también puede ser invocado por el
B Procedimiento B, pues fue definido antes en
… la secuencia de instrucciones del Programa
End. Demo..

VENTAJAS DEL USO DE PROCEDIMIENTOS

a) Facilita la programación descendente, al involucrar en él solo aquellas acciones


que nos interesa sean ejecutadas en ese momento.
b) Como los procedimientos se pueden ejecutar todas las veces que lo deseemos y
en el momento que lo necesitemos, puede ser llamado desde cualquier lugar
del cuerpo del programa (entre el Begin y el End), ahorrando mucho tiempo de
programación y, consecuentemente, disminuye el tamaño que ocupa el programa
completo en la memoria.
c) Una vez que el procedimiento ha sido probado, también se lo puede utilizar en
otros programas, ubicándolas convenientemente en librerías de procedimientos,
utilizando el parámetro:

{$I <Nombre_Subprograma>}

LOS PARÁMETROS

Los parámetros son formas de transferir información entre el programa que


lo invoca y el procedimiento invocado, en ambos sentidos. En algunos casos, el
procedimiento no necesita que le transfieran información al invocarlo, porque su objetivo
lo puede lograr por sí mismo, sin necesidad de información adicional. En estos casos, solo
se indica el nombre del procedimiento.
En los casos en que el procedimiento necesita información que tiene el
programa que lo invoca, se la debe transferir como listas de valores y el procedimiento
debe tener previsto una lista de parámetros dispuestos en el mismo orden que se los
envían, para recibirlos y utilizarlos. Si es necesario que devuelva algún valor generado por
él, deberá agregarse el parámetro donde se le asignará ese valor y, correlativamente, el
programa llamador tendrá en su lista el parámetro que lo recibirá.

Lista de parámetros Actuales y Formales

Se llaman Actuales a los parámetros que son transferidos desde el


programa llamador.
Se llaman Formales a los parámetros que utiliza el procedimiento para
guardar los valores recibidos.
Los parámetros Actuales y Formales que se utilizan en los llamados y las
definiciones de los procedimientos, deben coincidir en número, orden y tipo de dato. Los
nombres de ambos tipos de parámetros pueden ser los mismos, aunque es una técnica
no recomendada. Porque puede dar lugar a confusión, especialmente cuando no se tiene
mucha experiencia. Puede ser útil que sean diferenciados con un carácter precediendo al
mismo nombre.

3
Parámetros Valor y Parámetros Variable

Los parámetros Valor son aquellos que solo se desean transferir para que
sean utilizados por el procedimiento, sin necesidad de que devuelvan potenciales
modificaciones que puedan tener en el procedimiento. Son unidireccionales. Solo deben
incluirse en la lista de parámetros del procedimiento con tu tipo, tal como se indicó
anteriormente.
Los parámetros Variables son para recibir los valores que le asigne el
procedimiento, para lo cual la lista debe estar precedida de la “palabra reservada Var”.
Estos parámetros son bidireccionales, ya que pueden ser utilizados como parámetros
Valor y Parámetro Variable al mismo tiempo.

Definición del Procedimiento

Procedure Demo (p1,p2:<Tipo>; Var p3,p4:<Tipo>

p1 y p2 son parámetros Valor


p3 y p4 son parámetros Variable.

SINTAXIS

1) Los parámetros Formales deben estar entre paréntesis. Pueden tener una o más
listas de identificadores. Cada lista puede estar precedida por Var. Los
identificadores deben estar separados por comas (“,”) y éstos, a su vez, deben
finalizar con dos puntos (“:”) y a continuación el tipo de dato. Las listas de
identificadores deben estar separados por punto y coma (“;”).
2) Una lista de parámetros Actuales puede ser una lista variables, con nombres de
identificadores que deberán estar definidos convenientemente con su tipo de dato,
constantes e incluso expresiones aritméticas y lógicas o funciones estándar o
del usuario.
3) La correspondencia entre parámetros Actuales y Formales se determina por la
posición en la respectiva lista de parámetros y ambas deben ser del mismo tamaño
en cantidad de componentes.
4) En cuanto a los parámetros Variables, el parámetro Actual correspondiente debe
ser una variable.

Ejemplo:
Program Ejemplo;
Var
x, y : real;
p : integer;
aux : char ;
......
Procedure Prueba (a, b : integer ; var c, d : real ;var e : char );

{ Llamadas correctas }

Prueba ( 40, p, x, y, aux );


Prueba ( 25, 3 * p, x, y, aux );
{ Llamadas incorrectas }

Prueba ( p, 10.8, 40, y, ‘e’); 40 y ‘e’ no pueden ser parámetros variables


Prueba ( -8, 40, m, n, p ); m, n no están definidos, p es integer
4
VARIABLES LOCALES Y GLOBALES

Una variable se la llama Local cuando está declarada dentro de un


procedimiento y solo esta disponible durante la ejecución del mismo. Su valor se pierde
una vez que retorna el control al programa llamador, salvo que sea transferida
mediante un parámetro Variable.
Las variables declaradas en el “programa principal”, se denominan
Globales y, a diferencia de las Locales, se pueden utilizar en el programa principal y en
todos los subprogramas.
Cuando una variable es definida como global y como local, en el
procedimiento se la considera como otra variable, es decir, predomina, dentro del
procedimiento, su calidad de local y son distintas, aunque tengan el mismo nombre. No
es aconsejable este proceder.
Lo conveniente es pasar al procedimiento los valores que deban
utilizar a través de parámetros y no usar variables globales en ellos. Recordar que de
esa forma, los parámetros están listados en la cabecera del procedimiento y son mas
visibles.

ÁMBITO

Los procedimientos, al igual que las estructuras de programación vistas,


se pueden anidar, es decir, dentro de un procedimiento puede haber otros
procedimientos (internos) que pueden ser llamados del “externo”, tal como ocurre con
el “programa principal”, que llama a los subprogramas que se definen en él.
Llevado esto al plano interno, un subprograma puede anidar otros
subprogramas internos en él, pero que no pueden ser llamados desde otro
subprogramas externos, es decir, no pueden ser compartidos. Ello daría un error de
sintaxis.
Lo expresado es lo que se conoce como ámbito de definición, que es
válido tanto para procedimientos y funciones, como para identificadores.

Directiva de compilación INCLUDE

Esta directiva permite al compilador Pascal definir subprogramas, que son


guardados con un nombre de ocho caracteres máximo y la extensión “.PAS”, y pueden
ser incluidos en otros programas con la directiva INCLUDE
Formato: {$I <Nombre archivo> }

Los caracteres iniciales “{$I” no deben contener espacios entre ellos.

FUNCIONES
Existen dos tipos de funciones:
 Predefinidas de Pascal o estándar.
 Definidas por el usuario.

Las segundas son las que forman parte de los subprogramas, junto con los
Procedimientos. A diferencia de éstos últimos, las funciones solo pueden entregar un
valor para ser utilizado en una expresión que la invoca.
5
Formato Function <Nombre_Función> (p1, p2, ... , pn): tipo de dato

Declaraciones locales y subprogramas

Begin
..........
Nombre_Función := valor de la función

End;

p1,p2, ... , pn Lista de parámetros formales con tipo de dato

Tipo de dato Tipo de dato que devuelve la función

Llamada
Nombre_Función ( lista de parámetros Actuales )

Comparación de Funciones y Parámetros

Procedimientos Funciones
Procedure Function

Nombre_Procedimiento es solo un Nombre_Función es un identificador


identificador y define la dirección de memoria
donde se encuentra el valor

La lista de parámetros formales La lista de parámetros formales son


reciben y devuelven valores al utilizados para obtener el valor
programa llamador resultante

Puede devolver ninguno, uno o varios Devuelve un solo valor del tipo
valores de distinto tipo, especificados especificado en la cabecera
en la cabecera

En el cuerpo del procedimiento no es En el cuerpo de la función debe


necesario utilizar su nombre existir una sentencia de asignación
donde el nombre del identificador
receptor del valor sea el propio
nombre de la función

Los tipos de datos de los parámetros Los tipos de datos pueden ser: real,
pueden ser cualquiera integer, boolean, char, tipo rango,
tipo enumerado o un tipo puntero

6
Procedimientos y Funciones de DOS

Para obtener la fecha del Sistema:

GetDate (Var Anio, Mes, Dia, DiaSemana: word)


Anio 1980 .. 2099
Mes 1 .. 12
Dia 1 .. 31
DiaSemana 0 .. 6 (0 es domingo)

Para obtener la hora del Sistema

GetTime (Var Hora, Minutos, Segundos, Centésimas: word)


Hora 0 . 23
Minutos 0 .. 59
Segundos 0 .. 59
Centésimas 0 .. 99

Funciones de CRT

KeyPressed: boolean
Detecta si se tocó el teclado:
Verdadero si se pulsa una tecla.
Falso en caso contrario.

ReadKey : char
Lee un carácter del teclado:
Si KeyPressed = True antes de llamar a ReadKey, se
devuelve un carácter.
Caso contrario, espera a que se toque el teclado.

ClrScr
“Limpia” el monitor y posiciona el cursor en la primera posición del
mismo.

GoToXY ( Columna , Fila )


Posiciona el cursor en la columna y fila que se indica.

7
Técnicas de Programación
Al momento de invocar un subprograma, nunca se deben omitir los parámetros. Si es en
la codificación, nos dará un error. Si es en el dibujo del algoritmo, el error se producirá en
la interpretación que debemos hacer cuando revisamos lo realizado.

1. Recordar que los parámetros son posicionales, deben tener el mismo orden en la
invocación y en el subprograma que los utiliza.
2. En el subprograma, no omitir la lista de parámetros con sus correspondientes tipos
de datos.
3. Indicar si se trata de parámetros variables (precediéndolos por la palabra reservada
VAR) o valor.
4. Si el valor que se pasa no tiene que ser devuelto, es conveniente que el
parámetro formal en el procedimiento sea de tipo valor.
5. Si el valor tiene que ser devuelto al programa que lo invocó, el parámetro formal
debe ser del tipo variable.
6. Si el valor que se pasa puede ser modificado y posteriormente ese valor es
necesario en el programa que lo invocó, el parámetro formal debe ser del tipo
variable.
7. Si el valor que se pasa puede ser modificado y posteriormente ese valor no es
necesario en el programa que lo invocó, el parámetro formal debe ser del tipo
valor.

Das könnte Ihnen auch gefallen