You are on page 1of 11

Practica 1: Netbeans Asignatura de Programacin Licenciatura de Linguistica y Nuevas Tecnologias El objetivo de esta practica es familiarizarse con el entorno Netbeans

y sus funcionalidades ms bsicas, adems de hacer un repaso de algunos de los conceptos Java aprendidos en la asignatura Fundamentos de Programacin. Tambin se aprender como depurar (hacer debugging) un programa para resolver problemas que ocurren durante la ejecucin. Aprender a depurar programas con Netbeans es fundamental para esta asignatura. Entrega Todas las practicas de la asignatura con su cdigo fuente se tienen que guardar siempre en una carpeta llamada practicas. Cada practica tiene su propia subcarpeta llamada p1, p2, p3, etc. (en minsculas). Esta organizacin permitir la compilacin correcta del cdigo. Modo de entrega: En un fichero comprimido (.zip o .rar) cuyo nombre es el NIA del estudiante (e.g. 123456.zip), entregar las respuestas a las preguntas 1 a 10 en un fichero (.txt o .odt o .pdf o .doc) adems de los programas Lletres.java y Hola2.java con todas las modificaciones pedidas. Mandar el fichero a nadjet.bouayad@upf.edu y poner como asunto la nica palabra: P1 para permitir un filtraje automtico. Fecha de entrega: Jueves 24/04/2008 a 23h59. Las practicas se pueden hacer slo o en pareja. Descarga de Netbeans Para descargar Netbeans y Java desde casa, lo mejor es descargarlos en una sola instalacin:

http://java.sun.com/javaee/downloads/index.jsp
Seleccionar Java EE + JDK. Nota: esta practica se ha preparado para Netbeans 5.5, pero en principio vale tambin para Netbeans 6. 1. Crear cdigo fuente Seguir el tutorial de Netbeans Quick Start Guide para crear el programa HelloWorldApp.java, compilar y ejecutar el programa.

http://www.netbeans.org/kb/60/java/quickstart.html
2. Crear un proyecto con cdigo fuente existente En Netbeans, el cdigo (es decir todas las clases utilizadas en un programa) se pone dentro de un proyecto. Vamos a crear un proyecto a partir de las clases que usamos para p1. 1. Decomprimir p1.zip dentro de la carpeta practicas/p1. Los ficheros (i.e., las clases que usamos para p1) tienen que estar ubicados directamente bajo esta carpeta. 2. Abrir Netbeans. 3. Seleccionar File, despus New Project... 4. Aparece la pantalla con titulo Choose Project: Categories General, Projects Java Project with Existing Sources. Pulsar el botn Next >. 5. Aparece la pantalla con titulo Name and Project. Poner como Project Name el nombre p1. Poner como Project Folder el camino siguiente desde la carpeta practicas: nbprojects/p1. Hay que tener el proyecto seleccionado como proyecto principal (Set as Main Project). Ver la figura.

Pulsar Next >.

6. Aparece la pantalla con titulo Existing Sources. Bajo Source Package Folder, pulsar Add folder.... Elegir la carpeta practicas/p1 que contiene los ficheros fuentes. Ver la figura. Pulsar Finish.

Hemos creado un proyecto llamado p1. Bajo la carpeta practicas, tenemos la carpeta nbprojects que contendr todos los ficheros creados Netbeans (nb=netbeans) . En particular, la subcarpeta build/classes de nbprojects, creada automticamente, contendr todos los ficheros *.class (es decir la compilacin de *.java). Haciendo doble click sobre Lletres.java en la tabulacin Projects, se puede visualizar el contenido del fichero en la ventana derecha (ver la figura). A la derecha de todos los ficheros *.java aparece una marca roja que indica que el fichero no ha sido compilado.

Pregunta 1: Cuantas marcas tipogrficas distintas aparecen dentro del programa Lletres.java. A qu corresponde cada una? Por ejemplo, los errores sintcticos aparecen subrayados en rojo. (1 punto) 1) negrita: mtodos 2) gris cursiva: comentarios 3) azul: palabras claves 4) subrayado rojo: errores sintcticos 5) verde: literales caracteres 6) rojo/violeta: literales string 7) Sin marcas tipogrficas distintas: resto del programa

3. Compilar un programa Dentro de Lletres.java, compilar con F9 (o utilizar el men Build > Compile). Aparecen mensajes de compilacin dentro de la ventana Output. Pregunta 2: Corregir los errores y volver a compilar. (1.5 punto) 1. Omitir una llave }. 2. Usar una comilla doble para un carcter en vez de una comilla simple. 3. Omitir la comilla doble que seala el final de un String. Ver el programa Lletres_Correccion.java

