Compiladors II - 25002
Septiembre 2000

  1. OPTIMIZACIÓN DE CÓDIGO
¿Para qué es apropiado un árbol sintáctico abstracto?
     Optimización de expresiones
     Optimización de bucles
     Optimización global
       Interpretación
       Ninguna de las anteriores
       No contesto...
 
  2. ¿Que propiedad de los bloques básicos se aprovecha para la optimización?
     En un bloque básico se ejecutan secuencialmente todas las instrucciones o ninguna
     Es una unidad indivisible del programa
     Los bloques básicos no se repiten
       Un bloque básico está formado por instrucciones completas del lenguaje fuente
       Ninguna de las anteriores
       No contesto...
 
  3. ¿Qué otras optimizaciones se benefician de la aplicación del loop unrolling?
     La reducción de frecuencia
     La propagación de constantes
     La eliminación de subexpresiones redundantes
       b) y c)
       Ninguna de las anteriores
       No contesto...
 
  4. ¿Cuál es el código optimizado de for(i=0;i<3;++i) A[i]=0;?
     A[0]=0; A[1]=0; A[2]=0;
     A[0]=0; A[1]=0; A[2]=0; i=3;
     El a) pero considerando que las expresiones A[0], A[1] y A[2] son direcciones constantes
       A[0]=0; A[1]=0; A[2]=0; i=2;
       Ninguna de las anteriores
       No contesto...
 
  5. La optimización global puede utilizarse para
     Generar warnings sobre el uso de variables locales
     Generar warnings sobr el uso de atributos de una clase
     Eliminar código no utilizado en el programa
       Reducir el número de variables globales
       Ninguna de las anteriores
       No contesto...
 
  6. ¿Qué paso de la optimización de código transforma la expresión C=A*B+A*B en TMP=A*B; C=TMP+TMP?
     La propagación de constantes
     La eliminación de subexpresiones redundantes (comunes)
     El folding
       La reducción de potencia
       Ninguna de las anteriores
       No contesto...
 
  7. ¿Qué información es necesaria sobre una función para que la reducción de frecuencia pueda sacar su llamada de dentro de un bucle?
     El número de parámetros de la función
     La función no modifica variables globales ni realiza entradas/salidas
     El único efecto que tiene la ejecución de la función es el cálculo del valor de retorno que sólo depende de los valores de los parámetros de la función
       La función no modifica ninguna variable global o local
       Ninguna de las anteriores
       No contesto...
 
  8. ESTRUCTURAS COMPLEJAS
¿Cuál es la diferencia básica entre un goto no local y un try and catch?
     En un goto se conoce la dirección a saltar en tiempo de compilación
     Un goto se puede utilizar para salir de una función
     Un goto no puede saltar fuera de una función
       Un goto no se puede utilizar para tratar errores
       Ninguna de las anteriores
       No contesto...
 
  9. ¿Cuándo se puede implementar un throw como un goto?
     Siempre
     Nunca
     Sólo si el throw se encuentra fuera de una estructura try and catch
       Sólo si el throw se encuentra dentro de una estructura try and catch
       Ninguna de las anteriores
       No contesto...
 
  10. ¿Cómo se puede implementar la gestión de excepciones sin que se les tenga que aplicar ni un ciclo de reloj si no se producen?
     Utilizando una tabla donde se indican los intervalos de código que corresponden a cada estructura try and catch
     Utilizando el goto no local
     Guardando la información de los controladores activos en una pila
       Modificando los vectores de interrupción del sistema operativo
       Ninguna de las anteriores
       No contesto...
 
  11. En que se basa la generación de código de la instrucción goto
     En el salto incondicional
     En el salto condicional
     En utilizar la información de la tabla de símbolos para ajustar la pila al ámbito de ejecución de la etiqueta
       a) y c)
       Ninguna de las anteriores
       No contesto...
 
  12. La instrucción break de C como sabe a que dirección de memoria ha de saltar
     La instrucción break no ha de considerar el contexto para saber a que dirección ha de saltar
     La dirección de salto del break se conoce en el momento de su compilación
     break obtiene la dirección a la que ha de saltar de la entrada de la tabla de símbolos que ha dejado la instrucción for while a otra.
       break obtiene la dirección a la que ha de saltar de la pila del procesador
       Ninguna de las anteriores
       No contesto...
 
  13. GESTIÓN DE MEMORIA DINÁMICA (HEAP)
