Libro Java

UNIVERSIDAD CONTINENTAL DE CIENCIAS E INGENIERIA PROGRAMACIÓN JAVA MG. RUBÉN GALEAS ARANA HUANCAYO – PERU 2006 CAPÍT

Views 51 Downloads 0 File size 5MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD CONTINENTAL DE CIENCIAS E INGENIERIA

PROGRAMACIÓN JAVA

MG. RUBÉN GALEAS ARANA HUANCAYO – PERU 2006

CAPÍTULO I PROGRAMACIÓN ORIENTADA A OBJETOS 1.1 INTRODUCCIÓN. Un programa tradicional, que sigue el paradigma estructurado, se basa fundamentalmente en la ecuación de Wirth: Algoritmos + Estructuras de Datos = Programas Esta ecuación se interpreta como que los algoritmos y los datos se tratan por separado. De esta forma las funciones o procedimientos que tratan estos datos los van procesando y pasando de unos a otros hasta obtener el resultado deseado. Pero cuando se lanzó la programación orientada a objetos (POO), revolucionó la historia de la programación; se introdujeron al lenguaje diario de los profesionales del área de computación e informática, conceptos tales como abstracción, encapsulamiento, herencia y polimorfismo; que hicieron que el modo de pensar y concebir el desarrollo de sistemas informáticos, fuera muy diferente a lo que había sido hasta ese momento con la programación estructurada. La POO es el paradigma de programación más utilizado en la actualidad. Su consistente base teórica y la amplia gama de herramientas, permiten crear código a través de diseños orientados a objetos, y esto lo convierte en la alternativa más adecuada para el desarrollo de aplicaciones avanzadas de sistemas informáticos de calidad. En la POO se tiene dos elementos fundamentales, las clases y los objetos. 1.2 CLASES. Una clase es aquella que describe las características (atributos) y el comportamiento (métodos) de un conjunto de objetos similares. Se dice que es un conjunto de objetos, porque varios objetos de características similares pueden pertenecer a una misma clase. Por lo tanto podemos decir que una clase es una plantilla implementada en software que describe un conjunto de objetos con atributos y comportamientos similares. 1.3 OBJETOS. Cuando hablamos de un objeto, hablamos de pequeños elementos bien definidos, representaciones verdaderas de objetos que tenemos en la vida real. Los objetos son aquellos que tienen sus propios atributos y sus propios comportamientos; es decir cada objeto es único y no puede confundirse con otro. En la Figura 1.1 se muestra algunas clases y objetos del mundo real. Mg. Rubén Galeas Arana

-2-

Figura 1.1. Ejemplos de clases y objetos del mundo real.

Entonces mediante el uso e implementación de la metodología de “Programación Orientada a Objetos” intentamos crear objetos de software que tengan correlación con los objetos del mundo real; por ejemplo en un módulo de facturación de un sistema de gestión comercial, vamos a crear nuestro objeto Factura, que tendrá relaciones con nuestro objeto Cliente, y Producto; la aplicación de esta concepción de trabajo es la que nos permiten aislar cada componente del resto de la aplicación y de esa forma aprovechar en mayor medida nuestro esfuerzo, nuestra concentración en el buen funcionamiento de dichos componentes, nuestro control sobre ellos, más control en la codificación y por sobre todas las cosas, reutilizar el código escrito. Definido lo que es una clase y un objeto, ahora podemos definir las cuatro características principales de la POO que son necesarias para denominarse como tal. 1.4 ABSTRACCIÓN. La abstracción se puede definir como la capacidad de examinar algo sin preocuparse de los detalles internos. La abstracción es la capacidad de un objeto de cumplir sus funciones independientemente del contexto en el que se lo utilice; por ejemplo, un objeto Cliente siempre expondrá sus mismas propiedades y dará los mismos resultados a través de sus eventos, sin importar el ámbito en el cual se lo haya creado. 1.5 ENCAPSULAMIENTO. Esta característica es la que denota la capacidad del objeto de responder a peticiones a través de sus métodos sin la necesidad de exponer los medios Mg. Rubén Galeas Arana

-3-

