You are on page 1of 14

CONCEPTOS Y PARADIGMAS DE LOS LENGUAJES DE PROGRAMACIN

PRIMER PARCIAL
PRCTICA I
SINTAXIS
Conjunto de reglas que definen cmo componer letras, dgitos y otros caracteres para formar los
programas.
Un lenguaje, sea natural (como el espaol) o artificial (como Java) es un conjunto de cadenas de
caracteres provenientes de algn alfabeto. Las cadenas de un lenguaje son denominadas sentencias o
declaraciones. Las reglas sintcticas de un lenguaje especifican cules cadenas de caracteres de un
alfabeto estn en el lenguaje.
La sintaxis se describe por un conjunto de reglas que definen la forma del lenguaje: definen cmo las
sentencias deben ser formadas como secuencia de componentes bsicos llamados palabras. Usando
esas reglas, podemos decir si una sentencia es vlida o no. La sintaxis no debe contarnos nada sobre el
contenido (o significado) de la sentencia eso lo hace la semntica.
As, la sintaxis de un lenguaje es definida por dos conjuntos de reglas: las lxicas y las sintcticas. Las
lxicas especifican un conjunto de caracteres que constituyen el alfabeto del lenguaje y la manera en
que tales caracteres se pueden combinar para formar palabras vlidas.
La sintaxis de un lenguaje influye en cmo los programas son escritos por el programador, ledos por otro
programador y traducidos por el computador.
Elementos de la Sintaxis
Alfabeto o conjunto de caracteres: Tener en cuenta con qu conjunto de caracteres se trabaja
sobre todo por el orden a la hora de comparaciones. La secuencia de bits que compone cada carcter la
determina la implementacin.
Identificadores: Eleccin ms ampliamente utilizada: Cadena de letras y dgitos, que deben
comenzar con una letra. Si se restringe la longitud se pierde legibilidad
Operadores: Con los operadores de suma, resta, etc. la mayora de los lenguajes utilizan +, -. En
los otros operadores no hay tanta uniformidad.
Palabra clave y keywords: son palabras claves que tienen un significado dentro de un contexto.
Palabra reservada, son palabras claves que adems no pueden ser usadas por el programador
como identificador de otra entidad.
Comentarios y uso de blancos: Hacen los programas ms legibles.
Estructura sintctica
Vocabulario o words: Conjunto de caracteres y palabras necesarias para construir expresiones,
sentencias y programas. Ej: identificadores, operadores, palabras claves, etc. Las words no son
elementales se construyen a partir del alfabeto
Expresiones: Son funciones que a partir de un conjunto de datos devuelven un resultado. Son
bloques sintcticos bsicos a partir de los cuales se construyen las sentencias y programas
Sentencias: Componente sintctico ms importante. Tiene un fuerte impacto en la facilidad de
escritura y legibilidad Hay sentencias simples, estructuradas y anidadas.
REGLA LEXICOGRFICA Y REGLA SINTCTICA
Reglas lxicas: Conjunto de reglas para formar las word, a partir de los caracteres del alfabeto.
Diferencias entre maysculas y minsculas. Smbolo de distinto. En C != en Pascal <>
Reglas sintcticas: Conjunto de reglas que definen como formar las expresiones y sentencias. El If en
C no lleva then, en Pascal si.
La diferencia entre lxico y sintctico es arbitrario, dan la apariencia externa del lenguaje

TIPOS DE SINTXIS
ABSTRACTA: Se refiere bsicamente a la estructura
CONCRETA: Se refiere bsicamente a la parte lxica
PRAGMTICA: Se refiere bsicamente al uso prctico
While (c!=a){}; EN C
While (c<>a)begin end EN PASCAL
Son diferentes respecto a la sintaxis concreta, porque existen diferencias lxicas entre ellas.
Son iguales respecto a la sintxis abstracta, ya que ambas tienen la misma estructura
while condicin bloque
Ejemplo de sintxis pragmtica:
<> es mas legible que !=
En C y Pascal {} o begin-end pueden omitirse si el bloque esta compuesto por una sola sentencia.
Pragmticamente puede conducir a error ya que si se necesitara agregar una sentencia debe agregarse
el begin end o las {}.
LEXEMAS
Los lexemas de los lenguajes de programacin incluyen sus literales numricos, operadores, y palabras
especiales, entre otros. Uno puede pensar en programas como cadenas de lexemas en lugar de
caracteres. Son divididos en grupos, por ejemplo, nombres de variables, mtodos, clases, e
identificadores. Cada grupo es representado por un nombre o un token. As, un token de un lenguaje es
una categora de lexemas.
Ejemplo index=2*count+17;
Lexemes
Index
=
2
*
Count
+
17
;

