Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Tema 8.FP - Test de Exámenes Resueltos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

Tema 8.

Test de examen resuelto

1.-Dado el siguiente programa en C/C++: (8.1.3)

void proc(int a, int b, int & c){

int aux;

aux=a+b+c;

c=aux;

Para que fuese puro…

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 es aquel que no produce efectos laterales o secundarios. La acción de


este procedimiento se deduce de forma inmediata de la invocación de dicha acción.

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.

2.-Los conceptos de operación terminal, compleja y abstracta están vinculados… (8.2.1)

a) Al desarrollo ascendente
b) Al desarrollo descendente
c) A la sintaxis de un lenguaje
d) A la programación a la defensiva

3.-El desarrollo ascendente (botton-up) consiste en primero crear: (8.2.7)

a) El programa principal y después los subprogramas con las operaciones básicas


b) Los subprogramas con operaciones básicas y después el programa principal
c) El interfaz de los procedimientos, el programa principal, y la realización de los
subprogramas
d) La operación abstracta y escribir el subprograma que la realiza

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

Un programa es robusto si su operación se mantiene en condiciones controladas, aunque se le


suministren datos erróneos.
Con el tratamiento de excepciones se logra que la operación se mantenga en condiciones
controladas, aunque se suministren datos erróneos

5.-La programación a la defensiva: (8.3.1)

a) Aumenta la eficiencia del programa


b) Facilita el desarrollo ascendente
c) Corrige las situaciones de error
d) Produce programas robustos

6.-Complete los elementos para formar la sentencia correcta: “ la programación_____________


consiste en que cada subprograma esté escrito de manera que__________ de los datos o
argumento con que se invoca.” (8.3.1)

a) defensiva-confíe
b) ascendente-desconfíe
c) ascendente-confíe
d) defensiva-desconfíe

La programación a la defensiva consiste en que cada programa o subprograma esté escrito de


manera que desconfíe sistemáticamente de los datos o argumentos con que se le invoca.

7.-En el lenguaje C± la sentencia catch: (8.3.2)

a) Agrupa las sentencias para el tratamiento de la excepción


b) Agrupa las sentencias para la detección de la excepción
c) Devuelve el resultado de la excepción
d) Devuelve el resultado de la excepción y termina el programa

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)

a) Las sentencias throw y return no siempre necesitan una expresión


b) La sentencia return siempre necesita una expresión y throw no siempre
c) La sentencia throw siempre necesita una expresión y return no siempre
d) Las sentencias return y throw siempre necesitan una expresión

if(error){throw excepcion} →throw →expresión

En funciones: return expresión;

En procedimientos: return;

9.-En C+/-, la sentencia throw: (8.3.2)

a) Termina el subprograma y puede devolver cualquier tipo de resultado


b) No termina el subprograma
c) Termina el subprograma y no devuelve valor
d) Termina el subprograma y devuelve un tipo entero de excepción

La sentencia throw provoca la terminación del subprograma.

La sentencia throw puede devolver cualquier tipo de resultado en excepción.


10.-En C± la ejecución de una sentencia throw: (8.3.2)

a) Realiza el tratamiento de la excepción


b) Evalúa si se ha producido una excepción
c) Siempre debe estar condicionada
d) Efectúa la programación a la defensiva

if(error){throw excepcion}

throw indica que se ha detectado una situación de error.

throw devuelve cualquier tipo de resultado en excepción

11.-En el lenguaje C±, la sentencia catch: (8.3.2)

a) Agrupa las sentencias para el tratamiento de la excepción


b) Agrupa las sentencias para la detección de la excepción
c) Devuelve el resultado de la excepción
d) Devuelve el resultado de la excepción y terina el programa

La sentencia catch agrupa el código para el tratamiento de la Excepción que se declara entre
paréntesis.

12.-La ejecución del siguiente código: (8.3.2)

try{

printf("%d ", 2);

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

13.-El siguiente código: (8.3.2)

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);

a) Produce un error de compilación


b) Imprime 1 2
c) Imprime 2 3
d) Imprime 1

if→throw 0;

catch→printf(“1”);→1

14.-El siguiente código: (8.3.2)

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

15.-Dado el siguiente código en el lenguaje C±: (8.3.2)

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

throw 1; (throw finaliza el subprograma, por eso no se imprime 6)→

catch→

printf(“%d”, 1+4)→5

16.-En el lenguaje C±, el siguiente código: (8.3.2)

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

No está declarada la variable a (bool a;). Lo que da un error de compilación. Lo he comprobado


con el CodeBlock.

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

nota: int(false)=0; int(true)=1

17.-La ejecución del siguiente código: (8.3.2)

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

Obviando que no se han declarado a y b (bool a; bool b;)

b=false;

try→

if→true→throw true;

catch→printf(“%d”, int(false))→0

18.-La ejecución del siguiente código imprime: (8.3.2)

try{

if((5+2*3%3)==0){throw 0;}

else{throw 1;}

printf("%d ", 2);

}catch(int e){

printf("%d", e);}

a) 1
b) 0
c) 12
d) 02

try→

if→throw 1;

catch→printf(“%d”, 1)→1

19.-La ejecución del siguiente código en C±:

try{
try{

printf("%d", 1); throw 0;

}catch(int e){throw 1;}

}catch(int e){printf("%d", e+2);}

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

20.-El siguiente código: (8.3.2)

try{

try{

if(2*3%5==1){throw 0;}

else{throw 1;}

printf("%d", 2);

}catch(int e){

printf("%d", e+2);}

a) Produce un error de compilación


b) Imprime 2 3
c) Imprime 1 2
d) Imprime 1

También podría gustarte