Saltar a contenido

Sesión 9: 18 de Abril Asignación

¿Que implica la asignación?

  • Ya no tenemos nombres si no VARIABLES, ya no tenemos ligadura (nombrar un valor), asignación (maneja referencias las cuales SI pueden cambiar)
  • Incluir referencias las cuales permiten APUNTAR a diferentes valores
  • Programación funcional trabaja con funciones (como clausuras) y funciones deteministas (siempre llegan al mismo valor con los mismo argumentos), pero la programación imperativa agrega el concepto de ESTADO, el flujo del programa es el estado (Ciclos)
  • Esto implica que aparecen operaciones de EFECTO, hacen algo pero NO tienen retorno, en algunos lenguajes se maneja como void, None, Null, Nil, etc etc etc etc
  • Las operaciones de efecto nos obligan a tener SECUENCIALIDAD, para nuestro lenguaje vamos a tomar como valor la ULTIMA
  • Programació imperativa trabaja sobre el ESTADO, el programa se describe como una secuencia de ESTADOS, ver tema de Computación iterativa en ADA
var suma = 0
for i <- 1 to 10:
        suma += i

(i,suma) → (0,0) → (1,1) → (2, 3) → (3, 6) → (4,10) …→ (10, ?)


¿Que cambios hacemos en nuestro interprete?

  • Añaden el set (para cambiar) set = y el begin, begin + end (este va a retornar siempre el ultimo)
  • Añado el datatype de referencia, tiene una posición y un vector
  • Cambio los ambiente para que los valores sean vectores
  • Añador las funciones de deref (extraer el valor de una referencia) y setref (cambia el vector asociado a la referencia)
  • Cuando se consulta una variable en apply-env se retorna SIEMPRE la referencia (al convertirlo en valor expresado) se retorna el valor.