tokens
identifier
equal_sign
int_ literal
mult_op
identifier
plus_op
int_literal
semicolon

BNF (BACKUS NAUN FORM)


Es una notacin formal para describir la sintaxis; es un metalenguaje; utiliza metasmbolos
< > ::= |
Define las reglas por medio de producciones
Gramtica: Conjunto de reglas finita que define un conjunto infinito de posibles sentencias vlidas en el
lenguaje. Una gramtica esta formada por una 4-tupla
G= (N, T, S, P)
EBNF. Esta gramtica es la BNF extendida
Los metasimbolos que incorporados son:
[ ] elemento optativo puede o no estar
(|) seleccin de una alternativa
{} repeticin
0 o mas veces + una o mas veces

RBOLES SINTCTICOS

Juan un canta manta


Es una oracin sintcticamente incorrecta. No todas las oraciones que se pueden armar con los
terminales son vlidas. Se necesita de un Mtodo de anlisis (reconocimiento) que permita determinar si
un string dado es valido o no en el lenguaje: Parking: El parse, para cada sentencia construye un rbol
sintctico o rbol de derivacin
Dos maneras de construirlo:
Mtodo botton-up: De izquierda a derecha; De derecha a izquierda
Mtodo top-down: De izquierda a derecha; De derecha a izquierda
RBOL DE DERIVACIN
Ejemplo top-down de izquierda a derecha
<oracin> => <sujeto><predicado> => Juan <predicado>
=> Juan <verbo><objeto>
=> Juan compra <objeto> => Juan compra art><sustan>
=> Juan compra un <sustan>
=> Juan compra un perro
Los compiladores utilizan el parse cannico que es el bottom-up de izquierda a derecha
PRODUCCIONES RECURSIVAS
Son las que hacen que el conjunto de sentencias descripto sea infinito. Ejemplo de producciones
recursivas:
<natural> ::= <digito> | <digito><digito> | ....... | <digito>..............<digito>
Si lo planteamos recursivamente
GN = ( N, T, S, P)
N = { <natural>, <digito> } T = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
S = <natural>
P = {<natural> ::= <digito> | <digito> <natural>,
<digito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}
Cualquier gramtica que tiene una produccin recursiva describe un lenguaje infinito.
Regla recursiva por la izquierda: La asociatividad es por la izquierda. El smbolo no terminal de la parte
izquierda de una regla de produccin aparece al comienzo de la parte derecha
Regla recursiva por la derecha: La asociatividad es por la derecha. El smbolo no terminal de la parte
izquierda de una regla de produccin aparece al final de la parte derecha
GRAMTICAS AMBIGUAS
Una gramtica es ambigua si una sentencia puede derivarse de ms de una forma
G= ( N, T, S, P)
N = { <id>, <exp>, <asig>}
T = { A,B,C, +,*,-,/,:=}
S = <asig>
P1 = {
<asig> ::= <id> := <exp>
<exp> ::= <exp>+<exp>|<exp>*<exp>|<exp>- <exp>|<exp>/ <exp>|<id>
<id> ::= A | B | C
SUBGRAMTICAS: Sea la gramtica para identificadores GI = ( N, T, S, P)
N = { <id>, <letra>, <digito>, <otro>}
T = { A, ................, Z, 0, ........, 1}
S = <id>
P = { <id> ::= <letra> | <letra><otro>,
<otro> ::= <letra> | <digito> | <letra><otro> | <digito><otro>,
<letra> ::= A | B | C | .............| Z
<digito> ::= 0 | 1 | 2 | | 9 }

Para definir la gramtica GE, de expresiones, se puede utilizar la gramtica de nmeros y de


identificadores.
GE se defira utilizando las subgramticas GN y GI
La filosofa de composicin es la forma en que trabajan los compiladores
GRAMTICAS LIBRES DE CONTEXTO Y SENSIBLES AL CONTEXTO
int e; a := b + c;
Segn nuestra gramtica son sentencias sintcticamente vlidas, aunque puede suceder que a veces no
lo sea semnticamente.
El identificador est definido dos veces. No son del mismo tipo.
Una gramtica libre de contexto es aquella en la que no realiza un anlisis del contexto.
Una gramtica sensible al contexto analiza este tipo de cosas. (Algol 68).
DIAGRAMAS SINTCTICOS (CONWAY)
Es un grafo sintctico o carta sintctica. Cada diagrama tiene una entrada y una salida, y el camino
determina el anlisis. Cada diagrama representa una regla o produccin. Para que una sentencia sea
vlida, debe haber un camino desde la entrada hasta la salida que la describa. Se visualiza y entiende
mejor que BNF o EBNF
PRCTICA III
SEMNTICA
La semntica describe el significado de los smbolos, palabras y frases de un lenguaje ya sea lenguaje
natural o lenguaje informtico. La semntica de un lenguaje determina cmo los programas son
compuestos por el programador, entendidos por otros programadores e interpretados por el computador.
La sintaxis es importante; pero la semntica es ms importante an.
Semntica esttica: No est relacionado con el significado del programa, est relacionado con las
formas validas. Se las llama as porque el anlisis para el chequeo puede hacerse en compilacin. Para
describir la sintaxis y la semntica esttica formalmente sirven las denominadas gramticas de atributos,
inventadas por Knuth en 1968. Generalmente las gramticas sensibles al contexto resuelven los aspectos
de la semntica esttica.
Formal: Gramtica de atributos: A las construcciones del lenguaje se le asocia informacin a
travs de los llamados atributos asociados a los smbolos de la gramtica correspondiente. Los valores
de los atributos se calculan mediante las llamadas ecuaciones o reglas semnticas asociadas a las
producciones gramaticales. La evaluacin de las reglas semnticas puede:
Generar Cdigo.
Insertar informacin en la Tabla de Smbolos.
Realizar el Chequeo Semntico.
Dar mensajes de error, etc.
Los atributos estn directamente relacionados con los smbolos gramaticales (terminales y no terminales)
La forma, general de expresar las gramticas con atributos se escriben en forma tabular.
Semntica dinmica
Es la que describe el efecto de ejecutar las diferentes construcciones en el lenguaje de programacin. Su
efecto se describe durante la ejecucin del programa. Los programas solo se pueden ejecutar si son
correctos para la sintxis y para la semntica esttica.
Tipos de semnticas
Formal
Semntica axiomtica: Considera al programa como una mquina de estados. La notacin
empleada es el clculo de predicados. Se desarroll para probar la correccin de los programas. Los

constructores de los lenguajes de programacin se formalizan describiendo como su ejecucin provoca


un cambio de estado.
Un estado se describe con un predicado que describe los valores
de las variables en ese estado. Existe un estado anterior y un
estado posterior a la ejecucin del constructor. Cada sentencia se
precede y se contina con una expresin lgica que describe las
restricciones y relaciones entre los datos.
Precondicin
Poscondicin
Semntica Denotacional: Se basa en la teora de funciones recursivas. Se diferencia de la
axiomtica por la forma que describe los estados, la axiomtica lo describe a travs de los predicados, la
denotacional a travs de funciones. Se define una correspondencia entre los constructores sintcticos y
sus significados.
No Formal
Semntica Operacional: El significado de un programa se describe mediante otro lenguaje de
bajo nivel implementado sobre una mquina abstracta. Los cambios que se producen en el estado de la
mquina cuando se ejecuta una sentencia del lenguaje de programacin definen su significado
Es un mtodo informal
Es el ms utilizado en los libros de texto
PL/1 fue el primero que la utiliz
PROCESAMIENTO DE UN LENGUAJE
TRADUCCIN: Las computadoras ejecutan lenguajes de bajo nivel llamado lenguaje de mquina. Uso
de cdigo mnemotcnico (abreviatura con el propsito de la instruccin). Lenguaje Ensamblador y
Programa Ensamblador. Aparicin de los Lenguajes de alto nivel
Alternativas de traduccin:
Intrprete: Lee, Analiza, Decodifica y Ejecuta una a una las sentencias de un programa escrito
en un lenguaje de programacin. Ej: Lisp, Smalltalk, Basic, Python, etc.) Por cada posible accin hay un
subprograma que ejecuta esa accin. La interpretacin se realiza llamando a estos subprogramas en la
secuencia adecuada. Un intrprete ejecuta repetidamente la siguiente secuencia de acciones:
Obtiene la prxima sentencia
Determina la accin a ejecutar
Ejecuta la accin
Compilador: Los programas escritos en un lenguaje de alto nivel se traducen a una versin en
lenguaje de mquina antes de ser ejecutados. Tipos de traductores:
Compilador: Lenguaje fuente: Lenguaje de alto nivel. Lenguaje objeto: Cualquier lenguaje
de mquina de una mquina real, o lenguaje assembler, o algn lenguaje cercano a ellos
Assembler: Lenguaje fuente: Lenguaje assembler. Lenguaje objeto: Alguna variedad de
lenguaje de mquina
Link-editor: Lenguaje fuente: Mdulos en lenguaje de mquina en forma reubicable.
Lenguaje objeto: Una simple unidad en forma reubicable con todos los mdulos linkeditados
juntos.
Loador: Lenguaje fuente: Programa en forma reubicable con la tabla de datos. Lenguaje
objeto: Lenguaje de mquina (cdigo ejecutable)
En ciertos lenguajes como C, se ejecuta antes del compilador otro traductor llamada
Macro-Procesador o Pre Procesador: Macro: fragmento de texto fuente que lleva un nombre.
En el programa se utiliza el nombre de la macro. El nombre de la macro ser reemplazada por su
cdigo cuando se procesen las macros. Ejemplo en C
Contiene directivas que deben resolverse antes de pasar a la compilacin
#include: Inclusin de archivos de texto, Ej: #include <stdio.h>
#define: Remplaza smbolos por texto, Ej: #define PI 3.1416
Macros: Funciones en-lnea, Ej: #define max(x,y) ((x)>(y)?(x):(y))
#ifdef: Compilacin condicional.

