You are on page 1of 26

DEFINICIN E HISTORIA DE JAVA.

Java surgi en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron de disear un nuevo lenguaje de programacin destinado a electrodomsticos. La reducida potencia de clculo y memoria de los electrodomsticos llev a desarrollar un lenguaje sencillo capaz de generar cdigo de tamao 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 cdigo neutro que no dependa del tipo de electrodomstico, el cual se ejecutaba sobre una mquina hipottica o virtual denominada Java Virtual Machine (JVM). Era la JVM quien interpretaba el cdigo neutro convirtindolo a cdigo particular de la CPU utilizada. Esto permita 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 electrodomsticos se interes por el nuevo lenguaje. Como lenguaje de programacin para computadores, Java se introdujo a finales de 1995. La clave fue la incorporacin de un intrprete Java en la versin 2.0 del programa Netscape Navigator, produciendo una verdadera revolucin en Internet. Java 1.1 apareci a principios de 1997, mejorando sustancialmente la primera versin del lenguaje. Java 1.2, ms tarde rebautizado como Java 2, naci a finales de 1998. Al programar en Java no se parte de cero. Cualquier aplicacin que se desarrolle cuelga (o se apoya, segn como se quiera ver) en un gran nmero de clases preexistentes. Algunas de ellas las ha podido hacer el propio usuario, otras pueden ser comerciales, pero siempre hay un nmero 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, ejecucin remota, componentes, seguridad, acceso a bases de datos, etc.). Por eso muchos expertos opinan que Java es el lenguaje ideal para aprender la informtica moderna, porque incorpora todos estos conceptos de un modo estndar, mucho ms sencillo y claro que con las citadas extensiones de otros lenguajes. Esto es consecuencia de haber sido diseado ms recientemente y por un nico equipo. El principal objetivo del lenguaje Java es llegar a ser el nexo universal que conecte a los usuarios con la informacin, est sta situada en el ordenador local, en un servidor de Web, en una base de datos o en cualquier otro lugar. Java es un lenguaje muy completo (de hecho se est convirtiendo en un macro-lenguaje: Java 1.0 tena 12 packages; Java 1.1 tena 23 y Java 1.2 tiene 59). En cierta forma casi todo depende de casi todo. Por ello, conviene aprenderlo de modo iterativo: primero una visin muy general, que se va refinando en sucesivas iteraciones. Una forma de hacerlo es empezar con un ejemplo completo en el que ya aparecen algunas de las caractersticas ms importantes. La compaa Sun describe el lenguaje Java como simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones, multitarea y dinmico. Adems de una serie de halagos por parte de Sun hacia su propia criatura, el hecho es que todo ello describe bastante bien el lenguaje Java, aunque en algunas de esas caractersticas el lenguaje sea todava bastante mejorable. Algunas de las anteriores ideas se irn explicando a lo largo de este manual. REQUISITOS PARA PROGRAMAR EN JAVA. A grandes rasgos, cualquier persona interesada en programar en Java, necesitar un editor de textos (como el bloc de notas de Windows o el vim de Linux), un compilador (que se incluye en el Java Developement Kit (o Software Developement Kit en versiones recientes). Este JDK o SDK incluye el archivo javac.exe quien realmente es el compilador. El JRE por su parte es el tiempo de ejecucin de Java (Java Runtime Environment) que no permite desarrollar aplicaciones en Java, sino ejecutarlas mediante el JavaVM (o mquina virtual de Java).

Sin embargo, diversas comunidades y empresas desarrolladoras de software han creado diversos entornos de desarrollo integrado (IDEs) que cuentan con herramientas intuitivas que ayudan a la depuracin y optimizacin del cdigo fuente as como diversas tareas como la generacin del producto final. En este curso, se utilizar el NetBeans. Pero antes de adentrarnos en el Netbeans es necesario conocer los fundamentos de Java. FUNDAMENTOS DE JAVA Un programa en Java presenta la estructura habitual en los lenguajes OOP (lenguajes orientados a objetos). As, tendremos una clase que contenga el programa principal. El fichero fuente tendr extensin .java, mientras que el compilado tendr extensin .class. Un fichero fuente puede contener ms de una clase, pero slo una puede ser de tipo public. Adems, el nombre de esa clase public deber coincidir con el nombre del fichero fuente. Por ejemplo, si en nuestro fichero .java declaramos public class MiClase, el nombre de ese fichero deber ser MiClase.java (respetando las maysculas pues, de lo contrario, Java interpretara que son nombres distintos). A no ser que nuestros programas sean demasiado simples, stos estarn constituidos por varias clases. Estas clases hacen referencia a una programacin modular, en la que podemos modificar nuestras clases de forma independiente, como si fueran subprogramas realizando una funcin especfica. La clase principal, aquella que se ejecuta prioritariamente y que da comienzo al programa, es la que contiene la funcin main(). Las clases, se agrupan en paquetes o packages (libreras o agrupaciones de clases) y por ello debemos indicar su ubicacin al principio de nuestro cdigo. Es decir, si queremos utilizar la clase ClaseA presente en el package "ClasesABC", debemos indicar al principio el paquete que contiene a ClaseA, en este caso, ClaseABC. Si no se especifica, Java utilizar el package por defecto, el directorio activo. Una clase es una agrupacin de datos (variables y campos) y funciones (mtodos) que operan sobre estos datos. Se les llama, respectivamente, variables miembro y mtodos o funciones miembro. En ellos se basa la programacin orientada a objetos, en la programacin de clases pues, cualquier programa, se construir a partir de un conjunto de clases. Una vez definida y declarada nuestra clase, podemos declarar elementos de modo similar a la creacin de variables (int, double...) Los elementos declarados en una clase se llaman objetos de la clase. package primero; /* Nombre del paquete (archivo que contiene mis clases */ import java.clase.* /* importa clases necesarias para el programa */ /* declaracin de la clase pblica main */ public class Main { /* declaracin de la funcin main() que es la primera en ejecutarse */ public static void main(String[] args) { /* Cdigo de su funcin main() */ } /* Fin de la funcin main() */ } /* Fin de la clase main() */

DECLARACIN DE VARIABLES Y CONSTANTES EN JAVA Para usar una variable en el programa se debe declarar. As, se reserva el espacio de memoria necesario para almacenar el valor requerido con un tipo de dato especfico. tipo identificador; tipo identificador1, identificador2, identificadorn; Los identificadores son los nombres que le daremos a las variables. As mismo, una variable no podr almacenar un valor que no sea del tipo del cual se declar. Ejemplos: int i; /* Variable de tipo entera */ double r; /* Variable de tipo doubl */ char c; /* Variable de tipo char */ int i,j,k,s; /* Declaraciones de varias variables en una lnea */ Los nombres de variables DEBEN comenzar con caracteres alfabticos (A-z) o con $ o _. Sin embargo, no pueden comenzar con dgitos. Sin embargo, despus de el primer carcter, se pueden utilizar dgitos. Los identificadores tampoco pueden coincidir con las palabras reservadas del lenguaje java, por ejemplo: do, abstract, continue, for,, new, switch, package. Java distingue entre maysculas y minsculas, asi que las siguientes variables son diferentes: int edad; int EDAD; Las variables se pueden inicializar cuando se declaran, por ejemplo: int edad=0; Las constantes hacen referencia a valores que no cambian durante la ejecucin del programa. final doubl PI=3.141692; La palabra clave final impide que el valor de la variable se modifique. Se siguen las mismas convenciones que se estudiaron para la declaracin de las variables. ESTRUCTURAS DE CONTROL EN JAVA Las estructuras de control de Java son similares a las de C. Tenemos las estructuras de control condicionales y repetitivas clsicas de la programacin estructurada. La estructura de control ms bsica es if/else, que tiene la siguiente forma: if (condicin) { sentencias; } else { sentencias; }

Mediante esta estructura condicional, podemos ejecutar un cdigo u otro dependiendo de si se cumple una condicin concreta. La segunda parte de la estructura (else) es opcional. Las siguientes lneas muestran un ejemplo de uso de la estructura if/else. if (vidas == 0) { terminar = true; } else { vidas--; }

En este ejemplo, si la variable vidas vale 0, la variable terminar tomar el valor true. En otro caso, se decrementa el valor de la variable vidas. La otra estructura condicional es switch, que permite un control condicional mltiple. Tiene el formato siguiente. switch (expresin) { case val1: sentencias; break; case val2: sentencias; break; case valN: sentencias; break; default: sentencias; break; } Dependiendo del valor que tome la expresin, se ejecutar un cdigo determinado por la palabra reservada case. Observa como al final de las sentencias se incluye la palabra reservada break, que hace que no se siga ejecutando el cdigo perteneciente al siguiente bloque. Si el valor de la expresin no coincide con ninguno de los bloques, se ejecuta el bloque default. Lo veremos mejor con un ejemplo. switch (posicion) { case 1: medalla = "oro"; break; case 2: medalla = "plata"; break; case 3: medalla = "bronce"; break; default: medalla = "sin medalla"; break; }

Las estructuras que hemos visto hasta ahora nos permiten tomar decisiones. Las siguientes que vamos a ver nos van a permitir realizar acciones repetitivas. Son los llamados bucles. El bucle ms sencillo es el bucle for.

for (inicializacin_contador ; control ; incremento) { sentencias; } Este bucle ejecuta el bloque de sentencias un nmero determinado de veces. for (i=1 ; i<=10 ; i++) { suma+=i; } Este ejemplo de cdigo suma los 10 primero nmeros. La variable i lleva la cuenta, es decir, es el contador del bucle. En la primera seccin nos encargamos de inicializar la variable con el valor 1. La segunda seccin es la condicin que ha de darse para que se contine la ejecucin del bucle, en este caso, mientras i sea menor o igual a 10, se estar ejecutando el bucle. La tercera seccin es la encargada de incrementar la variable en cada vuelta. El siguiente bucle que te voy a presentar es el bucle while y tiene la siguiente estructura. while (condicin) { sentencias; }

El bloque de sentencias se ejecutar mientras se cumpla la condicin del bucle. vueltas = 10; while (vueltas > 0) { vueltas--; }

A la entrada del bucle, la variable vueltas tiene el valor 10. Mientras el valor de esta variable sea mayor que 0, se va a repetir el bloque de cdigo que contiene. En este caso, el bloque de cdigo se encarga de decrementar la variable vuelta, por lo que cuando su valor llegue a 0, no volver a ejecutarse. Lo que estamos haciendo es simular un bucle for que se ejecuta 10 veces. El bucle do/while funciona de forma similar al anterior, pero hace la comprobacin a la salida del bucle. do { sentencias; } while (condicin);

El siguiente ejemplo, es igual que el anterior. La diferencia entre ambos es que con el bucle do/while, el cdigo se ejecutar siempre al menos una vez, ya que la comprobacin se hace al final, mientras que con el bucle while, es posible que nunca se ejecute el cdigo interno si no se cumple la condicin. vueltas = 10; do { vueltas--; } while(vueltas > 0);

Veamos una ltima estructura propia de Java (no existe en C) y que nos permite ejecutar un cdigo de forma controlada. Concretamente nos permite tomar acciones especficas en caso de error de ejecucin en el cdigo. try { sentencias; } catch (excepcin) { sentencias; }

Si el cdigo incluido en el primer bloque de cdigo produce algn tipo de excepcin, se ejecutar el cdigo contenido en el segundo bloque de cdigo. Una excepcin es un tipo de error que Java es capaz de controlar por decirlo de una forma sencilla, realmente, una excepcin es un objeto de la clase Exception. Si por ejemplo, dentro del primer bloque de cdigo intentamos leer un archivo, y no se encuentra en la carpeta especificada, el mtodo encargado de abrir el archivo lanzar una excepcin del tipo IOException.

OPERADORES EN JAVA A. Operadores aritmticos


El lenguaje Java soporta varios operadores aritmticos para los nmeros enteros y en coma flotante. Se incluye + (suma), - (resta), * (multiplicacin), / (divisin), y % (mdulo, es decir, resto de una divisin entera). Por ejemplo:

sumaEste + aEste; //Suma los dos enteros divideEste % entreEste; //Calcula el resto de dividir 2 enteros Operador + * / % Uso op1 + op2 op1 - op2 op1 * op2 op1 / op2 op1 % op2 Descripcin Suma op1 y op2 Resta op2 de op1 Multiplica op1 por op2 Divide op1 por op2 Calcula el resto de dividir op1 entre op2

El tipo de los datos devueltos por una operacin aritmtica depende del tipo de sus operandos; si se suman dos enteros, se obtiene un entero como tipo devuelto con el valor de la suma de los dos enteros. Estos operadores se deben utilizar con operandos del mismo tipo, o si no realizar una conversin de tipos de uno de los dos operandos al tipo del otro. El lenguaje Java sobrecarga la definicin del operador + para incluir la concatenacin de cadenas. El siguiente ejemplo utiliza + para concatenar la cadena "Contados ", con el valor de la variable contador y la cadena " caracteres.":

System.out.print("Contados" + contador + "caracteres.");


Esta operacin automticamente convierte el valor de contador a una cadena de caracteres.

Los operadores + y - tienen versiones unarias que realizan las siguientes operaciones:

Operador + -

Uso +op -op

Descripcin Convierte op a entero si es un byte, short o char Niega aritmticamente op

El operador - realiza una negacin del nmero en complemento A2, es decir, cambiando de valor todos sus bits y sumando 1 al resultado final:

42 -> 00101010 -42 -> 11010110


Existen dos operadores aritmticos que funcionan como atajo de la combinacin de otros: ++ que incrementa su operando en 1, y -- que decrementa su operando en 1. Ambos operadores tienen una versin prefija, y otra posfija. La utilizacin la correcta es crtica en situaciones donde el valor de la sentencia es utilizado en mitad de un clculo ms complejo, por ejemplo para control de flujos:

Operador ++ ++ ---

Uso op++ ++op op---op

Descripcin Incrementa op en 1; se evala al valor anterior al incremento Incrementa op en 1; se evala al valor posterior al incremento Decrementa op en 1; se evala al valor anterior al incremento Decrementa op en 1; se evala al valor posterior al incremento

B. Operadores de comparacin y condicionales


Un operador de comparacin compara dos valores y determina la relacin existente entre ambos. Por ejemplo, el operador != devuelve verdadero (true) si los dos operandos son distintos. La siguiente tabla resume los operadores de comparacin de Java:

Operador Uso > op1 > op2 >= op1 >= op2 < op1 < op2 <= op1 <= op2 == op1 == op2 != op1 != op2

Devuelve verdadero si op1 es mayor que op2 op1 es mayor o igual que op2 op1 es menor que op2 op1 es menor o igual que op2 op1 y op2 son iguales op1 y op2 son distintos

Adems Java soporta un operador ternario, el ?:, que se comporta como una versin reducida de la sentencia if-else:

expresion ? operacion1 : operacion2


El operador ?: evala la expresion y devuelve operacin1 si es cierta, o devuelve operacin2 si expresion es falsa.

C.) Operadores Lgicos


