Semantica Avanzada

Páginas: 6 (1362 palabras) Publicado: 6 de febrero de 2016
PARADIGMAS DE
PROGRAMACIÓN
Lic. Ronald Mora B.

Ingeniería en Sistemas de Computación

Resolución y sobrecarga de nombres
2













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 permitenexplí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
programa
Sería muy confuso tener que utilizar simbolos diferentes para cada
caso, p.e. int +% int / double +# double

Lic. Ronald Mora B.

Resolución ysobrecarga de nombres
3




El traductor resuelve estos casos buscando el tipo de datos de los
operandos
En C





Que pasa con 2 + 3.2 ya que sigue siendo ambiguo










2 + 3 corresponde a suma de enteros
2.1 + 3.2 corresponde a suma de punto flotante
Las reglas del lenguaje deben resolver este caso
La mayoría de los lenguajes convierten automáticamente la suma en 2.0 + 3.2

Ada lo tomacomo un error
Resulta ventajoso permitir la sobrecarga basada en los tipos de datos
El método básico para permitir la sobrecarga es ampliar la búsqueda en
la tabla de símbolos no solo por el nombre, sino también por 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
Lic. Ronald Mora B.

Resolución ysobrecarga de nombres
4

int max (int x, int y) // max #1
{ return x > y ? x : y }
double max (double x, double y) // max #2
{ return x > y ? x : y }
int max (int x, int y, int z) // max #3
{ return x > y ? ( x > z ? x : z ) : (y > z ? y : z); }
max (2, 3); // invoca a max #1
max (2.1, 3.2); // invoca a max #2
max (1, 3, 2); // invoca a max #3
Lic. Ronald Mora B.

Resolución y sobrecarga de nombres
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







max (2, 3); o max(2.1, 3.0)

pero no indican cual debe preferirse
En Ada la llamada es inválida, ya que los tipos de los parámetros
deben coincidir exactamente por no permitir conversión de tipo
En Java esperfectamente válida ya que permite la conversión entre
tipos sin perder información por lo que convertiría 3 en 3.0 y
llamaría a max(double, double); la #2

Lic. Ronald Mora B.

Asignación, tiempo de vida y el
entorno
6





El entorno mantiene las ligaduras de los nombres con las
localizaciones
Dependiendo del lenguaje el entorno puede ser construido:











Estático, tiempo de cargaDinámico, en tiempo de ejecución
Mezcla de ambos

FORTRAN utiliza un entorno totalmente estático
LISP 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
Lic.Ronald Mora B.

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
bloque, las variables globales se asignan
estáticamente
Las variables locales seasignan dinámicamente
conforme se ejecuta el bloque
Lic. Ronald Mora B.

Asignación, tiempo de vida y el
entorno
8











El entorno es importante para la instrucción de
asignación ya que necesita conocer la localización del
nombre para almacenar un valor
También para los operandos de las expresiones, ya
que es necesario saber la localización de cada
operando para utilizar su valor...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Semantica
  • Semantica
  • Semantica
  • Semantica
  • la semàntica
  • LA SEMÁNTICA
  • semantica
  • Semántica

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS