Sunteți pe pagina 1din 2

6.

11 La pila de llamadas a funciones y los registros de activacin


Uno de los mecanismos ms importantes que los estudiantes de ciencias
computacionales deben comprender es lapila de llamadas a funciones (conocida algunas
veces como la pila de ejecucin del programa). Esta estructura de datos (que trabaja en
segundo plano) soporta el mecanismo de llamada a/regreso de las funciones. Tambin
soporta la creacin, mantenimiento y destruccin de las variables automticas de cada
funcin a la que se llama. A medida que se hace la llamada a cada funcin, sta puede a
su vez, llamar a otras funciones, la cual, a su vez, puede llamar a otras funciones; todo
ello antes de que regrese alguna de las funciones. En cierto momento, cada funcin debe
regresar el control a la funcin que la llam. Por ende, de alguna manera debemos llevar
el registro de las direcciones de retorno que requiere cada funcin para regresar el control
a la funcin que la llam. La pila de llamadas a funciones es la estructura de datos
perfecta para manejar esta informacin. Cada vez que una funcin llama a otra funcin,
se mete una entrada en la pila. Esta entrada, conocida como marco de pila o registro de
activacin, contiene la direccin de retorno que necesita la funcin a la que se llam para
poder regresar a la funcin que hizo la llamada. Tambin contiene cierta informacin
adicional que veremos en breve. Si la funcin a la que se llam regresa, en vez de llamar
a otra funcin antes de regresar, se saca el marco de pila para la llamada a la funcin, y el
control se transfi ere a la direccin de retorno en el marco de la pila que se sac.

6.12 Funciones con listas de parmetros vacas


En C++, una lista de parametros vacia se especifi ca mediante void o nada entre parentesis. El
prototipo void imprimir(); especifica que la funcion imprimir no recibe argumentos y no devuelve un
valor. La fi gura 6.17 demuestra ambas formas de declarar y usar funciones con listas de
parametros vacias.

6.13 Funciones en lnea


Es bueno implementar un programa como un conjunto de funciones desde el punto de vista de la
ingenieria de software, pero las llamadas a funciones implican una sobrecarga en tiempo de
ejecucion. C++ cuenta con las funciones en lnea para ayudar a reducir la sobrecarga de las
llamadas a funciones; en especial para las funciones pequenas. Al colocar el
califi cador inline antes del tipo de valor de retorno de la funcion en su defi nicion, se aconseja al
compilador para que genere una copia del codigo de la funcion en ese lugar (cuando sea
apropiado) para evitar la llamada a una funcion. La desventaja es que se insertan multiples copias
del codigo de la funcion en el programa (lo cual aumenta su tamano) en vez de que haya una sola
copia de la funcion, a la cual se le pasa el control cada vez que se realiza una llamada. El
compilador puede ignorar el califi cador inline, y por lo general lo hace para todas las funciones,
excepto las mas pequenas.

6.14 Referencias y parmetros de referencias


Dos formas de pasar argumentos a las funciones en muchos lenguajes de programacion son el
paso por valor y el paso por referencia. Cuando se pasa un argumento por valor, se crea una
copia del valor del argumento y se pasa (en la pila de llamadas a funciones) a la funcion que se
llamo. Las modifi caciones a la copia no afectan al valor de la variable original en la funcion que

hizo la llamada. Esto evita los efectos secundarios accidentales que tanto obstaculizan el desarrollo
de sistemas de software correctos y confiables

S-ar putea să vă placă și