Java soporta los operadores AND, OR y NOT En Java hay cuatro operadores de lgica de bits:

Operador && || ^ !

Uso op1 && op2 op1 || op2 op1 ^ op2 !op2

Operacin AND OR OR Exclusivo Complemento

El operador & realiza la operacin AND de bit. Aplica la funcin AND sobre cada par de bits de igual peso de cada operando. La funcin AND es evaluada a cierto si ambos operandos son ciertos. El operador | realiza la operacin OR de bit. Aplica la funcin OR sobre cada par de bits de igual peso de cada operando. La funcin OR es evaluada a cierto si alguno de los operandos es cierto. El operador ^ realiza la operacin OR exclusivo de bit (XOR). Aplica la funcin XOR sobre cada par de bits de igual peso de cada operando. La funcin XOR es evaluada a cierto si los operandos tienen el mismo valor. Para finalizar, el operador de complemento invierte el valor de cada bit del operando. Convierte el falso en cierto, y el cierto en falso:

D. Operadores de asignacin
El operador de asignacin bsico es el =, que se utiliza para asignar un valor a otro. Por ejemplo:

int contador = 0;
Inicia la variable contador con un valor 0. Java adems proporciona varios operadores de asignacin que permiten realizar un atajo en la escritura de cdigo. Permiten realizar operaciones aritmticas, lgicas, de bit y de asignacin con un nico operador. Supongamos que necesitamos sumar un nmero a una variable y almacenar el resultado en la misma variable, como a continuacin:

