Variables, ámbito y comprobación de tipos

Diego Montesdeoca
Mind Map by Diego Montesdeoca, updated more than 1 year ago
Diego Montesdeoca
Created by Diego Montesdeoca almost 4 years ago
20
0

Description

Mapa Mental

Resource summary

Variables, ámbito y comprobación de tipos
1 Variable: (nombre, dirección, valor, tipo, tiempo de vida, ámbito)
1.1 Nombre o identificador: cadena de caracteres empleada para reconocer alguna entidad del programa
1.1.1 Palabras especiales: indican acciones a realizar o se emplean para separar entidades sintácticas de los programas. Pueden ser: palabras clave o palabras reservadas
1.1.1.1 Palabras clave: sólo son palabras especiales en determinados contextos
1.1.1.2 Palabras reservadas: palabra especial de un LP que no puede emplearse como identificador
1.1.2 Nombres predefinidos: nombres que tienen un significado predefinido pero que puede ser cambiado (redefinido) por el usuario Ej: Ada (integer, float), Pascal (readln, writeln, trunc, round), C (printf, scanf)
1.2 Direccion de una variable: dirección de memoria a la que está asociada
1.2.1 Un mismo nombre puede tener asociados diferentes direcciones en lugares diferentes del programa
1.2.2 Alias: cuando se usa más de un nombre de variable para referenciar la misma dirección
1.3 Tipo de una variable: determina el rango de valores que puede tomar la variable y el conjunto de operaciones definidas para los valores del tipo
1.4 Valor de una variable: contenido de la celda o celdas de memoria asociadas a las variables
2 Ligadura (binding)
2.1 Ligadura: asociación entre un atributo y una entidad
2.2 El momento en el que se produce se denomina tiempo de ligadura.
2.2.1 Ligadura estática: si ocurre antes del tiempo de ejecución y permanece inalterable durante la ejecución del programa.
2.2.2 Ligadura dinámica: si ocurre durante del tiempo de ejecución o puede cambiar en el transcurso de la ejecución del programa
2.2.3 Tiempo de compilación,Tiempo de linkado,Tiempo de carga,Tiempo de ejecución
2.3 Ligadura de tipos
2.3.1 Antes de que una variable pueda ser referenciada en un programa debe haber sido ligada a un tipo de dato.
2.3.1.1 Ligadura estática de tipos
2.3.1.1.1 Declaración explícita: se utiliza una sentencia que declara una lista de identificadores como de un tipo determinado
2.3.1.1.2 Declaración implícita: forma de asociar variables con tipos a través de convenciones sintácticas. La primera aparición del identificador constituye su declaración implícita
2.3.1.1.3 Algoritmo de inferencia de tipos: determina los tipos de las variables que intervienen en las expresiones sin que sean declaradas de forma explícita por el programador o da un mensaje de error si no puede inferirse
2.3.1.2 Ligadura dinámica de tipos
2.3.1.2.1 El tipo no se especifica mediante una sentencia de declaración, sino cuando se le asigna un valor mediante una sentencia de asignación
2.4 Ligadura de espacio y tiempo de vida
2.4.1 Tiempo de vida de una variable de programa: tiempo durante el cual la variable está ligada a una localización específica de memoria ⇒ tiempo entre asignación y desasignación de espacio
2.4.1.1 Variables estáticas
2.4.1.1.1 Se ligan a celdas de memoria antes de que comience la ejecución del programa y permanece ligada a las mismas celdas hasta que acaba la ejecución del programa
2.4.1.2 Variables dinámicas de pila
2.4.1.2.1 La ligadura de espacio se produce cuando se elabora la sentencia de declaración, exceptuando las que se ligan estáticamente
2.4.1.3 Variables dinámicas de montón (heap)
2.4.1.3.1 Montón (heap): colección de celdas de almacenamiento cuya estructura está muy desorganizada debido a la naturaleza imprevisible de su uso
2.4.1.3.1.1 Explícitas
2.4.1.3.1.1.1 Variables sin nombre cuyo almacenamiento se asigna y desasigna en tiempo de ejecución mediante la utilización por el programador de instrucciones específicas
2.4.1.3.1.2 Implícitas
2.4.1.3.1.2.1 Se les liga espacio del montón sólo cuando se le asignan valores (de hecho, todos sus atributos se ligan cada vez que se produce una asignación
3 Tipos
3.1 Comprobación de tipos
3.1.1 Comprobación de tipos: actividad que nos asegura que los operandos de un operador son de tipos compatibles
3.1.1.1 Tipos compatibles: un tipo legal para el operador o un tipo que atendiendo a determinadas reglas del lenguaje puede ser convertido implícitamente mediante código generado por el compilador en un tipo legal. Esta conversión automática se denomina coacción (coercion)
3.1.1.2 Error de tipos: aplicación de un operador a un operando de tipo inapropiado
3.1.1.3 Si todas las ligaduras de tipos a variables son estáticas ⇒ las comprobaciones de tipo pueden realizarse de forma estática
3.1.1.4 Si hay ligadura dinámica de tipos a variables ⇒ debe realizarse una comprobación dinámica de tipos (más costosa que en tiempo de compilación)
3.2 Disciplina de tipos (strong typing)
3.2.1 Un lenguaje tiene disciplina de tipos si los errores de tipos se detectan siempre ⇒ es necesario determinar los tipos de todos los operandos, ya sea en tiempo de compilación o de ejecución
3.3 Compatibilidad de tipos
3.3.1 Compatibilidad de tipos nominal: dos variables tienen tipos compatibles si están ligadas al mismo nombre de tipo
3.3.2 Compatibilidad de tipos estructural: dos variables tienen tipos compatibles si sus tipos tienen la misma estructura
3.3.3 Equivalencia de declaración: dos variables tienen tipos compatibles si uno de los tipos está definido con el nombre del otro
4 Ámbito
4.1 Ámbito de una variable de programa: rango de sentencias en las que es visible la variable
4.1.1 Ámbito estático ♦ Ámbito estático (introducido por ALGOL 60): método de ligadura de nombres a variables no locales que ocurre en tiempo de compilación
4.1.2 Ámbito dinámico (APL, SNOBOL4): basado en la secuencia de llamadas a subprogramas y no en la relación sintáctica entre ellos ⇒ el ámbito sólo puede determinarse en tiempo de ejecución
4.1.3 Entorno de referencia de una sentencia: colección de todos los identificadores visibles en dicha sentencia
5 Constantes
5.1 Constante: objeto al que se le liga un valor sólo en el momento en el que se le liga el espacio ⇒ su valor no puede cambiarse por asignación o por sentencia de entrada
6 Inicialización de variables
6.1 Inicialización: ligadura de un valor a una variable en el momento en el que también se le liga el almacenamiento
6.2 Variables no inicializadas
6.2.1 Las declaraciones sin inicialización crean variables no inicializadas: se les liga memoria pero su contenido es arbitrario y no puede ser interpretado como un valor del tipo del objeto declarado. El uso de un valor no incializado produce resultados impredecibles y debe evitarse
Show full summary Hide full summary

Similar

Mapa Conceptual de la arquitectura de base de datos
Alan Alvarado
Abreviaciones comunes en programación web
Diego Santos
codigos QR
Cristina Padilla
BASES DE DATOS
Horst Berndt Reyes
Programación orientada a objetos (POO).
Lina Melo
Programación orientada a objetos (POO).
Alan Melendez UuU'r
Programación orientada a objetos (POO).
Alan Melendez UuU'r
Latex
Maye Tapia
Flashcards de Programación
JorgeArias
Introducción a la Programación
Diego Benavides
Ejercicio tipos de Software
XoanoN Flares