6.1 Control de secuencia en subprogramas.
Aquí estamos interesados en los mecanismos simples de secuenciación entre dos subprogramas, cómo un subprograma llama a otro, y el programa llamado retorna al primero.
Llamada y retorno simple de subprogramas.
En programación estamos acostumbrados a ver los programas como jerarquías. Un programa esta compuesto de un programa principal, el que durante su ejecución puede llamar a varios subprogramas, los cuales a su vez pueden llamar a otros subprogramas, y así sucesivamente.
Se espera que, en algún momento, cada subprograma termine y devuelva el control al programa que lo llamó. Durante la ejecución de un subprograma, la ejecución del programa que llama, es suspendida temporalmente. Cuando la ejecución del subprograma se completa, la ejecución del programa que llamó continúa en el punto inmediatamente siguiente a la llamada del subprograma.
Esta estructura de control se cono9ce como la copy-rule: el efecto de la sentencia call es el mismo que podría obtenerse si la llamada call fuera reemplazada por una copia del cuerpo del subprograma (con las sustituciones adecuadas) antes de la ejecución.
Visto de esa forma, las llamadas a subprogramas pueden ser consideradas como estructuras de control que simplemente evitan el copiar un gran número de sentencias idénticas (o casi idénticas) que ocurren más de una vez en un programa.
A continuación examinaremos algunas de las suposiciones implícitas asociadas a la copy-rule, y cuya relajación lleva a estructuras de programas más generales:
Ni directa, ni indirectamente.
Relajación => recursividad
Relajación => interrupciones
Relajación => co-rutina
Relajación => scheduled subprograms
En cualquier punto durante la ejecución del programa, exactamente un subprograma (en la jerarquía) tiene el control.
Relajación => tasks