i = i + 2;
Se puede abreviar esta sentencia con el operador de atajo +=, de la siguiente manera:

i += 2;
La siguiente tabla muestra los operadores de atajo de asignacin y sus equivalentes largos:

Operador

Uso

Equivalente a

+= -= *= /= %= &=

op1 += op2 op1 -= op2 op1 *= op2 op1 /= op2 op1 %= op2 op1 &= op2

op1 = op1 + op2 op1 = op1 - op2 op1 = op1 * op2 op1 = op1 / op2 op1 = op1 % op2 op1 = op1 & op2

E. Precedencia de operadores
Cuando en una sentencia aparecen varios operadores el compilador deber de elegir en qu orden aplica los operadores. A esto se le llama precedencia. Los operadores con mayor precedencia son evaluados antes que los operadores con una precedencia relativa menor. Cuando en una sentencia aparecen operadores con la misma precedencia: y y Los operadores de asignacin son evaluados de derecha a izquierda. Los operadores binarios, (menos los de asignacin) son evaluados de izquierda a derecha.

Se puede indicar explcitamente al compilador de Java cmo se desea que se evale la expresin con parntesis balanceados ( ). Para hacer que el cdigo sea ms fcil de leer y mantener, es preferible ser explcito e indicar con parntesis que operadores deben ser evaluados primero. La siguiente tabla muestra la precedencia asignada a los operadores de Java. Los operadores de la tabla estn listados en orden de precedencia: cuanto ms arriba aparezca un operador, mayor es su precedencia. Los operadores en la misma lnea tienen la misma precedencia:

