1. AP1 – Unidad 4
Londero josé
Estructura general de un programa en Java. Creación, ejecución,
depuración y prueba de un programa en Java
Un programa Java se compone de una o más clases. Uno de los métodos de la clase
principal debe ser obligatoriamente main( ). Un método en Java es un grupo de
instrucciones que realizan una o más acciones. Asimismo, un programa contendrá una
serie de declaraciones import que permitirán incluir en el mismo, archivos que a su vez
incluyen clases y datos predefinidos.
import java.io* ; // archivo de clases de entrada / salida
public class NombrePrograma // nombre de la clase principal
{
public static void main (String [ ] ar) // cabecera del método
{
// nombre del método
… // sentencias
}
…
}
De un modo más explícito, un programa Java puede incluir:
Declaraciones para importar clases de paquetes.
Declaraciones de clases.
El método main ( ).
Métodos definidos por el usuario dentro de las clases.
Comentarios del programa (utilizados en su totalidad).
Declaración import
Las clases de Java se agrupan en paquetes (package), a su vez éstos definen
utilidades o grupos temáticos. Los paquetes se encuentran en directorios del disco que
tienen el mismo nombre que el paquete. Para incorporar y utilizar las clases de un
paquete en un programa se utiliza la declaración import.
La sintaxis de la declaración import es:
nombreClase es el identificador de una clase del paquete.
- Declaraciones de clases
Un programa en Java está organizado como una colección de clases. El programa
debe tener al menos una clase, que puede ser considerada como la clase principal,
con el método main ( ), y si es necesario otros métodos y variables. La declaración de
una clase puede empezar con una palabra clave, que generalmente indica el acceso y
es opcional; a continuación sigue el indicador de clase, la palabra reservada class, a la
que le sigue el nombre de la clase y los miembros de la clase: variables y métodos.
class Potencia
{
public static void main (String [ ] ar)
{
int r, e ;
int numero, p ;
numero = 4;
e = 3;
r = 1;
for (p=3 ; p > 0; p = p-1)
r = r*numero ;
2. System.out.println (“La potencia de ” + numero + “^” + e + “=” + r) ;
}
}
El archivo donde se guarde el programa anterior debe tener como nombre
Potencia.java.
Siempre el nombre del archivo fuente ha de ser el nombre de la clase principal (
clase que contiene a main ( ) ) y la extensión java.
- El método main ( )
Cada programa Java tiene un método main ( ) que es un punto inicial de entrada al
programa. Su estructura es:
public static void main (String [ ] ar)
{
… bloque de sentencias
}
Las sentencias incluidas entre las llaves { …} se denominan bloque. Un programa
debe tener solamente un método main ( ). Si se intenta hacer dos métodos main ( ), se
produce un error, aunque estén escritas en diferentes clases.
El argumento de main( ) es un array de cadenas de caracteres (una lista de cadenas
de caracteres) que posibilitan poder introducir datos en forma de cadenas de
caracteres en la línea de ejecución del programa Java.
Un método en Java es un subprograma que devuelve un único
valor, un conjunto de valores o realiza alguna tarea específica tal como
E/S, debe estar dentro de una clase.
- Métodos definidos por el usuario
Todos los programas se construyen a partir de una o más clases, y a su vez éstas con
una serie de variables y métodos que se integran para crear una aplicación. Todos los
métodos contienen una o más sentencias Java y se crean generalmente para realizar
una única tarea, tales como imprimir en la pantalla, escribir un archivo o cambiar el
color de la pantalla. Se pueden declarar un número de métodos casi ilimitado en una
clase de Java.
Los métodos definidos por el usuario se invocan, dentro de la clase donde se definen,
por su nombre y los parámetros que puedan tener. Después de que el método se
invoca, el código que tiene asociado se ejecuta y, a continuación, se retorna al método
llamador. Si la llamada es desde un objeto de la clase, se invoca al método precedido
del objeto y el selector punto (.).
- Comentarios
Un comentario es cualquier información que se añade en las líneas del programa para
proporcionar información de cualquier tipo. El compilador ignora los comentarios, no
realiza ninguna tarea concreta. El uso de comentarios es totalmente opcional, aunque
dicho uso es muy recomendable.
Generalmente se considera buena práctica de programación comentar sus programas
tanto como sea posible, con el objeto de que usted mismo y otros programadores
puedan leer fácilmente el programa con el paso del tiempo. Es buena práctica de
programación comentar su programa en la parte superior de cada archivo fuente. La
información que se suele incluir, es el nombre del archivo, el nombre del programador,
3. una breve descripción, la fecha en que se creó la versión y la información de la
revisión.
En Java, los comentarios de un programa se pueden introducir de dos formas:
Con los caracteres / * … */ para más de una línea;
Con la secuencia de dos barras, / /, para comentarios en línea.
Comentarios con / * * /
- Creación de un programa en JAVA
Una vez creado un programa en Java como el anterior, se debe ejecutar. ¿Cómo
realizar esta tarea? Los pasos a dar dependerán del compilador Java que utilice. En
general, los pasos serían:
Utilizar un editor de texto para escribir el programa y grabarlo en un archivo.
Este archivo constituye el código fuente de un programa.
Compilar el código fuente. Se traduce el código fuente en un código entendible por el
computador, en lenguaje máquina. El compilador Java traduce el código fuente de un
programa no exactamente en código máquina, sino en un código intermedio llamado
Byte Code, y lo guarda con el mismo nombre del programa y la extensión class
(.class). Un archivo .class con código Byte Code es independiente de la arquitectura
del computador y contiene instrucciones del programa en forma empaquetada, para
que pueda ser ejecutado en una máquina que tenga un intérprete Java, en lo que se
denomina Máquina Virtual de Java.
Ejecución. La Máquina Virtual interpreta el archivo .class con código Byte Code.
Primero carga en memoria el archivo .class. En segundo lugar se encarga de verificar
que el código cargado no va a violar las restricciones de seguridad de Java (violación
de memoria…). Por último, ejecuta cada una de las instrucciones generadas en Byte
Code.
Para crear un programa se utilizan las siguientes etapas:
1. Especificar la clase o clases de su programa.
2. Indicar las clases de los paquetes ya definidos a utilizar.
3. Definir la clase que va a contener al método main ( ).
4. Crear main( ).
5. Crear el cuerpo del programa.
6. Crear sus propias clases, métodos definidos por el usuario.
7. Compilar, ejecutar y comprobar su programa.
8. Utilizar comentarios.
- Ejecución de un programa en Java
Un programa de computadora escrito en un lenguaje de programación (por ejemplo,
Java) tiene forma de un texto ordinario. Se escribe el programa en una hoja de papel y
a este programa se le denomina programa texto o código fuente. Considérese el
ejemplo sencillo:
4. class OtroSaludo
{
public static void main (String [ ] ar)
{
System.out.println (“Hola Anita ” + ar [ 0 ] ) ;
}
}
La primera operación en el proceso de ejecución de un programa es introducir las
sentencias (instrucciones) del programa en un editor de texto. El editor almacena el
texto y debe proporcionarle un nombre igual que el de la clase: OtroSaludo.java. A
continuación se debe guardar el texto en disco para su conservación y uso posterior,
ya que en caso contrario el editor sólo almacena el texto en memoria central (RAM) y
cuando se apague la computadora, o bien ocurra alguna anomalía, se perderá el texto
de su programa. Sin embargo, si el texto del programa se almacena en un disquete, en
un disco duro, o bien en un CD-ROM, el programa se guardará de modo permanente,
incluso después de apagar la computadora y siempre que esta se vuelva a arrancar.
Con la ayuda de un editor de texto se puede editar el texto fácilmente, es decir,
cambiar, mover, cortar, pegar, borrar texto. Se puede ver, normalmente, una parte de
texto en la pantalla y se pueden marcar partes del texto a editar con la ayuda de un
ratón o el teclado. El modo de funcionamiento de un editor de texto y las órdenes de
edición asociadas varían de un sistema a otro. Una vez editado un programa, se le
proporciona un nombre y extensión: .java.
La siguiente etapa es la de compilación. En ella se importan las clases de los
packages indicados, se analiza la sintaxis del programa y se traduce el código fuente
escrito en lenguaje Java a un código especial de Java, se denomina Byte Code y el
archivo donde se guarda tiene el mismo nombre que el del programa y la extensión
.class. Este código todavía no es código ejecutable; tiene la gran ventaja de que es un
código neutral, no dependiente de la máquina o arquitectura del ordenador. El
programa que realiza esta traducción se llama compilador. Cada compilador se
construye para un determinado lenguaje de programación.
Una vez compilado, la ejecución se realiza en la Máquina Virtual Java, una estructura
lógica que realiza básicamente tres tareas:
Cargar el archivo Byte Code en memoria del ordenador.
El procesador busca el archivo indicado en el disco y lo carga en memoria principal.
Verificar que el código cargado no va a violar las restricciones que impone Java:
violación de memoria… De esta forma se asegura que la ejecución del programa no va
a afectar negativamente, por ejemplo, a la red.
Ejecutar cada instrucción del archivo Byte Code. Aunque puede parecer un proceso
lento, al ser un intérprete quien ejecuta, hay que tener en cuenta que no se interpretan
sentencias de código fuente, sino instrucciones ya compactadas por el compilador.
Actualmente se han desarrollado procesadores para crear código máquina o nativo a
partir del Byte Code.
- Depuración de un programa en Java
5. Rara vez los programas funcionan bien la primera vez que se ejecutan. Los errores
que se producen en los programas han de ser detectados, asilados (fijados) y
corregidos. El proceso de encontrar errores se denomina depuración del programa.
La corrección del error es probablemente la etapa más fácil, siendo la detección y el
aislamiento del error las tareas más difíciles.
Existen diferentes situaciones en las cuales se suelen introducir errores en un
programa. Dos de las más frecuentes son:
1. Violación (no cumplimiento) de las reglas gramaticales del lenguaje de alto nivel en
el que se escribe el programa.
2. Los errores en el diseño de clases y del algoritmo en el que está basado el
programa.
Cuando el compilador detecta un error, visualiza un mensaje de error indicando que se
ha cometido un error y posible causa del error. Desgraciadamente, los mensajes de
error son difíciles de interpretar y a veces se llega a conclusiones erróneas. A medida
que se gana en experiencia, el proceso de puesta a punto de un programa se mejora
considerablemente.
Nuestro objetivo es describir los errores que ocurren más frecuentemente y sugerir las
posibles causas de error, junto con reglas de estilo de escritura de programas. Desde
el punto de vista conceptual existen tres tipos de errores: de sintaxis, lógicos y de
regresión.
- Errores de sintaxis
Los errores de sintaxis son aquellos que se producen cuando el programa viola la
sintaxis, es decir, las reglas de gramática del lenguaje. Errores de sintaxis típicos son:
escritura incorrecta de palabras reservadas, omisión de signos de puntuación
(comillas, punto y coma…). Los errores de sintaxis son los más fáciles de fijar, ya que
ellos son detectados y aislados por el compilador.
Estos errores se suelen detectar por el compilador durante el proceso de compilación.
Algunos errores típicos (ya citados anteriormente):
Punto y coma después de la cabecera main ( ).
Omisión de punto y coma al final de una sentencia.
Olvido de la doble barra inclinada antes de un comentario.
Olvido de las dobles comillas al cerrar una cadena.
Utilización de palabras reservadas como identificadores.
- Errores lógicos
Un segundo tipo de error importante es el error lógico, ya que tal error representa
errores del programador en el diseño del algoritmo que se implementa con un método
y posteriormente el programa. Los errores lógicos son más difíciles de encontrar y
aislar, ya que no suelen ser detectados por el compilador.
Errores de regresión
Los errores de regresión son aquellos que se crean accidentalmente cuando se
intenta corregir un error lógico. Siempre que se corrige un error se debe comprobar
totalmente la exactitud (corrección) para asegurarse que se fija el error que se está
tratando y no produce otro error. Los errores de regresión son comunes, pero son
fáciles de leer y corregir.
- Mensajes de error
Los compiladores emiten mensajes de error o de advertencia durante las fases de
6. compilación o de ejecución de un programa.
Los mensajes de error producidos durante la compilación se suelen producir,
normalmente, por errores de sintaxis, y suelen variar según los compiladores; pero, en
general, se agrupan en tres grandes bloques:
Errores fatales. Son raros. Algunos de ellos indican un error interno del compilador.
Cuando ocurre un error fatal, la compilación se detiene inmediatamente, se debe
tomar la acción apropiada y a continuación se vuelve a iniciar la compilación.
Errores de sintaxis. Son los errores típicos de sintaxis, errores de línea de órdenes
y errores de acceso a memoria o disco. El compilador terminará la fase
actual de compilación y se detiene.
Advertencias (warning). No impiden la compilación. Indican condiciones que son
sospechosas, pero son legítimas como parte del lenguaje.
- Errores en tiempo de ejecución:excepciones
Existen dos tipos de errores en tiempo de ejecución: aquellos que son detectados por
el sistema en tiempo de ejecución de Java y aquellos que permiten la terminación del
programa, pero producen resultados incorrectos.
- Prueba
Los errores de ejecución ocurren después de que el programa se ha compilado con
éxito y aún se está ejecutando.
Muchos errores en tiempo de ejecución tienen que ver con los cálculos numéricos.
Para determinar si un programa contiene un error lógico se debe ejecutar utilizando
datos de muestra y comprobar la salida verificando su exactitud. Esta prueba (testing)
se debe hacer varias veces utilizando diferentes entradas, preparadas – en el caso
ideal – por personas diferentes al programador, que puedan indicar suposiciones no
evidentes en la elección de los datos de prueba.