utilizados para llegar a brindar estos resultados. Por ejemplo el método MostrarSaldo() del objeto Cliente antes mencionado, siempre nos va a dar el saldo de la cuenta de un cliente, sin necesidad de tener conocimiento de cuáles son los recursos que ejecuta para llegar a brindar este resultado. 1.6 HERENCIA. La herencia es la propiedad que permite a los objetos construirse a partir de otros objetos. Una clase se puede dividir en subclases. Las subclases pueden heredar código y datos de su clase base añadiendo su propio código y datos a la misma. La herencia impone una relación jerárquica entre clases, en la cual una clase hija hereda de su clase padre. Si una clase sólo puede recibir características de otra clase base, la herencia se denomina herencia simple. Si una clase recibe propiedades de más de una clase base, la herencia se denomina herencia múltiple. 1.7 POLIMORFISMO. En un sentido literal, polimorfismo significa la cualidad de tener más de una forma. En el contexto de POO, el polimorfismo se refiere al hecho de que una misma operación puede tener diferente comportamiento en diferentes objetos. Por ejemplo, consideremos la operación sumar. El operador “+” realiza la suma de dos números de diferente tipo. Además se puede definir la operación de concatenar dos cadenas mediante el operador “+”. El término de polimorfismo define la capacidad de que más de un objeto puedan crearse usando la misma clase de base para lograr dos conceptos de objetos diferentes.

Mg. Rubén Galeas Arana

-4-

CAPÍTULO II PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA 2.1 INTRODUCCIÓN. El lenguaje de programación Java fue desarrollado por Sun Microsystems en 1991. Nace como parte de un proyecto de investigación para desarrollar software para comunicación entre aparatos electrónicos de consumo como vídeos, televisores, equipos de música. etc. Durante la fase de investigación surgió un problema que dificultaba enormemente el proyecto iniciado: cada aparato tenía un microprocesador diferente y muy poco espacio de memoria: esto provocó un cambio en el rumbo de la investigación que desembocó en la idea de escribir un nuevo lenguaje de programación independiente del dispositivo que fue bautizado inicialmente como Oak y que posteriormente los propios investigadores lo rebautizaron como JAVA. Java es un lenguaje de programación de alto nivel con el que se pueden escribir tanto programas convencionales como para Internet. Una de las ventajas significativas de Java sobre otros lenguajes de programación es que es independiente de la plataforma tanto en código fuente como en código de bytes (binario). Esto quiere decir que el código producido por el compilador Java puede transportarse a cualquier plataforma que tenga instalada una máquina virtual Java y ejecutarse (ver Figura 2.1). Pensando en Internet esta característica es crucial ya que esta red conecta ordenadores muy distintos. En cambio, C++, por ejemplo, es independiente de la plataforma sólo en código fuente, lo cual significa que cada plataforma diferente debe proporcionar el compilador adecuado para obtener el código máquina que tiene que ejecutarse.

Figura 2.1. Procesos de ejecución de un programa en JAVA.

Según lo expuesto, Java incluye dos elementos: un compilador y un intérprete. El compilador produce un código de bytes que se almacena en un fichero para ser ejecutado por el intérprete Java denominado máquina virtual de Java. Los códigos de bytes de Java son un conjunto de instrucciones correspondientes a un lenguaje máquina que no es específico de ningún Mg. Rubén Galeas Arana -5-