Al compilar los programas la ejecucin de los mismos es ms rpida. Ej. de programas que se compilan:
C, Ada, Pascal, etc. Los compiladores pueden ejecutare en un solo paso o en dos pasos. En ambos
casos cumplen con varias etapas, las principales son
Anlisis
Anlisis lxico (Scanner): Es el que lleva ms tiempo. Hace el anlisis a nivel de palabra. Divide
el programa es sus elementos constitutivos: identificadores, delimitadores, smbolos especiales, nmeros,
palabras clave, delimitadores, comentarios, etc. Analiza el tipo de cada token. Filtra comentarios y
separadores como: espacios en blanco, tabulaciones, etc. Genera errores si la entrada no coincide con
ninguna categora lxica Convierte a representacin interna los nmeros en punto fijo o punto flotante.
Poner los identificadores en la tabla de smbolos. Reemplaza cada smbolo por su entrada en la tabla. El
resultado de este paso ser el descubrimiento de los items lxicos o tokens.
Anlisis sintctico (Parser): El anlisis se realiza a nivel de sentencia. Se identifican las
estructuras; sentencias, declaraciones, expresiones, etc. ayudndose con los tokens. El analizador
sintctico se alterna con el anlisis semntico. Usualmente se utilizan tcnicas basadas en gramticas
formales. Aplica una gramtica para construir el rbol sintctico del programa.
Anlisis semntico (Semntica esttica): Es la mas importante. Las estructuras sintcticas
reconocidas por el analizador sintctico son procesadas y la estructura del cdigo ejecutable toma forma.
Se realiza la comprobacin de tipos. Se agrega la informacin implcita (variables no declaradas). Se
agrega a la tabla de smbolos los descriptores de tipos, etc. a la vez que se hacen consultas para realizar
comprobaciones. Se hacen las comprobaciones de nombres. Ej: toda variable debe estar declarada. Es el
nexo entre el anlisis y la sntesis
Generacin de cdigo intermedio: Debe ser fcil de producir. Debe ser fcil de traducir al programa
objeto
Sntesis: En esta etapa se construye el programa ejecutable. Se genera el cdigo necesario y se
optimiza el programa generado. Si hay traduccin separada de mdulos, es en esta etapa cuando se
linkedita. Se realiza el proceso de optimizacin. Optativo
Optimizacin del cdigo
Generacin del cdigo