Nota 1: Para compilar todo el proyecto, poner el cursor sobre p1 dentro de Projects, pulsar el botn derecho e elegir Build. Nota 2: Si no aparece la ventana de Output que muestra los mensajes de compilacin y ejecucin, seleccionarla a partir de Window > Output. 4. Ejecutar y depurar un programa Compilar y ejecutar Lletres.java, ejecutarlo pulsando F6 (o utilizar el men Run > Run main project, o pulsar el bton derecho sobre el proyecto p1 y seleccionar Run project). Aparece una ventana que pide elegir cul es la clase principal, elegir Lletres. Ver figura.

Aparece la consola de TextIO, al entrar una frase y pulsar return, se produce un error de ejecucin que aparece en la ventana de Output:

El mensaje pone que el error se produce a la lnea 17 de Lletres. Se puede ir a cualquiera lnea de un fichero pulsando Ctrl+G e introduciendo el nmero de la lnea, o simplemente haciendo click sobre el mensaje de error con el nmero de lnea: at Lletres.main (Lletres.java:17). (El mensaje dice que hay un error en el mtodo main de Lletres, a la lnea 17) Vamos a ejecutar el programa paso a paso para detectar el problema: Pulsar F7 para ejecutar el programa paso a paso. Aparece el cursor en la primera lnea del mtodo main, que es donde empieza la ejecucin de Lletres.java. Una vez la sesin empezada, pulsar F8 para ir paso a paso pero sin entrar dentro de los mtodos. Se puede ver el contenido de las variables utilizadas en cada momento por el programa. Elegir el men Window > Debugging > Local Variables, como muestra el circulo azul en la figura de abajo. El crculo rojo muestra la ventana de navigacin de la clase: muestra todos los mtodos disponibles de la clase en orden alfabtico. Pulsando sobre un mtodo, se salta directamente a ste.

Tambin se pueden utilizar los siguientes iconos para depurar:

Step over (F8) Step into (F8) Step out (Ctrl+F7) Run to cursor (F4)

Para pasar a la instruccin siguiente sin entrar dentro por ejemplo del mtodo llamado como TextIO.println (es decir que saltamos la ejecucin de TextIO.println) Entramos en la ejecucin del mtodo llamado. Si hacemos esto cuando estamos sobre TextIO.println, entraremos en el mtodo println de la clase TextIO. Si hemos entrado en la ejecucin de un mtodo y queremos salir de esta.

La ejecucin salta a donde esta el cursor. Probar con el cursor sobre el principio del bucle: while (contador <= longitud). A cada F4, cambian los valores de las variables, porque corresponde a un ciclo del bucle. Finish debugger Parar la ejecucin del programa (en modo depuracin) en session cualquier momento. Es importante no tener varias sesiones de (Maysculas+F5) depuracin abiertas al mismo tiempo (que eso hace que Netbeans se ponga lento y pesado).

Pregunta 3: Ejecutar el programa y mirando el valor de las variables longitud, contador, carcter durante la ejecucin paso a paso (con F7 y F8), encontrar qu provoca el error y corregirlo. Se valorar la claridad y formalidad de la explicacin. (1.5 punto) El error era la prueba (contador <= longitud). Los indices van de 0 a longitud-1. La prueba tendra que ser (contador < longitud).

5. Ms depuracin Adems de errores sintcticos (donde el programa no compila) y errores de ejecucin (o run-time errors, donde el programa compila pero no ejecuta), un programa puede padecer errores semnticos (donde el programa ejecuta, pero no como queremos o pensabamos o teniendo un efecto no deseado). Estos son los ms dificiles a detectar. Ejecutar el programa con la frase Hola. (con el punto final). El resultado no es correcto teniendo en cuenta que el programa Lletres cuenta todos los caracteres que hay en una frase. Adems de seguir paso a paso la ejecucin de un programa, otra forma de depurarlo es imprimir los resultados intermedios en algunos puntos sensibles del programa.

Pregunta 4: Aadir: System.out.println(Vocal: + caracter); dentro del primer condicional, y: System.out.println(Consonant: + caracter); dentro del segundo condicional. A qu se debe el error semntico? Corregirlo modificando el programa. (1 puntos) El primer if prueba si el carcter es una vocal, y si no, entonces dice que es una consonante. Aparte de ser una vocal, el carcter podra ser un nmero, simbolo de puntacin, etc. Vease la correccin en el programa adjuntado.