Tipo de operadores Operadores posfijos Operadores unarios Creacin o conversin Multiplicacin Suma Desplazamiento Comparacin Igualdad AND a nivel de bit OR a nivel de bit XOR a nivel de bit AND lgico OR lgico Condicional Asignacin

Operadores de este tipo [ ] . (parametros) expr++ expr-++expr --expr +expr -expr ~ ! new (tipo) expr */% +<< < <= = instanceof == != & ^ | && || ?: = += -= *= /= %= &= ^= |= <<= = =

Por ejemplo, la siguiente expresin produce un resultado diferente dependiendo de si se realiza la suma o divisin en primer lugar: x + y / 100 Si no se indica explcitamente al compilador el orden en que se quiere que se realicen las operaciones, entonces el compilador decide basndose en la precedencia asignada a los operadores. Como el operador de divisin tiene mayor precedencia que el operador de suma el compilador evaluar y/100 primero. As: x + y / 100 Es equivalente a: x + (y / 100)

SALIDA POR PANTALLA EN JAVA


En java existe la clase System.out que permite la salida por pantalla. Soporta las siguientes instrucciones: print y println La diferencia entre ambos sera que println da un enter al final de cada lnea de cdigo mostrado. La sintaxis general de ambos es: 1. print(mensaje a enviar); 2. print(variable); 3. print(mensaje a enviar + variable); en el caso 1, solo se tiene que escribir el texto que deseamos enviar a la pantalla. Por ejemplo: System.out.print(Hola mundo); En el caso 2, se muestra unicamente el contenido de una variable, supongamos que existe la variable x de tipo int que contiene un 60. Para enviar al monitor su contenido sera: System.out.print(x); Como sabemos en la pantalla de la computadora ser ver un 60. En el caso 3, se hacen ambas cosas,

ENTRADA POR PANTALLA EN JAVA (LOS InputStream: EL OBJETO System.in) Al igual que Java nos ofrece System.out para escribir en pantalla, tenemos System.in para leer de ella. System.in es un objeto de una clase de java que se llama InputStream. Para java, un InputStream es cualquier cosa de la que se leen bytes. Puede ser el teclado, un fichero, un socket, o cualquier otro dispositivo de entrada. Esto, por un lado es una ventaja. Si todas esas cosas son InputStream, podemos hacer cdigo que lea de ellas sin saber qu estamos leyendo. Por otro lado, es una pega. Como un InputStream es para leer bytes, slo tiene mtodos para leer bytes. Nosotros queremos leer palabras o nmeros del teclado, no bytes. Si escribimos en el teclado una A mayscula y la leemos con System.in, obtendremos un entero de valor 65, que es el valor del byte correspondiente a la A.

LOS Reader
Para java, una clase Reader es una clase que lee caracteres. Esto se parece ms a lo que queremos. Un Reader tiene mtodos para leer caracteres. Con esta clase ya podriamos trabajar. La pena es que seguimos teniendo System.in, que es un InputStream y no un Reader.

Cmo convertimos el System.in en Reader?. Hay una clase en java, la InputStreamReader, que nos hace esta conversin. Para obtener un Reader, nicamente tenemos que instanciar un InputStreamReader pasndole en el constructor un InputStream. El cdigo es el siguiente

InputStreamReader isr = new InputStreamReader(System.in);


Estamos declarando una variable "isr" de tipo InputStreamReader. Creamos un objeto de esta clase haciendo new InputStreamReader(...). Entre parntesis le pasamos el InputStream que queremos convertir a Reader, en este caso, el System.in Ya tenemos el Reader. Cmo funciona exactamente? InputStreamReader es un Reader. Se comporta igual que in Reader y se puede poner en cualquier sitio que admita un Reader. Es decir, podemos leer de l caracteres. Al constuirlo le hemos pasado un InputStream, en concreto, System.in. InputStreamReader de alguna forma se lo guarda dentro.

Cuando a InputStreamReader le pedimos caracteres, l le pide al InputStream que tiene guardado dentro los bytes, los convierte a caracteres y nos los devuelve. LA CLASE BufferedReader Con la clase InputStreamReader podramos apaarnos. La pega es que nos da los caracteres sueltos. Si estamos leyendo de teclado, el que usa el programa puede escribir 10 caracteres o 20 o 13. Si usamos InputStreamReader, como lee caracteres sueltos, Tenemos que decirle cuntos queremos (que no lo sabemos), o bien ir pidiendo de uno en uno hasta que no haya ms.

Esto es un poco rollo y si slo tuvieramos la clase InputStreamReader sera un trozo de cdigo que tendriamos que repetir por muchos lados. Para el cado concreto de leer de teclado, sera ideal si hubiese una clase en java que nos lea de golpe todo lo que ha escrito el usuario de nuestro programa y nos lo diera de un golpe. Como la gente de Java son muy listos, esa clase existe en Java. Se llama BufferedReader. El mecanismo para obtener un BufferedReader a partir de otro Reader cualquiera (por ejemplo el InputStreamReader), es similar al que usamos antes. Lo instanciamos pasndole en el construtor el Reader. El cdigo es

BufferedReader br = new BufferedReader (isr);


El funcionamiento de esta clase es igual que el InputStreamReader. Cuando le pedmos una lnea completa de caracteres (un String), ella se lo pide al Reader que tenga dentro, los convierte en String y nos lo devuelve. Para pedirle un String, se usa el mtodo readLine(). Este mtodo lee todos los caracteres tecleados (recibidos si fuera otro dispositivo de entrada) hasta que encuentra la pulsacin de la tecla <INTRO>, <RETURN> o como quieras llamarla.

String texto = br.readLine(); Esto lee del teclado un String completo y lo guarda en una variable "texto".
CONVERTIR LA CADENA String EN UN ENTERO int Si queremos leer un nmero del teclado, el usuario escribe por ejemplo 123, con la clase BufferedReader obtendremos un String que contiene "123", es decir, tres caracteres. Eso no se parece en nada a un nmero 123.

