Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INFORMÁTICA Y COMPUTACIÓN Profesor: Héctor Pincheira
Conejeros
Nombre:
1. La regla BNF < s > ::= 0 < s > | 1 < s > | 0 | 1 representa cualquier número binario:
a) Que comience con un 1 o con un 0
b) Con una cantidad de 1’s igual a la cantidad de 0’s
c) Que comience con un 0 y termine con un 1
d) Ninguna de las anteriores
6. Si p = &x; entonces, para representar los datos usados en la sentencia x = 2*x + *p;
se requieren:
a) Dos referencias
b) Tres referencias
c) Cuatro referencias
d) Ninguna de las anteriores
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INFORMÁTICA Y COMPUTACIÓN Profesor: Héctor Pincheira
Conejeros
7. Si en C se tiene n = 5; v[++n] = n++; entonces:
a) En v[5] se almacena 6
b) En v[6] se almacena 6
c) En v[6] se almacena 7
d) Ninguna de las anteriores
10. Los registros de activación incluyen enlace dinámico sólo cuando el respectivo stack:
a) Se representa en almacenamiento contiguo
b) Resulta de una sucesión de invocaciones recursivas
c) Se comporta dinámicamente
d) Ninguna de las anteriores
11. Para la función en C, int f(int n) { if(n1) return f(n–1) + f(n–2); else return n; }
la cantidad total de registros de activación que se genera con la invocación f(5) es:
a) 5
b) 10
c) 15
d) Ninguna de las anteriores
12. Sean las variables int k=3, *p=&k; y la función void h(int *s, int **t){ *s = *s +
**t; }
Si se invoca h(p, &p); entonces la variable k queda finalmente con el valor:
a) 3
b) 4
c) 5
d) Ninguna de las anteriores
13. C es una versión de C que no dispone de sentencias de repetición (while, do-while,
for) y que, además, provee los delimitadores {{ ... }} para agrupar aquellas
sentencias potencialmente ejecutables en paralelo sobre una máquina con P
procesadores. Considerar typedef int arreglo[2][100]; para escribir en C una
función que permita inicializar, eficientemente, con ceros una variable arreglo b,
cuando P = 4.
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INFORMÁTICA Y COMPUTACIÓN Profesor: Héctor Pincheira
Conejeros
1. – a) 7. – b)
2. – d) 8. – b)
3. – c) 9. – d)
4. – a) 10. – d)
5. – b) 11. – c)
6. – a) 12. – d)
14. La cantidad de memoria requerida para la ejecución de f(a,b) es M = I*R, donde I es la cantidad
de invocaciones (activaciones) y R el tamaño del registro de activación (obtenido sumando los
tamaños de los elementos). Las activaciones generadas son
f(17, 3) f(14, 3) f(11, 3) f(8, 3) f(5, 3) f(2, 3), es decir, I = 6 y, consecuentemente, M
= 6*R. Luego,
R = T(a) + T(b) + T(valor de retorno) + T(dirección de retorno) = (2 + 2 + 2 + 4) bytes = 10 bytes.
Por lo tanto, M = (6*10) bytes = 60 bytes.