Download http://java.sun.com/javaee/downloads/index.jsp http://www

Document related concepts
no text concepts found
Transcript
Practica 1: Netbeans
Asignatura de Programación
Licenciatura de Linguistica y Nuevas Tecnologias
El objetivo de esta practica es familiarizarse con el entorno Netbeans y sus funcionalidades más
básicas, además de hacer un repaso de algunos de los conceptos Java aprendidos en la
asignatura “Fundamentos de Programación”.
También se aprenderá como depurar (hacer debugging) un programa para resolver problemas
que ocurren durante la ejecución. Aprender a depurar programas con Netbeans es fundamental
para esta asignatura.
Entrega
Todas las practicas de la asignatura con su código fuente se tienen que guardar siempre en una
carpeta llamada “practicas”. Cada practica tiene su propia subcarpeta llamada p1, p2, p3, etc. (en
minúsculas). Esta organización permitirá la compilación correcta del código.
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) además de los programas Lletres.java y Hola2.java con todas las modificaciones pedidas.
Mandar el fichero a [email protected] y poner como asunto la única palabra: P1 para
permitir un filtraje automático.
Fecha de entrega: Jueves 24/04/2008 a 23h59.
Las practicas se pueden hacer sólo o en pareja.
Descarga de Netbeans
Para descargar Netbeans y Java desde casa, lo mejor es descargarlos en una sola instalación:
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 también para
Netbeans 6.
1. Crear código 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 código fuente existente
En Netbeans, el código (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”, después “New Project...”
4. Aparece la pantalla con titulo “Choose Project”: Categories “General”, Projects “Java Project
with Existing Sources”. Pulsar el botón “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 automáticamente, contendrá todos los
ficheros *.class (es decir la compilación de *.java).
Haciendo doble click sobre Lletres.java en la tabulación “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 tipográficas distintas aparecen dentro del programa Lletres.java.
¿A qué corresponde cada una? Por ejemplo, los errores sintácticos aparecen subrayados en
rojo.
3. Compilar un programa
Dentro de Lletres.java, compilar con F9 (o utilizar el menú Build > Compile). Aparecen mensajes
de compilación dentro de la ventana “Output”.
Pregunta 2: Corregir los errores y volver a compilar.
Nota 1: Para compilar todo el proyecto, poner el cursor sobre “p1” dentro de “Projects”, pulsar el
botón derecho e elegir “Build”.
Nota 2: Si no aparece la ventana de “Output” que muestra los mensajes de compilación y
ejecución, 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 bóton derecho sobre el proyecto “p1” y seleccionar “Run project”). Aparece una
ventana que pide elegir cuál 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
ejecución que aparece en la ventana de Output:
El mensaje pone que el error se produce a la línea 17 de Lletres. Se puede ir a cualquiera línea de
un fichero pulsando Ctrl+G e introduciendo el número de la línea, o simplemente haciendo click
sobre el mensaje de error con el número de línea: at Lletres.main (Lletres.java:17). (El mensaje
dice que hay un error en el método main de Lletres, a la línea 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 línea del
método “main”, que es donde empieza la ejecución de Lletres.java.
–
Una vez la sesión empezada, pulsar F8 para ir paso a paso pero sin entrar dentro de los
métodos.
–
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 círculo rojo muestra la ventana de navigación de la clase: muestra todos los métodos
disponibles de la clase en orden alfabético. Pulsando sobre un método, se salta directamente a
éste.
También se pueden utilizar los siguientes iconos para depurar:
Step over (F8)
Step into (F8)
Step out
(Ctrl+F7)
Para pasar a la instrucción siguiente sin entrar dentro por ejemplo
del método llamado como TextIO.println (es decir que saltamos la
ejecución de TextIO.println)
Entramos en la ejecución del método llamado. Si hacemos esto
cuando estamos sobre TextIO.println, entraremos en el método
println de la clase TextIO.
Si hemos entrado en la ejecución de un método y queremos salir
de esta.
Run to cursor
(F4)
La ejecución 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 ejecución del programa (en modo depuración) en
session
cualquier momento. Es importante no tener varias sesiones de
(Mayúsculas+F5) depuración 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, carácter
durante la ejecución paso a paso (con F7 y F8), encontrar qué provoca el error y corregirlo. Se
valorará la claridad y formalidad de la explicación.
5. Más depuración
Además de errores sintácticos (donde el programa no compila) y errores de ejecución (o run-time
errors, donde el programa compila pero no ejecuta), un programa puede padecer errores
semánticos (donde el programa ejecuta, pero no como queremos o pensabamos o teniendo un
efecto no deseado). Estos son los más 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.
Además de seguir paso a paso la ejecución de un programa, otra forma de depurarlo es imprimir
los resultados intermedios en algunos puntos sensibles del programa.
Pregunta 4: Añadir:
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 semántico?
Corregirlo modificando el programa.
6. Auto-compleción de métodos
Añadir el mensaje “Adiós” al final del programa. Al entrar “TextIO.”, aparece la lista de métodos
disponibles dentro de TextIO.
Pregunta 5: No todos los métodos declarados dentro de TextIO son visibles desde Lletres.
¿Cual es el punto común de los métodos de TextIO que son visibles desde Lletres, y cual es el
punto común de los métodos de TextIO que no son visibles desde Lletres?
Pregunta 6: trasladar el contenido del código que se encarga de hacer los calculos a un método
con nombre lletres llamado desde main. Observar como aparece el nombre del método en la lista
de métodos .
7. Más depuración
Para ejecutar paso a paso pero desde algún punto determinado del programa, hay que introducir
un “break-point”. Se puede hacer esto haciendo doble-click con el ratón el la zona vertical grisácea
ue hay justo a la izquierda del programa. Aparecerá un marcador de color rosa:
Pregunta 7: Poner un break-point en algún punto del programa. Después, pedir al depurador que
prosiga la ejecución sin el paso a paso con F4 (“Run to cursor”). Verá como el debugger parará al
break-point.
Nota: Para quitar el break-point, volver a hacer doble-click sobre el cuadrado rosa en la zona
grisácea.
8. Argumentos de entrada desde Netbeans
Hacer doble click sobre Hola.java en la tabulación “Projects” para abrir el fichero Hola.java. El
método main de esta clase contiene la siguiente única instrucción:
System.out.println("Hola "+args[0]);
El método 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
botón derecho del ratón 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 ejecución de Hola.java si no ponemos ningún argumento en la
ventanilla “Run”?
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.
9. Argumentos de entrada desde la ventanilla cmd (MS-DOS)
También podemos compilar y ejecutar un programa desde la ventanilla cmd. Abrirla tecleando
“cmd” en el campo “Abrir:” de la ventanilla de ejecución abierta desde Inicio > Ejecutar…Se abre la
siguiente ventanilla:
El “prompt” pone C:\Documents and Settings\Nedjet> que significa que estamos en la partición 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 automática 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 recién creado. Para ejecutar, entrar “java Hola nadjet”, o sea que los argumentos de
entrada vienen después del nombre del programa.
Pregunta 10: Hacer una impresión de pantalla de la ejecución de Hola.java con y sin argumento
de entrada desde la ventana cmd.
Nota: para más información sobre comandos de MS-DOS, mirarse el siguiente tutorial:
http://burks.brighton.ac.uk/burks/pcinfo/osdocs/dosintro.htm