Prac1_dyp_2016

Anuncio
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 +.
Descargar