Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Observaciones: Nota:
• Rellena los datos (apellidos, nombre y grupo) que se solicitan en la parte superior de esta hoja.
• Contesta a la cuestión en esta misma hoja.
Cuestión C1 (1 Punto)
El siguiente programa calcula sumas de algunos términos de una serie.
int main() // 1,6,6
{
int suma1 = 0;
float suma2 = 0.;
Se pide:
• ¿Qué valores se obtienen por pantalla? -13 13.7
• Obtener la representación binaria interna de suma1 y suma2. Muestre en ambos casos los pasos realizados.
i 1 2 3 4 5
t 6 3 2 1.5 1.2
suma1 -6 -9 -11 -12 -13
suma2 6 9 11 12.5 13.7
Es decir
Signo Exponente (8 bits, exceso 127) Mantisa (23 bits, sin el 1 implícito)
0 10000010 10110110011001100110011
Observaciones: Nota:
• Rellena los datos (apellidos, nombre y grupo) que se solicitan en la parte superior de esta hoja.
• Contesta a la cuestión en esta misma hoja.
Cuestión C1 (1 Punto)
El siguiente programa calcula sumas de algunos términos de una serie.
int main() // 2,7,6
{
int suma1 = 0;
float suma2 = 0.;
Se pide:
• ¿Qué valores se obtienen por pantalla? -8 8.7
• Obtener la representación binaria interna de suma1 y suma2. Muestre en ambos casos los pasos realizados.
i 2 3 4 5 6
t 3 2 1.5 1.2 1
suma1 -3 -5 -6 -7 -8
suma2 3 5 6.5 7.7 8.7
Es decir
Signo Exponente (8 bits, exceso 127) Mantisa (23 bits, sin el 1 implícito)
0 10000010 00010110011001100110011
Observaciones: Nota:
• Rellena los datos (apellidos, nombre y grupo) que se solicitan en la parte superior de esta hoja.
• Contesta a la cuestión en esta misma hoja.
Cuestión C1 (1 Punto)
El siguiente programa calcula sumas de algunos términos de una serie.
int main() // 1,7,9
{
int suma1 = 0;
float suma2 = 0.;
Se pide:
• ¿Qué valores se obtienen por pantalla? -20, 22.05
• Obtener la representación binaria interna de suma1 y suma2. Muestre en ambos casos los pasos realizados.
i 1 2 3 4 5 6
t 9 4.5 3 2.25 1.8 1.5
suma1 -9 -13 -16 -18 -19 -20
suma2 9 13.5 16.5 18.75 20.55 22.05
Es decir
Signo Exponente (8 bits, exceso 127) Mantisa (23 bits, sin el 1 implícito)
0 10000011 01100000110011001100110
Observaciones: Nota:
• Rellena los datos (apellidos, nombre y grupo) que se solicitan en la parte superior de esta hoja.
• Contesta a la cuestión en esta misma hoja.
Cuestión C1 (1 Punto)
El siguiente programa calcula sumas de algunos términos de una serie.
El siguiente programa calcula sumas de algunos términos de una serie.
int main() // 2,7,9
{
int suma1 = 0;
float suma2 = 0.;
Se pide:
• ¿Qué valores se obtienen por pantalla? -11, 13.05
• Obtener la representación binaria interna de suma1 y suma2. Muestre en ambos casos los pasos realizados.
i 2 3 4 5 6
t 4.5 3 2.25 1.8 1.5
suma1 -4 -7 -9 -10 -11
suma2 4.5 7.5 9.75 11.55 13.05
Es decir
Signo Exponente (8 bits, exceso 127) Mantisa (23 bits, sin el 1 implícito)
0 10000010 10100001100110011001100
Observaciones: Nota:
• Rellena los datos (apellidos, nombre y grupo) que se solicitan en la parte superior de esta hoja.
• Contesta a la cuestión en esta misma hoja.
Cuestión C2 (1.5 Puntos)
1. Diferencias, ventajas y desventajas de un intérprete con máquina virtual respecto a un compilador. (0.3 Pts.)
2. Se quiere codificar en octal los 93 alumnos de un Grado. ¿Cuál es el número mínimo de dígitos en octal necesarios
para lograrlo? Con esos dígitos, ¿cuál es el mayor número de alumnos que sería codificable? (0.3 Pts.)
93 = 64 + 16 + 8 + 4 + 1
En binario: 10111012.
Agrupando en grupos de 3: 001.011.101 tenemos que en octal es 1358
Por tanto, la respuesta es que necesitamos 3 dígitos.
El mayor número codificable sería el 7778 que en binario es 111.111.1112 y en decimal sería: 29-1 = 511.
La respuesta es no.
La mantisa tiene 23 posiciones, por lo que tenemos 2x223 posibles números. El primer 2 es para tener en cuenta a los
positivos y negativos. Pero el número de valores es lo de menos a la hora de la argumentación. Lo importante, es que,
para cada exponente, el número de valores representados es fijo, en el caso de float, 224.
Supongamos el exponente 0 con valores positivos, es decir, los números del tipo 1.xxxxx
Son los valores representados en el intervalo [1,2)
Hagamos el mismo ejercicio con el exponente 1, es decir, los números del tipo 1x.xxxxx
Son los valores representados en el intervalo [2,4)
Por tanto, vemos que en el intervalo [1,2) hay el mismo número de valores representados que en el [2,4), y así sucesiva-
mente con el intervalo [4,8), etc. Conforme aumenta en 1 el valor del exponente se reduce a la mitad la densidad de
valores representados.
4. Dibuje un esquema y describa brevemente los componentes principales de la arquitectura Von Neuman. (0.3 Pts.)
Observaciones: Nota:
• Rellena los datos (apellidos, nombre y grupo) que se solicitan en la parte superior de esta hoja.
• Contesta a la cuestión en esta misma hoja.
Cuestión C3 (1.5 Puntos)
1. Un chip de memoria trabaja con palabras de 32 bits. Si el bus de direcciones tiene 8 líneas, ¿cuál es el número máximo
de palabras que se podrá direccionar? ¿Cuántos datos tipo char podrá almacenar? (0.3 Pts.)
2. Describa el principal cometido del buffer de un controlador de un dispositivo de E/S y su razón de ser. (0.3 Pts.)
4. Describe la fase de búsqueda del ciclo de instrucción en una arquitectura basada en acumulador, nombrando los
registros que participan. (0.3 Pts.)
5. Explica brevemente qué es un cambio de contexto. ¿Se producirá en un fallo de página? Justifícalo. (0.3 Pts.)
1) La interrupción de la ejecución de un proceso almacenando toda la información del estado del proceso para que
pueda luego ser restaurado.
2) La restauración del estado del siguiente proceso a ejecutar
El fallo de página supone una interrupción, donde el kernel del S.O., que es otro proceso, toma el control para llevar la
página de disco a memoria principal. Por tanto, debe almacenarse el contexto del proceso que ha causado el fallo de
página para que sea ahora el kernel el nuevo proceso en ejecución.
C4 Escuela de Ingenierías Industriales
Observaciones: Nota:
• Rellena los datos (apellidos, nombre y grupo) que se solicitan en la parte superior de esta hoja.
• Contesta a la cuestión en esta misma hoja.
Cuestión C4 (1 Punto)
2. Dada la siguiente línea de código, escoge la(s) respuesta(s) correcta(s): (0.1 puntos)
double fun(int, double, char);
Respuesta Marca las respuestas correctas
La definición de fun.
La declaración de fun.
La cabecera de la definición de fun.
El prototipo de fun.
Es una declaración errónea al faltar el nombre de los parámetros.
4. Programa la definición de la función ¿? no_negativo(¿?) para que el resultado del siguiente programa
sea: 4 3 2 1 0. (0.1 puntos)
Código Función ¿? no_negativo(¿?)
main() bool no_negativo(int a)
{ {
int n = 4; if (a>=0)
do return true;
{ else
cout << n-- << " "; return false;
}while (no_negativo(n)); // O simplemente return a >= 0;
} }
6. Después de la ejecución del programa indicado, ¿Qué valores salen por pantalla?
¿Cuál es el contenido del vector lista? (0.2 puntos)
Código Respuesta
void fun(vector<int>& v)
{ Salida por pantalla:
int c = 2;
int dim = v.size(); 0 12 18 8 10 2 8 14 6
while (dim > 0)
{
v[dim-1] = c*v[dim-1];
cout << v[dim-1] << " ";
--dim;
} Contenido del vector lista:
}
main()
{ 6 14 8 2 10 8 18 12 0
vector<int> lista(9);
lista = {3, 7, 4, 1, 5, 4, 9, 6, 0};
fun(lista);
}
7. Escribe 4 sentencias diferentes, que incrementen cada una z en 1 partir de int z = 3; (0.1 puntos)
Opciones A partir de int z = 3;, escribe 4 sentencias diferentes que incrementen en 1 a z.
1 z = z + 1;
2 z += 1;
3 ++z;
4 z++;
8. Escribe un fragmento de código que verifique si el valor de una variable real x pertenece al intervalo
cerrado [0,1] y, en ese caso, que guarde su valor en un archivo llamado datos.txt. (0.1 puntos)
double x; cin >> x;
Observaciones: Nota:
• Rellena los datos (apellidos, nombre y grupo) que se solicitan en la parte superior de esta hoja.
• Contesta a la cuestión en esta misma hoja.
Cuestión C5 (1.5 Puntos)
Se desea calcular un sumatorio dado por la expresión:
𝑁𝑁
1
𝑠𝑠(𝑡𝑡, 𝑁𝑁) = � sin (2 ∗ 𝑛𝑛 ∗ 𝜋𝜋 ∗ 𝑡𝑡)
𝑛𝑛
𝑛𝑛=1
Escriba una función con salida real con prototipo ¿? sum_sin(¿? t, ¿? N), con argumento real para t.
sum_sin( )
{
const double pi = 3.14159;
Supongamos que disponemos de un vector tiempos de tamaño tam, con valores equidistantes entre un tiempo ini-
cial t_ini y un tiempo final t_fin.
Así, con tam = 6, t_ini = 1.0 y t_fin = 3.5, se tiene el vector tiempos = {1.0, 1.5, 2.0, 2.5, 3.0, 3.5}.
La función dientes_sierra() crea un vector de valores que se asemejan a dientes de sierra, resultado de aplicar a
cada elemento 𝑡𝑡𝑖𝑖 del vector de tiempos la siguiente función:
𝑁𝑁
1 1 1 1 1
𝑑𝑑(𝑡𝑡𝑖𝑖 , 𝑁𝑁) = + � sin (2 ∗ 𝑛𝑛 ∗ 𝜋𝜋 ∗ 𝑡𝑡𝑖𝑖 ) = + 𝑠𝑠(𝑡𝑡𝑖𝑖 , 𝑁𝑁)
2 𝜋𝜋 𝑛𝑛 2 𝜋𝜋
𝑛𝑛=1
Escriba una función con prototipo ¿? dientes_sierra(¿? tiempos, ¿? N) que obtenga el vector de valores dien-
tes de sierra para un vector de tiempos. ¡Esta función debe usar la función sum_sin()!
dientes_sierra( )
{
const double pi = 3.14159;
#include <iostream>
#include <vector>
#include <cmath>
int main()
{
vector<double> tiempos = tiempo_lin(0, 3, 1000);
vector<double> y = dientes_sierra(tiempos, 5);
for (auto x : y)
cout << x << "\n";
}