Académique Documents
Professionnel Documents
Culture Documents
Lenguajes de Programacin
Clase 9
Control de secuencia en
subprogramas
Supuestos Iniciales
No hay recursin.
Se exigen llamadas explcitas.
Ejecucin Integral del subprograma.
Transferencia inmediata del control.
Secuencia nica de ejecucin.
En estas condiciones se puede aplicar llamada
regreso, esperando que el efecto sea similar a
aplicar la regla de la copia, es decir el reemplazo
de la invocacin con el cuerpo del subprograma.
Subprogramas simples de
llamada - regreso
Distincin entre definicin y activacin de
subprogramas.
Segmento de Cdigo.
Registro de Activacin.
CIP (Current Instruction Pointer).
CEP (Current Environment Pointer).
Clase 9 1
Lenguajes de Programacin 2017 14/8/2017
Subprogramas Recursivos
Una de las condiciones que se exigieron para el
anlisis de la secuencia en subprogramas era la
ausencia de recursin. Pero la recursin es uno de
los recursos ms importantes de la programacin, al
punto que muchos lenguajes (e incluso algunos
paradigmas) no tendran ningn sentido sin el uso
de este recurso. Analicemos rpidamente de que
manera se modificara la situacin si permitimos
recursin.
Subprogramas Recursivos
La nica diferencia entre una llamada recursiva y
una que no lo es consiste en que la primera crea
una segunda activacin del subprograma durante el
tiempo de vida de la activacin inicial.
Esto nos lleva a la necesidad de agregar estructuras
apiladas para ir almacenando los puntos de retorno
ms la informacin necesaria para que la recursin
se ejecute de la manera esperada.
Control de Datos
Elementos y nombres
Variables
Parmetros Formales
Subprogramas
Tipos Definidos
Constantes Definidas
Excepciones
Operaciones Primitivas
Constantes no definidas
14/8/2017 Mg. Ing. Pablo Garca - Lenguajes de Programacin - FCEyN - UNLPam 6
Clase 9 2
Lenguajes de Programacin 2017 14/8/2017
Asociaciones y ambientes de
referencia
Asociacin: Enlace entre un identificador y
un objeto de datos o un subprograma
especfico.
El conjunto de asociaciones disponible
durante la ejecucin de un subprograma
constituyen el ambiente de referencia de
dicho subprograma
Clase 9 3
Lenguajes de Programacin 2017 14/8/2017
Clase 9 4
Lenguajes de Programacin 2017 14/8/2017
Ambientes de referencia
Se distinguen cuatro ambientes de referencia:
Local: conjunto de asociaciones creadas por el
subprograma (variables locales y parmetros)
No local: conjunto de asociaciones no definidas en el
subprograma pero accesibles.
Global: conjunto de asociaciones definidas en el
programa principal disponibles en el subprograma.
Predefinido: Asociaciones implcitas disponibles en el
subprograma.
14/8/2017 Mg. Ing. Pablo Garca - Lenguajes de Programacin - FCEyN - UNLPam 13
Seudnimos
Decimos que dos identificadores son
seudnimos cuando hacen referencia a la
misma posicin de memoria.
Se considera que los seudnimos perjudican
la buena programacin porque generan
confusin.
Aparecen, por ejemplo, cuando se pasa una
variable por referencia en Pascal.
Clase 9 5
Lenguajes de Programacin 2017 14/8/2017
Seudnimos
Casos:
Parmetro formal y variable no local, en
un pasaje por referencia.
Dos parmetros formales, si se pasa por
referencia y se invocan con el mismo
parmetro real: Funcin(m,m).
Pasaje de parmetros
Establecimiento de la correspondencia:
Posicin: es lo ms habitual. El cada
parmetro formal se reemplaza por el
parmetro real que se encuentra en la
misma posicin.
Nombre Explcito: en este modelo se
indica especficamente como se har el
reemplazo. Lo implementa ADA.
14/8/2017 Mg. Ing. Pablo Garca - Lenguajes de Programacin - FCEyN - UNLPam 17
Mtodos de Transmisin
Desde un punto de vista semntico, se
conocen cinco mtodos de pasaje de
parmetros:
Por Nombre.
Por Referencia.
Por Valor.
Por Resultado.
Por Valor Resultado.
Clase 9 6
Lenguajes de Programacin 2017 14/8/2017
Clase 9 7
Lenguajes de Programacin 2017 14/8/2017
Clase 9 8
Lenguajes de Programacin 2017 14/8/2017
Pasajes no convencionales:
Subprogramas
En algunos lenguajes es posible pasar como parmetro
el nombre de un subprograma. Por ejemplo, en Pascal:
Procedure WORK (function fn(a,b: integer):integer;
En donde la funcin que se pasa podra ser distinta en
cada invocacin. Esto es til slo en determinados
casos y presenta el inconveniente de un diseo pobre.
Un mdulo superior est definiendo el comporta-
miento de uno inferior.
14/8/2017 Mg. Ing. Pablo Garca - Lenguajes de Programacin - FCEyN - UNLPam 25
Pasajes no convencionales:
Etiquetas
Tambin se provee en algunos lenguajes la
posibilidad de pasar como parmetros
etiquetas de enunciado (LABELS).
Esto contradice todas las reglas del diseo
estructurado y obliga al pleno conocimiento
de la estructura del mdulo inferior por parte
del mdulo invocante.
Clase 9 9