PRACTICO 05 - Universidad Nacional del Sur

Anuncio
Universidad Nacional del Sur
Lenguajes de Programación
Licenciatura en Ciencias de la Computación
1er Cuatrimestre 2016
PÁGINA WEB: www.cs.uns.edu.ar/~sg/lp
LECTURA: Ghezzi Cap.3, Scott Cap. 7.1-7.2, Sebesta 6
TRABAJO PRÁCTICO Nº 5
TIPOS DE DATOS Y SISTEMAS DE TIPOS
PARTE I: CONCEPTOS
1. ¿Qué es un sistema de tipos? ¿Cuáles son los principales criterios de evaluación de un lenguaje de
programación que se ven afectados por el sistema de tipos? ¿Por qué?
2. Defina que significa que un lenguaje sea fuertemente tipado. ¿Qué desventajas tiene un lenguaje que
no es fuertemente tipado? Ejemplifique.
3. Defina la noción del grado de dureza de una característica del sistema de tipos. Seleccione dos
características diferentes del sistema de tipos y, para cada una de ellas, indique restricciones que
influyen en su grado de dureza.
4. Analice las ventajas y desventajas de:
a) Tipado estático vs. Dinámico.
b) Conversión implícita vs. explícita.
c) Alto grado de dureza vs Bajo grado de dureza.
5. ¿Cuál es la diferencia entre un error del lenguaje y un error de aplicación? ¿Qué relación tienen estos
conceptos con la noción de lenguaje fuertemente tipado?
6. Defina los siguientes tipos:
a) Ordinal
b) Enumerado
c) Subrango
7. ¿Por qué los números reales no pueden ser el dominio de un mapeo finito? ¿Podrían ser los enteros?
8. ¿Cuáles son los aspectos que deben tenerse en cuenta en la etapa de diseño de un lenguaje al
especificar los atributos de:
a) cadenas de caracteres?
b) arreglos?
c) unión y unión discriminada?
9. ¿Cuáles son las desventajas de tener coerciones respecto al chequeo de tipos? ¿Cómo influyen en el
grado de dureza del sistema de tipos?
10. Indique claramente que efectos en la determinación de tipos puede tener un lenguaje de
programación que cuenta simultáneamente con coerción, sobrecarga y expresiones mixtas.
11. Indique en aspectos el alcance dinámico afecta al sistema de tipos
12. ¿Cuál es la principal diferencia entre un tipo producto cartesiano y un tipo unión?
13. ¿Qué dificultades presenta en cuanto al chequeo de tipos el uso de los constructores de unión y unión
discriminada?
Universidad Nacional del Sur
Lenguajes de Programación
Licenciatura en Ciencias de la Computación
1er Cuatrimestre 2016
14. ¿Qué diferencia encuentra entre la sub-indicación de arreglos y la selección de campos de registros en
un lenguaje de programación como Pascal?
15. ¿A qué se le llama arreglo asociativo?
16. Muestre gráficamente las distintas formas de polimorfismo y explique cada uno de ellas.
PARTE II: CASOS DE ESTUDIO
17. Explique y ejemplifique porque Pascal no es considerado un lenguaje fuertemente tipado.
18. ¿Qué lenguaje tiene un sistema de tipos más duro respecto a expresiones mixtas, Pascal o Python?
¿Por qué? ¿y respecto a las declaraciones de tipo?
19. Considere las siguientes sentencias en Java
a)
double v1 = 4.0 / (5 / 10) ;
b)
double v2 = 4.0 / (5.0 / 10) ;
¿Qué diferencias ve entre a) y b)? ¿Qué valores quedaran almacenados en v1 y v2 respectivamente
luego de ejecutar esas sentencias? ¿Por qué son diferentes?
20. Desarrolle un ejemplo en Pascal y contrástelo con otro en Python donde se muestre que el chequeo
estático de tipos puede ayudar a la detección temprana de errores.
21. Describa las facilidades provistas por Pascal, Python y Java para soportar arreglos, presente ejemplos
mostrando las diferencias.
22. Que formas de polimorfismo soporta:
a)
Java
b)
Pascal
c)
Python
23. ¿Qué lenguaje tiene un sistema de tipos más duro respecto al polimorfismo por inclusión, Java o
Python? ¿Por qué? ¿y respecto al polimorfismo por sobrecarga?
Descargar