Comparacin entre Traductor e Intrprete


Forma en cmo ejecuta:
Intrprete: Ejecuta el programa de entrada directamente
Compilador: Produce un programa equivalente en lenguaje objeto
Forma en qu orden ejecuta:
Intrprete: Sigue el orden lgico de ejecucin
Compilador: Sigue el orden fsico de las sentencias
Tiempo de ejecucin:
Intrprete: Por cada sentencia se realiza el proceso de decodificacin para determinar las
operaciones a ejecutar y sus operandos. Si la sentencia est en un proceso iterativo, se

realizar la tarea tantas veces como sea requerido. La velocidad de proceso se puede ver
afectada
Compilador: No repetir lazos, se decodifica una sola vez
Eficiencia:
Intrprete: Ms lento en ejecucin
Compilador: Ms rpido desde el punto de vista del hard
Espacio ocupado:
Intrprete: Ocupa menos espacio, cada sentencia se deja en la forma original
Compilador: Una sentencia puede ocupar cientos de sentencias de mquina
Deteccin de errores:
Intrprete: Las sentencias del cdigo fuente pueden ser relacionadas directamente con la
que se esta ejecutando.
Compilador: Cualquier referencia al cdigo fuente se pierde en el cdigo objeto
Combinacin de ambas tcnicas: Los compiladores y los intrpretes se
diferencian en la forma que ellos reportan los errores de ejecucin. Algunos
ambientes de programacin contienen las dos versiones interpretacin y
compilacin.
Utilizan el intrprete en la etapa de desarrollo, facilitando el diagnstico de
errores. Luego que el programa ha sido validado se compila para generar cdigo
mas eficiente.
Otra forma de combinarlos: Traduccin a un cdigo intermedio que luego
se interpretar. Sirve para generar cdigo portable, es decir, cdigo fcil de
transferir a diferentes mquinas. Ejemplos: Java, genera un cdigo intermedio
llamado bytecodes, que luego es interpretado por la mquina cliente.

