Вы находитесь на странице: 1из 7

Sentencias Repetitivas Doc. I.

Prado Reconocimiento de código

Prueba de escritorio

La prueba de escritorio consiste en elaborar una tabla con todas las variables
del programa, luego realizar de forma manual un seguimiento paso a paso para ver
y anotar los cambios que se producen en las variables. Se recomienda enumerar las
líneas del programa para facilitar el seguimiento al control de ejecución que
realizará el programa. Cada vez que una variable cambia de valor, el valor
anterior debe ser tachado, para evitar confusiones. Vea el siguiente ejemplo:

public class f1 {
r i n
public static void main(String[] args)throws IOException 1 línea 1
{
1. r=1; 5 línea 2
2. n=5; 1 línea 3
3. for(int i=1;i<=n;i++)
4. { 1 línea 5
5. r=r*i;
6. } 2 línea 3
7. System.out.println("El factorial es "+r); 2 línea 5
8. }
3 línea 3
} 6 línea 5
4 línea 3
24 línea 5
5 línea 3
120 línea 5

Pantalla línea
El factorial es 120 7

Se recomienda:

 hacer el cuadrito en Excel, luego copiar y pegar en la celda vacía de cada


programa, o
 hacerlo manualmente, sacarle una fotografía en formato jpg luego pegar la
imagen en la celda vacía, al lado del programa.

Importante. Se recomienda realizar ésta tarea conscientemente y con


responsabilidad ya que la evaluación de sentencias repetitivas estará basada en
en éste trabajo, principalmente. Cualquier duda me consulta, por favor.

1
Sentencias Repetitivas Doc. I. Prado Reconocimiento de código

Trabajo Práctico

Para los siguientes programas realice la prueba de escritorio y responda las


preguntas:

public class P0 {
public static void main(String []arg){ Prueba de escritorio:
1. int n=9876;
2. int nn,nn1,nn2;
3. System.out.println("valor de n= "+n);
4. nn=(int)(Math.log10(n)+1); ¿Para qué sirve el código de la línea 4?
5. System.out.println("valor de nn= "+nn);
6. nn1=n % (int)Math.pow(10, nn-1);
7. System.out.println("valor de nn1= "+nn1); ¿Qué hace el código de la línea 6?
8. nn2=nn1/10;
9. System.out.println("valor de nn1= "+nn2);
} ¿Cuánto es el valor del exponente en la
} línea 6?

¿Qué hace el programa?

import java.io.*;
public class P1 { Pruebas de escritorio para n igual a -5 y 6

public static void main(String[] args)throws IOException{


int s=0,n;
Qué pasa si el valor de n es negativo?
BufferedReader u=new BufferedReader( new InputStreamReader(System.in));
1. System.out.println("Valor de n ");
2. n=Integer.parseInt(u.readLine());
3. for(int i=1;i<=n;i++)
4. {
5. s=s+i; //s+=i
6. System.out.print(i+"+"); Se puede realizar éste programa con la
7. }
sentencia While y no con for?. si la
8. System.out.println("\nResultado "+s);
9. } respuesta es sí, indicar cómo.

}
¿Qué hace el programa?

2
Sentencias Repetitivas Doc. I. Prado Reconocimiento de código

public class P2 {
public static void main(String []arg)
{
int i=1;
while(i<5)
Éste programa tiene un error de lógica, cuál
{
System.out.println("valor i= "+i); es?
}
}
} ¿Qué hace el programa?

import java.io.*; Pruebas de escritorio para valores de n=-4 y


public class P3 {
n=5
public static void main(String[] args)throws
IOException{
int s=0,n,aux;
BufferedReader u=new BufferedReader( new ¿Qué hace el programa?
InputStreamReader(System.in));
System.out.println("Valor de n ");
n=Integer.parseInt(u.readLine());
for(int i=1;i<=n;i++)
{
aux=i*i;
s=s+aux; //s+=i
System.out.print(aux+"+");
}
System.out.println("\nResultado "+s);
}

}
public class P4 {
public static void main(String []arg)throws IOException
{
BufferedReader p=new BufferedReader(new InputStreamReader(System.in));
int dato;
do ¿Cuántas veces se repite el ciclo do-while?
{
System.out.println("Escriba un dato ");
dato=Integer.parseInt(p.readLine()); ¿Qué ocurre con los datos ingresados por el
} while(dato!=5);
usuario?
System.out.println("ok ");
}
}
¿Cuándo escribe ok?

public class P5 {
public static void main(String []arg)throws IOException
{
int i=0,a;
BufferedReader p; ¿Cuántos datos ingresan por teclado?
p=new BufferedReader(new InputStreamReader(System.in));
boolean x=false;
do{ ¿Cuál es la variable que controla las
i++; repeticiones?
System.out.println("Escriba un dato ");
a=Integer.parseInt(p.readLine());
¿Cuántas repeticiones son?
if(a==11) x=true;
}while(i<=8);
System.out.println("x= "+x); ¿Cuándo x se pone en true?
}
}

3
Sentencias Repetitivas Doc. I. Prado Reconocimiento de código

