Tema 8.FP - Test de Exámenes Resueltos
Tema 8.FP - Test de Exámenes Resueltos
Tema 8.FP - Test de Exámenes Resueltos
int aux;
aux=a+b+c;
c=aux;
a) Es ya un procedimiento puro
b) Bastaría con pasar las variables a y b por referencia
c) La variable c se debería pasar por referencia
d) Todas las variables, incluida aux, deben pasarse por referencia
El hecho de que el procedimiento use argumentos pasados por valor y por referencia no influye
para que sea puro.
Un procedimiento puro:
1.-No utiliza variables externas al subprograma, a las que accede directamente por su nombre.
2.-No utiliza llamadas a otros subprogramas que no sean procedimientos o funciones puras.
a) Al desarrollo ascendente
b) Al desarrollo descendente
c) A la sintaxis de un lenguaje
d) A la programación a la defensiva
4.-El tratamiento de excepciones permite realizar programas de mayor: (8.3) (8.3.1) (8.3.2)
a) Corrección
b) Eficiencia
c) Robustez
d) Complejidad
a) defensiva-confíe
b) ascendente-desconfíe
c) ascendente-confíe
d) defensiva-desconfíe
La sentencia catch agrupa el código para el tratamiento de la Excepción que se declara entre
paréntesis
8.-En el lenguaje C± ¿Cuál de las siguientes afirmaciones es correcta? (8.3.2) (7.2.1) (7.3.1)
En procedimientos: return;
if(error){throw excepcion}
La sentencia catch agrupa el código para el tratamiento de la Excepción que se declara entre
paréntesis.
try{
if((5+2*3%3)==0){throw 0;}
else{throw 1;}
}catch(int e){
printf("%d", e);}
a) Imprime 2 0
b) Imprime 2 1
c) Imprime 2
d) Imprime 2 ó 1
try→
printf(“ 2”);→2
if→throw 1;
catch→
printf(“1”)→1
try{
try{
if(2*3%5==1){throw 0;}
else{throw 1;}
}catch(int e){
printf("%d", e+1);
}catch(int e){
printf("%d", e+2);
if→throw 0;
catch→printf(“1”);→1
bool x, y, z;
x=true;
y=false;
z=!x&&(x||y);
try{
printf("1 ");
if(z){
printf("2 ");
throw 1;
}else{
printf("3 ");
throw 0;
}catch(int e){
printf("%d", e+4);
a) Imprime 3 4
b) Imprime 3
c) Imprime 1 3 4
d) Imprime 1 3 3
z=false;→
try→
printf(“1 “);→1
printf(“3 “);→3
throw 0;→
catch→
printf(“%d”, 0+4);→4
bool x, y, z;
x=true;
y=false;
z=!x||(x||y);
try{
printf("1 ");
if(z){
printf("2 ");
throw 1;
}else{
printf("3 ");
throw 0;
printf("6 ");
}catch(int e){
printf("%d", e+4);
a) Imprime 1 2 5 6
b) Imprime 1 3 4
c) Imprime 1 2 5
d) Imprime1 3 4 6
z=true;→
try→
printf(“1 “);→1
printf(“2 “);→2
catch→
printf(“%d”, 1+4)→5
a=true;
try{
if(a||!a){
throw true;
}else{
throw false;
}catch(bool a){
printf("%d", int(a));
a) Imprime 1
b) Produce un error en tiempo de compilación
c) Imprime 0
d) Produce un error en tiempo de ejecución
Vamos a suponer que sí está declarada, (más que nada para tener la misma solución que el
equipo educativo)
a=true;
try→
if→true→throw true;
catch→printf(“%d”, int(true));→1
a=true;
b=!a;
try{
if(a||!b&&true){
throw true;
}else{
throw false;
}catch(bool b){
printf("%d", int(!b));
a) Imprime 1
b) No imprime nada
c) Imprime 0
d) Imprime true
b=false;
try→
if→true→throw true;
catch→printf(“%d”, int(false))→0
try{
if((5+2*3%3)==0){throw 0;}
else{throw 1;}
}catch(int e){
printf("%d", e);}
a) 1
b) 0
c) 12
d) 02
try→
if→throw 1;
catch→printf(“%d”, 1)→1
try{
try{
a) Imprime 1 3
b) Produce un error de compilación
c) Imprime 1
d) Imprime 0 2
try→try→
printf(“%d”, 1)→1
throw 0;
catch→throw 1;
catch→printf(“%d”, 1+2)→3
try{
try{
if(2*3%5==1){throw 0;}
else{throw 1;}
printf("%d", 2);
}catch(int e){
printf("%d", e+2);}