procesador, sino de la máquina virtual de Java. ¿Dónde se consigue esta máquina virtual? Hoy en día casi todas las compañías de sistemas operativos y de navegadores han implementado máquinas virtuales según las especificaciones publicadas por Sun Microsystems, propietario de Java, para que sean compatibles con el lenguaje Java. Para las aplicaciones de Internet (denominadas applets) la máquina virtual está incluida en el navegador y para las aplicaciones Java convencionales, puede venir con el sistema operativo, con el paquete Java, o bien puede obtenerla a través de Internet. 2.2 VENTAJAS Y DESVENTAJAS DEL JAVA. Una de las ventajas más significativas de Java es su independencia de la plataforma. En el caso de que tenga que desarrollar aplicaciones que tengan que ejecutarse en sistemas operativos diferentes, esta característica es fundamental. Un browser compatible con Java deberá ejecutar cualquier programa hecho en Java, esto ahorra a los usuarios tener que estar insertando "plug-ins" y demás programas que a veces nos quitan tiempo y espacio en disco. Otra ventaja importante de Java es que es un lenguaje de programación orientado a objetos (POO) y tiene todos los beneficios que ofrece esta metodología de programación. Además de ser transportable y orientado a objetos. Java es un lenguaje fácil de aprender. Tiene un tamaño pequeño que favorece el desarrollo y reduce las posibilidades de cometer errores: a la vez es potente y flexible. Java está fundamentado en C++. Esto quiere decir que mucha de la sintaxis y diseño orientado a objetos se tomó de este lenguaje. Por lo tanto, a los programadores que estén familiarizados con C++ y la POO les será muy fácil aprender a desarrollar aplicaciones con Java. Pero e advierte a los programadores de C++ que en Java no existen punteros ni aritmética de punteros, las cadenas de caracteres son objetos y la administración de memoria es automática, lo que elimina la problemática que presenta C++ con las lagunas de memoria al olvidar liberar bloques de memoria que fueron asignados dinámicamente. Java es un lenguaje y por lo tanto puede hacer todas las cosas que puede hacer un lenguaje de programación: cálculos matemáticos, procesa cadenas, bases de datos, aplicaciones gráficas, animaciones, sonido, etc.. Si lo que nos interesa son las páginas de Web, ya no tienen que ser estáticas, se le puede poner toda clase de elementos multimedia y permiten un alto nivel de interactividad. Pero en Java no todo es maravilloso, pues, también tiene sus desventajas. Una desventaja es que los programas hechos en java tienden a ser lentos, debido a que son programas interpretados y nunca alcanzan la velocidad de un Mg. Rubén Galeas Arana

-6-

verdadero programa ejecutable. Al ser java un lenguaje de programación no es tan fácil de aprender y el tiempo de capacitación es muy alto. 2.3 PRIMER PROGRAMA EN JAVA. Los ficheros se almacenan con la extensión JAVA, al compilar el código fuente, crea un uno con extensión CLASS. Java requiere que todo el código resida dentro de una clase con nombre. El nombre del fichero debe ser el mismo que el nombre de la clase donde esta la función MAIN. public class Bienvenida{ public static void main(String args[ ]){ System.out.println(“Bienvenido a JAVA”); } }

El programa anterior se puede realizar en algún software java como puede ser el Jcreator, JBuilder, etc.; con los cuales en el momento de compilar se crea los archivos Bienvenida.java y Bienvenida.class 2.4 IDENTIFICADORES. Los identificadores se utilizan como nombres de clase, método y variable. Un identificador puede ser cualquier sentencia descriptiva de letras en mayúscula o minúscula, números y los caracteres subrayado (_) y signo de dólar ($). No se deban comenzar por número. Java diferencia entre mayúsculas/minúsculas, lo que significa que “VALOR” es un identificador diferente de “Valor”. En este punto es recomendable aclarar que por convención un identificador que representa una variable debe comenzar con una letra minúscula, mientras que los nombres o identificadores de las clases y objetos que se crean en Java deben comenzar con una letra mayúscula. 2.5 VARIABLES Y TIPOS DE DATOS PRIMITIVOS. Una variable es un nombre que se asocia con una porción de la memoria del ordenador, en la que se guarda el valor asignado a dicha variable. En Java todas las variables se deben declarar antes de usarlas, para declarar un variable se usa una de las siguientes sintaxis. tipo identificador1,identificador2,identificador3; tipo identificador1=valor1,identificador2=valor2; Donde “tipo” es un tipo de dato primitivo en JAVA; estos datos primitivos se muestran en la Tabla 2.1.

Mg. Rubén Galeas Arana

-7-

Tabla 2.1. Tipos de datos primitivos en Java que soporta JAVA TIPO

TAMAÑO

RANGO

byte

8 bits

Valores numéricos de –128 a 127 (-2 a 2 -1)

short

16 bits

Valores numéricos de –32 768 a 32 767 (-2 a 2 -1)

int

32 bits

Valores numéricos de –2 147 483 648 a 2 147 483 647 (-2 a 2 -1)

long

64 bits

Valores numéricos de (-2

float

32 bits

Valores numéricos en coma flotante de simple precisión. 38 38 (-3,40282347 x 10 a 3,40282347 x 10 )

double

64 bits

char

16 bits

Bolean

8 bits

Solo admite true (verdadero) o false (falso)

String

Según longitud

Se utiliza para cadenas de caracteres

7

7

15

15

31

63

31

63

a 2 -1)