6. Auto-complecin de mtodos Aadir el mensaje Adis al final del programa. Al entrar TextIO., aparece la lista de mtodos disponibles dentro de TextIO. Pregunta 5: No todos los mtodos declarados dentro de TextIO son visibles desde Lletres. Cual es el punto comn de los mtodos de TextIO que son visibles desde Lletres, y cual es el punto comn de los mtodos de TextIO que no son visibles desde Lletres? (1 puntos) Todos los mtodos de TextIO que aparecen dentro de Lletres al entrar TextIO. tienen la palabra clave public delante, mientras los mtodos de TextIO que no aparecen en esta lista tienen la palabra clave private o protected, es decir que no son accesibles fuera de la clase que les define. Son de uso interno. Pregunta 6: trasladar el contenido del cdigo que se encarga de hacer los clculos a un mtodo con nombre lletres llamado desde main. Observar como aparece el nombre del mtodo en la lista de mtodos . (1 puntos) Ver Lletres_Correccin.java A notar que un mtodo solo puede devolver un valor, o sea que no podemos devolver el nmero de consonantes y el nmero de vocales desde el mismo mtodo. En la correccin, hemos elegido no devolver nada e imprimir directamente los resultados en el mtodo. 7. Ms depuracin Para ejecutar paso a paso pero desde algn punto determinado del programa, hay que introducir un break-point. Se puede hacer esto haciendo doble-click con el ratn el la zona vertical griscea ue hay justo a la izquierda del programa. Aparecer un marcador de color rosa:

Pregunta 7: Poner un break-point en algn punto del programa. Despus, pedir al depurador que prosiga la ejecucin sin el paso a paso con F4 (Run to cursor). Ver como el debugger parar al break-point. (0.5 punto) Nota: Para quitar el break-point, volver a hacer doble-click sobre el cuadrado rosa en la zona griscea. 8. Argumentos de entrada desde Netbeans Hacer doble click sobre Hola.java en la tabulacin Projects para abrir el fichero Hola.java. El mtodo main de esta clase contiene la siguiente nica instruccin: System.out.println("Hola "+args[0]); El mtodo main tiene como argumento de entrada una tabla de cadenas (String). Estos argumentos de entrada se pueden especificar antes de ejecutar el programa. Haciendo clic con el botn derecho del ratn sobre P1 en la ventanilla de los proyectos, seleccionar Properties y luego abajo de todo Run, como muestra la figura. Introducir como clase principal (Main class), es decir la clase a ejecutar el nombre de la clase Hola. Introducir en arguments un argumento de entrada, por ejemplo nadjet. Este primer argumento corresponde a args[0], es decir es el primer elemento de la tabla args. Se accede con el ndice 0. Al ejecutar el programa, se imprime: Hola nadjet. Pregunta 8: Qu pasa a la ejecucin de Hola.java si no ponemos ningn argumento en la ventanilla Run? (1 punto) Se produce un error de ejecucin (excepcin) y se imprime: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Hola.main(Hola.java:4) Esto se debe al intentar utilizar un argumento de la tabla cuando est es vaca (ArrayIndexOutOfBoundsException = excepcin debido a que el ndice de la tabla/array est fuera de rango). Pregunta 9: Escribir otro programa Hola2.java que coge dos argumentos de entrada e imprime nombre e apellido. Compilar e ejecutar con los dos argumentos. Mostrar impresiones de pantalla. (1 punto) Ver Hola2.java

9. Argumentos de entrada desde la ventanilla cmd (MS-DOS) Tambin podemos compilar y ejecutar un programa desde la ventanilla cmd. Abrirla tecleando cmd en el campo Abrir: de la ventanilla de ejecucin abierta desde Inicio > EjecutarSe abre la siguiente ventanilla:

El prompt pone C:\Documents and Settings\Nedjet> que significa que estamos en la particin C: del disco duro, carpeta Documents and Settings y subcarpeta Nedjet. Para cambiar de carpeta, usamos el comando cd (change directory). Escribir cd (con espacio). Luego dentro de Windows Explorer, ir a la carpeta p1 de la practica e arrastrar el cono (mostrado con el circulo rojo en la figura de abajo) de esta carpeta hasta la ventanilla cmd donde se ha entrado cd .

Se pondr de forma automtica el camino completo de la carpeta p1:

Y al teclear enter se cambiar la carpeta:

Para mirar el contenido de la carpeta, entrar dir (por directory = carpeta). Ahora podemos compilar y ejecutar el programa Hola.java. Para compilar, entrar javac Hola.java, si no devuelve nada significa que ha compilado el programa. Al entrar dir, notaremos la presencia del fichero Hola.class recin creado. Para ejecutar, entrar java Hola nadjet, o sea que los argumentos de entrada vienen despus del nombre del programa. Pregunta 10: Hacer una impresin de pantalla de la ejecucin de Hola.java con y sin argumento de entrada desde la ventana cmd. (0.5 punto) Ver a continuacin las impresiones de pantalla. A notar que Hola.java no est dentro de un paquete (la clase no empieza por package ) o sea que podemos ejecutar desde la misma carpeta desde donde compilamos, simplemente entrando el nombre de la clase. Nota: para ms informacin sobre comandos de MS-DOS, mirarse el siguiente tutorial: http://burks.brighton.ac.uk/burks/pcinfo/osdocs/dosintro.htm

You might also like