Para convertir el String en un nmero entero (sin decimales), podemos usar otra clase de Java. La clase Integer vale para muchas cosas, pero entre otras es capaz de convertir un String a int. Siempre que sea posible. Por ejemplo "abc" no se puede convertir a nmero de ninguna manera. La clase Integer es muy estricta. Para convertir el String a int necesita que el String sea exactamente un int. Cualquier caracter o letra que tenga el String y no valga, har que la conversin falle. Por ejemplo, "123a" da fallo por culpa de la "a" del final. Del mismo modo "12 3" da fallo por el espacio entre el "12" y el "3". Bueno, esto en realidad creo que era as de estricto en versiones algo anteriores de java. Las actuales simplemente ignoran lo que va detrs del nmero. La conversin se realiza as int valor = Integer.parseInt(texto); Esto intenta convertir texto en un int y si no hay problemas, guarda el resultado en una variable int llamada valor. LOS PAQUETES ESTNDAR DE JAVA MS IMPORTANTES y y y y y y y y y y y y java.applet: Permite crear aplicaciones de tipo applet. java.awt: Contiene los componentes para la construccin del interfaz de usuario. java.beans: Posibilita la construccin de componentes de software conocidos como javabeans. java.io: Posibilita la comunicacin de entrada y salida a perifricos y ficheros. java.lang: Contiene las clases integradas de Java. Es el paquete por defecto. java.math: Contiene utilidades matemticas, tales como las funciones trigonomtricas, logaritmos, raz cuadrada, ... java.net: Posibilita las comunicaciones en la red local e Internet. java.rmi: Posibilita el acceso a objetos remotos, es decir, situados en otro ordenador. java.security: Posibilita el uso de mecanismos de seguridad. java.sql: Posibilita la comunicacin con las bases de datos. java.util: Diversas clases de utilidad general. java.swing: Clase del interfaz grfico Swing.

Se han visto algunos fundamentos de java. Aunque son conocimientos muy elementales, es el momento de comenzar a escribir nuestros propios programas; sin embargo, hablaremos del IDE que utilizaremos, en este caso el NetBeans NETBEANS Netbeans es un entorno de desarrollo integrado (IDE) para escribir cdigo fuente java y optimizarlo. Fue desarrollado por una comunidad denominada netbeans.org y se ha convertido en una herramienta casi imprescindible para los programadores java. La versin a utilizar es la 6.8

Para iniciar NetBeans (se supone previamente instalado), debe ir al men inicio de Windows y buscar la carpeta NetBeans. All encontrar el elemento NetBeans IDE 6.8 y debe clickear sobre l. All aparecer la siguiente ventana:

Esta es la ventana de presentacin del IDE de NetBeans. 1. Lo primero que debemos hacer es crear un nuevo proyecto, es decir, un contenedor de todos los archivos que integrarn nuestra aplicacin java. Haga click en el men File y luego en New Project En este punto, aparecer la siguiente ventana:

2. Seleccione en Categories la opcin Java y en Projects la opcin Java Application. Luego, presione Next.

