Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Clasificación de Variables en Programación: Estáticas, Semi-Estáticas y Dinámicas, Apuntes de Lenguajes de Programación

ing en sistemas, lenguajes de la programacion 1

Tipo: Apuntes

2018/2019

Subido el 20/09/2019

josefina-galindez-coronel
josefina-galindez-coronel 🇦🇷

2 documentos

1 / 2

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
4. Clasificación de variables
Elementos de una variable
Valor, el dato que almacena la variable
Referencia, la dirección donde está almacenada la variable
Nombre, identificador en lenguaje natural
Variables estáticas
Tienen tamaño fijo.
Están en una dirección fija en la pila de ejecución.
Pueden resultar eficientes, ya que el acceso a las variables estáticas es directo. Otro tipo
de variables necesitan algún tipo de redireccionamiento.
Una desventaja de las variables estáticas es la flexibilidad reducida, ya que un lenguaje
que solo soporta variables estáticas no puede proveer recursividad.
Variables semi-estáticas
Tienen un tamaño fijo, se conoce en tiempo de compilación.
Su ubicación en memoria es dinámica, se ubican en los registros de activación y ocurre en
tiempo de ejecución.
Se ubican debajo de las variables semi dinámicas en el registro de activación para que
funcione el modelo de base + desplazamiento del Stack Pointer.
Facilitan la implementación de recursion.
Acceso más lento que las variables estáticas.
Variables semi-dinámicas
No se puede conocer su tamaño ni sus límites en tiempo de compilación.
Su tamaño puede cambiar únicamente entre diferentes RA (invocaciones) de la unidad.
Están ubicadas en el registro de activación.
El elemento que define el tamaño de los arreglos (u otras estructuras) se debe ubicar al
alcance de la unidad donde está el arreglo. Esto puede ser una variable global, pasarlo
como parámetro o ser una variable local (no todos los compiladores permiten esto).
Límites de los arreglos, se deben conocer en tiempo de ejecución siempre y cuando el
lenguaje compruebe límites en tiempo de ejecución.
Las variables semi - dinámicas poseen descriptores. Estos contienen los limites de las
pf2

Vista previa parcial del texto

¡Descarga Clasificación de Variables en Programación: Estáticas, Semi-Estáticas y Dinámicas y más Apuntes en PDF de Lenguajes de Programación solo en Docsity!

4. Clasificación de variables

Elementos de una variable

Valor, el dato que almacena la variable Referencia, la dirección donde está almacenada la variable Nombre, identificador en lenguaje natural

Variables estáticas

Tienen tamaño fijo. Están en una dirección fija en la pila de ejecución. Pueden resultar eficientes, ya que el acceso a las variables estáticas es directo. Otro tipo de variables necesitan algún tipo de redireccionamiento. Una desventaja de las variables estáticas es la flexibilidad reducida, ya que un lenguaje que solo soporta variables estáticas no puede proveer recursividad.

Variables semi-estáticas

Tienen un tamaño fijo, se conoce en tiempo de compilación. Su ubicación en memoria es dinámica, se ubican en los registros de activación y ocurre en tiempo de ejecución. Se ubican debajo de las variables semi dinámicas en el registro de activación para que funcione el modelo de base + desplazamiento del Stack Pointer. Facilitan la implementación de recursion. Acceso más lento que las variables estáticas.

Variables semi-dinámicas

No se puede conocer su tamaño ni sus límites en tiempo de compilación. Su tamaño puede cambiar únicamente entre diferentes RA (invocaciones) de la unidad. Están ubicadas en el registro de activación. El elemento que define el tamaño de los arreglos (u otras estructuras) se debe ubicar al alcance de la unidad donde está el arreglo. Esto puede ser una variable global, pasarlo como parámetro o ser una variable local (no todos los compiladores permiten esto). Límites de los arreglos , se deben conocer en tiempo de ejecución siempre y cuando el lenguaje compruebe límites en tiempo de ejecución. Las variables semi - dinámicas poseen descriptores. Estos contienen los limites de las

variables y un puntero a donde comienzan sus datos en los registros de activación. Si el lenguaje comprueba limites, se necesitan los 4 limites. Sino, con 3 alcanza. Si los límites son constantes, están en el código ejecutable. Si son variables globales, sus valores son variables semi-estáticas.

Variables dinámicas

Pueden cambiar de tamaño en cualquier momento. No pueden estar en la pila de ejecución ya que cambia el esquema de base + desplazamiento. Se ubican en el heap

Variables dinámicas con nombre

Ubicadas en el heap. Surgieron en ALGOL. Están administradas por el lenguaje. El programador no pide memoria.

Variables dinámicas anónimas

Son administradas por el programador. Los procesos de allocation y deallocation ocurren en tiempo de ejecución. Solo pueden ser referenciadas por punteros o variables referenciantes. Se almacenan en el heap. Ejemplo de código p = malloc(100) En este ejemplo participan dos variables, una variable semi estática (p), y una variable dinámica anónima que está en el heap (100).

Heap

Colección de celdas de memoria altamente desorganizadas dado su uso completamente impredecible. El heap tiende a crecer de forma descontrolada por su propia desorganización. Se encuentra dentro del espacio de memoria otorgado por el SO. Es una dirección conocida, alejada de la pila de ejecución. Nuevos RA pueden chocar con el heap y el heap puede chocar con la pila. Pueden quedar huecos (basura, garbage) #Lenguajes de Programación#