El lenguaje Java fue creado por la empresa Sun Microsystems y en un corto perodo de
tiempo se convirti en uno de los lenguajes de programacin lderes.
Principales propiedades del lenguaje Java:
Lenguaje diseado para Internet, permite crear programas (applets) que se integran
en las pginas Web.
Puede ser usado como un lenguaje de programacin tradicional para crear lo que se
conoce como aplicaciones
Es un lenguaje multiplataforma (portable)
Tiene prestaciones multimedia (texto, imgenes, sonido, animaciones, etc)
Resulta un lenguaje familiar al tener una estructura similar a C++
Elimina dos de los problemas ms comunes con los que se encuentran los
programadores en C++: el uso de punteros, la gestin de memoria, y el control de
acceso a los elementos de una matriz
Es un lenguaje orientado a objetos
Es un lenguaje interpretado que integra el poder de los lenguajes compilados y la
flexibilidad de los interpretados
Se estima que es entre 10 y 20 veces ms lento que C++
Admite programacin concurrente
Es simple, robusto y seguro
Es un lenguaje accesible: a travs de Internet puede obtenerse de forma gratuita el
Kit de Desarrollo Java (JDK) de la empresa Sun Microsystems
A travs de Internet se puede acceder tambin a: Cursos interactivos, multitud de
ejemplos, herramientas para el desarrollo de applets, etc.
Little Editor
Professional
Abre la carpeta JcreatorPro2.0 . Pulsando dos veces sobre Setup.exe se instala el editor.
A continuacin se ejecuta el editor automticamente, apareciendo dos preguntas para
saber cual es el Java Home y donde est la documentacin. Una vez introducida esta
informacin podremos utilizar el editor JCreator desde cualquier carpeta, que nos
permitir escribir el programa java, compilarlo y ejecutarlo.
}
En este ejemplo vemos la plantilla de una clase con mtodo main. Lo que podra variar
se ha escrito en cursiva. Visto de otra forma, la plantilla de una clase que incluya
mtodo main es:
class*****{
publicstaticvoidmain(String[]*****){
instruccin1;
instruccion2;}
}
El filename.java deber ser HolaMundo.java, pus la clase que lleva el mtodo main
debe coincidir con el nombre del filename.java
Los nombres de las clases siempre se empiezan por maysculas (en azul dbil en
JCreator)
String[]args son los argumentos de entrada. String[]args define (o
declara o instancia) args como un objeto que es un array (lista) de cadenas de
caracteres. El objeto es cadena de caracteres por la clase String y es array por el
smbolo [].
Args[0] es el primer elemento de la lista, args[1] el segundo, y as
sucesivamente. args es un objeto que se lee (o no se lee) en lnea de comandos .
System.out.println() es una forma tpica de escribir una lnea de salida por
pantalla. Entre parntesis escribimos lo que queremos que se vea por pantalla.
System.out es el flujo de salida estndar. System es el nombre de una clase,
out el de una variable o componente de la clase, que es la salida, y println()
es un mtodo que acta sobre el componente de la clase.
Los mtodos son llamados en general con la sintaxis: nombreObjeto.mtodo,
nombreObjeto.nombreComponente.mtodo, nombreClase.mtodo
o nombreClase.nombreComponente.mtodo, segn acten sobre el propio
objeto, sobre alguna de sus componentes o sobre la clase o alguna de sus
componentes.
Ejecutando:
javacHolaMundo.java
javaHolaMundo
veremos que por pantalla se escribe
Hola
HolaPedro
Leccin 4.
bsicas.
entero int
real
float,double
El compilador asigna espacio de memoria para almacenar cada variable con arreglo a su
tipo.
Todas las variables deben ser declaradas. No podemos escribir
c=2; debemos
hacerlo como:
floatc=2;
floatc;
c=2
(declaracin y asignacin)
(declaracin)
(asignacin)
Siempre que sea posible, es conveniente declarar una variable y asignarle su valor
inicial en un solo paso, ya que esta accin facilita la interpretacin del programa.
Las operaciones entre nmeros de dos tipos producen como resultados nmeros del tipo
superior (el orden entre los anteriores es int<float<double). As
inta=2;
intb=3;
floatc;
c=a/b;
c es cociente de dos enteros y ser por tanto un entero. 2/3 valdr 0. Aunque c est
declarada y almacenada cmo float el valor que le asigno es entero, porque a/b ser
entero. En este caso se est haciendo internamente una conversin automtica de tipos,
puesto que el entero 2/3=0 pasa a float como 0.0000000. Al pasar una variable numrica
de un nivel inferior a superior nunca perdemos informacin, ni la ganamos, slo
aadimos ceros.
Se puede realizar una conversin de tipos explcita mediante el operador cast o molde,
cambiando la categora de un tipo de nivel inferior a superior. Si hacemos
c=(float)a/b;
c es el cociente entre el float a y el entero b, y el resultado ser float. c valdr 0.6666667
Los nmeros decimales se escriben como +-**.*** . Estos nmeros son considerados
por Java como de tipo double, y deben declararse como double. Si queremos que un
nmero decimal se considere como float, debemos escribirlo como +-**.****f
Haciendofloata1=2.4; obtendremos error en la compilacin,
porque al nmero 2.40000000000000 se le estara haciendo pasar a 2.400000
Tambin dara error de compilacin esta serie de instrucciones:
doublea1=2.4;
doublea2=1.6;
floata3;
a3=a1/a2;
porque a1/a2 va a tener la precisin de double, y al convertirlo a float voy a
perder la precisin que tena.
A continuacin vemos un ejemplo de programa con las operaciones aritmticas bsicas
de suma, resta, multiplicacin y divisin.
publicclassOperaciones{
publicstaticvoidmain(String[]args){
inta=2;
intb=3;
intc1,c2,c3;
floatc4;
doublec5;
c1=a+b;
c2=ab;
c3=a*b;
c4=((float)a)/b;
c5=((double)a)/b;
System.out.println("lasumaes"+c1);
System.out.println("larestaes"+c2);
System.out.println("elproductoes"+c3);
System.out.println("elcocientees"+c4);
System.out.println("elcocientees"+c5);
}
}
Integerj=newInteger("33");
Doubled1=newDouble(2.16);
Doubled2=newDouble("2.4316");
System.out.println(i+""+j);
System.out.println(d1+""+d2);
}
}
La clase Integer proporciona un mtodo muy utilizado para convertir una cadena en
un nmero, que es el mtodo parseInt. Puede actuar sobre un objeto de la clase
Integer o directamente sobre la clase. Podemos escribir el mtodo con uno o dos
argumentos, el primero es una cadena de caracteres y el segundo un entero.
parseInt( cadena de caracteres, entero) o parseInt(cadena de caracteres)
intk1=Integer.parseInt("101");
intk2=Integer.parseInt("101",2);
System.out.println(k1+""+k2);
y k2 vale 2.
inta=0,b=0;
doublec;
BufferedReaderteclado=newBufferedReader(new
InputStreamReader(System.in));
System.out.print("a=?:");
a=Integer.parseInt(teclado.readLine());
System.out.print("b=?:");
b=Integer.parseInt(teclado.readLine());
c=(double)a/b;
System.out.println("elcocientees"+c);
}
}
-
(Input
Stream
Reader
significa
Lector
del
flujo
de
entrada).
Siempre que tenga que meter datos utilizando el teclado tendr que incluir la
instruccin anterior. Puedo variar el nombre teclado, pero lo dems es fijo.
- Integer.parseInt(teclado.readLine()); convierte el texto ledo por
importjava.io.*; Para leer datos tenemos que importar todas las clases del
paquete io (input-output) . Si no incluimos esta sentencia tendremos un error en
compilacin.
throwsIOException
Al leer datos por teclado estamos obligados a considerar el posible error por no
disponibilidad del teclado. En efecto, si el teclado no est disponible la operacin de
entrada readLine dara error. El manejo del error que se suele implementar en el
cdigo consiste en enviar un mensaje por pantalla si el teclado no est disponible.
Por ahora no hemos estudiado el manejo de errores o Exceptions. Si no queremos
tratar el posible error debemos incluir el operador throwsIOException en el
mtodo main. Se puede comprobar que quitando ese operador del cdigo el
programa produce error en compilacin, avisndonos de la IOException.
declara a
igual
Distinto
Mayorque
Menorque
Mayoroigual
Menoroigual
1==2
1!=2
1>1
1<2
2>=0.2
2<=0.2
False
True
False
True
True
False
false
2.Operadores lgicos
Los operadores lgicos o booleanos actan sobre operandos de tipo lgico para devolver
un resultado tambin de tipo lgico. Los dos ms inportantes son el operador y y el
operador o
&
class Compara{
public static void main(String[] args){
double a=3;
double b=4;
double c=5;
if
(nacimiento>n1 & nacimiento<n2)
{System.out.println("autorizado");}
else
{System.out.println("no autorizado");}
4.Ejercicios
Escribir una aplicacin que tome como datos un par de puntos P(x,y) y que determine el
ngulo en grados que forma el vector OP con la parte positiva del eje x.
Escribir una aplicacin que lea por pantalla un nombre y escriba por pantalla Hola
slo si el nombre es Pedro y Hello slo si el nombre es Peter.
Soluciones:
import java.io.*;
public class angulos{
public static void main(String[] args) throws IOException{
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
double a = Double.parseDouble(teclado.readLine());
double b = Double.parseDouble(teclado.readLine());
double d;
double rad=Math.atan(b/a);
if (a>0 && b>0)
System.out.println(a + " " + b + " " + Math.toDegrees(rad));
if (a<0 && b>0)
{d = 180.+Math.toDegrees(rad);
System.out.println(a + " " + b + " " + d );}
if (a<0 && b<0)
{d = 180.+Math.toDegrees(rad);
System.out.println(a + " " + b + " " + d );}
if (a>0 && b<0)
{d = 360.+Math.toDegrees(rad);
System.out.println(a + " " + b + " " + d );}
}
}
import java.io.*;
public class bilingue{
public static void main(String[] args) throws IOException{
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
String str=teclado.readLine();
String str1="Peter";
String str2="Pedro";
if (str.equals(str1))
System.out.println("Hello");
if (str.equals(str2))
System.out.println("Hola");
}
}
Leccin 9: Bucles
1.Operadores de incremento (decremento) y asignacin
++a
a++
--a
a--
a=a+1
a=a+1
a=a-1
a=a-1
int a = 5;
System.out.print( 2 + a)
System.out.println(2 + ++a);
por pantalla escribe 8
antes de ejecutarse la sentencia
System.out.println(a)
System.out.println(a++)
por pantalla escribe 6
despus de ejecutarse la sentencia
System.out.print(a)
class Incremento{
public static void main(String[] args){
double a=5;
System.out.println(2 + a );
System.out.println(2 + ++a);
System.out.println(a);
System.out.println(a++);
System.out.println(a);
}
}
long k;
long pp=1;
int j=1;
while (j<=k)
{pp=j*pp;
j=j+1;}
System.out.prinln(pp);
intj=3;
while(j<=k)
{pp=nmenos1+nmenos2;
nmenos2=nmenos1;
nmenos1=pp;
j=j+1;}
System.out.println(pp);
El primer valor de j es 3.
Desde j=3 hasta j=k, con incrementos +1, se
calcula F(j).
intj=3;
while(j<=k)
{pp=nmenos1+nmenos2;
nmenos2=nmenos1;
nmenos1=pp;
j=j+1;};
return(pp);}
La salida
fibo(k) es pp
Podemos fijarnos en la similitud con el nico otro mtodo que hemos visto, que es el
mtodo main.
Escribamos
publicstaticvoidmain(String[]args){}
y ahora
longfibo(longk){ }
Mientras que el argumento de entrada del primer mtodo es un vector formado por
cadenas de caracteres, en el segundo caso es un entero largo
Mientras que el primer mtodo es void (no devuelve nada) el segundo devuelve
(return) un dato de tipo long.
Vamos a escribir una aplicacin que nos calcule y devuelva por pantalla F(k) utilizando
la funcin o mtodo fibo(long k)
import java.io.*;
class Fibonacci{
// mtodo main
public static void main(String[] args) throws IOException{
long a,fa;
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
System.out.print("a=?:");
a=Long.parseLong(teclado.readLine());
fa=fibo(a);
System.out.println(fa);}
// funcin para calcular la secuencia de Fibonacci
static long fibo(long k){
long nmenos1=1;
long nmenos2=1;
long pp=0;
int j=3;
while (j<=k)
{pp=nmenos1+nmenos2;
nmenos2=nmenos1;
nmenos1=pp;
j=j+1;};
return(pp); }
}
EJERCICIOS
1. Escribe una aplicacin que incluya la funcin de Fibonacci y que permita comprobar las
siguientes relaciones:
F(n+1)*F(n-1) - F(n)2 = (-1)n
F(2n+1) = F(n+1)2 + F(n)2
F(2n) = F(n+1)2 - F(n-1)2
F(n+p+1) = F(n)*F(p) + F(n+1)*F(p+1)
2. Escribe una aplicacin que calcule el factorial de un nmero, introduciendo el bloque que
calcula el factorial como una funcin.
Algoritmo
//
}