3. Luego, en el Project Name escriba primero (en minsculas y sin comillas). As mismo, debe notar la carpeta donde se guardarn sus archivos de proyecto (normalmente se crea una carpeta dentro de Mis Documentos\NetBeansProjects por cada proyecto que creemos. 4. La calase principal (main) recibir el mismo nombre que otorg a su proyecto. NetBeans se encarga de hacer esto. En este caso, tilde las dos casillas: Create Main Class y Set As Main Project. Las cuales, permitirn establecer a sta como la clase inicial (recuerde que un mismo proyecto puede contener muchas clases). La carpeta que dispone NetBeans para guardar sus proyectos es la siguiente: C:\Documents and Settings\Administrador\Mis documentos\NetBeansProjects Y se dispondr una carpeta para cada proyecto que usted haya creado con netbeans. Hecho esto, su pantalla principal quedar as:

Mens / Barras de herramientas

Area de trabajo Explorador de proyectos

Navegador de objetos

Ventana Tareas

Barra de estado

Mens y Barras de Herramientas: Despliegan acciones diversas que se pueden realizar utilizando el IDE de Netbeans como crear un proyecto, agregar archivos, guardarlos, ejecutar el proyecto entre otras. rea de Trabajo: Es el rea donde deber crear o editar el cdigo fuente, formularios y otros elementos de la aplicacin que est diseando. Puede tener ms de un archivo abierto al mismo tiempo. Explorador de Proyectos: Es una lista jerrquica de todos los elementos que componen el proyecto. Los archivos estn separados por categoras: Aparecen entonces todos los archivos fuente en la categora Source Packages y las libreras en Libraries. Navegador: Se utiliza principalmente cuando queremos desplazarnos rpidamente a travs de un archivo que contiene funciones, definiciones de objetos, variables, etc. Ventana Tareas / Salida: La ventana tareas presenta una lista de tareas por hacer. Es til cuando se detectan errores y se listan en ella los errores que pasan a ser tareas por corregir. Al mismo tiempo, la ventana salida, muestra la consola de salida. Es all donde aparecern los mensajes del programa, se ingresarn los valores de las variables por teclado, etc. Barra de Estado: Muestra el estado o progreso de la ejecucin de una tareas o conjunto de ellas en NetBeans. ESCRITURA DE UN PROGRAMA JAVA UTILIZANDO NETBEANS. Una vez que hemos definido nuestro proyecto primero, debemos escribir el cdigo fuente. Recordemos que nuestra clase debe llamarse al igual que el archivo .java que la contiene. As que nuestra clase se llamar primero y el archivo tendr por nombre primero.java.

Ahora, borre el contenido de su archivo primero.java (seleccione todo y presione suprimir). Y luego, copie el siguiente cdigo en l.
import java.io.*; public class primero{ public static void main(String[] args){ System.out.println("Hola"); } }

Guarde el archivo haciendo clic sobre el cono de disquetes en la barra de herramientas o en el men File/Save All Finalmente, presione F6 para ejecutarlo, (o presione el botn Run Main Project (el que parece un botn de play en un reproductor de msica). Lo ms importante al analizar el archivo es que primero se importan las libreras de Entrada/Salida estndar de Java (java.io.*). Esto para poder utilizar la funcin println. As mismo, se define la clase como public class primero y se abre un bloque de cdigo. Luego, se define la funcin main() as: public static void main(string [] args) Esto indica que la funcin main() es pblica para el proyecto y al mismo tiempo se define como static y void para que sea esttica y no retorne un valor. Los parmetros String[] y args hacen referencia a los argumentos que recibe la funcin. Por defecto, java recibe una cadena y no retorna valores en main. Se puede decir que la estructura de esta lnea de cdigo es conservativa (no cambia salvo excepciones muy concretas). Luego, aparece la lnea de cdigo System.out.println en la cual, se emite un mensaje de Hola a la ventana output (salida). Esto es posible ya que previamente se ha incluido la librera java.io.* en nuestra clase. Finalmente se cierran los bloques de cdigo (el de la funcin main y el de la clase). PROGRAMA No. 2. USO DE CICLOS EN JAVA. Abra su proyecto llamado primero (aunque ya debera estar abierto). Haga clic sobre la categora default package de su explorador de proyectos, luego seleccione New > Java Class tal como se muestra en la figura:

Ahora, aparecer un cuadro de dilogo donde deber escribir el nombre de la clase. En este caso, la llamaremos ciclos tal como se muestra en la siguiente figura y presionamos Finish.

En este punto, aparece un archivo de cdigo fuente. Llamado ciclos.java (que es nuestra clase). Borre el cdigo del mismo y pegue el siguiente:
Public class ciclos{ public static void main(String[] args){ int i; System.out.println("Este programa cuenta del 1 al 10. Ciclo for"); for(i=1;i<=10;i++){ System.out.println(i); } i=1; System.out.println("Este programa cuenta del 1 al 10. Ciclo while"); while(i<=10){ System.out.println(i); i++; } i=1; System.out.println("Este programa cuenta del 1 al 10. Ciclo do while"); do{ System.out.println(i); i++; }while(i<=10); } }

Este programa consta de 3 bloques de cdigo. Todos ellos imprimen una lista de nmeros del 1 al 10 en la pantalla. Primero se utiliza el for. Ntese la condicin inicial for(i=1;i<=10;i++) en la cual, la variable i sirve de contador del 1 al 10, y se incrementa en 1 cada vez que se ejecuta el cdigo. Luego, la instruccin System.out.println() imprime el valor actual de la variable i y se cierra el for. Luego, se observa el while(i<=10) que se ejecuta 10 veces, es decir, mientras i sea menor o igual a 10. Aqu se toma la previsin de inicializar i a 1 para que se ejecute las 10 veces. Dicha inicializacin se coloca fuera del ciclo, ya que si se coloca dentro, i siempre valdra 1 lo cual no tendra sentido. Finalmente, se observa el bloque do.. while, que tambin repite las instrucciones un nmero indeterminado de veces, pero a diferencia del while, tenemos la certeza de la ejecucin de las instrucciones por lo menos una vez aunque la condicin no se cumpla, es decir, la condicin se valida al final En otras palabras se imprime la variable i mientras que sea menor o igual a 10. Para correrlo, presione SHIFT+F6 o MAYSCULAS+F6. De esta manera, slo se ejecutar la clase que tenemos abierta. En este punto, podr observar el resultado del programa en la ventana Output de la parte inferior. PROGRAMA No. 3. LECTURA Y ESCRITURA DESDE LA CNSOLA JAVA Abra su proyecto llamado primero (aunque ya debera estar abierto). Haga clic sobre la categora default package de su explorador de proyectos, luego seleccione New > Java Class Ahora, aparecer un cuadro de dilogo donde deber escribir el nombre de la clase. En este caso, la llamaremos lectura y presionamos Finish En el archivo de cdigo fuente que aparece, copie el siguiente cdigo:
import java.io.*; public class lectura { public static void main (String [] args) { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader (isr); try { System.out.print("Ingrese su nombre : "); String nombre = (br.readLine()); System.out.print("Ingrese su Apellido : "); String apellido = (br.readLine()); System.out.print("Ingrese su Edad : "); int edad= Integer.parseInt((br.readLine()));

System.out.println ("Su nombre es: " + nombre +" "+ apellido); System.out.println ("y su edad es: " + edad + " aos"); } catch (Exception e) { e.printStackTrace(); } } }

En este programa, igualmente se incluye la librera java.io.*. Lo primero que se puede apreciar en la funcin main() es la definicin de dos variables tipo objeto a saber, una: InputStreamReader llamado isr y otra BufferedReader llamada br Recordemos que para crear un objeto a partir de una clase, se utiliza el constructor new. Estas variables sirven para definir un stream de entrada que no es ms que un espacio de memoria reservado para guardar un conjunto de caracteres ingresados por teclado o lo que es lo mismo, un flujo de datos de teclado. Al mismo tiempo, se define un BufferedReader que es un tipo de objeto que pasa a guardar el stream en dicha posicin de memoria temporalmente. As mismo, se observa el ciclo trycatch() que permite capturar posibles errores al manejar los streams y la ejecucin del programa en general. Este bloque es ampliamente recomendado y casi obligatorio para algunos compiladores java. Luego se muestran los mensajes en pantalla solicitando el ingreso del nombre, apellido y edad. En cada caso se lee la respectiva variable de tipo String y entero (int). Esto se realiza asignando la propiedad readLine del objeto br o bufferreader. Luego se imprimen los mensajes con los datos ingresados utilizando igualmente las variables previamente definidas. Es especialmente importante conocer que cuando se lee una variable, siempre se asume que es una cadena, pero como la edad es un dato entero, es necesario convertir la cadena ingresada en un valor entero. De all el uso de la funcin parseInt() que recibe como parmetro el br.readline(), tal como se aprecia en la siguiente lnea:
int edad= Integer.parseInt((br.readLine()));

PROGRAMA No. 4. APLICACIN DE LA ESTRUCTURA CONDICIONAL if Ahora, ejemplificaremos el funcionamiento de la estructura condicional if, es decir, permite tomar decisiones y tomar uno de dos caminos posibles. En este caso, se utilizar el programa en Java para calcular las races de una ecuacin de segundo grado. Abra su proyecto llamado primero (aunque ya debera estar abierto). Haga clic sobre la categora default package de su explorador de proyectos, luego seleccione New > Java Class Ahora, aparecer un cuadro de dilogo donde deber escribir el nombre de la clase. En este caso, la llamaremos ecua2 y presionamos Finish En el archivo de cdigo fuente que aparece, copie el siguiente cdigo:

import java.io.*; public class ecua2{ public static void main(String[] args){ try{ double d,x1,x2; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader (isr); System.out.println("Ingrese el Valor de A: "); float a=Float.parseFloat(br.readLine()); System.out.println("Ingrese el Valor de B: "); float b=Float.parseFloat(br.readLine()); System.out.println("Ingrese el Valor de C: "); float c=Float.parseFloat(br.readLine()); d=(b*b)-4*a*c; System.out.println("El Discriminante es: "+d); if(d<0){ System.out.println("La ecuacion tiene raices complejas"); return; } if(d==0){ System.out.println("La ecuacion tiene raices reales iguales"); x1=-b/(2*a); System.out.println("El valor de x1 y x2 es: "+x1); } if(d>0){ System.out.println("La ecuacion tiene raices reales diferentes"); x1=(-b+Math.sqrt(d))/(2*a); x2=(-b-Math.sqrt(d))/(2*a); System.out.println("El valor de x1 es: "+x1); System.out.println("El valor de x2 es: "+x2); } }catch (Exception e){ e.printStackTrace(); } } }

En este caso, se leen los coeficientes A, B y el trmino independiente C. Luego, se calcula el discriminante D. Si este valor es menor que cero, se imprime un mensaje indicando que la ecuacin tiene races complejas. If(d<0){ }. Por otro lado, si el discriminante es igual a cero, se tienen races reales e iguales, es decir, x1 y x2 tienen el mismo valor. Finalmente, si el discriminante es mayor que cero if(d>0){ }.las races son reales distintas. Se calcula entonces el valor de x1 y x2 por separado. Algunos aspectos a considerar son: 1) Los valores de A,B y C pueden ser decimales, razn por la cual, se declaran como float. Sin embargo, es de notar que para calcular la raz cuadrada en la frmula de x1 y x2, esta funcin devuelve un doubl, razn por la cual, se declara de esta manera. 2) Para calcular la raz cuadrada se utiliza la funcin sqrt( ) que pertenece a la librera Math de java. 3) Ntese que las variables de Buffer (isr y br) se pueden utilizar indefinidamente. Slo hace falta convertir las cadenas al tipo de datos numrico si es necesario. PROGRAMA No. 5. OPERADORES LGICOS Ahora, ejemplificaremos el funcionamiento de los operadores lgicos (and, or). Para ello, utilizaremos un programa que determina si un ao dado es bisesto, Abra su proyecto llamado primero (aunque ya debera estar abierto). Haga clic sobre la categora default package de su explorador de proyectos, luego seleccione New > Java Class Ahora, aparecer un cuadro de dilogo donde deber escribir el nombre de la clase. En este caso, la llamaremos bisiesto y presionamos Finish En el archivo de cdigo fuente que aparece, copie el siguiente cdigo:
import java.io.*; public class bisiesto{ public static void main(String[] args){ try{ InputStreamReader reader=new InputStreamReader(System.in); BufferedReader Input=new BufferedReader (reader); System.out.println("Ingres el Ao: "); int anio=Integer.parseInt(Input.readLine()); if ((anio % 4 == 0) && ((anio % 100 != 0) || (anio % 400 == 0))){ System.out.println("El ao es bisiesto"); }else{ System.out.println("El ao no es bisiesto"); } }catch (Exception e){} } }