PRCTICA IV
SEMNTICA DE LOS LENGUAJES DE PROGRAMACIN

DESCRIPTOR: lugar donde se almacenan los atributos


LIGADURA (BINDING)
Los programas trabajan con entidades Las entidades tienen atributos Estos atributos tienen que
establecerse antes de poder usar la entidad
LIGADURA: es la asociacin entre la entidad y el atributo
Diferencias entre los lenguajes de programacin
El nmero de entidades
El nmero de atributos que se les pueden ligar
El momento en que se hacen las ligaduras (binding time).
La estabilidad de la ligadura: una vez establecida se puede modificar?
MOMENTO DE LIGADURA
Definicin del lenguaje
Implementacin del lenguaje
Compilacin (procesamiento)
Ejecucin

Una ligadura es esttica si se establece antes de la ejecucin y no se puede cambiar. El termino esttico
referencia al momento del binding y a su estabilidad.
Una ligadura es dinmica si se establece en el momento de la ejecucin y puede cambiarse de acuerdo
a alguna regla especfica del lenguaje. Excepcin: constantes

VARIABLES
Memoria principal: celdas elementales, identificadas por una
direccin. El contenido de una celda es una representacin
codificada de un valor

<NOMBRE, ALCANCE, TIPO, L-VALUE, R-VALUE>


Nombre: string de caracteres que se usa para referenciar a la variable. (identificador)
Alcance: es el rango de instrucciones en el que se conoce el nombre
Tipo: valores y operaciones
L-value: es el lugar de memoria asociado con la variable (tiempo de vida)
R-value: es el valor codificado almacenado en la ubicacin de la variable
NOMBRE
Aspectos de diseo:
Longitud mxima: Algunos ejemplos: Fortran:6 Python: sin lmite; C: depende del compilador,
suele ser de 32 y se ignora si hay ms; Pascal, Java, ADA: cualquier longitud
Caracteres aceptados (conectores): Ejemplo: Python, C, Pascal: _; Ruby: solo letras minsculas
para variables locales;
Sensitivos: Sum = sum = SUM ? . Ejemplos: C y Python sensibles a maysculas y minsculas.
Pascal no sensible a maysculas y minsculas. palabra reservada - palabra clave
ALCANCE
El alcance de una variable es el rango de instrucciones en el que se conoce el nombre. (visibilidad)

Las instrucciones del programa pueden manipular una variable a travs de su nombre dentro de su
alcance. Los diferentes lenguajes adoptan diferentes reglas para ligar un nombre a su alcance.
Alcance esttico: Llamado alcance lxico. Define el alcance en trminos de la estructura lxica del
programa. Puede ligarse estticamente a una declaracin (explcita o implcita) examinando el texto del
programa, sin necesidad de ejecutarlo. La mayora de los lenguajes adoptan reglas de ligadura de
alcance esttico.
Alcance dinmico: Define el alcance del nombre de la variable en trminos de la ejecucin del programa.
Cada declaracin de variable extiende su efecto sobre todas las instrucciones ejecutadas posteriormente,
hasta que una nueva declaracin para una variable con el mismo nombre es encontrado durante la
ejecucin. APL, Lisp (original), Afnix (llamado Aleph hasta el 2003), Tcl (Tool Command Language), Perl