¿Cómo afecta la gestión de memoria dinámica implícita a la programación orientada a objeto?
     Casi elimina la necesidad de constructores y destructores
     Casi elimina la necesidad de constructores
     Casi elimina la necesidad de destructores
       Su efecto es el mismo que para cualquier otra técnica de programación
       Ninguna de las anteriores
       No contesto...
 
  14. ¿Qué puede pasar cuando un (???) contador de referéncias libera un bloque de memoria?
     Se libera el bloque y nada más
     Se puede producir una (?????)
     Puede ser necesario actualizar (???)
       b) y c)
       Ninguna de las anteriores
       No contesto...
 
  15. ¿Cuáles son los principales problemas que añade la gestión de memoria implícita respecto la explícita?
     Tener que tratar todos los apuntadores del programa
     Marcar cada bloque de memoria como libre u ocupado
     Realizar búsquedas de bloques libres
       La fragmentación de la memoria
       Ninguna de las anteriores
       No contesto...
 
  16. El gestor de memoria basado en una lista ordenada de bloques libres
     Realiza búsquedas en las operaciones de demanda y liberación de memoria
     Realiza búsquedas en las operaciones de demanda
     Realiza búsquedas en las operaciones de liberación de memoria
       Realiza búsquedas cuando ha de subdividir los bloques de memoria
       Ninguna de las anteriores
       No contesto...
 
  17. La compactación se puede aplicar en
     La gestión de memoria explícita
     La gestión de memoria implícita
     La gestión de memoria implícita y explícita
       La gestión de memoria mediante bloques compañeros
       Ninguna de las anteriores
       No contesto...
 
  18. ¿Cuál de las siguientes afirmaciones es cierta?
     El método de gestión de memoria por contadores de referencia no permite estructuras de datos cíclicas
     El mark & sweep (método que marca los nodos utilizados para un segundo paso liberar los que no estén marcados) tiene complejidad lineal respecto el número de nodos que el programa realmente utiliza
     La compactación facilita el proceso de liberación de memoria
       El garbage collection por copia es más lento que los otros métodos de gestión de memoria dinámica
       Ninguna de las anteriores
       No contesto...
 
  19. El recolector de memoria por copia
     Utiliza la mitad de la memoria
     Compacta la memoria
     Su complejidad es lineal respecto al espacio de memoria en uso por el programa
       Todas las anteriores
       Ninguna de las anteriores
       No contesto...
 
  20. PROGRAMACIÓN FUNCIONAL
¿Cuál de las siguientes afirmaciones es cierta en un interprete de (???) ?
     La aplicación de la función CDR sobre la lista X supone copiar la cola de la lista X
     Cuando se asigna un nuevo valor a una variable no se puede acceder a su valor anterior en ningún caso, pero si es posible acceder a las copias de ese valor
     Al entorno de una función (???) o símbolos locales (???) sólo se puede acceder desde su código
       Todas las anteriores son ciertas
       Ninguna de las anteriores
       No contesto...
 
  21. La optimización de la (???) en cola
     Evita el crecimiento excesivo de la pila de argumentos
     Evita el crecimiento excesivo de la pila de contexto
     Elimina los argumentos de la pila
       Elimina el uso del display
       Ninguna de las anteriores
       No contesto...
 
  22. PROGRAMACIÓN LÓGICA
¿Para qué sirve un bloque de elección (choice point)?
     Guarda el estado de las pilas en una bifurcación no determinista
     Protege contra el borrado a los ámbitos
     Es la base para la implementación del backtracking
       Todas las anteriores
       Ninguna de las anteriores
       No contesto...
 
  23. ¿Cómo se representa el desconocido?
     Mediante un apuntador cíclico
     Mediante un átomo
     Mediante un functor
       Mediante un valor constante
       Ninguna de las anteriores
       No contesto...
 
  24. PROGRAMACIÓN ORIENTADA A OBJETO
¿Cuántas direcciones de memoria se utilizan para referenciar un objeto?
     Una dirección
     Varias direcciones según la profundidad del árbol de herencia
     Una dirección si sólo hay herencia simple
       Una dirección si hay herencia múltiple
       Ninguna de las anteriores
       No contesto...
 
  25. ¿Cómo se implementan las funciones virtuales?
     Mediante una tabla de funciones virtuales a la que apuntan todos los objetos de la misma clase
     Mediante una tabla de funciones virtuales para cada objeto
     Cada objeto tiene un único apuntador a su tabla de funciones virtuales
       El código de llamada a una función virtual es el mismo que se utiliza para los métodos no virtuales de una clase
       Ninguna de las anteriores
       No contesto...
 
  26. ESPECIFICACIÓN DE LENGUAJES DE PROGRAMACIÓN
La semántica interpretativa intenta representar
     El comportamiento de los programas de un lenguaje
     El cálculo de los atributos
     Las restricciones semánticas de un lenguaje
       El análisis semántico de un lenguaje
       Ninguna de las anteriores
       No contesto...
 
  27. En una gramática con atributos se ha de considerar
     El recorrido del árbol que realiza el analizador sintáctico
     La variación de los valores de los atributos
     El contenido de las variables asociadas a los símbolos no terminales
       Todas las anteriores
       Ninguna de las anteriores
       No contesto...
 
  28. ¿Qué significa no poder aplicar ninguna transición de estado en la ejecución de un programa mediante una gramática interpretativa sin estar vacia la secuencia de programa pendiente de ejecutar?
     El programa no podrá funcionar en una implementación real
     El comportamiento del programa no está definido
     La ejecución se parará por error
       b) y c)
       Ninguna de las anteriores
       No contesto...
 
  29. ¿Qué ventajas aporta el uso de gramáticas con atributos?
     Son independientes del analizador sintáctico utilizado
     Su notación marca dónde se pueden producir errores semánticos
     a) y b)
       Se implementan fácilmente
       Ninguna de las anteriores
       No contesto...
 

Check...