Semantica Avanzada

PARADIGMAS DE PROGRAMACIÓN Lic. Ronald Mora B.

Ingeniería en Sistemas de Computación Resolución y sobrecarga de nombres 2 OF6 p Sobrecarga de nombres se da cuando un mismo nombre u operador puede utilizarse para referirse a cosas distintas Se podría considerar que esto no debería permitirse ya puede generar confusión y falta de confiabilidad Algunos lenguajes no lo permiten explícitamente aunque implícitamente se da El operador + normalmente esta sobrecargado ya que permite int + int / double + double / int + double / cadena + cadena (concatenación) Claramente esto no causa confusión y facilita la legibilidad del rograma el numero y tipo de los datos El proceso de escoger una función única entre muchas con el mismo nombre se conoce como resolución de sobrecarga 4 int max (int x, int y) // max #1 { return double max (double x, double y) // max int max (intx, int y, int z)// max #3 { return (y > z? y: z); } max (2, 3); // invoca a max 41 max (2. 1, 3. 2); // invoca a max max (1, 3, 2); // invoca a max #3 Lic. Ronald Mora 3. 5 max (2. 1, 3); Dependerá de las reglas del lenguaje para la conversión de valor de un tipo a otro En C++ la llamada es ambigua, ya que las reglas de conversión permiten ejecucion Mezcla de ambos

FORTRAN utiliza un entorno totalmente estático CISP utiliza un entorno completamente dinámico C, C++, Ada, Java y otros lenguajes estilo Algol se quedan en el medio No todos los nombres son vinculados con localizaciones En un lenguaje compilado los nombres de constantes y tipos de datos pueden representar cantidades en tiempo de compilación Asignación, tiempo de vida y el entorno 7 const int MAX = 10; Será utilizado por el compilador para reemplazar el nombre MAX por la cantidad 10 El nombre MAX no se vincula con ninguna posición de memoria y desaparece al ejecutar el programa Típicamente en los lenguajes de estructura de loque, las variables globales se asignan estáticamente Las variables locales se asi amente 3 conforme se ejecuta el blo previamente estudiados Variables y constantes 9 Una variable es un objeto cuyo valor almacenado puede cambiar durante la ejecución Una variable es completamente especificada por sus atributos Representación gráfica de una variable 10 En el caso de las constante alor no cambia en el tiempo diferentes al mismo tiempo Esto ocurre en Asignación por medio de punteros Paso de parámetros por referencia Alias, referencias pendientes y basura 12 Los alias presentan un problema ya que generan efectos colaterales

Efecto colateral de un enunciado es cualquier cambio en el valor de una variable que persiste más allá de la ejecución de un enunciado No todos los efectos colaterales son indeseables Sin embargo los cambios a valores cuyos nombres no aparecen directamente en el enunciado son potencialmente dañinos Los alias debido a la asignación de punteros es difícil de controlar y es una de las razones que hace la programación con punteros difícil Alias, referencias pendien 5 13 forma de evitar las referencias pendientes es simplemente no llevar a cabo ninguna desasignación de ningún tipo del entorno Esto causa otro problema, la basura La basura es memoria que ha sido asignada en el entorno pero que se ha convertido en inaccesible para el programa En C se produce basura cada vez que se omite llamar a free antes abandonar el bloque donde el puntero fue creado sin asignarlo a ninguna otra variable 15 La basura es un problema de la asignación dinámica de memoria, ya que cuando se desasigna la memoria no puede ser accesada Se argumenta que los lenguajes que producen basura tienen menos errores serios que los lenguajes que permiten las referencias pendientes Es útil eliminar la necesidad explicita de desasignar la memoria, lo cual puede generar referencias