Yeli
Asignaciones
Ayud. Mezzanotte, Martín
Lenguajes de Programación I
- Cursada 2006 -
Ingeniería de Sistemas
[pic]
Facultad de Ciencias Exactas
Universidad Nacional del Centro
de la Provincia de Buenos Aires
Lenguajes de Programación I
AsignacionesObjetivos
• Ejemplificar situaciones de asignación en esquemas de asignación por copia de valores.
• Ejemplificar situaciones de asignación en esquemas de asignación por copia de referencias.
• Analizar situaciones análogas entre asignaciones y pasajes de parámetros.
• Exponer relaciones conceptuales importantes entre las asignaciones y otros temas relevantes de la materia, como porejemplo: Administración de memoria, diferencias y similitudes entre lenguajes dinámicos orientados a objetos y lenguajes tipo Algol, entre otros.
Temario
Variables
• Distinción entre Valor, Referencia y Nombre.
Asignaciones entre variables
• Concepto: ¿Qué sucede en la sentencia “a:=b”?
• Ejemplificación en lenguaje C: Orientado a asignación por copia.
•Ejemplificación en lenguaje Java: Orientado a asignación por referencia.
• Comparación entre ambos esquemas de asignación:
o Existencia de ambos datos en asignaciones por copia.
o Creación de alias y generación de garbage en asignaciones por referencia.
o Similitud con los esquemas de pasajes de parámetros
• Asignación por referencia explícita (Lenguaje C) eimplícita (Lenguajes dinámicos orientados a objetos).
Otras Asignaciones
• Asignaciones con expresiones.
• Asignaciones con funciones.
• Asignaciones con constantes.
Variables
Concepto de Variable:
Valor, Referencia y Nombre
En primer lugar, recordaremos algunos conceptos importantes con respecto al manejo de variables.
De cada variable es posibledistinguir:
Su valor. Es decir, el dato que se almacena en la variable.
Su referencia. O sea, la dirección de memoria donde está almacenado el valor de la variable.
Su nombre. Es decir, un identificador que permite referenciar en lenguaje natural una dirección de almacenamiento.
De esta forma, podemos entender las variables como ternas de la siguiente forma:[pic]
Fig. 1: Representación de una variable.
Por ejemplo:
[pic]
Asignaciones entre variables
Concepto de Asignación:
¿Qué sucede en la sentencia "a:=b”?
Es importante entender correctamente qué tratamiento lleva a cabo el lenguaje de una sentencia de asignación:
En una asignación entre dos variables, el lenguaje realiza diferentes acciones almanipular las variables del lado izquierdo y derecho de la sentencia. Con respecto al lado izquierdo, se utiliza el nombre de la variable para acceder a la celda de la memoria que éste referencia, con el objetivo de almacenar el dato obtenido desde el lado derecho. Para esto, la variable del lado derecho debe sufrir una extracción de valor (Desreferencing).
Veamos un ejemplo de un programa simple,codificado en lenguaje C:
Ejemplo 1
[pic]
Puede observarse la existencia de los datos, ya que la sentencia de incremento en b no tuvo ningún efecto sobre el valor de a.
Veamos ahora dos ejemplos similares codificados en lenguaje Java:
Ejemplo 2
º[pic]
Puede observarse la existencia de los datos, ya que la sentencia de incremento en b no tuvo ningún efecto sobre elvalor de a.
Ejemplo 3
[pic]
[pic]
En el segundo caso, cuando se utilizó objetos de tipo “Entero”, puede observarse que el comportamiento de la sentencia de asignación es diferente: en este caso no hubo copia del valor de la variable sino de su referencia, ya que de lo contrario la sentencia de incremento de b no hubiese afectado el valor de a.
Esquemas de...
Regístrate para leer el documento completo.