10

Esttico Vs Dinmico

11

Las reglas dinmicas son ms fciles de implementar. Son menos claras en cuanto a disciplina
de programacin. El cdigo se hace ms difcil de leer.
Local: Son todas la referencias que se han creado dentro del programa o subprograma.
No Local: Son todas las referencias que se utilizan dentro del subprograma pero que no han sido
creadas en l.
Global: Son todas las referencias creadas en el programa principal

Espacios de nombres: Un espacio de nombre es una zona separada donde se pueden declarar
y definir objetos, funciones y en general, cualquier identificador de tipo, clase, estructura, etc.; al que se
asigna un nombre o identificador propio. Utilidad: Ayudan a evitar problemas con identificadores con el
mismo nombre en grandes proyectos o cuando se usan bibliotecas externas.
TIPO
Definicin
Conjunto de valores
Conjunto de las operaciones
Antes de que una variable pueda ser referenciada debe ligrsele un tipo. Protege a las variables de
operaciones no permitidas. Chequeo de tipos: verifica el uso correcto de las variables
Tipos
Predefinidos: Tipos base: Son los tipos base que estn descriptos en la definicin. Los valores se ligan
en la implementacin a representacin de maquina
Tipo Boolean valores: true, false; operaciones: and, or , not
Definidos por el usuario: Constructores: Los lenguajes permiten al programador mediante la declaracin
de tipos definir nuevos tipos a partir de los predefinidos y los constructores
TADs: No hay ligadura por defecto, el programador debe especificar la representacin y las operaciones
TAD. Estructura de datos que representan al nuevo tipo. Rutinas usadas para manipular los objetos de
este nuevo tipo

12

Momentos Esttico: (Pascal, Algol, Simula, ADA, C, C++, Java, etc) El tipo se liga en compilacin y no
puede ser cambiado. El chequeo de tipo tambin ser esttico. Pueden ser:
Explcito: La ligadura se establece mediante una declaracin
int x, y
bool z
y:= z ilegal
y:= not y ilegal
Implcito: La ligadura se deduce por reglas
Ej. Fortran: Si el nombre comienza con I a N es entera; si el nombre comienza con letra
A-H O- Z es real.
Semnticamente la explicita y la implcita son equivalentes, con respecto al tipado de las
variables, ambos son estticos. El momento en que se hace la ligadura y su estabilidad es el
mismo en los dos lenguajes.
Inferido: El tipo de una expresin se deduce de los tipos de sus componentes. Lenguaje
funcional. Ej. Lisp Si se tiene en un script doble x = 2 * x Si no est definido el tipo se infiere
doble : : num num
Momentos Dinmico: (APL, Snobol, Smalltalk, Python, Ruby, etc). El tipo se liga en ejecucin y puede
cambiarse. Ms flexible: programacin genrica. Ms costoso en ejecucin: mantenimiento de
descriptores. Variables polimrficas. Chequeo dinmico. Menor legibilidad
L-VALUE
rea de memoria ligada a la variable.
Tiempo de vida (lifetime) o extensin: Periodo de tiempo que existe la ligadura. El tiempo de vida es el
tiempo en que la variable est alocada en memoria
Alocacin: Momento que se reservar la memoria
Esttica: sensible a la historia
Dinmica
Automtica; cuando aparece la declaracin
Explcita: a travs de algn constructor
Persistente: su tiempo de vida no depende de la ejecucin: existe en el ambiente. Archivos - Bases de
datos

13

R-VALUE
Valor almacenado en el l-valor de la variable. Se interpreta de acuerdo al tipo de la variable
Momentos:
Dinmico: por naturaleza b := a se copia el r-valor de a en el l-valor de b
a :=17
Constantes: se congela el valorObjeto: (l-valor, r-valor)
Inicializacin
Cul es el r-valor luego de crearse la variable? Ignorar el problema: lo que haya en memoria. Estrategia
de inicializacin:
Inicializacin por defecto:
Enteros se inicializan en 0, los caracteres en blanco, etc.
Inicializacin en la declaracin:

14

You might also like