Un ao es bisiesto cuando es divisible entre 4, excepto los que son divisibles entre 100. Sin embargo, los divisibles entre 100 son bisiestos siempre y cuando sean divisibles tambin por

400. De all que en el programa se lee un ao (valor entero) para determinar si es bisiesto. Luego, se comprueba si es divisible entre 4 if ((anio % 4 == 0) y al mismo tiempo, que no sea divisible entre 100 && ((anio % 100 != 0) Si esto es verdadero, entonces se comprueba si es divisible entre 400 || (anio % 400 == 0))){. En resumen se lee (si el ao es divisible entre 4 y entre 100 o divisible entre 400, entonces es bisiesto). Esta ltima condicin es vital para los aos terminales (1900, 2000) ya que por definicin un ao terminal no es bisiesto a menos que sea divisible entre 400. Ntese la presencia de los operadores and && y or ||. En el primer caso, da verdadero si las dos condiciones son verdaderas en cuyo caso contrario da falso. En cuanto al or, este da verdadero si por lo menos una de las dos condiciones es verdadera. Para determinar si un nmero es divisible entre otro, se utiliza el operador mdulo (%) que devuelve el resto o residuo de una divisin entera. PROGRAMA No. 6. OPERACIONES MATEMTICAS BSICAS Y do..while Ahora, ejemplificaremos el funcionamiento del do while() para mostrar un men con la posibilidad de ejecutar operaciones bsicas de clculo de reas. Abra su proyecto llamado primero (aunque ya debera estar abierto). Haga clic sobre la categora default package de su explorador de proyectos, luego seleccione New > Java Class Ahora, aparecer un cuadro de dilogo donde deber escribir el nombre de la clase. En este caso, la llamaremos matem y presionamos Finish Luego, pegue el siguiente cdigo en el archivo de clase que cre.
import java.io.*; public class matem{ public static void main(String[] args){ float base,altura,area; int sel; try{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader (isr); do{ System.out.println("1.Area del Triangulo"); System.out.println("2.Area del Rectangulo"); System.out.println("3.Area del Cuadrado"); System.out.println("0.Salir"); sel=Integer.parseInt(br.readLine()); switch(sel){ case 1: System.out.println("Ingrese la base: "); base=Float.parseFloat(br.readLine());

System.out.println("Ingrese la altura: "); altura=Float.parseFloat(br.readLine()); area=(base*altura)/2; System.out.println("Area: "+area); break; case 2: System.out.println("Ingrese la base: "); base=Float.parseFloat(br.readLine()); System.out.println("Ingrese la altura: "); altura=Float.parseFloat(br.readLine()); area=(base*altura); System.out.println("Area: "+area); break; case 3: System.out.println("Ingrese la long del lado: "); base=Float.parseFloat(br.readLine()); area=base*base; System.out.println("Area: "+area); break; case 0: return; } }while(sel!=0); }catch (Exception e){ e.printStackTrace(); } } }

Lo primero que observamos es un ciclo do while(), es decir, ejecutar esto mientras se cumpla la condicin. En este caso, crear una lista de opciones mientras no se presione la opcin 0. (Salir). Obviamente, se utiliza la estructura switch que permite evaluar una expresin (variable) y a partir del valor que tenga, tomar alguna de las opciones o casos En el ejemplo se observa que si presiona 1, procede a calcular el rea del tringulo, si elige 2, la del rectngulo y 3 para la del cuadrado. As mismo, para cada caso, se leen las variables que permitirn el clculo (base y altura). Finalmente, se utiliza la variable area para guardar el rea de la figura seleccionada. Una observacin importante, es que el switch slo puede tomar una expresin o variable del tipo entero o string (char) y se garantiza con el do..while() que el men se ejecuta por lo menos una vez durante la ejecucin del programa. Otro aspecto importante es que las variables de stream (isr y br) se pueden utilizar varias veces para optimizar el cdigo.

PROGRAMA No. 7. EL CICLO FOR Ahora, ejemplificaremos la forma utilizar el ciclo for en un programa de aplicacin que calcula la tabla de multiplicar dentro de un rango preestablecido. Abra su proyecto llamado primero (aunque ya debera estar abierto). Haga clic sobre la categora default package de su explorador de proyectos, luego seleccione New > Java Class Ahora, aparecer un cuadro de dilogo donde deber escribir el nombre de la clase. En este caso, la llamaremos multi y presionamos Finish Luego, pegue el siguiente cdigo en el archivo de clase que cre.
import java.io.*; public class multi { public static void main( String args[] ){ int i,j,tabla,op1,op2; try{ InputStreamReader reader=new InputStreamReader(System.in); BufferedReader Input=new BufferedReader (reader); System.out.println("Ingrese el num de la tabla a generar: "); System.out.println("Ej.Para generar la tabla del 3, ingrese 3: "); tabla=Integer.parseInt(Input.readLine()); System.out.println("Ingrese el operador inicial de la tabla: "); op1=Integer.parseInt(Input.readLine()); System.out.println("Ingrese el operador final de la tabla: "); op2=Integer.parseInt(Input.readLine()); System.out.println("Tabla de multiplicar del "+tabla); for(i=op1;op1<=op2;op1++){ System.out.println(tabla+" * "+op1+" = "+tabla*op1); } }catch (Exception e){} } }

Este programa es bastante sencillo. Primero se le pide al usuario qu tabla desea generar. Luego, el primer factor a generar (lmite inferior) y finalmente el lmite superior. Finalmente, se utiliza un bucle for para multiplicar cada factor y generar el resultado. Ntese que si el usuario desea generar la tabla del nmero 3 pero desde el 11 hasta el 20, el for comenzar en 11 y terminar en 20.

EJERCICIOS PROPUESTOS (PARTE 1) *1. Realice un programa en java que lea 2 nmeros y calcule para ellos su suma, resta, producto y divisin. *2. Realice un programa en java que lea las notas definitivas de los alumnos de una seccin para la asignatura Programacin y calcule el promedio general de la misma. *3. Se tienen un conjunto de personas que concursan para un cargo. Las personas aptas deben ser Hombres, mayores de 25 aos y solteros. Realice un programa en java que seleccione a las personas aptas para ocupar el cargo, ya que existe un nmero indeterminado de aspirantes. El programa debe leer a cada aspirante, capturar los datos y presentar un resumen de cuntos acudieron al llamado, cuntos estn aptos y cuntos no lo estn. *4. Realice un programa en java que presente un men de opciones. En la opcin 1, se lean el nombre, apellido, direccin y telfono de una persona. En la opcin 2, se muestren los datos y en la opcin 0, salga del programa. *5. Realice un programa en java que calcule el rea de un crculo, sabiendo que A=PI*r donde: A=Area del crculo, PI=3.1416, r=radio. *6. Escriba un programa en java que lea los sueldos de un conjunto de empleados y halle el salario promedio de todo el conjunto. *7. Escriba un programa en java que calcule el factorial de un nmero. El factorial de un nmero entero positivo se define como el producto de todos los nmeros naturales anteriores o iguales a l. Se escribe n!, y se lee "n factorial". (Por definicin el factorial de 0 es 1: 0!=1) Por ejemplo, 5! = 54321 = 120 *8. Escriba un programa en java que calcule la raz cuadrada de un conjunto de nmeros dado por el usuario. 9. Se enviarn a un conjunto de alumnos a una competencia nacional de matemticas. Dadas sus calificaciones, realice un programa en java que determine cuntos de ellos estn aptos para participar. La condicin es que deben tener una calificacin mayor a 16 puntos y una edad entre 15 y 17 aos. *10. Realice un programa en java que calcule el devengado anual de un empleado (el devengado es la sumatoria de todo lo percibido durante los 12 meses del ao). *11. Escriba un programa en java que calcule la media, armnica (H) de un conjunto de datos sabiendo que: La media armnica , denominada H, de una cantidad finita de nmeros es igual al inverso, de la media aritmtica de los recprocos de dichos nmeros. As, dados los nmeros a1,a2, ... , an, la media armnica ser igual a:
2

La media armnica no est definida en el caso de la existencia en el conjunto de valores nulos. *12. Escriba un programa en java que halle el mayor de una serie de nmeros ingresados por el usuario *13. Realice un programa en java que lea los sueldos de un grupo de empleados y para cada caso, calcule cunto sera el incremento con un 15% del valor actual. *14. Realice un programa en java que lea un conjunto de alumnos. Para cada alumno, deben ingresarse 4 calificaciones y calcular la nota definitiva (por alumno) aplicando el 25% a cada una, luego sumando los porcentajes obtenidos en cada caso. Al final debe decir cuntos aprobados y aplazados hay. Las notas pueden ser entre 0 y 20 y la mnima nota aprobatoria es de 9.5 puntos.

You might also like