Sie sind auf Seite 1von 19

DEPURACIN DE PROGRAMAS CON NETBEANS (I) Para realizar esta prctica, crate un proyecto llamado EjemploDepurador y establece el nombre

de la clase principal a Telegrama (escribe el siguiente cdigo para dicha clase). package EjemploDepurador; import java.util.Scanner; public class Telegrama { public Telegrama() { } public static void main(String[] args) { Scanner entrada = new Scanner(System.in); String sTipoTelegrama; char tipoTelegrama; int numPalabras; double costo; // Lee el tipo de telegrama como una cadena System.out.println("Tipo de telegrama o/u? "); sTipoTelegrama = entrada.next(); // Obten el primer caracter de la cadena tipoTelegrama = sTipoTelegrama.charAt(0); // Lee el nmero de palabras del telegrama System.out.println("Nmero de palabras? "); numPalabras = entrada.nextInt(); // Si el tipo de telegrama es ordinario if(tipoTelegrama == 'O' || tipoTelegrama == 'o') // Si el nmero de palabras es menor o igual a 10 if(numPalabras <= 10) costo = 25.0f; // Si el nmero de palabras es mayor a 10 else costo = 25.0f + 5.0f * (numPalabras - 10); // Si el tipo de telegrama es urgente else if(tipoTelegrama == 'U' || tipoTelegrama == 'u') // Si el nmero de palabras es menor o igual a 10 if(numPalabras <= 10) costo = 40.0f; // Si el nmero de palabras es mayor a 10 else costo = 40.0f + 7.5f * (numPalabras - 10); else costo = 0; // Escribe el costo del telegrama System.out.println("Costo del telegrama: " + costo); } }

Ejecucin de un Programa Instruccin por Instruccin Para iniciar la ejecucin del programa instruccin por instruccin seleccione del men principal la opcin Run/Step Into o presione la tecla F7.

NetBeans iniciar la ejecucin del programa y detendr la ejecucin en la lnea con la primera instruccin del programa, resaltando esa lnea de color verde, que ser la siguiente instruccin a ejecutarse. Para ejecutar la instruccin del programa resaltada seleccione del men principal la opcin Run/Step Over o presione la tecla F8.

NetBeans ejecutar la instruccin y detendr la ejecucin del programa en la lnea con la siguiente instruccin del programa, resaltando esa lnea de color verde. Repite el paso anterior para ejecutar la segunda instruccin del programa. Como la siguiente instruccin despliega un mensaje, ste aparece en la ventana de salida, Output.

Repita el paso 7 para ejecutar la tercera instruccin del programa. Esa instruccin es para leer una cadena del teclado. Note que no se resalta la siguiente instruccin. Lo que pasa es la instruccin no ha terminado de ejecutarse, est suspendida esperando a que tecleemos el valor de la cadena que representa el tipo de telegrama. Escriba la cadena ordinario y presione la tecla Intro. Al hacerlo la instruccin terminar su ejecucin y la siguiente instruccin aparecer resaltada. Como la cadena leda del teclado se almacena en la variable sTipoTelegrama, podemos inspeccionar el valor almacenado en esa variable. Para hacerlo coloque el cursor sobre el nombre de la variable y djelo unos segundos. Aparecer un recuadro con el nombre de la variable, su tipo y su valor, como se muestra en la siguiente figura:

Ejecute la siguiente instruccin que obtiene el primer carcter de la cadena y la almacena en la variable tipoTelegrama. Inspeccione su valor. El valor obtenido coincide con lo esperado? ____________. Ejecute las siguientes dos instrucciones y cuando el programa suspenda la ejecucin esperando por el valor del nmero de palabras teclee el valor de 8 y presione la tecla Intro. Inspeccione el valor de la variable numPalabras. Tiene el valor esperado? ____________. Ejecute la siguiente instruccin que es la sentencia if: if(tipoTelegrama == 'O' || tipoTelegrama == 'o') Como tipoTelegrama tiene el valor de 'o', la expresin del if vale true, y por tanto la siguiente instruccin a ejecutarse es la sentencia del if, en este caso: if(numPalabras <= 10) costo = 25.0f; Es sa la instruccin resaltada? ___________________ Ejecute la instruccin e inspeccione el valor de la variable costo. Cul es su valor? _____________________. Qu pas con el control del programa? Cul es la siguiente instruccin a ser ejecutada? __________________________________________________ Ejecute la instruccin. Se despliega el valor del telegrama en la ventana de salida. Ejecute la siguiente instruccin. El programa termina su ejecucin. Repita todos los pasos para ejecutar el programa instruccin por instruccin e inspeccione los valores de las variables cuando cambien, para los siguientes valores de entrada: sTipoTelegrama = ordinario, numPalabras = 15 Cul es el costo del telegrama? _______________________ Ejecucin de un Programa Hasta una Instruccin Dada Hay ocasiones en las que nos interesa ejecutar las instrucciones de un programa hasta una instruccin dada sin detenernos en las instrucciones intermedias. Una forma de hacerlo es la siguiente: Coloque el cursor al principio de la lnea con la instruccin en la que se desee detener la ejecucin. En este ejemplo coloque el cursor en la lnea con el ciclo if: if(tipoTelegrama == 'O' || tipoTelegrama == 'o') Para ejecutar la instruccin del programa resaltada seleccione del men principal la opcin Run/Run to Cursor o presione la tecla F4 Al hacerlo, el programa ejecutar las instrucciones hasta antes de la instruccin donde se encuentra el cursor. En este caso como hay instrucciones de lectura del teclado, el programa suspender la ejecucin hasta que se tecleen los valores pedidos. Teclee la cadena urgente para el tipo de telegrama y 7 para el nmero de palabras. Por ltimo el programa se detendr en la lnea seleccionada resaltndola. Inspeccione el valor de las variables. Corresponden a los valores tecleados? ______________________.

A continuacin podemos ejecutar el programa instruccin por instruccin presionando la tecla F8, ejecutar el programa hasta otra instruccin colocando el cursor al inicio de la lnea que tiene la instruccin y presionando la tecla F4, ejecutar el programa hasta el final o terminar la sesin de depurado como se vern a continuacin.

Ejecucin de un Programa Hasta el Final del Programa Hay ocasiones en las que nos interesa ejecutar las instrucciones de un programa hasta el final sin detenernos en las instrucciones intermedias. Por ejemplo, suponga que despus de verificar que los datos ledos estn correctos, deseamos ejecutar el programa hasta el final. Una forma de hacerlo es la siguiente: Seleccione del men principal la opcin Run/Continue o presione las teclas F5 Al hacerlo, el programa ejecutar hasta el final desplegando el resultado. es el valor esperado? ___________________. Otra forma de realizar la misma tarea es hacer clic sobre el icono Continue de la barra de tareas.

Terminacin de la Sesin de Depurado de un Programa Si ya no nos interesa ejecutar las instrucciones de un programa hasta el final, podemos terminar la sesin de depurado del programa. Por ejemplo, suponga que slo deseamos verificar que los datos ledos sean correctos, podemos terminar la sesin de depurado despus de la lectura de los datos. Una forma de hacerlo es la siguiente: Seleccione del men principal la opcin Run/Finish Debugger Session o presione las teclas Maysculas + F5 Al hacerlo, el programa terminar la sesin de depurado.

Otra forma de realizar la misma tarea es hacer clic sobre el icono Finish Debugger Session de la barra de tareas.

DEPURACIN DE PROGRAMAS CON NETBEANS (I) Dentro del proyecto anterior, crea una nueva clase llama Mayores, y copia el siguiente cdigo package EjemploDepurador; import java.util.Scanner; /** * Este programa lee las edades de los numAlumnoss de un grupo, * las almacena en un arreglo, calcula la edad promedio y cuenta * cuantos numAlumnos tienen una edad mayor que el promedio */ public class Mayores { public Mayores() { } public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int edades[] = new int[50]; int numAlumnos = 0; int sumaEdades = 0; double edadPromedio; int mayores = 0; while(true) { // Si ya no queda espacio en el arreglo de edades if(numAlumnos >= 50) { System.out.println("Arreglo de edades lleno!"); break; } // Lee una edad System.out.println("Edad del alumno " + (numAlumnos + 1) + "?, 0 para terminar"); edades[numAlumnos] = entrada.nextInt(); // Si el usuario teclea 0 en la edad if(edades[numAlumnos] == 0) { break; } // Acumula la edad del alumno sumaEdades += edades[numAlumnos]; // Incrementa el contador de alumnos numAlumnos++; } // Calcula la edad promedio edadPromedio = (double)sumaEdades/numAlumnos; // Para cada edad del arreglo for(int i = 0; i < numAlumnos; i++) {

// Si la edad mayor que la edad promedio if(edades[i] > edadPromedio) { // incrementa el contador del nmero de edades // mayores al promedio. mayores++; } } // Escribe el resultado System.out.println("La edad promedio es " + edadPromedio); System.out.println("Hay " + mayores + " alumnos con edad mayor que el promedio"); } }

Inspeccin de Variables El procedimiento para inspeccionar el valor de una variable descrito anteriormente, slo es vlido cuando la variable es simple y no puede aplicarse al caso de los arreglos. Para inspeccionar los valores de cualquier tipo de variable, NetBeans tiene un panel llamado Ventana de Inspeccin, en la que agregaremos a aquellas variables de las que deseemos inspeccionar sus valores. Conforme se va ejecutando el programa, NetBeans ir mostrando los valores que toman las variables en la ventana de inspeccin. Para agregar una variable a la ventana de inspeccin se sigue el siguiente procedimiento: Seleccione del men principal la opcin Run/New Watch o presione las teclas Ctrl + Maysculas + F7.

Aparecer un cuadro de dilogo para capturar el nombre de la variable que deseamos agregar a la ventana de inspeccin.

Teclee el nombre de la variable, edades en este caso y haga clic en el botn OK. Al hacerlo, la variable se agregar a la ventana de inspeccin que se encuentra en la parte inferior de la ventana de NetBeans Para facilitarnos la tarea anterior podemos colocar el cursor sobre el nombre de la variable que deseamos agregar a la ventana de inspeccin. Por ejemplo si colocamos el cursor sobre el nombre de la variable numAlumnos y seleccionamos del men principal la opcin Run/New Watch o presionamos las teclas Ctrl + Maysculas + F7 aparecer el cuadro de dilogo para capturar el nombre de la variable con el nombre de la variable ya escrito. Haga clic en el botn OK para agregar la variable a la ventana de inspeccin.

Repita los pasos anteriores para agregar a la ventana de inspeccin las variables sumaEdades, edadPromedio y mayores. Podemos eliminar una de las variables de la ventana de inspeccin haciendo clic con el botn derecho sobre el nombre de la variable en la ventana de inspeccin y seleccionando la opcin Delete del men emergente

Otra forma de eliminar una de las variables de la ventana de inspeccin es colocar el cursor sobre el nombre de la variable en la ventana de inspeccin y presionar la tecla Suprimir. Podemos eliminar todas las variables de la ventana de inspeccin haciendo clic con el botn derecho sobre el nombre de una de las variables en la ventana de inspeccin y seleccionando la opcin Delete All del men emergente

Puntos de Ruptura En ocasiones no estamos interesados en ejecutar un programa instruccin por instruccin sino que slo deseamos que el programa se detenga despus de ejecutar ciertas instrucciones y nos permita inspeccionar los valores de algunas variables. En esos casos podemos asignarle a esas instrucciones unas marcas llamadas puntos de ruptura que hacen que el programa se detenga antes de la ejecucin de dichas instrucciones. Para insertar un punto de ruptura en una instruccin se sigue el siguiente procedimiento: Coloque el cursor sobre la lnea en la que se encuentre la instruccin donde quiere un punto de ruptura, en este caso la instruccin es: numAlumnos++; Haga clic con el botn derecho y seleccione la opcin Toggle Breakpoint o presione las teclas Ctrl + F8 La lnea con el punto de ruptura aparece resaltada con el color rojo. Otra forma de establecer un punto de ruptura es hace clic sobre el margen izquierdo de la ventana de edicin a la altura de la instruccin en la que se

desea colocar el punto de ruptura. En este caso la instruccin es: mayores++; La lnea con el punto de ruptura aparece resaltada con el color rojo Para eliminar un punto de ruptura de una instruccin se repite el procedimiento empleado para establecerlo: pasos 1 y 2 o el paso 4.

Ejecucin de un Programa Desde el inicio del Programa Hasta el Primer Punto de Ruptura Para iniciar la ejecucin de un programa desde el principio hasta el primer punto de ruptura se sigue el siguiente procedimiento: Seleccione del men principal la opcin Run/Debug Main Project o presione la tecla Ctrl+F5.

Al hacerlo, el programa ejecutar las instrucciones hasta antes de la instruccin donde se encuentra el punto de ruptura. En este caso como hay una instruccin de lectura del teclado, el programa suspender la ejecucin hasta que se teclee el valor pedido. Teclee 20 como el valor de la edad del primer alumno. El programa se detendr en la lnea con el punto de ruptura Los valores de las variables aparecern en la ventana de inspeccin. Note que el nodo de la variable edades aparece con un signo (+). Como es un arreglo, podemos expandir el nodo para mostrar los valores de los elementos del arreglo haciendo clic sobre el signo (+).

Escriba los valores de las variables en la ventana de inspeccin en la tabla siguiente:

numAlumnos

edades[numAlumnos]

sumEdades

A continuacin podemos ejecutar el programa instruccin por instruccin presionando la tecla F8, ejecutar el programa hasta otra instruccin colocando el cursor al inicio de la lnea que tiene la instruccin y presionando la tecla F4 o ejecutar el programa hasta el siguiente punto de ruptura como se ver a continuacin.

Ejecucin de un Programa Hasta el Siguiente Punto de Ruptura Para ejecutar un programa desde un punto de ruptura hasta el siguiente punto de ruptura se sigue el siguiente procedimiento: Seleccione del men principal la opcin Run/Continue o presione las teclas F5 Como el primer punto de ruptura est en una instruccin dentro de un ciclo while, el siguiente punto de ruptura estar en la misma instruccin mientras se siga en el ciclo. Por lo tanto el programa ejecutar una iteracin y se detendr en la misma instruccin. Recuerde que como hay una instruccin de lectura del teclado, el programa suspender la ejecucin hasta que se teclee el valor pedido, Teclee 21 como el valor de la edad del segundo alumno.

Escriba los valores de las variables en la ventana de inspeccin en la tabla anterior Repita los pasos para capturar las siguientes edades: 22, 23, 24 y 0. ste ltimo valor sirve para indicar que ya no hay ms edades a capturar. El programa detendr su ejecucin en el segundo punto de ruptura Inspeccione las variables y anote sus valores en la tabla siguiente:

numAlumnos

edadPromedio

Repita los pasos para ejecutar cada una de las iteraciones del segundo ciclo. En cada iteracin observe las variables de la ventana de inspeccin y anote sus valores en la tabla siguiente:

i 0 1 2 3 4

edades[i]

edadPromedio

mayores

El programa termina su ejecucin desplegando sus resultados