La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.

Presentaciones similares


Presentación del tema: "Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse."— Transcripción de la presentación:

1 Tipos de Datos. Entrada-Salida.

2 La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse a través de: –I/O interactiva. –I/O con archivos.

3 I/O interactiva. La entrada-salida interactiva generalmente implica comunicación con el usuario humano, quien trabaja en paralelo con el programa corriendo, y lo que él le dé al programa como entrada influirá directamente en la salida de dicho programa.

4 I/O con archivos. La entrada-salida con archivos va generalmente asociada con almacenamiento off-line implementado por el sistema operativo. Los archivos pueden ser tanto temporales como persistentes.

5 Archivos Temporales Existen durante la corrida de un programa, y su propósito es almacenar información que es demasiado grande como para guardarla en la memoria disponible para el programa. Por razones de velocidad, los archivos temporales son generalmente guardados en forma binaria.

6 Archivos Persistentes. Permiten a un programa leer datos desde antes de la corrida del programa, y escribir datos que seguirán existiendo después de que el programa termine. Son el principal mecanismo a través del cual programas que corren en tiempos distintos se pueden comunicar.

7 Archivos binarios vs. Archivos de texto. Los archivos vinarios son mucho más rápidos para la entrada-salida. Los archivos de texto requieren muchas conversiones, por cuanto no reflejan la estructura de los datos que contienen. Los archivos de texto son mucho más legibles por el programador, y se pueden modificar fácilmente con herramientas como los editores de texto.

8 Pruebas de Igualdad y Asociación Es sencillo probar la igualdad en tipos primitivos de datos, como enteros, flotantes, etc. con semánticas e implementaciones obvias. En tipos de datos más complicados, o abstractos, pueden surgir diferencias de implementación entre lenguajes.

9 Tipos de Comparación. Hay dos maneras de probar la igualda entre objetos de tipos complejos: Comparación superficial: verifica si ambas variables se refieren al mismo objeto. Comparación profunda: verifica si ambos objetos son iguales.

10 Subrutinas y otras Abstracciones de Control.

11 Definiciones Básicas. Subrutinas parametrizadas –Parámetros reales (pasados por el llamador) –Parámetros formales (en la definición de la subrutina). Las subrutinas son usualmente llamadas: –Funciones: si devuelven un valor. –Procedimientos: si no devuelven un valor, sino queoperan por efecto de borde.

12 Detalles Stack Frame o registro de activación. –Argumentos, valores de retorno, variables locales, direcciones de retorno, registros salvados, temporales. –Cuando la subrutina devuelve, su frame es sacado de la pila. Apuntadores Importantes: –Stack Pointer. –Frame Pointer.

13 Detalles(II) Área de tamano variable en el tope del frame: para almacenar objetos cuyo tamano no es conocido a tiempo de compilación. Si no hay tales objetos, no se necesita el frame pointer.

14 Referencias Libres. Para encontrar objetos que son referencias libres en un lenguaje con subrutinas anidadas: –Cadena Estática: cada stack frame tiene una referencia al frame de las subrutinas circundantes (requiere múltiple derreferenciación). –Pantalla: una cadena estática encajada en un arreglo (requiere dos accesos a memoria solamente).

15 Costo de las Cadenas Estáticas vs. Pantallas. El anidamiento de subrutinas a más de 2-3 niveles es inusual, por lo que las cadenas estáticas son cortas. El costo de las pantallas es un tanto mayor que el de las cadenas estáticas. Las cadenas estáticas simplifican la representación de las clausuras (sólo almacenan las direcciones y los enlaces estáticos). Las pantallas imponen un límite de anidamientos.

16 Secuencias de Llamada. El mantenimiento de los stack frame es hecho por código ejecutado: –Por el llamador justo antes y justo después de la llamada a subrutina (secuencia de llamada). –Por el llamado (subrutina) Al principio (prólogo). Al final (epílogo).

17 Qué se necesita hacer en una llamada a subrutina? Pase de parámetros. Salvar la dirección de retorno. Cambiar el contador del programa. Cambiar el stack pointer. Salvar registros. Cambiar el frame pointer. Ejecutar el código de inicialización para objetos en un nuevo frame.

18 Qué se necesita hacer al salir de la subrutina? Pasar los parámetros de retorno de los valores de funciones. Ejecutar el código de finalización para objetos locales. Restaurar el stack pointer. Restaurar los registros salvados. Restaurar el contador del programa.

19 División de tareas entre el llamador y el llamado La mayoría de las tareas pueden ser realizadas tanto por el llamador como por el llamado. Salvar los registros. –Sólo es necesario guardar los registros que son utilizados tanto por el llamador como por el llamado. –El llamador salva todos los registros que va a sobreescribir. –Se dividen los registros en dos grupos, los salvados por el llamador y los salvados por el llamado.

20 Qué debe hacer el llamador? El pase de parámetros. El mantenimiento de la cadena estática (parte de ella). El llamador calcula los enlaces estáticos del llamado y los pasa como un parámetro extra escondido. –Cuando el llamado está anidado directamente dentro del llamador: el llamador pasa su propio frame pointer. –Cuando el llamado está anidado a k enlaces dentro del llamador: el llamador derreferencia k veces su enlace estático y pasa el resultante. El mantenimiento de la pantalla es más complicado.

21 Expansión In Line. La expansión en línea de las subrutinas al punto de la llamada. Ventajas: –Evita la sobrecarga asociada con las llamadas a subrutina. Esto redunda en llamadas más rápidas. –El programador es libre de usar muchas subrutinas cortas. –El compilador elige cuáles subrutinas expandir In Line. Desventajas: –Mucho más código. –No aplica a llamadas recursivas.


Descargar ppt "Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse."

Presentaciones similares


Anuncios Google