Módulo 2: Estatutos de Control

    Autoevaluación

1. Cuál será el valor final de las variables y, x después de ejecutar el siguiente fragmento de instrucciones.

int x =2, y=3;

   y= (y+2*3)+(8-6/2);
   while ( y >= 16)
   {
       x++;
       y+=2;
   
}

a. x = 3  , y = 3

b. x = 2 , y = 3

c. x = 3 , y = 16

d. x = 2 , y = 14

Respuesta correcta: d

Retroalimentación: Al evaluar la expresión sobre y, nos da como resultado 14, el cual no es mayor a 16, por lo que el ciclo no se

realiza y el valor de x no se modifica. Por lo tanto x queda con 2 y y con 14.

 

2. Cuál será el valor final de las variables y, x después de ejecutar el siguiente fragmento de instrucciones.

int d =0, r=12, s=0;

r++;
for (s=r/2;s>2 || r%2==0; s-=2)
{
     d++;
     r-=2;
}

a. d = 2  , r = 9 , s = 2

b. El programa se cicla

c. d = 2  , r = 9 , s = 4

d. d = 0  , r = 12 , s = 0

Respuesta correcta: a

Retroalimentación: La respuesta b implica que el programa se cicla, lo cual es incorrecto; a la opción c le falta disminuir el valor de

s en 2 para terminar el ciclo, la opción c implica no hacer el ciclo lo cual es incorrecto. De ahí que al seguirlo se obtienen los

valores dados en el inciso a.



3. Cuál será el valor final de las variables y, x después de ejecutar el siguiente fragmento de instrucciones.

int m =50, y=52, g=21;

if ((m>y) || (g > y))
{   y=(y+6)/2;
    g=g+y/m;
}
else
{
    g=g+6/2;
    y=y+g/(4+2);
    m=m-2;
}

a. m = 50  , y = 29 , g = 24

b. m = 48  , y = 56 , g = 24

c. m = 48  , y = 12 , g = 13

d. m = 56  , y = 48 ,  g = 24

Respuesta correcta: b

Retroalimentación: Dado que tanto 50 no es mayor que 52 y 21 no es mayor que 52, se ejecutan las instrucciones que están en el

else. Tomando en cuenta la prioridad de operadores g = 21 + 3 = 24; y = 52 + 24/ 6 = 52 + 4 = 56 y por último m = 50 - 2 = 48.

 

4. Qué valor quedara en el área de texto t, con el siguiente código para los valores de x=9, y=11.

if (x < 10)
if (y > 10)
t.setText("*****");
else
t.setText("#####");
t.append("$$$$$$");

a.*****

b.#####

c.*****
   $$$$$

d. #####
    $$$$$

Respuesta correcta: c

Retroalimentación: El else pertenece al segundo if (y>10) por lo tanto el t.append("$$$$$")l; no depende de ninguna condición

y siempre se hace. En cuanto a las condiciones como ambas son verdaderas ejecuta la
impresión de asteriscos.

 

5. Cuál de los siguiente códigos deja en el texto de área t, los números impares de 1 a 19, asumiendo que t esta en blanco?

a. for (i=1; i< 19; i+=2)
      t.append(" " + i );

b.  cont=1
   do
   {
        t.append(" " + i );
        cont+=2;
   }
   while (cont < 19);
 

c.  cont=1
   while (cont <=19)
   {
        t.append(" " + cont );
        cont+=2;
   }

d. 
for (i=1; i<= 19; i++)
      t.append(" " + i );

Respuesta correcta: c

Retroalimentación: la opción a no contempla el 19, la opción b despliega i en lugar de cont, y la d muestra todos los números del 1

al 19, no solo los impares.

 

6. Cuántas veces se escribe Hola en el área de texto t, con el siguiente código (asume que está vacio incialmente):

cont1=0;
while (cont1 < 3)
{
  cont2=0
;
  while (cont2 < 3)
  {
     t.append("Hola \n");
 
   cont2=cont2+1;
  }
 
cont1=cont1+1
}

a. 2

b. 3

c. 4

d. 9

Respuesta correcta: d

Retroalimentación: Si multiplicamos las veces que se hace el ciclo interno que es 3 por el ciclo externo (3) dentro del cual está,

nos da el total de veces que se despliega, lo cual nos da 9.

 

7. Cuántas veces se escribe Hola en el área de texto t con el siguiente código (asume que está vacio inicialmente):

cont1=0;
while (cont1 < 10)
{
  cont2=0
;
  while (cont2 < 10)
  {
     t.append("Hola \n");
 
   cont2=cont2+1;
  }
}

a. se cicla

b. 100

c. 81

d. 10

Respuesta correcta: a

Retroalimentación: Dado que el valor de cont1 no se incrementa en el ciclo y empieza con 0, siempre será menor a 10.