Valores numéricos en coma flotante de doble precisión. 308 308 -1,7976931348623157 x 10 a 1,7976931348623157 x 10 Valores alfanuméricos que está referido a los caracteres del UNICODE, similares al código ASCII.

A continuación se muestra un ejemplo en Java utilizando variables y tipos primitivos. class TiposPrimitivos{ public static void main (String args[]){ byte e1,e2; //variable que almacena un número tipo byte short e3,e4; //variable que almacena un número tipo short int e5=301028,e6=45; //variable que almacena un número entero long e7,e8; //variable que almacena un número tipo long float f1=13.4f; //variables que almacena un número tipo float double f2; //variables que almacena un número tipo double char c1; // variable para almacenar un caracter String cad1; // variable para almacenar una cadena e1=-43; e2=127; e3=-1248; e4=30654; e7=3456656; e8=-352624; f2=3.4567e15; c1='U'; cad1="Universidad Continental siempre primero"; System.out.println("e1 = "+e1+" e2= "+e2); System.out.println("e3 = "+e3+" e4= "+e4); System.out.println("e5 = "+e5+" e6= "+e6); System.out.println("e7 = "+e7+" e8= "+e8); System.out.println("f1 = "+f1+" f2= "+f2); System.out.println("c1 = "+c1); System.out.println("cad1 = "+cad1+"\n"); } }

Mg. Rubén Galeas Arana

-8-

2.6 OPERADORES ARITMÉTICOS EN JAVA. Son aquellos operadores que nos permiten realizar operaciones matemáticas y se aplican sobre variables del tipo numérico, como se muestra en la Tabla 2.2, en el cual se muestra la columna resultado para valores dex=20 e y=6. Operador + * / % ++ --

Tabla 2.2. Operadores aritméticos en Java Operación Ejemplo Resultado Adición z=x+y z=26 Sustracción z=x-y z=14 Multiplicación z=x*y z=120 División z=x/y z=3.33333 Residuo de división z=x%y z=2 Incremento en 1 x++ x=21 Decremento en 1 y-y=5

A continuación se muestra un ejemplo en Java utilizando operadores aritméticos y operadores unitarios. class OperadorAritmetico{ public static void main (String args[]){ int x=20,y=6; //variable que almacena un número tipo byte int k,p; int suma,resta,multiplicacion,residuo; float division; suma=x+y; resta=x-y; multiplicacion=x*y; residuo=x%y; division=(float) x/y; x++; // x=x+1 --y; // y=y-1 p=x++; // primero hace p=x y luego x=x+1 k=--y; // primero hace k=y-1 y luego y=y-1 System.out.println(); System.out.println("Suma = "+suma); System.out.println("Resta = "+resta); System.out.println("Multiplicacion = "+multiplicacion); System.out.println("Division = "+division); System.out.println("Residuo = "+residuo); System.out.println("Operador ++ = "+x); System.out.println("Operador -- = "+y); System.out.println("Operador ++ (p)= "+p); System.out.println("Operador -- (k)= "+k+"\n"); } }

Los resultados que se obtienen son: Suma Resta Multiplicacion

= 26 = 14 = 120

Mg. Rubén Galeas Arana

-9-

Division Residuo Operador Operador Operador Operador

= 3.3333333 =2 ++ = 22 -=4 ++ (p)= 21 -- (k) = 4

2.7 EJEMPLOS DE APLICACIÓN DE TIPOS PRIMITIVOS Y OPERADORES ARITMÉTICOS EN JAVA. A continuación mostramos algunos ejemplos en los cuales se pueden observar las utilidades, limitaciones y el uso correcto de cada tipo primitivo utilizando los operadores aritméticos en JAVA. Se recomienda que el lector haga algunas modificaciones a los ejemplos de tal manera que pueda comprobar los límites de los tipos y los posibles errores que puedan causar dichos cambios. a) Ejemplo de operaciones con tipos primitivos del tipo BYTE. class OperadorAritmeticoByte{ public static void main (String args[]){ byte a1,a2; //variable que almacena un número tipo byte byte suma,resta,multiplicacion,residuo; float division; a1=12; a2=5; suma=(byte)(a1+a2); resta=(byte)(a1-a2); multiplicacion=(byte)(a1*a2); division=(float)a1/a2; residuo=(byte)(a1%a2); System.out.println("a1 = "+a1+" Tipo byte"); System.out.println("a2 = "+a2+" Tipo byte\n"); System.out.println("Suma = "+suma); System.out.println("Resta = "+resta); System.out.println("Multiplicacion = "+multiplicacion); System.out.println("Division = "+division); System.out.println("Residuo = "+residuo+"\n"); } }

b) Ejemplo de operaciones con tipos primitivos del tipo SHORT. class OperadorAritmeticoShort{ public static void main (String args[]){ short a1,a2; //variable que almacena un número tipo short short suma,resta,multiplicacion,residuo; float division; a1=30; a2=11; suma=(short)(a1+a2); resta=(short)(a1-a2); multiplicacion=(short)(a1*a2); Mg. Rubén Galeas Arana

- 10 -

division=(float)a1/a2; residuo=(short)(a1%a2); System.out.println("a1 = "+a1+" Tipo short"); System.out.println("a2 = "+a2+" Tipo short\n"); System.out.println("Suma = "+suma); System.out.println("Resta = "+resta); System.out.println("Multiplicacion = "+multiplicacion); System.out.println("Division = "+division); System.out.println("Residuo = "+residuo+"\n"); } }

c) Ejemplo de operaciones con tipos primitivos del tipo INT. class OperadorAritmeticoInt{ public static void main (String args[]){ int a1,a2; //variable que almacena un número tipo int int suma,resta,multiplicacion,residuo; float division; a1=30; a2=11; suma=a1+a2; resta=(int)(a1-a2); multiplicacion=a1*a2; division=(float)a1/a2; residuo=(int)(a1%a2); System.out.println("a1 = "+a1+" Tipo int"); System.out.println("a2 = "+a2+" Tipo int\n"); System.out.println("Suma = "+suma); System.out.println("Resta = "+resta); System.out.println("Multiplicacion = "+multiplicacion); System.out.println("Division = "+division); System.out.println("Residuo = "+residuo+"\n"); } }

d) Ejemplo de operaciones con tipos primitivos del tipo LONG. class OperadorAritmeticoLong{ public static void main (String args[]){ long a1,a2; //variable que almacena un número tipo long long suma,resta,multiplicacion,residuo; float division; a1=2147483650L; // el literal L es necesario a2=7; suma=(long)(a1+a2); resta=a1-a2; multiplicacion=a1*a2; division=(float)a1/a2; residuo=(long)(a1%a2); System.out.println("a1 = "+a1+" Tipo long"); System.out.println("a2 = "+a2+" Tipo long\n"); System.out.println("Suma = "+suma); Mg. Rubén Galeas Arana

- 11 -

System.out.println("Resta = "+resta); System.out.println("Multiplicacion = "+multiplicacion); System.out.println("Division = "+division); System.out.println("Residuo = "+residuo+"\n"); } }

e) Ejemplo de operaciones con tipos primitivos del tipo FLOAT. class OperadorAritmeticoFloat{ public static void main (String args[]){ float a1,a2; //variable que almacena un número tipo float float suma,resta,multiplicacion; float division; a1=12.78F; // El literal F es obligatorio a2=5; suma=a1+a2; resta=(float)(a1-a2); multiplicacion=a1*a2; division=a1/a2; System.out.println("a1 = "+a1+" Tipo float"); System.out.println("a2 = "+a2+" Tipo float\n"); System.out.println("Suma = "+suma); System.out.println("Resta = "+resta); System.out.println("Multiplicacion = "+multiplicacion); System.out.println("Division = "+division+"\n"); } }

f) Ejemplo de operaciones con tipos primitivos del tipo DOUBLE. class OperadorAritmeticoDouble{ public static void main (String args[]){ double a1,a2; //variable que almacena un número tipo double double suma,resta,multiplicacion; double division; a1=12.64E300; a2=5.22e300; suma=(double)(a1+a2); resta=a1-a2; multiplicacion=(double)(a1*a2); // provoca un desbordamiento division=a1/a2; System.out.println("a1 = "+a1+" Tipo double"); System.out.println("a2 = "+a2+" Tipo double\n"); System.out.println("Suma = "+suma); System.out.println("Resta = "+resta); System.out.println("Multiplicacion = "+multiplicacion); //Sale infinito System.out.println("Division = "+division+"\n"); } }

Mg. Rubén Galeas Arana

- 12 -

2.8 ESCRITURA DE FÓRMULAS MATEMÁTICAS EN JAVA. En todo lenguaje de programación las fórmulas matemáticas se tienen que escribir en una sola línea, para ello muchas veces se hace uso de los paréntesis para una evaluación correcta de las operaciones. En la siguiente tabla se muestra algunos ejemplos de la forma correcta de escribir fórmulas matemáticas en JAVA. Tabla 2.2. Tipos de datos primitivos en Java que soporta JAVA En un lenguaje de Valor calculado para x Fórmula matemática programación cuando a=12; b=3; c=10

3a + 2b − 6 c 2a a + b y= + b 3c 3a z = −5a + 2−b b+ 2b − c 3a b w= + − 2a a 4b c+ b x=

x=(3*a+2*b-6)/c

x=3,6

y=2*a/b+(a+b)/(3*c)

y=8,5

z= -5*a+3*a/(b+(2-b)/(2*b-c))

z=-48,923077

w=3*a/(4*b)+b/(c+a/b)-2*a

w=-20,785715

En el siguiente ejemplo se muestra es uso de las fórmulas de la tabla 2.2. class FormulasMatematicas{ public static void main (String args[]){ int a=12,b=3,c=10; float x,y,z,w; x=(3*a+2*b-6)/c; y=2*a/b+(a+b)/(3*c); z= -5*a+3*a/(b+(2-b)/(2*b-c)); w=3*a/(4*b)+b/(c+a/b)-2*a; System.out.println("x = "+x); System.out.println("y = "+y); System.out.println("z = "+z); System.out.println("w = "+w+"\n"); } }

Los resultados que se obtienen son los siguientes: x=3.0 y=8.0 z=-48.0 w=-21.0 Pero si observamos la tercera columna de la tabla 2.2 los resultados no coinciden, lo que ha pasado es que se hecho la combinación de operaciones de números enteros con números reales y en JAVA eso hay que tener mucho Mg. Rubén Galeas Arana - 13 -

cuidado; entonces se debe hacer las correcciones correspondientes, por lo tanto el programa correctamente escrito sería: class FormulasMatematicas{ public static void main (String args[]){ int a=12,b=3,c=10; float x,y,z,w; x=(float)(3*a+2*b-6)/c; y=(float)2*a/b+(float)(a+b)/(3*c); z= -5*a+(float)3*a/(b+(float)(2-b)/(2*b-c)); w=(float)3*a/(4*b)+(float)b/(c+(float)a/b)-2*a; System.out.println("x = "+x); System.out.println("y = "+y); System.out.println("z = "+z); System.out.println("w = "+w+"\n"); } }

2.9 CLASES PREDEFINIDAS EN JAVA. Antes de continuar es conveniente saber que en JAVA hay un montón de clases predefinidas y utilizables. Éstas vienen en las bibliotecas estándar del JAVA. A continuación mostraremos algunos de ellos. •

• • • • • • •

java.lang - clases esenciales, números, strings, objetos, compilador, runtime, seguridad y threads (es el único paquete que se incluye automáticamente en todo programa Java). java.io - clases que manejan entradas y salidas de datos. java.util - clases útiles, como estructuras genéricas, manejo de fecha, hora y strings, número aleatorios, etc. java.net - clases para soportar redes: URL, TCP, UDP, IP, etc. java.awt - clases para manejo de interface gráfica, ventanas, etc. java.awt.image - clases para manejo de imágenes java.awt.peer - clases que conectan la interface gráfica a implementaciones dependientes de la plataforma (motif, windows) java.applet - clases para la creación de applets y recursos para reproducción de audio.

2.10 OPERACIONES DE ENTRADA Y SALIDA DE DATOS. Todo lenguaje de programación, para que sea práctico debe tener procedimientos para entrada y salida de datos. En este caso en JAVA la entrada de datos se almacenan en memoria de dos formas: 1°) Asignando valores a las variables desde el mismo programa, desde el momento de la declaración de la variable. Por ejemplo: int x=12,y=10; float a; a=12.345F; Mg. Rubén Galeas Arana

- 14 -

2°) Leyendo datos desde el teclado, para ello se utiliza la clase java.io Para la salida de datos se utilizan el método System.out.println(). Por ejemplo System.out.println(x+” ”+a); En los siguientes listados de programas en JAVA se puede visualizar el uso de las operaciones de entrada y salida de datos; estos programas calculan el área de un rectángulo cuando se ingresa la base y su altura de la Figura 2.2.

Figura 2.2. Área de una rectángulo class AreaRectangulo01{ public static void main (String args[]){ float base=12.54F,altura=20.5F; float area; area=base*altura; System.out.println("area = "+area+" m2 \n"); } }

Ahora modificamos el programa para ingresar los datos desde el teclado: import java.io.*;

// esta clase es obligatorio

class AreaRectangulo02{ public static void main (String args[]) throws IOException{ // Definir un flujo de caracteres de entrada: kkk InputStreamReader yyy = new InputStreamReader(System.in); BufferedReader kkk = new BufferedReader(yyy); String teclado; // variable para almacenar una línea de texto float base,altura,area; //variables del tipo float System.out.print("Ingrese base (m): "); teclado = kkk.readLine(); // leer una línea de texto base=Float.parseFloat(teclado);//convierte cadena a real System.out.print("Ingrese altura (m): "); teclado = kkk.readLine(); // leer una línea de texto altura=Float.parseFloat(teclado);//convierte cadena a real area=base*altura; System.out.println("area = "+area+" m2 \n"); } } Mg. Rubén Galeas Arana

- 15 -

2.11 RECOMENDACIONES PARA UNA BUENA PROGRAMACIÓN. a) Los programas deben ser legibles y comprensibles, utilizando la indentación correcta para cada bloque de programa; en JAVA un bloque de programa se separa abriendo y cerrando el símbolo llaves { }. b) Se deben poner comentarios que describen el propósito de un programa o segmentos de programa. Los comentarios en JAVA se realiza utilizando dos barras continuas (// comentario). c) En la lectura y salida de datos es necesario poner comentarios para que el usuario del programa pueda saber qué dato ingresar y qué dato o valor está obteniendo. Recuerde que el programa que Ud. haga lo puede utilizar cualquier otra persona que no necesariamente tiene conocimientos de programación ni de computación. Por ejemplo para pedir que ingrese la base de un rectángulo se debe poner el siguiente comentario “Ingrese base (m): “. d) Los programas deben ser eficientes, evitando hacer cálculos innecesarios. Por ejemplo para determinar las raíces de una ecuación cuadrática de la forma Ax2+Bx+C=0 se sabe que se debe utilizar la siguiente fórmula: x=

− B ± B 2 − 4AC 2A

Entonces en el programa se podría poner de la siguiente manera: x1=(-B+sqrt(B*B-4*A*C))/(2*A); x2=(-B-sqrt(B*B-4*A*C))/(2*A); Pero sería mejor de la siguiente manera: D=B*B-4*A*C; N=2*A; x1=(-B+sqrt(D))/N; x2=(-B-sqrt(D))/N;

2.12 ESTRUCTURAS CONDICIONALES. En la mayor parte de los problemas (por no decir todos) que se presentan en la vida cotidiana y que se pueden solucionar mediante un programa computacional, siempre presentan algunas condiciones que harán cambiar una estructura secuencial. Las estructuras condicionales se utilizan para tomar decisiones lógicas; por eso muchas veces se les llaman estructuras selectivas, porque se tiene que seleccionar una determina acción de acuerdo al valor de la condición planteada. Las condiciones se especifican usando los operadores de relación (menor, mayor, igual, etc.) y los operadores lógicos (Y, O, Negación, etc.), además se debe tener en cuenta que las condiciones pueden ser simples o complejas, pero siempre tendrán un único ya sea verdadero (true) o falso (false). Mg. Rubén Galeas Arana - 16 -

a) Operadores de relación. Estos operadores se utilizan para expresar condiciones y describen una relación entre dos valores. A través de los operadores de relación se construyen condiciones que serán evaluados como VERDADERO (true) o FALSO (false); en un programa se puede hacer comparaciones tanto con datos numéricos (enteros y reales), con datos del tipo carácter o del tipo cadena. En la Tabla 2.3 se observa los operadores de relación que se usan en JAVA. Tabla 2.3. Operadores de relación en JAVA Operador de relación Equivalente Significado en JAVA matemático > Mayor que > < Menor que < >= Mayor o igual que ≥