Diseño y Paradigmas de Lenguajes- Año 2016 Práctico Nro. 1 Aspectos de Diseño de Lenguajes Corresponde a los Capı́tulos I y II del libro Concepts of Programming Languages de Robert Sebesta. Ejercicio 1. Realice una evaluación del lenguaje de programación C, empleando los criterios legibilidad y facilidad de escritura. Para el siguiente código en C: int a; scanf("%d",&a); if (a = 0) ....... else ........... ¿Qué puede reflexionar respecto a ésta sentencia condicional permitida en C? Ejercicio 2. El lenguaje Java permite realizar una misma operación con construcciones sintácticas diferentes. Busque ejemplos en Java que reflejen este hecho. ¿Cree Ud. que ésto favorece o no la legibilidad y la facilidad de escritura? Ejercicio 3. 1. Grafique las capas de la computadora virtual para el lenguaje C. 2. Grafique las capas de la computadora virtual para un lenguaje interpretado arbitrario L. Ejercicio 4. Para el siguiente fragmento de código en C que utiliza la directiva del preprocesador #define: #define INF 0 #define SUP 100 for ( int i = INF ; i <= SUP ; i++) printf("%d",i); Explique cómo el preprocesador de C traduce el código anterior. Ejercicio 5. La siguiente tabla muestra para dos subprogramas y una biblioteca, las direcciones usadas por el código compilado Direcciones del programa compilado, complete la columna Direcciones del ejecutable de cada uno con las direcciones, que le asignará el cargador o linker en la memoria para la ejecución del programa completo: Subprograma P Q Biblioteca Direcciones del compilado 0-999 0-1499 0-1999 Direcciones del ejecutable Ejercicio 6. Complete cada uno de los ı́tems de la siguiente tabla, reflejando las caracterı́sticas que poseen los lenguajes, dependiendo del método de implementación utilizado (compilados o interpretados puros). Programa compilados Programas interpretados Tiempo de ejecución del programa: Detección de errores: Eficiencia en las repeticiones: Tamaño del programa fuente: Tamaño del programa ejecutable: Ejercicio 7. Sean los siguientes fragmentos de código en el lenguaje especificado: Lenguaje C Lenguaje Python int a; float b; scanf("%d",&a); b = 5.2 + a; a = 10 a = 5.2 + a Para cada lenguaje especifique en qué tiempo se realizan las siguientes: a. Ligadura del nombre y tipo de la variable a. b. Ligadura del valor de la variable a. c. Ligadura para la elección del sı́mbolo = para representar la operación de asignación. d. Ligadura de la elección de una de las posibles operaciones de suma (suma entera, suma real, etc) para el operador +.