| | 1. OPTIMIZACIÓN DE CÓDIGO
¿Qué mejora suponen las tipletas indirectas respecto a las tipletas? |
| | La reordenación de código es más fácil de realizar |
| | Las dependencias entre instrucciones se detectan con mayor facilidad y esto simplifica la reordenación de código |
| | Las indirecciones se utilizan para calcular el número de registros que necesitará el código durante la ejecución. |
| | a) y b) |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 2. Las cuadruplas facilitan |
| | La reordenación de código |
| | La aplicación de las propiedades de las operaciones aritméticas para optimizar |
| | La minimización de las transferencias entre memoria y registros |
| | La interpretación rápida |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 3. Dado un código representado en forma de árbol sintáctico abstracto, la separación en bloques básicos es |
| | única |
| | dependiente del orden de generación de código |
| | un recorrido en postorden del árbol |
| | a) y b) |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 4. Dentro de un bloque básico, ¿dónde podemos encontrar saltos incondicionales? |
| | Al principio del bloque básico |
| | En medio del bloque básico |
| | Al final del bloque básico |
| | En cualquier lugar |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 5. Dentro de un bloque básico, ¿dónde podemos encontrar saltos condicionales? |
| | Al principio del bloque básico |
| | En medio del bloque básico |
| | Al final del bloque básico |
| | En cualquier lugar |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 6. ¿Cuántas veces se ha de aplicar la propagación de constantes durante la optimización del código de una función? |
| | Una vez |
| | Dos veces |
| | Tres veces |
| | Cuatro veces |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 7. ¿Qué operaciones pueden formar parte de las subexpresiones redundantes que elimine un optimizador de C++? |
| | Operaciones aritméticas (+,-,*,/) |
| | ++, -- |
| | Operaciones booleanas (||, &&) |
| | a) y c) |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 8. La propagación de constantes afecta principalmente a las optimizaciones... |
| | reducción de potencia y folding |
| | reducción de potencia, folding y reducción de frecuencia |
| | reducción de frecuencia |
| | folding |
| | ninguna de las anteriores |
| | No contesto... |
| |
| | 9. La optimización global se puede utilizar para... |
| | Detectar el código duplicado |
| | Detectar el uso de variables globales no inicializadas |
| | Detectar las funciones no utilizadas |
| | Detectar el código que nunca se ejecutará |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 10. Cuándo se optimiza el uso de registros en la compilación de una expresión se considera |
| | El orden en que se evaluará las subexpresiones de la expresión |
| | Mantener en registro los operandos izquierdos de operaciones no conmutativas |
| | De qué valores de los registros hay copia en memoria |
| | Todas las anteriores |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 11. ESTRUCTURAS COMPLEJAS
¿En qué afecta la orientación a objetoa la implementación de las excepciones? |
| | No afecta, ya que el tratamiento de excepciones es un método más de control de flujo de ejecución |
| | La implementación de excepciones tiene que considerar las declaraciones de objetos |
| | En las llamadas a métodos hay que considerar la posibilidad que se produzcan excepciones |
| | b) y c) |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 12. ¿Por qué en un switch los casos se limitan a constantes? |
| | Para poder detectar casos duplicados durante la compilación |
| | Por simplificar la gramática |
| | Para que un switch sea más rápido que un código escrito con if else |
| | Para evitar casos de selección ambiguos |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 13. La mejor implementación de un switch cuyos casos sean todos los valores de un intervalo es |
| | Una tabla de saltos |
| | Una búsqueda dicotómica |
| | Una secuencia de comparaciones con cada valor del intervalo |
| | Una búsqueda binaria |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 14. GESTIÓN DE MEMORIA DINÁMICA (HEAP)
¿Qué método utiliza menos memoria? |
| | Lista ordenada de bloques libres |
| | Bloques etiquetados en los extremos |
| | Bloques compañeros |
| | Recolección por copia |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 15. ¿Qué impacto tendría el uso de gestión de memoria implícita en el lenguaje C++? |
| | Sería igual que con gestión de memoria explícita |
| | Los programas gastarían menos memoria |
| | Casi no se tendrían que definir constructores |
| | Casi no se tendrían que definir destructores |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 16. ¿Qué dificultades introduce la aritmética de apuntadores a la implementación de gestores de memoria implícitos? |
| | Complica la detección de que bloques de memoria utiliza el programa |
| | Ninguna |
| | No permite la compactación de memoria |
| | a) y c) |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 17. ¿Qué método tiene una menor complejidad temporal? |
| | El método basado en lista ordenada de bloques libres |
| | El método de bloques etiquetados en los extremos |
| | El método de bloques compañeros |
| | Los tres tienen la misma complejidad |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 18. ¿Qué método tiene una complejidad menor? |
| | El método de marcar y barrer |
| | El método de recolección por copia |
| | Los dos métodos tienen la misma complejidad por que han de procesar todo el heap |
| | El método de recolección por copia tiene una complejidad mayor porque copia la memoria |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 19. PROGRAMACIÓN FUNCIONAL
¿Cómo se puede acceder a las variables de una función después de haber acabado su ejecución? |
| | No es posible |
| | Mediante una clausura de una función definida en su ámbito local |
| | Mediante la recursividad en cola |
| | Llamando de nuevo a la función |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 20. ¿Cuál es el principal beneficio de la optimización de la recursividad en cola? |
| | Una ejecución más rápida |
| | Una menor ocupación del heap |
| | Una menor ocupación de la pila |
| | Una menor ocupación de los bloques de activación |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 21. La optimización de la recursividad en cola se puede implementar utilizando |
| | Una pila específica para los argumentos |
| | Poniendo el bloque de activación en el heap |
| | Poniendo los argumentos después del enlace dinámico junto a las variables |
| | c) y además poniendo el display después del enlace dinámico |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 22. PROGRAMACIÓN LÓGICA
¿Cómo la WAM sabe queno tiene que eliminar el ámbito de una regla al salir de ella? |
| | Porque hay un bloque de elección encima del que lo protege (más cerca del final de la pila) |
| | Porque hay otro ámbito encima del que lo protege (más derca del final de la pila) |
| | Porque no se ha utilizado el operador de corte (cut) |
| | Siempre se eliminan los ámbitos al salir de una regla |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 23. El código de unificación que se genera para la WAM |
| | Compara dos valores a unificar |
| | Instancia desconocidos |
| | Construye estructuras o functores |
| | Todas las anteriores |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 24. ¿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... |
| |
| | 25. PROGRAMACIÓN ORIENTADA A OBJETO
¿Cuándo se puede necesitar más de una dirección de memoria para referenciar el mismo objeto? |
| | Una dirección diferente para cada relación d herencia |
| | En el caso de la herencia simple se necesita una dirección por cada clase base |
| | En el caso de herencia múltiple |
| | Nunca |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 26. En el caso de llamar a un método no virtual es necesario sumar a la dirección del objeto el desplazamiento al que se encuentra una clase base cuando se da la siguiente condición: |
| | Nunca |
| | Cuando se llama a un método cualquiera del objeto |
| | Cuando se llama a un método de una clase base |
| | Cuando se llama a un método de una clase base que no esté al principio de la memoria que ocupa el objeto |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 27. En el caso de llamar a un método virtual, este sumará a la dirección del objeto el desplazamiento resultante de |
| | No se tiene que aplicar desplazamiento en ningún caso |
| | Pasar de la dirección de una clase base a una clase derivada. Este desplazamiento será negativo |
| | Pasar de la dirección de una clase derivada a una clase base. Este desplazamiento será positivo |
| | Pasar de la dirección de una clase derivada a otra clase derivada. Este desplazamiento será positivo |
| | Ninguna de las anteriores |
| | No contesto... |
| |
| | 28. ESPECIFICACIÓN DE LENGUAJES DE PROGRAMACIÓN
La semántica interpretativa intenta representar |
| | El comportamiento de los programas de un lenguaje de programación |
| | El cálculo de los atributos |
| | Las restricciones semánticas de un lenguaje de programación |
| | El análisis semántico de un lenguaje de programación |
| | 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 donde se pueden producir errores semánticos |
| | a) y b) |
| | Se implementan fácilmente |
| | Ninguna de las anteriores |
| | No contesto... |
| |