Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
AApprreennddaa JJaavvaa By: Martín Alejandro Guerra Hernández Email: maghtin@yahoo.com.mx WebSite: http://mx.geoities.com/maghtin/ Jiquilpan, Michoacán. Enero del 2007 PDF created with pdfFactory Pro trial version www.pdffactory.com mailto:maghtin@yahoo.com.mx http://mx.geoities.com/maghtin/ http://www.pdffactory.com Índice Pagina Breve Historia de Java …………………………………………………………………… 1 Introducción a Java……………………………………………………………………….. 1 El Entorno de Desarrollo de Java ……………………………………………………….. 2 Programación Orientada a Objetos …………………………………………………….. 3 Programación en Java……………………………………………………………………. 4 Palabras Reservadas ………………………………………………………………… 4 Tipos de Variables…………………………………………………………………….. 4 Visibilidad y Vida de las Variables………………………………………………….. 5 Operadores de Java…………………………………………………………………... 7 Sentencias de Entrada y Salida de Datos………………………………………….. 9 Estructura de un Programa en Java………………………………………………… 10 Estructuras de Control…………………………………………………………………….. 14 Sentencia de Control if………………………………………………………………... 14 Sentencia de Control switch………………………………………………………….. 16 Bucles…………………………………………………………………………………… 19 Bucle o ciclo while…………………………………………………………………. 19 Bucle o ciclo for……………………………………………………………………. 22 Bucle o ciclo do-while……………………………………………………………... 25 Comparación de los Bucles………………………………………………………. 25 Arreglos…………………………………………………………………………………….. 27 Introducción a los Applet………………………………………………………………….. 31 Estructura de un Applet……………………………………………………………….. 31 Incrustar un Applet en una Pagina Web…………………………………………….. 32 Clase Graphics…………………………………………………………………………….. 33 Cuadros de Dialogo……………………………………………………………………….. 37 Manejo de imágenes……………………………………………………………………… 39 Herramientas Graficas de AWT………………………………………………………….. 40 Control Label (etiquetas)……………………………………………………………... 40 Clase TextField (cajas de texto)……………………………………………………... 41 Control Button (botones)……………………………………………………………... 41 Control Checkbox (casillas de verificación)………………………………………... 41 Control List (lista desplegable)……………………………………………………… 42 Control Scrollbar (barras de desplazamiento)…………………………………….. 43 Referencias Bibliograficas……………………………………………………………….. 47 PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 1 BREVE HISTORIA DE JAVA Java surgió en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron de diseñar un nuevo lenguaje de programación destinado a electrodomésticos. La reducida potencia de cálculo y memoria de los electrodomésticos llevó a desarrollar un lenguaje sencillo capaz de generar código de tamaño muy reducido. Debido a la existencia de distintos tipos de CPUs y a los continuos cambios, era importante conseguir una herramienta independiente del tipo de CPU utilizada. Desarrollaron un código “neutro” que no dependía del tipo de electrodoméstico, el cual se ejecutaba sobre una “máquina hipotética o virtual” denominada Java Virtual Machine (JVM). Era la JVM quien interpretaba el código neutro convirtiéndolo a código particular de la CPU utilizada. Esto permitía lo que luego se ha convertido en el principal lema del lenguaje: “Write Once, Run Everywhere”. A pesar de los esfuerzos realizados por sus creadores, ninguna empresa de electrodomésticos se interesó por el nuevo lenguaje. Como lenguaje de programación para computadores, Java se introdujo a finales de 1995. La clave fue la incorporación de un intérprete Java en la versión 2.0 del programa Netscape Navigator, produciendo una verdadera revolución en Internet. Java 1.1 apareció a principios de 1997, mejorando sustancialmente la primera versión del lenguaje. Java 1.2, más tarde rebautizado como Java 2, nació a finales de 1998, puede descargarlo de Sun Microsystems: http://java.sun.com/j2se/1.5.0/download.jsp Al programar en Java no se parte de cero. Cualquier aplicación que se desarrolle “cuelga” (o se apoya, según como se quiera ver) en un gran número de clases preexistentes. Algunas de ellas las ha podido hacer el propio usuario, otras pueden ser comerciales, pero siempre hay un número muy importante de clases que forman parte del propio lenguaje (el API o Application Programming Interface de Java). Java incorpora en el propio lenguaje muchos aspectos que en cualquier otro lenguaje son extensiones propiedad de empresas de software o fabricantes de ordenadores (threads, ejecución remota, componentes, seguridad, acceso a bases de datos, etc.). La compañía Sun describe el lenguaje Java como “simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones, multitarea y dinámico”. INTRODUCCIÓN A JAVA Los programas desarrollados en Java presentan diversas ventajas frente a los desarrollados en otros lenguajes como C/C++. La ejecución de programas en Java tiene muchas posibilidades: ejecución como aplicación independiente (Stand-alone Application), ejecución como applet, ejecución como servlet, etc. Un applet es una aplicación especial que se ejecuta dentro de un navegador o browser (por ejemplo Netscape Navigator o Internet Explorer) al cargar una página HTML desde un servidor Web. El applet se descarga desde el servidor y no requiere instalación en el ordenador donde se encuentra el browser. Un servlet es una aplicación sin interface gráfica que se ejecuta en un servidor de Internet. La ejecución como aplicación independiente es análoga a los programas desarrollados con otros lenguajes. PDF created with pdfFactory Pro trial version www.pdffactory.com http://java.sun.com/j2se/1.5.0/download.jsp http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 2 Además de incorporar la ejecución como Applet, Java permite fácilmente el desarrollo tanto de arquitecturas cliente-servidor como de aplicaciones distribuidas, consistentes en crear aplicaciones capaces de conectarse a otros ordenadores y ejecutar tareas en varios ordenadores simultáneamente, repartiendo por lo tanto el trabajo. Aunque también otros lenguajes de programación permiten crear aplicaciones de este tipo, Java incorpora en su propio API estas funcionalidades. La versión 1.3 contenía 76 packages y aproximadamente 2000 elementos entre clases, interfaces, excepciones, etc. EL ENTORNO DE DESARROLLO DE JAVA Existen distintos programas comerciales que permiten desarrollar código Java. La compañía Sun, creadora de Java, distribuye gratuitamente el Java Development Kit (JDK). Se trata de un conjunto de programas y librerías que permiten desarrollar, compilar y ejecutar programas en Java. Incorpora además la posibilidad de ejecutar parcialmente el programa, deteniendo la ejecución en el punto deseado y estudiando en cada momento el valor de cada una de las variables (con el denominado Debugger), destinado a la detección y corrección de errores. El compilador de Java, es de una de las herramientas de desarrollo incluidas en el JDK. Realiza un análisis de sintaxis del código escrito en los archivos fuente de Java (extensión *.java). Si no encuentra errores en el código genera los archivos compilados (extensión *.class). En otro caso muestra la(s) línea(s) errónea(s).Dicho compilador se llama javac.exe La Java Virtual Machine, se planteó la necesidad de conseguir un código capaz de ejecutarse en cualquier tipo de máquina. Una vez compilado no debería ser necesaria ninguna modificación por el hecho de cambiar de procesador o de ejecutarlo en otra máquina. La clave consistió en desarrollar un código “neutro” el cual estuviera preparado para serejecutado sobre una “máquina hipotética o virtual”, denominada Java Virtual Machina (JVM). Es esta JVM quien interpreta este código neutro convirtiéndolo a código particular de la CPU utilizada. Se evita tener que realizar un programa diferente para cada CPU o plataforma. La JVM es el intérprete de Java. Ejecuta los “bytecodes” (archivos compilados con extensión *.class) creados por el compilador de Java (javac.exe). Las variables PATH y CLASSPATH, el desarrollo y ejecución de aplicaciones en Java exige que las herramientas para compilar (javac.exe) y ejecutar (java.exe) se encuentren accesibles. La computadora, desde una ventana de comandos de MS-DOS, sólo es capaz de ejecutar los programas que se encuentran en los directorios indicados en la variable PATH de la computadora (o en el directorio activo). Si se desea compilar o ejecutar código en Java, el directorio donde se encuentran estos programas (java.exe y javac.exe) deberá encontrarse en el PATH. Una forma general de indicar estas dos variables es crear un archivo por lotes de MS-DOS (*.bat) donde se indiquen dichos valores. Cada vez que se ejecute MS-DOS será necesario ejecutar este archivo *.bat para su asignación adecuada. Un archivo sería jdk115.bat: ? set JAVAPATH=C:\ jdk1.1.5 set PATH=.;%JAVAPATH%\bin;%PATH% set CLASSPATH=.\ ;%JAVAPATH%\l ib\classes.zip;%CLASSPATH% lo cual sería válido en el caso de que el JDK estuviera situado en el directorio C:\jdk1.1.5 PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 3 PROGRAMACIÓN ORIENTADA A OBJETOS (OOP) Los Objetos, son elementos declarados de una clase. Un objeto tiene una estructura y al igual que los objetos del mundo real comparten dos características: estado y comportamiento. El estado de un objeto son sus atributos (propiedades) y el comportamiento (operaciones). La Clase, es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables o métodos de instancia. Clase Objeto Estado Comportamiento Persona hombre, mujer nombre, altura, peso, edad comer, dormir, leer, hablar Animales perro, lobo, coyote nombre, color, raza ladrar, correr, oler Vehículos Automóvil, motocicleta ruedas, frenos, color, marca frenar, acelerar La Programación Orientada a Objetos se basa en la programación de clases. Un programa se construye a partir de un conjunto de clases. Se considera un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son, todas ellas miembros de una jerarquía de clases unidas mediante relaciones de herencia. En Java, las clases soportan 3 características fundamentales de la POO: encapsulación, herencia y polimorfismo Encapsulación, las clases pueden ser declaradas como públicas (public) y como package (accesibles sólo para otras clases del package). Las variables miembro y los métodos pueden ser public, private, protected. De esta forma se puede controlar el acceso y evitar un uso inadecuado. Herencia, una clase puede derivar de otra (extends), y en ese caso hereda todas sus variables y métodos. Una clase derivada puede añadir nuevas variables y métodos y/o redefinir las variables y métodos heredados. Ejemplo: class Nombre_Clase_Derivada extend Nombre_Clase_Base Clase: Figuras class Triangulo extend Figuras Polimorfismo, los objetos de distintas clases pertenecientes a una misma jerarquía o que implementen una misma interface pueden tratarse de una forma general e individualizada, al mismo tiempo. Ejemplo: class Circulo extend Figuras // Se apl ica la herencia { … publ ic void copiar(Figuras f) { … }; // Se apl ica el polimorfismo } class Triangulo extend Figuras // Se apl ica la herencia { … publ ic void copiar(Figuras f) { … }; // Se apl ica el polimorfismo } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 4 PROGRAMACIÓN EN JAVA En este apartado se presentan las características generales de Java como lenguaje de programación. Es muy similar a C/C++, lenguajes en los que está inspirado. Una variable es un nombre que contiene un valor que puede cambiar a lo largo del programa. Desde el punto de vista del papel o misión en el programa, las variables son: 1. Variables miembro de una clase: Se definen en una clase, fuera de cualquier método; pueden ser tipos primitivos (char, byte, short, int, long, float, double, boolean) o referencias (arrays u objetos de una determinada clase). 2. Variables locales: Se definen dentro de un método o más en general dentro de cualquier bloque entre llaves { }. Se crean en el interior del bloque y se destruyen al finalizar dicho bloque. Pueden ser también tipos primitivos o referencias. Nombres de Variables Los nombres de variables en Java se pueden crear con mucha libertad. Pueden ser cualquier conjunto de caracteres numéricos y alfanuméricos, sin algunos caracteres especiales utilizados por Java como operadores o separadores ( ,.+-*/ etc.). Existe una serie de palabras reservadas las cuales tienen un significado especial para Java y por lo tanto no se pueden utilizar como nombres de variables. Dichas palabras son: Abstract Boolean Break byte case Match Char Class Const continue default Do Double Else extends final finally Flota For Goto If implements import Instanceof Int Interface Long native new Null Package private protected public return Short Static super Switch synchronized this Throw Throws transient Try void volatile While Tipos Primitivos de Variables Se llaman tipos primitivos de variables de Java a aquellas variables sencillas que contienen los tipos de información más habituales: valores boolean, caracteres y valores numéricos enteros o de punto flotante. Java dispone de ocho tipos primitivos de variables: un tipo para almacenar valores true y false (boolean); un tipo para almacenar caracteres (char), y 6 tipos para guardar valores numéricos, cuatro tipos para enteros (byte, short, int y long) y dos para valores reales de punto flotante (float y double). Los rangos y la memoria que ocupa cada uno de estos tipos se muestran a continuación: Tipo de variable Descripción boolean 1 byte. Valores true y false char 2 bytes. Unicode. Comprende el código ASCII byte 1 byte. Valor entero entre -128 y 127 PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 5 Tipo de variable Descripción short 2 bytes. Valor entero entre -32768 y 32767 int 4 bytes. Valor entero entre -2.147.483.648 y 2.147.483.647 Long 8 bytes. Valor entre -9.223.372.036.854.775.808 y 9.223.372.036.854.775.807 float 4 bytes (entre 6 y 7 cifras decimales equivalentes). De -3.402823E38 a -1.401298E-45 y de 1.401298E-45 a 3.402823E38 fouble 8 bytes (unas 15 cifras decimales equivalentes). De -1.79769313486232E308 a -4.94065645841247E-324 y de 4.94065645841247E-324 a 1.79769313486232E308 Cómo se definen e inicializan las variables Una variable se define especificando el tipo y el nombre de dicha variable. Estas variables pueden ser tanto de tipos primitivos como referencias a objetos de alguna clase perteneciente al API de Java o generada por el usuario. Si no se especificaun valor en su declaración, las variable primitivas se inicializan a cero (salvo boolean y char, que se inicializan a false y '\0'). Análogamente las variables de tipo referencia son inicializadas por defecto a un valor especial: null. Un tipo particular de referencias son los arrays o vectores, sean éstos de variables primitivas (por ejemplo, un vector de enteros) o de objetos. En la declaración de una referencia de tipo array hay que incluir los corchetes []. En los siguientes ejemplos aparece cómo crear un vector de 10 números enteros y cómo crear un vector de elementos MyClass. Java garantiza que los elementos del vector son inicializados a null o a cero (según el tipo de dato) en caso de no indicar otro valor. Ejemplos de declaración e inicialización de variables: int x; // Declaración de la variable primitiva x. Se inicializa a 0 int y = 5; // Declaración de la variable primitiva y. Se inicializa a 5 unaRef = new MyClass(); // La referencia “apunta” al nuevo objeto creado // Se ha utilizado el constructor por defecto int [ ] vector; // Declaración de un array. Se inicializa a null vector = new int[10]; // Vector de 10 enteros, inicializados a 0 double [ ] v = {1.0, 2.65, 3.1}; // Declaración e inicialización de un vector de 3 // elementos con los valores entre llaves MyClass [ ] lista=new MyClass[5];// Se crea un vector de 5 referencias a objetos // Las 5 referencias son inicializadas a null VISIBILIDAD Y VIDA DE LAS VARIABLES Dependiendo del lugar donde se definan las variables de Java, estas se pueden utilizar en la totalidad del programa, dentro de un método o solo temporalmente dentro de un bloque de sentencias. La zona de un programa en la que una variable está activa se denomina: ámbito, alcance o scope. El ámbito (alcance) de una variable se extiende desde la sentencia que la define hasta los límites del bloque que la contiene. Según el ámbito los tipos básicos son: PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 6 Variables Locales, son aquellas definidas en el interior de un método y son visibles solo en ese método específico. Y se caracterizan por: no puede ser modificada por ninguna sentencia externa al método, los nombres de las variables locales no han de ser únicos (2 o mas métodos pueden definir la misma variable) cada variable pertenece al método que esta declarada, no existen en memoria hasta que se ejecuta el método. Lo cual permite ahorrar memoria. Variables de Clase, los miembros de una clase son métodos o variables, las variables de clase se declaran en una clase, fuera de los métodos; al menos son visibles desde cualquier método de la clase y se referencian simplemente con su nombre. Y se caracteriza por: se le asigna memoria cuando se crea el objeto de la clase y permanece hasta que el objeto es liberado o termina la ejecución del programa. ? Ejemplo: class Numeros { int num1, num2; // Declaración de variables Miembro de la Clase double promedio() { double x; // Declaración de variable Local num1 = 21; // Esta variable es visible por ser Miembro de la Clase } double sumas() { float x; // Declaración de variable Local. Note que es igual a la del otro método. num2 = 22; // Esta variable es visible por ser Miembro de la Clase } } Visibilidad de las variables de una clase de menos accesible a más: private, solo accesible dentro de la clase. default (sin modificador), accesible por cualquier clase del paquete. protected, accesible en todo el paquete y en clases derivadas de otros paquetes. public, accesible desde cualquier clase. Uno de los aspectos más importantes en la programación orientada a objetos (OOP) es la forma en la cual son creados y eliminados los objetos. En Java la forma de crear nuevos objetos es utilizando el operador new. Cuando se utiliza el operador new, la variable de tipo referencia guarda la posición de memoria donde está almacenado este nuevo objeto. Para cada objeto se lleva cuenta de por cuántas variables de tipo referencia es apuntado. La eliminación de los objetos la realiza el programa denominado garbage collector, quien automáticamente libera o borra la memoria ocupada por un objeto cuando no existe ninguna referencia apuntando a ese objeto. Lo anterior significa que aunque una variable de tipo referencia deje de existir, el objeto al cual apunta no es eliminado si hay otras referencias apuntando a ese mismo objeto. PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 7 OPERADORES DE JAVA Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Estos operadores se describen brevemente en los apartados siguientes. Operadores aritméticos Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas habituales: suma (+), resta (-), multiplicación (*), división (/) y resto de la división (%). Operadores de asignación Los operadores de asignación permiten asignar un valor a una variable. El operador de asignación por excelencia es el operador igual (=). La forma general de las sentencias de asignación con este operador es: Operador Utilización Expresión equivalente += op1 += op2 op1 = op1 + op2 -= op1 -= op2 op1 = op1 - op2 *= op1 *= op2 op1 = op1 * op2 /= op1 /= op2 op1 = op1 / op2 %= op1 %= op2 op1 = op1 % op2 Operador instanceof El operador instanceof permite saber si un objeto pertenece o no a una determinada clase. Es un operador binario cuya forma general es, objectName instanceof ClassName y que devuelve true o false según el objeto pertenezca o no a la clase. Operadores incrementales Java dispone del operador incremento (++) y decremento (--). El operador (++) incrementa en una unidad la variable a la que se aplica, mientras que (--) la reduce en una unidad. Estos operadores se pueden utilizar de dos formas: Operadores relacionales Los operadores relacionales sirven para realizar comparaciones de igualdad, desigualdad y relación de menor o mayor. El resultado de estos operadores es siempre un valor boolean (true o false) según se cumpla o no la relación considerada. La Tabla muestra los operadores relacionales de Java. Operador Utilización El resultado es true > op1 > op2 si op1 es mayor que op2 >= op1 >= op2 si op1 es mayor o igual que op2 < op1 < op2 si op1 es menor que op2 <= op1 <= op2 si op1 es menor o igual que op2 == op1 == op2 si op1 y op2 son iguales != op1 != op2 si op1 y op2 son diferentes Operadores lógicos Los operadores lógicos se utilizan para construir expresiones lógicas, combinando valores lógicos (true y/o false) o los resultados de los operadores relacionales. La Tabla 2.4 muestra los operadores lógicos de Java. Debe notarse que en ciertos casos el segundo PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 8 operando no se evalúa porque ya no es necesario (si ambos tienen que ser true y el primero es false, ya se sabe que la condición de que ambos sean true no se va a cumplir). Esto puede traer resultados no deseados y por eso se han añadido los operadores (&) y (|) que garantizan que los dos operandos se evalúan siempre. Operador Nombre Utilización Resultado && AND op1 && op2 true si op1 y op2 son true. Si op1 es false ya no se evalúa op2 || OR op1 || op2 truesi op1 u op2 son true. Si op1 es true ya no se evalúa op2 ! negación ! op true si op es false y false si op es true & AND op1 & op2 true si op1 y op2 son true. Siempre se evalúa op2 | OR op1 | op2 true si op1 u op2 son true. Siempre se evalúa op2 Operador de concatenación de cadenas de caracteres (+) El operador más (+) se utiliza también para concatenar cadenas de caracteres. Por ejemplo, para escribir una cantidad con un rótulo y unas unidades puede utilizarse la sentencia: System.out.println("El total asciende a " + result + " unidades"); donde el operador de concatenación se utiliza dos veces para construir la cadena de caracteres que se desea imprimir por medio del método println(). La variable numérica result es convertida automáticamente por Java en cadena de caracteres para poderla concatenar. Precedencia de operadores El orden en que se realizan las operaciones es fundamental para determinar el resultado de una expresión. Por ejemplo, el resultado de x/y*z depende de qué operación (la división o el producto) se realice primero. La siguiente lista muestra el orden en que se ejecutan los distintos operadores en un sentencia, de mayor a menor precedencia: postfix operators [] . (params) expr++ expr-- unary operators ++expr --expr +expr -expr ~ ! creation or cast new (type)exp. multiplicative * / % Additive + - Shift << >> >>> Relational < > <= >= instanceof Equality == != Bitwise AND & Bitwise exclusive OR ^ Bitwise inclusive OR | Logical AND && Logical OR || Condicional ? : Assignment = += -= *= /= %= &= ^= |= <<= >>= >>>= En Java, todos los operadores binarios, excepto los operadores de asignación, se evalúan de izquierda a derecha. Los operadores de asignación se evalúan de derecha a izquierda, lo que significa que el valor de la derecha se copia sobre la variable de la izquierda. PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 9 SENTENCIAS DE ENTRADA/SALIDA DE DATOS En Java, la entrada y salida se lee y escribe en flujos (streams). La fuente básica de entrada de datos es el teclado y la fuente de salida de datos es la pantalla. La clase System define dos referencias a objetos para la gestión de entrada y de salida: System.in para entrada por teclado System.out para la salida por pantalla Salida (System.out) El objeto out definido en la clase System esta asociado con el flujo de salida, que dirige los datos a consola y permite visualizarlos en la pantalla de su equipo: System.out es una referencia a un objeto de clase PrintStream, tiene métodos que se utilizarán con mucha frecuencia: print( ) transfiere una cadena de caracteres al buffer de pantalla. println( ) transfiere una cadena de caracteres y el carácter de fin de línea al buffer de la pantalla. ? Ejemplo: System.out.print(“Este es un mensaje en java”); System.out.println(“Este es un mensaje en java y el cursor lo envía a la siguiente línea”); Entrada (System.in) El objeto esta asociado al flujo estándar de entrada, que por defecto es el teclado. Entre los metodos de clase se encuentran read(), que devuelve el carácter actual en el buffer de entrada. ? Ejemplo: char letra; letra = (char) System.in.read(); No resulta practico el capturar carácter a carácter, es preferible hacerlo línea a línea. Para ello se utiliza la clase InputStreamReader, de la que se crea un objeto inicializado con System.in BufferedReader var iable = new BufferedReader(new InputStreamReader(System. in) ; ? Ejemplo: String nombrex; BufferedReader entr = new BufferedReader(new InputStreamReader(System.in); System.out.print(“Nombre:”); nombrex = entr.readl ine(); System.out.println(“El Nombre Tecleado es: ” + nombrex); Paquete io (import java.io.*;) Este paquete se utiliza para entradas de datos por teclado y salidas de datos en pantalla. Entre los que destacan: System.out.print, BufferedReader, readLine,parseInt, parseFloat. PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 10 Paquete util (import java.util.*;) Este paquete se utiliza para entradas de datos por teclado y salidas de datos en pantalla. Entre los que destacan: System.out.print, Scanner, nextLine, nextInt, nextFloat. Paquete *Clase/Metodo+ io +print util +print Transfiere una cadena de caracteres al buffer de pantalla. io *BufferedReader util *Scanner Permite inicializar los métodos para lectura de datos. io +readLine util +nextLine Se utiliza para la entrada de datos desde el teclado, devuelve un objeto cadena con los caracteres leídos hasta encontrar la marca de fin de línea. io +parseInt Tiene como argumento una cadena y devuelve el valor entero correspondiente a la conversión de dígitos de la cadena. util +nextInt Se utiliza para la entrada de datos desde el teclado, devuelve un objeto numérico entero. io +parseFloat Tiene como argumento una cadena y devuelve el valor numérico decimal correspondiente a la conversión de dígitos de la cadena. Util +nextFloat Se utiliza para la entrada de datos desde el teclado, devuelve un objeto numérico decimal. ESTRUCTURA DE UN PROGRAMA EN JAVA Un programa en Java se compone de una o más clases. Uno de los métodos de la clase principal debe ser obligatoriamente el main(). Un método en Java es un grupo de instrucciones que realiza una o más acciones. Asimismo, un programa contendrá una serie de declaraciones import que permitirán incluir en el mismo archivo que a su vez constarán de clases y datos predefinidos por ellos. import nombrePaquete.nombreClase; // Importación de las clases de los paquetes. public class nombreDelPrograma // Nombre de la clase principal { public static void main(String arg[]) //Método por el que inicia la ejecución del programa. { . . . } } ? Ejemplo 1, consiste en enviar un mensaje a la pantalla: import java.io.*; // Importación de la clase io de entrada/salida. // * indica que debe importar todos los elementos del paquete java.io public class Mensaje1 // Nombre de la clase principal, en este caso Mensaje1 { // Inicia y define la clase principal public static void main(String arg[]) //Método por el que inicia la ejecución del programa. { // Inicia el método principal del programa System.out.println(“Bienvenidos al Lenguaje Java”); //Envía el mensaje a pantalla. } // Fin del método principal del programa } // Fin de la clase principal PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 11 ? Ejemplo 2, consiste en enviar mensajes a pantallas con salto de línea. import java.io.*; // Importación de la clase io de entrada/salida. public class MensajeSalto // Nombre de la clase principal, en este caso MensajeSalto { // Inicia y define la clase principal public static void main(String arg[]) //Método por el que inicia la ejecución del programa. { // Inicia el método principal del programa System.out.print(“Soy: Alejandro \n”); //Envía el mensaje con salto de línea System.out.print(“Aprendiendo un poco \nde Java”); //Envía el mensaje en dos líneas } // Fin del método principal del programa } // Fin de la clase principal ? Ejemplo 3, consiste en declarar variables de texto y numéricas, asignarles valores e imprimir esos valores en pantalla. import java.io.*; // Importación dela clase io de entrada/salida. public class ValorVariables // Nombre de la clase principal, en este caso ValorVariables { // Inicia y define la clase principal public static void main(String arg[]) //Método por el que inicia la ejecución del programa. { // Inicia el método principal del programa int numero; // Declaración de variable local tipo numérica entera. String nombrex; // Declaración de variable local tipo cadena. nombrex=“Alejandro”; // Asignación de contenido de texto a la variable de tipo cadena. numero=12; // Asignación del numero 12 a la variable de tipo numerica. System.out.println(“Tu eres: ”+nombrex); //Muestra en pantalla el valor de la variable System.out.println(“Tu numero de la suerte es: ” +numero); } // Fin del método principal del programa } // Fin de la clase principal ? Ejemplo 4, consiste en declarar variables numéricas, asignarles valores. Calcular la sumatoria y promedio e imprimir esos valores en pantalla. import java.io.*; // Importación de la clase io de entrada/salida. public class SumaPromedio // Nombre de la clase principal, en este caso SumaPromedio { // Inicia y define la clase principal public static void main(String arg[]) //Método por el que inicia la ejecución del programa. { // Inicia el método principal del programa int num1, num2, num3; // Declaración de variables locales tipo numérica entera. int suma, promedio; // Declaración de variables locales tipo numérica entera. num1=10; num2=7; num3=8; // Asignación de valores numéricos a las variables. suma=(num1+num2+num3); // Calcula la suma de valores, almacenando el resultado en suma. promedio=suma/3; // Calcula el promedio, almacenando el resultado en promedio System.out.println(“La suma es: ”+suma); //Muestra en pantalla el resultado de la suma System.out.println(“El promedio es: ” +promedio); //Muestra en pantalla el promedio } // Fin del método principal del programa } // Fin de la clase principal PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 12 ? Ejemplo 5, consiste en capturar el Nombre y el año de nacimiento de una persona. Debe calcular la edad de la persona en segundos de vida. Mostrar en pantalla el nombre con su edad y el total de segundos de vida. Note que se utiliza la clase io . import java.io.*; // Importación de la clase io de entrada/salida public class NombreEdad // Nombre de la clase principal, en este caso NombreEdad { // Inicia y define la clase principal public static void main(String arg[]) //Método por el que inicia la ejecución del programa. { // Inicia el método principal del programa String nombre; // Declaración de variable local tipo cadena que almacenará el nombre. int nacio,edad; // Declaración de variables locales tipo numérica entera. // Almacenará el año de nacimiento y guardará el resultado del calculo. String auxiliar; // Declaración de variable local tipo cadena que almacenará el año. float segs; // Declaración de variable local tipo flotante que almacenará los segundos. // Definida en la clase System, cuya referencia esta dada en el in . // Inicializa el método para lectura de datos tipo cadena. BufferedReader entrada=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Nombre"); //Muestra en pantalla el mensaje Nombre // Método que permite la lectura de datos tipo cadena a través del objeto entrada. nombre=entrada.readLine(); //El valor pulsado por teclado se almacenará en la variable nombre System.out.println("Año de Nacimiento"); //Muestra en pantalla el mensaje Año de nacimiento // Método que permite la lectura de datos tipo cadena a través del objeto entrada. // Cabe destacar que a través de la clase io, solamente se pueden leer datos tipo cadena. auxiliar=entrada.readLine(); // Permite hacer la conversión del dato tipo texto a dato tipo numérico entero. nacio=Integer.parseInt(auxiliar); // Realiza el calculo de la edad de la persona, almacenando el valor en la variable edad edad = 2006 - nacio; // Realiza el calculo del total de segundos de vida, almacenando el valor en la variable segundos segs = edad * 525600; // Muestra en pantalla el nombre, la edad y el total de segundos de vida de la persona. System.out.println("Tu eres"+nombre+" tu edad es:"+edad+ "equivale a"+segs+"seg. de vida" ); } // Fin del método principal del programa } // Fin de la clase principal PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 13 ? Ejemplo 6, consiste en capturar el Nombre, el día y tres calificaciones de la Materia de Programación. Debe calcular el promedio de la materia. Debe mostrar en pantalla el día que se hizo la entrega, el promedio y el nombre del alumno. Note que se utiliza la clase util. import java.uti l .*; // Importación de la clase ut il de entrada/salida public class NombrePromedio // Nombre de la clase principal es: NombrePromedio { // Inicia y define la clase principal public static void main(String arg[]) //Método por el que inicia la ejecución del programa. { // Inicia el método principal del programa String nom; // Declaración de variable local tipo cadena que almacenará el nombre. int dia; // Declaración de variable local tipo numérico que almacenará el día de la entrega // Declaración de variables locales tipo flotante que almacenará 2 de las calificaciones. f loat cal i f1,cali f2; // Declaración de variables locales tipo double que almacenará 1 calificación y el promedio double cali f3, prom; // Creamos una clase in de tipo Scanner (del paquete java.util) // que permite leer datos de tipo: texto, entero, flotante, double. Scanner in = new Scanner(System.in); System.out.print("Nombre:"); //Muestra en pantalla el mensaje Nombre nom= in.nextLine(); // Lee un valor de tipo cadena y se lo asigna a la variable nom. System.out.print("Dia:"); //Muestra en pantalla el mensaje Dia dia = in.nextInt(); // Lee un valor de tipo entero y se lo asigna a la variable dia System.out.println("Materia de Programacion"); System.out.print("1era. Cal i ficacion:"); cali f1= in.nextFloat(); // Lee un valor de tipo flotante y se lo asigna a la variable calif1 System.out.print("2da. Cal i ficacion:"); cali f2= in.nextFloat(); // Lee un valor de tipo flotante y se lo asigna a la variable calif2 System.out.print("3era. Cal i ficacion:"); cali f3= in.nextDouble(); // Lee un valor de tipo double y se lo asigna a la variable calif3 // Realiza el calculo del promedio y el resultado se lo asigna a la variable prom prom=(cal i f1+cali f2+cali f3)/3; // Muestra en pantalla el dia, el promedio y en otra linea el nombre del alumno(a) System.out.println("El dia: "+dia+" se entrego el promedio de: "+prom); System.out.println("al alumno(a): "+ nom); } // Fin del método principal del programa } // Fin de la clase principal PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2By: m@gh By: m@gh 14 ESTRUCTURAS DE CONTROL Estas permiten controlar el comportamiento de un método o de un programa. Las estructuras de control permiten combinar instrucciones o sentencias individuales en una simple unidad lógica con un punto de entrada y un punto de salida. Las instrucciones o sentencias se organizan en tres tipos de estructuras de control que sirven para controlar el flujo de la ejecución: secuencia, selección (decisión) y repetición. Hasta este momento solo se han utilizado el flujo secuencial. Una sentencia compuesta es un conjunto de sentencias encerradas entre llaves que se utiliza para especificar un flujo secuencial. SENTENCIA DE CONTROL if En Java, la estructura de control de selección principal es la sentencia if. La sentencia if tiene dos alternativas o formatos posibles. El formato más sencillo tiene la siguiente sintaxis: i f (condición) sentencia; donde: la condición es una expresión logica y la sentencia representa la acción ejecutable, si la condición toma un valor verdadero. Otro formato de la sentencia if es la sentencia if-else. El formato tiene la siguiente sintaxis: i f (condición) acción1, else acción2 donde: la condición es una expresión logica y la acción1 se ejecuta si la expresión logica es verdadera y la acción2 se ejecuta si la expresión logica es falsa. ? Ejemplo 7, consiste en capturar la edad de la persona. Debe distinguir si esa persona tiene mayoría de edad o no. Debe mostrar en pantalla la edad y una frase que indique mayor o menor de edad. import java.uti l .*; public class MayoriaEdad { publ ic static void main(String arg[]) { int edad; Scanner in = new Scanner(System.in); System.out.println("Edad:"); edad= in.nextInt(); i f (edad >=18) System.out.print("Eres mayor de edad, ya puedes votar"); else System.out.print("Eres menor de edad"); } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 15 ? Ejemplo 8, consiste en capturar una serie de tres números. La aplicación debe distinguir cuál de los números es el mayor. Debe mostrar en pantalla el mayor de ellos. /* Autor: Mart ín Ale jandro Guerra Hernández / m@gh Descripción: Captura 3 Números, la aplicación debe deducir cuál es mayor de lo s 3 Fecha: 2-01-07 */ import java.uti l .*; public class NumMayor { public static void main(String arg[]) { f loat num1, num2, num3, nummayor; Scanner in = new Scanner(System.in); System.out.println("Aplicacion que Lee 3 Numeros y deduce cual es mayor"); System.out.println("1er. Numero:"); num1= in.nextFloat(); System.out.println("2do. Numero:"); num2= in.nextFloat(); System.out.println("3er. Numero:"); num3= in.nextFloat(); i f ((num1>num2) && (num1 >num3)) System.out.print("El numero mayor es:"+num1); else i f((num2 > num1) && (num2 > num3)) System.out.print("El numero mayor es:"+num2); else i f((num3 > num1) && (num3 > num1)) System.out.print("El numero mayor es:"+num3); else System.out.print("Los Numeros Son Iguales"); } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 16 SENTENCIA DE CONTROL switch Es una sentencia de Java que se utiliza para seleccionar entre múltiples alternativas. La sentencia switch es especialmente útil cuando la selección se basa en el valor de una variable simple o de una expresión simple denominada expresión de control o selector. El valor de esta expresión puede ser de tipo int, char o boolean, pero no de tipo double, string o float. Su sintaxis switch(selector) { case etiqueta1: sentencias1; break; case etiqueta2: sentencias2; break; .. .. case etiquetan:sentenciasn; break; defaul t: sentenciasn; // Opcional break; } donde, la expresión de control o selector se evalúa y se compara con cada una de las etiquetas del case. La expresión selector debe ser de tipo int, char o bolean, pero no double, string o flota. Cada etiqueta es un valor único, constante y cada etiqueta debe tener un valor diferente de los otros. Si el valor de la expresión selector es igual a una de las etiquetas case por ejemplo: case1, entonces la ejecución comenzará con la primera sentencia1 y continuará hasta que encuentre una sentencia break (o hasta encontrar el fin de la sentencia de control switch). Si el valor del selector no esta listado en ninguna etiqueta case, no se ejecutará ninguna de las opciones, a menos que especifique una acción por defecto (omisión). La omisión de una etiqueta default puede crear un error lógico difícil de prever. Aunque la etiqueta default es opcional, se recomienda su uso, a menos que este absolutamente seguro de que todos los valores de selector están incluidos en las etiquetas case. Una sentencia break consta de la palabra reservada break seguida por punto y coma. Cuando la computadora ejecuta las sentencias siguientes a una etiqueta case, continua hasta que se alcanza una sentencia break. Si la computadora encuentra una sentencia break, termina la sentencia switch. Si se omiten las sentencias break, después de ejecutar el código de case, la computadora ejecutará el código que sigue al siguiente case. PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 17 ? Ejemplo 9, consiste en mostrar un lista de opciones (menú) que simulan los días de la semana. La aplicación debe ser capaz de distinguir que opción eligió y mostrar en pantalla un mensaje indicando cual ha sido su elección. /* Autor: Mart ín Ale jandro Guerra Hernández / m@gh Descripción: Visualiza los días, el usuar io elige opción y se muestra su elección Fecha: 2-01-07 */ import java.uti l .*; public class MenuNum { public static void main(String arg[]) { int opc; Scanner in = new Scanner(System.in); System.out.println("* 1) Lunes *"); System.out.println("* 2) Martes *"); System.out.println("* 3) Miercoles *"); System.out.println("* 4) Jueves *") ; System.out.println("* 5) Viernes *"); System.out.print("*El i je Opcion (1-5): "); opc = in.nextInt(); switch(opc) { case 1:System.out.println("Valor pulsado 1, corresponde al Lunes"); break; case 2:System.out.println("Valor pulsado 2, corresponde al Martes"); break; case 3:System.out.println("Valor pulsado 3, corresponde al Miércoles"); break; case 4:System.out.println("Valor pulsado 4, corresponde al Jueves"); break; case 5:System.out.println("Valor pulsado 5, corresponde al Viernes"); break; defaul t:System.out.println("Valor pulsado No val ido"); break; } } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 18 ? Ejemplo 10, consiste en mostrar un lista de opciones (menú) que simulan losdías de la semana. La aplicación debe ser capaz de distinguir que opción eligió y mostrar en pantalla un mensaje indicando cual ha sido su elección. import java.io.*; public class DiasTxt { public static void main(String arg[]) { char opc; System.out.println("* Menu de los días de la semana *"); System.out.println("* A) Lunes *"); System.out.println("* E) Martes *"); System.out.println("* I) Miércoles *"); System.out.println("* O) Jueves *"); System.out.println("* U) Viernes *"); System.out.print("*El i je Opcion:"); opc = (char) System.in.read(); switch(opc) { case 'A': case 'a' :System.out.println("Valor pulsado A, corresponde Lunes"); break; case 'E': case 'e' : System.out.println("Valor pulsado E, corresponde Martes"); break; case ' I ' : case ' i ' : System.out.println("Valor pulsado I, es Miércoles"); break; case 'O': case 'o' : System.out.println("Valor pulsado O, es Jueves"); break; case 'U': case 'u' : System.out.println("Valor pulsado U, es Viernes"); break; defaul t: System.out.println("Valor pulsado No val ido"); break; } } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 19 BUCLES Las estructuras de programación o estructuras de control permiten tomar decisiones y realizar un proceso repetidas veces. Son los denominados bifurcaciones y bucles. Dicho en otras palabras, es cualquier construcción de programa que repite una sentencia o secuencia de sentencias un número de veces. Las sentencias que se repiten en un bloque se denomina cuerpo del bucle y cada repetición del cuerpo del bucle se llama iteración del bucle. BUCLE O CICLO while Un bucle while tiene una condición del bucle (una expresión logica) que controla la secuencia de repetición. La posición de esta condición del bucle es delante del cuerpo del bucle y significa que un bucle while es un bucle pre-test, de modo que cuando se ejecuta el mismo, se evalua la condición antes de que se ejecute el cuerpo del bucle. Sintaxis: Forma 1: Forma 2: while(condicion_bucle) while(condicion_bucle) sentencia; { sentencia1; ..... sentencian; } donde, while es palabra reservada de Java. condicion_bucle, es la expresión logica. sentencia, es la sentencia simple o el conjunto de sentencias. El comportamiento o funcionamiento de un ciclo o bucle while, es el siguiente: 1. Se evalúa la condicion_bucle 2. Si la condición_bucle es verdadera: a. La sentencia especificada, denominada cuerpo del bucle se ejecuta. b. Vuelve el control al paso 1. 3. En caso contrario: El control se transfiere a la sentencia siguiente fuera del bucle o ciclo. Ejemplo: contador=0; // Inicialización whi le(contador<4) // Prueba/condición { System.out.println(“*”); contador++; // Actualización (incremento) } La variable que representa la condición del bucle se denomina variable de control del bucle debido a que determina si el cuerpo del bucle se repite. La variable de control del bucle debe ser: inicializada, comprobada y actualizada para que el cuerpo del bucle se ejecute adecuadamente. Cada etapa se resume así: Inicialización, al contador se establece con un valor inicial, antes de que alcance el maximo valor. Prueba/condición, se comprueba el valor del contador antes de que comience la repetición de cada bucle (denominada iteración o pasada). Actualización, el contador se actualiza (su valor se incrementa en 1, mediante el operador ++) durante cada iteración. cuerpo PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 20 ? Ejemplo 11, consiste en mostrar en pantalla los números primos de 1 hasta 30 utilizando el bucle while. import java.io.*; public class NumsImpares { public static void main(String arg[]) { int num; System.out.println("Lista de Números Impares 1-30"); num=1; whi le(num<30) { System.out.println(num); num=num+2; } } } ? Ejemplo 12, aplicación que permite capturar una serie de números y finaliza la captura hasta que el usuario teclee el numero 0. Debe utilizar el bucle while, calcular el total de números capturados y la media de los números. Debe mostrar en pantalla el total y la media de los números. import java.uti l .*; public class SumaNums { publ ic static void main(String[] args) { int num, suma, media, cuenta; Scanner lee = new Scanner(System.in); num=1; cuenta=0; suma=0; media=0; System.out.println("Captura Numeros, hasta que teclee 0"); whi le(num!=0) { System.out.print("Numero:"); num=lee.nextInt(); cuenta++; suma=suma+num; } media=suma/(cuenta-1); System.out.println("Total de Números Capturados: "+(cuenta-1)); System.out.println("La Media es: "+media); } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 21 ? Ejemplo 13, aplicación que permite capturar “X” cantidad de números. Debe utilizar el bucle while, determinar el total de números capturados que sean pares y cuantos son impares. Debe mostrar en pantalla la cantidad total de los números pares e impares. /* Autor: Mart ín Ale jandro Guerra Hernández / m@gh Descripción: Captura una cant idad de números, la aplicación determina cuantos son pares y cuantos son impares. Fecha: 2-01-07 */ import java.uti l .*; public class NumsParImpar { publ ic static void main(String[] args) { int num, aux, cuenta, cant; int cantpar, cantimpar; Scanner lee = new Scanner(System.in); cuenta=0; aux=0; cantpar=cantimpar=0; System.out.print("Cantidad de Números a Capturar? "); cant=lee.nextInt(); whi le(cuenta<cant) { System.out.print("Numero:"); num=lee.nextInt(); cuenta++; aux=num%2; i f(aux==0) cantpar++; else cantimpar++; } System.out.println("Total de Numeros Pares: "+cantpar); System.out.println("Total de Numeros Impares: "+cantimpar); } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 22 BUCLE O CICLO for El bucle for es el más adecuado para implementar bucles controlados pro contador, que son bucles en los que un conjunto de sentencias se ejecutan una vez por cada valor de un rango específico. La sentencia for es la mejor forma de programar la ejecución de un bloque de sentencias de un numero fijo de veces. El bucle for, tiene la siguiente sintaxis: for( inicialización; condición _ i teración; incremento_decremento) { sentencia1; sentencia2; ….. sentencian; } El bucle for contiene cuatro partes: Parte de inicialización, que inicializa las variables de control del bucle. Se pueden utilizar variables de control del bucle simples o compuestas. Las variables de control pueden ser definidas en esta parte. Parte de condición_iteración, que contieneuna expresión lógica que hace que el bucle realice las iteraciones de las sentencias, mientras que la expresión sea verdadera. Parte de incrmento_decremento, es la parte del bucle que incrementa o decrementa la variable de control del bucle. Sentencias, son las acciones o sentencias que se ejecutarán en cada iteración del bucle. // Imprimir en pantalla 10 veces el mensaje hola for( int i=1;i<10;i++) System.out.println(“Hola”); ? Ejemplo 14, consiste en mostrar en pantalla los números pares, comenzando con el 30 y terminando en 1, utilizando el bucle for. import java.io.*; public class NumsPares { public static void main(String arg[]) { int num; System.out.println("Lista los Numeros Pares del 30-1"); num=1; for(num=30;num>1;num-=2) { System.out.println(num); } } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 23 ? Ejemplo 15, aplicación que permite capturar una serie de 5 números, utilizando el bucle for. Debe mostrar en pantalla el máximo número. Note que se utiliza la clase util. /* Autor: Mart ín Ale jandro Guerra Hernández / m@gh Descripción: Captura 5 números y determina cuál de ellos es el valor máximo. Fecha: 2-01-07 */ import java.uti l .*; public class NumMax { publ ic static void main(String[] args) { int num, max, cuenta; Scanner in = new Scanner(System.in); System.out.println("Captura 5 Numeros. Maximo Valor de la Lista"); max=0; for(cuenta=1;cuenta<=5;cuenta++) { System.out.print("Numero:"); num=in.nextInt(); i f(num>max) max=num; } System.out.println("El Valor Máximo de la Lista es:"+max); } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 24 ? Ejemplo 16, aplicación que permite capturar 5 datos de una compra: nombre del producto, la cantidad y el precio. Debe calcular el importe por producto, el total de la compra. Además de otorgar un descuento si el importe de la compra es mayor a $5000 dar un descuento del 10%, si la compra esta entre $2500-$5000 dar un descuento del 5%, utilizando el bucle for. Debe mostrar en pantalla el importe total de la compra e indicar el descuento. import java.uti l .*; public class CicloCompraMcdo { publ ic static void main(String []arg) { Str ing pdto, obtenido, error; f loat cant, precio, importe, subtotal , total , desc; Scanner in = new Scanner(System.in); System.out.println("Captura 5 Productos."); importe=0.0f; subtotal=0.0f; total=0.0f; desc=0.0f; for( int cuenta=1;cuenta<=5;cuenta++) { System.out.print("Producto: "); pdto=in.nextLine(); System.out.print("Cantidad: "); cant=in.nextFloat(); System.out.print("Precio:$ "); precio=in.nextFloat(); importe=cant*precio; subtotal+=importe; error=in.nextLine(); } i f(subtotal>5000) { desc=subtotal-(subtotal*.10f); obtenido="10%"; } else i f((subtotal>2500) && (subtotal<=5000)) { desc=subtotal-(subtotal*.05f); obtenido="5%"; } else { desc=subtotal ; obtenido="0%"; } total=desc+(desc*.15f); System.out .print ln("Total de la compra:$"+total+"con un descuento del:"+obtenido); } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 25 BUCLE O CICLO do-while La sentencia do-while se utiliza para especificar un bucle condicional que se ejecuta al menos una vez. Esta situación se suele dar en algunas circunstancias en las que ha de tener la seguridad de que una determinada acción se ejecutará una o varias veces, pero al menos una vez. Su sintaxis es: do { sentencia1; sentencia2; ….. sentencian; }whi le(expresión) La construcción do comienza ejecutando las sentencias. Después se evalúa la expresión. Si la expresión es verdadera, entonces se repite la ejecución de las sentencias. Este proceso continua hasta que la expresión es falsa. ? Ejemplo 17, aplicación que permite capturar texto hasta que el usuario pulse *. Se mostrará en pantalla todos los caracteres pulsados por el usuario. import java.io.*; public class CicloTexto { publ ic static void main(String []arg) throws IOException { char letra; System.out .print ln("Teclee el Texto Deseado. Para terminar pulse * y Enter") ; do { letra = (char) System.in.read(); }whi le(letra!='*'); } } COMPARACIÓN DE LOS BUCLES while, for y do-while. while, el uso más frecuente es cuando la repetición no esta controlada por contador, el test de condición le precede a cada repetición del bucle; el cuerpo del bucle puede no ser ejecutado. Se debe utilizar cuando se desea saltar el bucle si la condición es falsa. for, bucle de conteo, cuando el numero de repeticiones se conoce por anticipado y puede ser controlado por un contador; también es adecuado para bucles que implican control no contable del bucle con simples etapas de inicialización y de actualización; el test de la condición precede a la ejecución del cuerpo del bucle. do-while, es adecuada cuando se debe asegurar que al menos se ejecute el bucle una vez. PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 26 ? Ejemplo 18, aplicación que contiene un menú de las operaciones aritméticas, el cuál lo debe mostrar al menos una vez, para que el usuario elija la opción y si es necesario capture los números para realizar la operación. Debe mostrar en pantalla los números de la operación y el resultado. import java.uti l .*; public class CicloMenu { publ ic static void main(String []arg) { int opcion; f loat num1, num2, resul t; Scanner lee = new Scanner(System.in); do { System.out.println("Menu:"); System.out.println("1. Suma"); System.out.println("2. Resta"); System.out.println("3. Suma"); System.out.println("4. Resta"); System.out.println("5. Sali r"); System.out.print("El i je Opcion:"); opcion=lee.nextInt(); i f(opcion==1) { System.out.println("Eli jio Suma "); System.out.print("Numero "); num1=lee.nextFloat(); System.out.print("Numero "); num2=lee.nextFloat(); resul t=num1+num2; System.out.println("El resul tado de: "+num1+" + "+num2+" = "+resul t); } i f(opcion==2) { System.out.println("Eli jio Resta "); System.out.print("Numero "); num1=lee.nextFloat(); System.out.print("Numero "); num2=lee.nextFloat(); resul t=num1-num2; System.out.println("El resul tado de: "+num1+" - "+num2+" = "+resul t); } }whi le(opcion!=5 || opcion!=5); } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 27 ARREGLOS (Arrays) Un array (lista o tabla) es una secuenciade datos del mismo tipo. Los datos se llaman elementos del array y se numeran consecutivamente de 0,1,2…..n. El tipo de de elementos almacenados en el array puede ser cualquier tipo de dato tales como: char, int o float. Un array puede contener, por ejemplo: la edad de los alumnos, las temperaturas de cada dia del mes de una ciudad, el total de personas de las ciudades del estado de Michoacán, etc. La declaración de un array es similar a otros tipos de datos, excepto que se debe indicar al compilador que es un array y esto se hace con los corchetes. Se pueden colocar de 2 formas tipo_dato [] identi ficador; t ipo_dato identi ficador[]; El primer formato indica que todos los identificadores son arrays del tipo de dato. El segundo formato es array solo el identificador al que le siguen los corchetes. Ejemplos: char cad[], txt; // cad es un array tipo char, txt es una variable de tipo char. int [] nums, sumas; // tanto nums como sumas son declarados arrays de tipo int. int [] edad = new int [4]; // edad contiene 5 elementos de tipo int f loat [] max,min = new float [4]; // tanto max como min contienen 5 elementos de tipo float Se deben asignar valores a los elementos de un array antes de utilizarlos, tal como se asignan valores a variables. Para asignar valores a cada elemento del array, como ejemplo: nums[0]=7; cad[ ]={'m', '@', 'g' , 'h'} nums[1]=6; Cuando se inicializa un array, el tamaño del array se puede determinar automáticamente por las constantes de inicialización. Estas constantes se separan por comas y se encierran entre llaves, como los siguientes ejemplos: int valores [ ]= {1,2,3,4,5} // define un array de 5 elementos de tipo int y se inicializa char txt[]= { 'm', 'g'} // define un array de 2 elementos de tipo char y se inicializa ? Ejemplo 19, aplicación que por medio de un arreglo muestra una lista de colores. import java.uti l .*; public class ArrayColors { publ ic static void main(String []arg) { int cta; Str ing colores [ ]= {"Azul", "Amari l lo", "Verde", "Blanco", "Rojo"}; System.out.println("Lista los Colores"); for(cta=0;cta<=4;cta++) { System.out.println("Color en la Posicion: "+cta+" "+colores[cta]); } } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 28 ? Ejemplo 20, aplicación que le permite al usuario capturar texto y lo almacena en un arreglo. Posteriormente muestra en pantalla el texto tecleado. /* Autor: Mart ín Ale jandro Guerra Hernández / m@gh Descripción: Captura texto y el contenido lo guarda en arreglo Fecha: 2-01-07 */ import java.uti l .*; public class Editor { publ ic static void main(String []arg) { Str ing [ ]palabra= new String[100]; Scanner in = new Scanner(System.in); System.out.println("Aplicacion que Captura Palabras"); System.out.println(" Hasta Que Teclee sal ir"); for( int i=0;i<100;i++) { palabra[i ]=in.nextLine(); i f(palabra[i ].equals("sal ir")) break; } System.out.println("\nEste su texto:\n"); for( int cta=0;cta<100;cta++) { i f(palabra[cta].equals("sali r")) break; System.out.println(palabra[cta]); } } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 29 ? Ejemplo 21, aplicación que almacena en un arreglo una lista de nombres. Posteriormente los ordena a través del método de ordenación de la burbuja. Muestra en pantalla la lista de los nombres ordenados en forma ascendente. /* Autor: Mart ín Ale jandro Guerra Hernández / m@gh Descripción: Lista de nombres almacenados en arreglo, poster iormente los ordena a t ravés del Método de Ordenación de la Burbuja. Fecha: 2-01-07 */ import java.uti l .*; public class OrdenaNombres { publ ic static void main(String []arg) { Str ing nombres[ ]={"Martin","Ana","Elsa","Alejandro","Diana", "Luis"}; System.out.println("Aplicacion que Ordena los Nombres de la Lista."); for( int j=0; j<nombres.length; j++) { for( int i=j+1;i<nombres.length;i++) { i f(nombres[i ].compareTo(nombres[j])<0) { Str ing aux= nombres[ j]; nombres[ j]= nombres[i ]; nombres[i ]= aux; } } } for( int cta=0;cta<nombres.length;cta++) { System.out.println(nombres[cta]); } } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 30 ? Ejemplo 22, aplicación que almacena en un arreglo una lista de números. Posteriormente los ordena a través del método de ordenación de la burbuja. Muestra en pantalla la lista de los números ordenados en forma ascendente. import java.uti l .*; public class OrdenaNums { publ ic static void main(String []arg) { int total ; int num[]= new int[10]; Scanner in = new Scanner(System.in); do { System.out.println("Cantidad de Numeros a Capturar? "); total=in.nextInt(); }whi le(total>10); System.out.println("Captura de Numeros"); for( int x=0;x<total ;x++) { System.out.print("Numero("+x+") :"); num[x]=in.nextInt(); } for( int j=0; j<total ; j++) { for( int i=j+1;i<total ; i++) { i f(num[i ]< num[j]) { int aux= num[j]; num[j]= num[i ]; num[i ]= aux; } } } System.out.println("\n Lista de Numeros Ordenados:"); for( int cta=0;cta<total ;cta++) { System.out.print("\t"+num[cta]); } } } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 31 INTRODUCCIÓN A LOS APPLETS Los applets son aplicaciones gráficas que aparecen en una zona de la ventana del navegador, dicho de otra forma es un programa basado en ventanas. Los applets son conducidos u orientados a eventos. Un applet espera a que ocurra un evento. El AWT (Abstract Windows Toolkit) notifica el evento al applet llamando a un gestor de eventos para que lo trate. Después el applet debe ejecutar la acción que desee el programador y devolver el control rápidamente al AWT. El usuario es el que debe iniciar una interacción con el applet. Todos los applets son subclases de la clase applet, Cualquier applet debe importar los paquetes java.applet y java.awt. Los applets son ejecutados por un navegador de internet o bien por un visor de applets (appleetviewer), incluido en JDK. La ejecución de un applet no comienza con el main(). Sino que es gestionada por varios métodos del AWT. Una vez que se ha compilado un applet, se incluye en un archivo HTML utilizando la etiqueta applet. Diferencias entre Aplicaciones y Applets Aplicaciones Sencillas en Java Applets en Java Permite desarrollar aplicaciones que se ejecutan en el intérprete local de JSDK, es decir desde la línea de comando. Permite desarrollarmódulos descargables a través de una página web y ejecutable en la JVM del navegador. No permiten interfaz grafica, ni manejo de eventos. Al ejecutarse desde un navegador, tiene la ventaja de la estructura: una ventana, manejo de eventos, gráficos e interfaz de usuario. ESTRUCTURA DE UN APPLET Casi todos los applets sobrescriben una serie de métodos que proporcionan el mecanismo básico mediante el que el navegador o el visor de applets conecta con el applet y control su ejecución. Cuatro de estos metodos son: ini t(), start(), stop(), destroy() los define el applet. El paint() lo define la clase Component. Como se muestra en esta estructura: import java.awt.*; // import java.applet.*; // public class Nombre_applet extends Applet { public void ini t() {// Código de inicialización} publ ic void start() {// Código que comienza o reanuda la ejecución } publ ic void stop() {// Código que detiene la ejecución} // Se ejecuta cuando termina el applet. Es el último método que se ejecuta publ ic void destroy() {// Código para la final ización definit iva} // Es llamado cuando se restaura la ventana del applet publ ic void paint(Graphics g) {// Código para dibujar el contenido en la ventana} } PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 32 ? Ejemplo 23, diseñamos un applet que envie a la ventana un mensaje en las posiciones especificadas (columna, renglón). import java.applet.Applet; import java.awt.*; public class HolaJava extends Applet { publ ic void paint(Graphics g) // Inicia lizamos el método Grafico { g.drawString("Mi 1er Applet",20,50); //Enviamos un mensaje a la ventana / / en las coordenadas: Co l, Reng } } import java.applet.Applet; import java.awt.*; En nuestro applets deberemos, incluir como mínimo estas dos sentencias de importación. En la primera importamos la clase Applet, de la cual derivaremos nuestros applets. La segunda permite importar las clases de la librería AWT, que nos permitirán dibujar en el rectángulo asignado al applet. public class HolaJava extends Applet { } Nuestros applet siempre van a ser clases derivadas de Applet, pues en esta clase y en sus clases padre se definen los métodos que deberemos sobreescribir para que nuestros applets respondan a los eventos generados desde el navegador. public void paint(Graphics g) { } Este es el método que debemos sobreescribir para dibujar en el rectángulo asignado a nuestro applet. Recibe un parámetro que es una referencia a una instancia de tipo Graphics. Esta clase permite definir lo que se suele denominar lienzo (o Canvas). El lienzo es precisamente ese rectángulo del que estamos hablando todo el rato. g.drawString("Mi 1er Applet",20,50); La clase Graphics dispone de muchos métodos para dibujar en el lienzo. Éste, concretamente, nos permite dibujar un texto en la posición que queramos. En este caso el texto se pintará 20 píxeles a la derecha del borde izquierdo de la pantalla y otros 50 píxeles abajo del borde de superior. Incrustar un Applet en una Pagina Web La etiqueta applet se utiliza para arrancar un applet tanto desde un archivo HTML como desde un visor de applets. Un visor de applets ejecutará cada etiqueta applet que encuentre en una ventana independiente, mientras que navegadores como: Netscape Navigator, Internet Explorer, HotaJava, Mozilla Firefox permiten ejecutar varios applets en una unica pagina. La sintaxis para una etiqueta applet, lo que esta entre corchetes es opcional: PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 33 <applet [codebase=url ] code=archivoClass [al t=texto_alternativo] width=pixels height=pixels [al ign=tipoAl ineamiento]> </applet> codebase: es un atributo opcional que especifica el URL del código del applet, que es el directorio donde se buscará el archivo de clase ejecutable del applet. code: es un atributo necesario y proporciona el nombre del archivo que contiene el archivo compilado .class del applet. alt: es un atributo opcional que especifica el mensaje que se debe visualizar en caso de que el navegador entienda la etiqueta applet pero no pueda ejecutar applets Java. Este es diferente al texto alternativo de HTML. width y height: son atributos necesarios que dan el tamaño del area de visualización de un applet (en píxeles). align: es un atributo opcional que especifica la alineación del applet. Puede tomar los siguientes valores: left, right, top, bottom, middle, baseline, texttop, absmiddle, absbottom. Si desea incluir su applet en una página web. La página que desarrollaremos es la siguiente. Puedes utilizar un editor de páginas web o cualquier editor de texto, para nuestro ejemplo usaremos el Bloc de notas, haciendo clic en Inicio / Programas / Accesorios / Bloc de notas: <HTML> <BODY> <APPLET CODE="HolaJava.class" WIDTH="200" HEIGHT="70"> </APPLET> </BODY> </HTML> Cuando termines de teclear estas líneas de código, clic en Archivo / Guardar como. Del cuadro de dialogo: en el cuadro Tipo: Todos lo archivos. Y en el cuadro Nombre: Hola.html Ahora ingresa al Explorador de Windows o MiPC, busca el archivo: Hola.html has doble clic sobre este, se abre navegador con el contenido de esta pagina, para nuestro ejemplo, solo se visualizará el mensaje: Mi 1er Applet PDF created with pdfFactory Pro trial version www.pdffactory.com http://www.pdffactory.com Curso Básico de Java 2 By: m@gh By: m@gh 34 CLASE Graphics La clase Graphics dispone de más métodos aparte de drawString, que nos permitirán dibujar figuras e imágenes. Métodos de dibujo Mientras no se especifique, consideraremos que todos los parámetros son enteros: drawString(String texto,x,y) Escribe un texto a partir de las coordenadas (x,y), que representan columna, fila. drawLine(x1,y1,x2,y2) Dibuja una línea entre las coordenadas (x1,y1) y (x2,y2). drawRect(x,y,ancho,alto) fillRect(x,y,ancho,alto) clearRect(x,y,ancho.alto) Son tres métodos encargados de dibujar, rellenar y limpiar, respectivamente, un rectángulo cuya esquina superior izquierda está en las coordenadas (x,y) y tienen el ancho y alto especificados. drawRoundRect(x,y,ancho,alto,anchoArco,altoArco) fillRoundRect(x,y,ancho,alto,anchoArco,altoArco) Equivalentes a los anteriores, pero con las esquinas redondeadas. La forma y tamaño de dichas esquinas viene dada por los dos últimos parámetros. draw3DRect(x,y,ancho,alto,boolean elevado) fill3DRect(x,y,ancho,alto,boolean elevado) Equivalentes a los primeros, pero dibujan un borde para dar la sensación de que está elevado o hundido (dependiendo del valor del último parámetro). drawOval(x,y,ancho,alto) fillOval(x,y,ancho,alto) Dibujan una elipse con esquina izquierda superior en (x,y) y el ancho y alto especificados. Si son iguales dibujará un círculo. drawArc(x,y,ancho,alto,anguloInicio,anguloArco) fillArc(x,y,ancho,alto,anguloInicio,anguloArco) Dibuja una arco cuyo primer vértice está en (x,y) y el segundo en (x+ancho,y+alto). La forma del mismo vendrá dado por los dos últimos parámetros. drawPolygon(int[ ] coordenadasX,int[ ] coordenadasY,numCoordenadas) fillPolygon(int[ ] coordenadasX,int[ ] coordenadasY,numCoordenadas) Dibuja un polígono cerrado
Compartir