import java.io.*;
public class P6 {

public static void main(String []arg)throws IOException


{
BufferedReader p;
p=new BufferedReader(new InputStreamReader(System.in)); ¿Qué hace el programa?
for(int i=1;i<=5;i++)
{
for(int j=1;j<=3;j++)
{
System.out.println("i="+i+" j="+j);
}
System.out.println();
}
}
}
import java.io.*;
Prueba de escritorio para z con valores de
public class P7 { 4,2 y 5

public static void main(String[] args)throws IOException


{ int z,s=0,r;
BufferedReader u=new BufferedReader( new InputStreamReader(System.in));
1. do {
2. System.out.println("Valor de z "); ¿Para qué el for de la liea 5 aumenta de 2
3. z=Integer.parseInt(u.readLine()); en 2?
4. }while(z%2==0);
5. for(int j=1;j<=z; j=j+2)
¿Por qué el for de la línea 9 va hasta j?
6. {
7. //--------
8. r=1; ¿Cuál es el objetivo de s, o qué guarda s?
9. for(int i=1;i<=j;i++)
10. {
11. r=r*i; ¿Qué hace el programa?
12. }
13. //------
14. System.out.print(r+" ");
15. s=s+r;
16. }
17. System.out.println("\nla sumatoria es "+s);
18. }

public class P8 {
public static void main(String[] args)throws IOException{
double s=0,n,aux;
BufferedReader u=new BufferedReader( new InputStreamReader(System.in));
System.out.println("Valor de n ");
n=Double.valueOf(u.readLine()).doubleValue();
for(int i=1;i<=n;i++)
{
Para qué utiliza Mat.pow?
aux=Math.pow(i, 2.0);
s=s+aux; //s+=i
System.out.print(aux+"+"); ¿Qué hace el programa?
}
System.out.println("\nResultado "+s);
}
}

4
Sentencias Repetitivas Doc. I. Prado Reconocimiento de código

import java.io.*;

public class p9{

public static void main(String[] args)throws IOException {


//calcular los coeficientes del binomio de pot n
int n,f,kf,nk,r;
BufferedReader w=new BufferedReader (new InputStreamReader(System.in));
1. System.out.print("n?");
2. n=Integer.parseInt(w.readLine()); ¿Qué hace el programa en las líneas 4 a la
3. //factorial de n 7?
4. f=1;
5. for(int i=1;i<=n;i++)
6. {
a. f*=i; //f=f*i
7. }
¿Cuál es el objetivo del for de la línea 9?
8. // calculando términos
9. for(int j=0;j<=n;j++)
10. {
11. //factorial de k
12. kf=1;
13. for(int i=1;i<=j;i++) ¿Qué hace la línea 23?
14. {
15. kf*=i; //f=f*i
16. }
17. //factorial n-k
18. nk=1; ¿Qué hace el programa?
19. for(int i=1;i<=(n-j);i++)
20. {
21. nk*=i; //f=f*i
22. }
23. r=f/(kf*nk);
24. System.out.println(" coeficiente "+r);
25. }
}
}
import java.io.*;

public class p10 {

public static void main(String[] args)throws IOException{


double s=0,n,t=0.1;
BufferedReader u=new BufferedReader( new InputStreamReader(System.in));
System.out.println("Valor de n "); ¿ Por qué t=t+1.1 ?
n=Double.valueOf(u.readLine()).doubleValue();
for(int i=1;i<=n;i++)
{ t=t+1.1; //encargado de generar los terminos ¿Qué hace el programa?
s=s+t; //suma
System.out.print((float)t+"+");
}
System.out.println("\nResultado "+(float)s);
}

5
Sentencias Repetitivas Doc. I. Prado Reconocimiento de código

public class p11 {

public static void main(String[] args)throws IOException {


int n,k,f,kf,nk,r;
BufferedReader w=new BufferedReader (new InputStreamReader(System.in));
System.out.print("n?");
n=Integer.parseInt(w.readLine());
System.out.print("k?"); El programa calcula la combinatoria de n
k=Integer.parseInt(w.readLine()); elementos tomados de r. Pero no controla que
//factorial de n r sea menor o igual a n. Qué líneas y dónde
f=1; agregaría código para solucionar éste error?
for(int i=1;i<=n;i++)
{
f*=i; //f=f*i
}
//factorial de k
kf=1; ¿Qué hace el programa?
for(int i=1;i<=k;i++)
{
kf*=i; //f=f*i
}
//factorial n-k
nk=1;
for(int i=1;i<=(n-k);i++)
{
nk*=i; //f=f*i
}
r=f/(kf*nk);
System.out.print(" combinatoria es "+r);
}
}
import java.io.*;
public class P12 {
public static void main(String[] args)throws IOException {
int fila,n,f,nk,kf,r;
BufferedReader w=new BufferedReader (new InputStreamReader(System.in));
System.out.print("fila del triangulo de Pascal?");
fila=Integer.parseInt(w.readLine());
for(int fi=0;fi<=fila;fi++)
{
//factorial de n
¿Qué hace el programa?
n=fi;
f=1;
for(int i=1;i<=n;i++)
{
f*=i; //f=f*i
}
// calculando términos
for(int j=0;j<=n;j++)
{
//factorial de k
kf=1;
for(int i=1;i<=j;i++)
{
kf*=i; //f=f*i
}
//factorial n-k
nk=1;
for(int i=1;i<=(n-j);i++)
{
nk*=i; //f=f*i
}
r=f/(kf*nk);
System.out.print(" "+r);
}
System.out.println("");
}
}
}

6
Sentencias Repetitivas Doc. I. Prado Reconocimiento de código

Вам также может понравиться