Está en la página 1de 4

UNIVERSIDAD TECNOLÓGICA METROPOLITANA

FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INFORMÁTICA Y COMPUTACIÓN Profesor: Héctor Pincheira Conejeros

PRUEBA Nº 1 * LENGUAJES de PROGRAMACIÓN * SEMESTRE 2-2005

Nombre:

Preguntas 1-12 (marcar la opción correcta) : 4*BUENAS  MALAS


Preguntas 11-12 : (10 + 10) puntos cada una

1. La regla BNF < s > ::= a < s > | < s > b | x no reconoce la secuencia:
a) aaaaaxb
b) xbbbbb
c) aaaxbbb
d) Ninguna de las anteriores

2. Para la expresión + v * w – x / y z el respectivo par (notación, asociatividad) que la


representa correctamente es:
a) (prefija, por la izquierda)
b) (prefija, por la derecha)
c) (postfija, por la izquierda)
d) Ninguna de las anteriores

3. Si en lenguaje C se tiene int *p; q = &p; entonces falta la declaración:


a) int p:
b) int *q;
c) int **q;
d) Ninguna de las anteriores

4. La evaluación incompleta de (x  y | | x  y) ocurre sólo si antes se ha ejecutado:


a) x = –5; y = ––x;
b) x = 5; y = ––x;
c) x = 7; y = ++x;
d) Ninguna de las anteriores

5. Una constante no puede ser modificada porque no tiene:


a) Nombre
b) Tipo
c) Referencia
d) Ninguna de las anteriores

6. Para evaluar la expresión 5 * (*p) es necesario conocer:


a) Sólo una referencia
b) Dos referencias
c) Más de dos referencias
d) Ninguna de las anteriores

7. Si en C se declara flota f; int i; entonces en la expresión ( f / (float) i) * ( i / (int) f ):


a) Se puede omitir el operador (float)
b) Existe sólo casting
c) Se puede omitir el operador (int)
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

8. En lenguaje C, el tamaño en bytes necesario para representar en RAM una variable


declarada como union se determina en tiempo de:
a) Compilación
b) Creación
c) Ejecución
d) Ninguna de las anteriores

9. Si el stack de registros de activación se representa en almacenamiento contiguo:


a) Se puede omitir la dirección de retorno
b) El enlace dinámico es innecesario
c) No es posible realizar invocaciones recursivas
d) Ninguna de las anteriores

10. Para la función en C, int f(int n) { if(n  50) return n + f(2*(n–1)); else return 0; } la
cantidad total de registros de activación que se genera con la invocación f(5) es:
a) 4
b) 6
c) 8
d) Ninguna de las anteriores

11. C, versión de C que no provee sentencias de repetición (while, do-while, for), sí
provee los delimitadores {{ ... }} para agrupar sentencias ejecutables en paralelo sobre
una máquina P-procesadora. Considerar typedef int matriz[5][5]; para escribir en
C la función inicia(b) para inicializar, eficientemente por filas y con el valor del
índice de la fila, una variable matriz b, cuando P = 5.
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INFORMÁTICA Y COMPUTACIÓN Profesor: Héctor Pincheira Conejeros

12. Considérese la función int t(int b, int n, int p)


{ if(n != 0) return (n%10)*p + t(b, n/10, b*p);
else return 0:
}
Durante ejecución, M = E + S expresa la máxima cantidad de memoria en bytes,
ocupada por el código de t y el stack de registros de activación. Si M = 288 bytes
resulta de haber invocado t(6, 10452, 1), determinar, justificadamente, el valor de E.
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
DEPARTAMENTO DE INFORMÁTICA Y COMPUTACIÓN Profesor: Héctor Pincheira Conejeros

SOLUCIÓN PRUEBA 1 * LENGUAJES DE PROGRAMACIÓN * SEM. 2-2005

1. – d) 6. – b)
2. – b) 7. – a)
3. – c) 8. – a)
4. – c) 9. – b)
5. – c) 10. – d)

11. void inicia(matriz b)


{ int i = 0;
L: if (i < 5)
{ {{ bi][0 = i;
bi][1 = i;
bi][2 = i;
bi][3 = i;
bi][4 = i;
}}
i++;
go to L;
}
}

12. Tamaño del registro de activación R = T(b) + T(n) + T(p) + T(vr) + T(dr) + T(ed)
R = (2 + 2 + 2 + 2 + 4 + 4) bytes
R = 16 bytes
Cantidad de activaciones I = t(10452) + t(1045) + t(104) + t(10) + t(1) + t(0)
T=1+1+1+1+1+1=6
Luego, S = I*R = 6*16 bytes= 96 bytes
Si M = E * S, entonces 288 bytes = E + 96 bytes
Es decir, E = 288 bytes – 96 bytes
Por lo tanto E = 192 bytes

También podría gustarte