Sie sind auf Seite 1von 19

EL LENGUAJE JAVA

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.

Leccin 1: Instalacin del SetUp Developer Kit de Java


Leccin 2: Instalacin JCreator
JCreator es un editor de Java desde el cual podemos, adems de editar el filename.java,
tener un acceso cmodo a la ayuda y realizar la compilacin y ejecucin del
programa.
Carpetas de inters:
JcreatorLE2.0
JcreatorPro2.0

Little Editor
Professional

Es simple y licencia gratuita


Es ms potente y tiene licencia gratuita para 30 das

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.

Si en la instalacin no nos ha aparecido informacin sobre el Java Home o el directorio


de la documentacin, habr que que darle estos datos manualmente a JCreator.
Al finalizar la instalacin nos aparece un icono JcreatorPro en el escritorio. Pulsando
dos veces sobre l y se abrir el editor. Seleccionamos CONFIGURE->OPTIONS>jdkprofiles
- Si ah aparece JDK version 1.3.1 es que est bien
- Si no aparece seleccionamos NEW y en el Select path que me ofrece escojo el
directorio C:\jdk1.3.1
En NEW tenemos dos pestaas, una para Classpath y otra de Documentacion. En la de
documentacin hay que aadir C:\jdk1.3.1\docs
Una vez metida esta informacin siempre que ejecute JCreator funcionar. No habr
que drsela cada vez.

Leccin 3: Primera aplicacin


1. Edicin, compilacin y ejecucin de un programa Java
1. Crear el fichero fuente filename.java. El fichero fuente contiene texto, escrito en
Java, que tu y otros programadores podis entender. Se puede utilizar cualquier
editor de texto para crear y editar los ficheros fuente. Por ejemplo en Windows se
puede utilizar Notepad.exe (Bloc de Notas).
2. Compilar el fichero fuente en un fichero bytecode. El compilador toma el fichero
fuente y convierte el texto en instrucciones que la Mquina Virtual Java (Java VM)
puede entender.
> javacfilename.java
Si el programa no tiene errores, volveremos a obtener el prompt. El fichero
bytecode aparece en el directorio como filename.class
3. Ejecutar el programa contenido en el fichero bytecode. El intrprete Java instalado
en tu ordenador lee las instrucciones en bytecode y las traduce de forma que el
ordendador las entienda y pueda ejecutarlas (cdigo binario).
> javafilename

2. Las clases en Java


El lenguaje Java se construye en bloques que son clases. Las clases tienen a su vez
variables ( tambin llamados campos o componentes) y mtodos, recordando a las
clases de objetos reales.
Por ejemplo en una cmara de fotos podramos considerar como variables de estado:
variable encendido
que puede tener el valor on o off
variable encendido del flash
que puede ser on o off
variable de cargada o descargada on o off

variable de nmero de foto


de 1 a 36
variable de niebla, etc
y como mtodos:
encender
(la variable de encendido pasa de off a on)
apagar
(la variable de encendido pasa de off a on)
disparar
(slo funciona si la variable encencido est en on, la variable nmero de
foto se incrementa en uno)
rebobinar , etc
El software de Java se escribe a base de la creacin de clases, con sus variables y
mtodos. Los objetos en Java no son ms que ejemplos (tambin llamados instancias o
ejemplares) de las clases. Existen clases de las que no se pueden crear objetos, como
por ejemplo la clase Systemque veremos ms adelante.
Toda aplicacin Java tiene que tener al menos una clase con un tipo de mtodo
denominado mtodo main. Todas las acciones que se realizan en una aplicacin
se escriben en el mtodo main.
Un ejemplo de accin, una vez construida la clase CamaraFotografica, con sus variables
y sus mtodos, sera la de construir una cmara concreta y en un estado
concreto (por ejemplo, apagada y en nmero foto 4), encenderla, disparar tres
veces y apagarla.
Se llaman constructores de una clase a los mtodos que permiten definir (instanciar) un
objeto concreto de una clase.
La sintaxis de los constructores suele ser as:Clasemiclase=newClase()
Cada clase se crea con sus constructores, que pueden ser ms de uno.
En el parntesis se incluyen los argumentos que usa el constructor, separados por
comas. Pueden existir constructores que no usen ningn argumento.
En Java tendremos clases ya construidas y clases que construiremos nosotros.

3. Ejemplo 1: Estructura de un programa aplicacin en Java


classHolaMundo{
publicstaticvoidmain(String[]args){
System.out.println(Hola);}

}
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

4. Datos en la lnea de comandos


classHolaPersona{
publicstaticvoidmain(String[]args){
System.out.println(Hola+args[0]);}
}
javacHolaMundo.java
javaHolaMundoPedro
veremos que por pantalla escribe

HolaPedro

Si ejecutamos > JavaHolaMundo el programa dar error en ejecucin, puesto que la


aplicacin tiene que escribir por pantalla args[0] y no le hemos dado ningn argumento de
entrada.
Si ejecutamos >JavaHolaMundoPedroFernandez dar como salida por pantalla
Hola Pedro
Aunque ha recibido dos argumentos de entrada, slo tiene que escribir por pantalla el primero.

5. Como dar (no dar) la opcin de incluir argumentos de lnea de


comando en JCreator?
Configure
Options
JDK Tools
Run Application
Seleccionar Default
Edit
Parameters
Activar (desactivar) la casilla de verificacin Prompt for main function arguments

6. Incluir comentarios en el programa


// una lnea
/* varias
lineas
*/

7. Ejemplo de construccin de objetos: objetos de la clase String


classHola1{
publicstaticvoidmain(String[]args){
//construyeunacadenavaca
Stringstr=newString();
/* asigna contenido a la cadena. El contenido de una cadena
siempredebeestarentrecomillasdobles*/
str="Hola";
System.out.println(str);}
}
classHola2{
publicstaticvoidmain(String[]args){
//construyeunacadenayleasignacontenido
Stringstr=newString(Hola);
System.out.println(str);}
}
classHola3{
publicstaticvoidmain(String[]args){
/*Stringesunaclasemuyutilizada,porloqueellenguaje
Javapermiteinstanciarlasin
utilizarnewniconstructorString(....)*/
Stringstr=Hola;
System.out.println(str);}
}

Leccin 4.
bsicas.

Variables numricas. Operaciones aritmticas

Variables de tipo numrico

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);
}
}

Leccin 5. La clase Number


Java permite utilizar los tipos simples int,float, double por razones de
rendimiento, pero Java tiene la clase Number y subclases de sta como Integer,
Float y Double, que son las clases de respectivamente nmeros enteros, nmeros
reales con precisin sencilla, y nmeros reales con doble precisin.
Veremos un programa donde los nmeros son tratados como objetos de una clase.
Recordemos como las strings o cadenas de caracteres slo existen en Java como
objetos, y no como variables de tipo simple. Sin embargo, vimos tambin que la
declaracin y asignacin puede realizarse similarmente a la que se realiza para las
variables de tipo simple, sin necesidad de utilizar el operador new y el constructor .
Esto es as por la misma razn de rendimiento: la clase String es muy utilizada y
define un tipo de datos.
Para construir objetos de las clases Integer,Float,Double, etc, subclases de
Numberlo debemos hacer con el operador new y sus constructores.
classClaseNumero{
publicstaticvoidmain(String[]args){
Integeri=newInteger(2);

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);

k1 vale 101 y k2 vale 5, que es el valor de 101 en base 2


Otro mtodo es el de devolverme el valor del nmero:
Integer i = new Integer(2);
int k1
= i.intValue();
double k2 = i.doubleValue();
k1 vale 2

y k2 vale 2.

Double x = new Double(2.15);


double y1= x.doubleValue();
int
y2 =x.intValue();
y1 vale 2.15 e y2 vale 2

Leccin 6: El programa pide datos por pantalla


importjava.io.*;
publicclassOperacionesTeclado{
publicstaticvoidmain(String[]args)throwsIOException{

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);
}
}
-

InputStreamReader es una clase que se encarga de convertir bytes en caracteres

(Input

Stream

Reader

significa

Lector

del

flujo

de

entrada).

InputStreamReader(System.in) se encarga de convertir en caracteres los

bytes ledos desde el teclado, ya que System.ines el teclado.


-

BufferedReader es una clase que produce un texto o palabra o cadena de

caracteres (String) a partir de la secuencia de caracteres.


A mi lector de datos de entrada, que los convierte en texto, lo llamo teclado, y es
un objeto definido as:
BufferedReaderteclado=newBufferedReader(new
InputStreamReader(System.in));

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

teclado hasta un retorno de carro, en un nmero entero.


-

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.

Leccin 7: La clase Math

La clase java.lang.Math proporciona una serie de constantes y funciones de uso muy


comn en expresiones aritmticas. En la tabla damos algunos ejemplos.
Math.E
el nmero E
Math.Pi
el valor de Pi
Math.abs()
valor absoluto
Math.acos()
arcocoseno de un ngulo en radianes
Math.asin()
arcoseno
Math.atan()
arcotangente
Math.cos()
coseno
Math.sin()
seno
Math.tan()
tangente
Math.exp()
e elevado al nmero
Math.log()
logaritmo neperiano de un nmero
Math.pow(a,b)
a elevado a b
Math.toDegrees convierte un ngulo de radianes a grados
Math.toRadians convierte un ngulo de grados a radianes
class Clasemath{
public static void main(String[] args){
double a=100;
double b=2;
double c=Math.PI/2;
double d=Math.PI/4;
double e=Math.toDegrees(d);
double raiz=Math.sqrt(a);
double log=Math.log(a);
double log10=Math.log(a)/Math.log(10);
double exp=Math.exp(a);
double elevar=Math.pow(a,b);
double coseno1=Math.cos(c);
double coseno2=Math.cos(d);
System.out.println(raiz);
System.out.println(log);
System.out.println(log10);
System.out.println(exp);
System.out.println(elevar);
System.out.println(coseno1);
System.out.println(coseno2);
System.out.println(e);
}
}

Leccin 8: Operadores relacionales


1.Operadores relacionales
En programacin son importantsimas no slo las variables numricas sino tambin las
variables lgicas. En cuanto a variables numricas hemos estudiado las de tipos int,
float y double.

Por ejemplo inta=2;


valor 2.

declara a

como variable de tipo entero y le asigna el

Los operadores relacionales o de comparacin permiten comparar valores para


determinar su igualdad, desigualdad u ordenacin, y el resultado de las expresiones en
las que intervienen es de tipo lgico. Las expresiones lgicas slo pueden tomar dos
valores: trueo false
==
!=
>
<
>=
<=

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

La comparacin de cadenas en Java mediante el operador = = no funciona en todos


los casos, por tanto para evitar la posibilidad de error se ha de utilizar el mtodo
equals().
class Compara{
public static void main(String[] args){
double a=3;
double b=4;
System.out.println(a>b);}
}
Por pantalla veremos:

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
&

True & true = true


True & false = false
Flase & true = false
False & false = false
True | true = true
True | false = true
False | true = true
False | false = false

class Compara{
public static void main(String[] args){
double a=3;
double b=4;
double c=5;

System.out.println(a<b & b<c );


System.out.println(a<b & c<b );
System.out.println(a==4.2 | b==4.2 | c==4.2 );
System.out.println(a==4 | b==4 | c==4 );
}
}
import java.io.*;
class CarnetJoven{
public static void main(String[] args) throws IOException{
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
System.out.print("nacimiento=?:");
int nacimiento=Integer.parseInt(teclado.readLine());
int n1=1978;
int n2=1988;
System.out.print(nacimiento>n1 & nacimiento<n2);
}}

3.Las sentencias ife ifelse


En todos los lenguajes de programacin existen construcciones que permiten tomar
decisiones basadas en una condicin. Para efectuar esta tarea Java dispone de las
sentencias if e ifelse
Sintaxis de if para una sentencia o un bloque de sentencias
if(condicin)
sentencia;
if(condicin)
{ sentencia1;
sentencia2;.....}
if (nacimiento>n1 & nacimiento<n2)
System.out.println("carnet joven");
System.out.println("fin del programa");
if (nacimiento>n1 & nacimiento<n2)
{System.out.println("carnet joven");
System.out.println("enhorabuena");}
System.out.println("fin del programa");
Sintaxis de if-else para una sentencia o un bloque de sentencias
if(condicin)
{sentencia1;
sentencia2;}
else
{ sentencia3;
sentencia4;.....}

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

antes de ejecutarse la instruccin


despus de ejecutarse la instruccin
antes de ejecutarse la instruccin
despus de ejecutarse la instruccin

int a = 5;
System.out.print( 2 + a)

por pantalla escribe 7

System.out.println(2 + ++a);
por pantalla escribe 8
antes de ejecutarse la sentencia
System.out.println(a)

por pantalla escribe 6

System.out.println(a++)
por pantalla escribe 6
despus de ejecutarse la sentencia
System.out.print(a)

++a hace que a valga a+1

a++ hace que a valga a+1

por pantalla escribe 7

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);
}
}

2.La sentencia for


El bucle for est diseado para ejecutar una secuencia de sentencias un nmero fijo de
veces. La sintaxis de la sentencia for es:
for (inicializacin ; condicin de terminacin ; incremento)
sentencias;
// puede ser ninguna, una sola sentencia o un bloque delimitado por {}
// y sern lo que se repita durante el proceso del bucle
Inicializacin: se inicializan la(s) variable(s) de control
Condicin de terminacin: se comprueba antes de cada iteracin del bucle y ste se
repite mientras que la condicin se evale como verdadera

El incremento se ejecuta despus de que se ejecuten las sentencias y antes de que se


realice la siguiente prueba de la condicin de terminacin. Esta parte se utiliza para
incrementar o decrementar las variables de control.
En resumen, el bucle for comprueba si la condicin de terminacin es verdadera. Si la
condicin es verdadera se ejecutan las sentencias del interior del bucle, y si la condicin
es falsa, se saltan todas las sentencias del interior del bucle, es decir, no se ejecutan.
Cuando la condicin es verdadera, despus de ejecutarse todas las sentencias la variable
de control se incrementa.
Observaciones:
- Cada parte del bucle for es opcional, aunque los dos ; deben escribirse
- Es frecuente que la(s) variable(s) de control de un for slo se necesiten en el bucle,
en cuyo caso pueden declararse en la zona de inicializacin.
Ejemplos:
class Clasefor1{
public static void main(String[] args){
for (int i=0; i<=10 ; i++)
{System.out.println(i);}
}
}
class Clasefor2{
public static void main(String[] args){
/* si queremos usar la variable i fuera del bloque for tenemos que declararla fuera del
bloque for */
int i;
for (i=0; i<=10 ; i++)
{System.out.println(i);}
System.out.println("hemos terminado, e i vale " + i);
}
}
Ejercicios
1. Crear una aplicacin que calcule la tabla del 4, desde 1 hasta 20.
2. Crear una aplicacin que calcule el factorial de un nmero natural.
3. Crear una aplicacin que calcule el rea de 10 crculos de radios 1,2,3,4,5,6,7,8,9,10
SOLUCIONES:
Bloque para calcular el factorial de un nmero utilizando el operador while

long k;

long pp=1;
int j=1;
while (j<=k)
{pp=j*pp;
j=j+1;}
System.out.prinln(pp);

Leccin 10: Secuencia de Fibonacci


F(n+2) = F(n+1) + F(n) , donde F(1) = F(2) = 1
Los primeros 20 trminos de esta sucesin son:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765
Mostramos un bloque de instrucciones de Java para calcular F(k) siendo k un entero
positivo mayor o igual a 3.
longk;
Queremos calcular F(k)
longnmenos1=1;
longnmenos2=1;
longpp=0;

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).

El ltimo valor calculado es pus F(k)

A continuacin vamos a convertir el bloque anterior en una funcin. La funcin que


denominaremos fibo( ) tendr como argumento la variable long k, y como
salida, un entero tipo long que es fibo(k)= F(k)
La funcin se escribe en Java como un mtodo. No es voidya que devuelve un valor.
El valor que se devuelve es lo que aparece dentro del parntesis de la ltima instruccin,
que es return().
staticlongfibo(longk){
longnmenos1=1;
longnmenos2=1;
longpp=0;

intj=3;
while(j<=k)
{pp=nmenos1+nmenos2;
nmenos2=nmenos1;
nmenos1=pp;
j=j+1;};
return(pp);}

El primer long es para indicar que la salida


es de este tipo.

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.

Leccin 11: Vectores


Se declara el tipo de datos del vector
int[] datos;
significa que los datos son enteros
Se crea el vector, fijando su tamao
datos = new int[3] ;
significa que el nmero de entradas es 3
Se puede declarar el tipo de datos del vector y crearlo en una sola instruccin
int[] datos1 = new datos1[4];
Todas las entradas valdrn cero. Si queremos asignarles valores tendremos que hacerlo
entrada por entrada
datos[0]=50;
datos[1]=51;
datos[2]=52;
Podemos en una sola instruccin declarar, crear y asignar valor.
int[] impares = {9,5,1,13,3,11,7};
Para visualizar por pantalla el contenido del vector
for (int i=0; i<impares.length;i++)
{System.out.print(impares[i]+ " ");}

Ordenacin por seleccin de un vector


int menor;
for (int i=0; i<impares.length-1;i++) {
menor=i;
for (int j=i+1 ; j<impares.length;j++) {
if (impares[j] < impares[menor])
menor=j;};
int auxi= impares[i];
impares[i]=impares[menor];
impares[menor]=auxi;

Algoritmo

El vector tiene N elementos, que ordenamos


con el ndice i.

Tomamos i=1 y buscamos el mnimo de i=1


aN

Intercambiamos para llevar el mnimo a la


posicin i=1 y el valor de i=1 a donde estaba
el mnimo

Tomamos i=2, buscamos el mnimo de i=2 a


N e intercambiamos para llevar el mnimo a
la posicin i=2 y el valor de i=2 a donde
estaba el mnimo

//para ver como se va modificando la ordenacin


System.out.println("");
for (int pp=0; pp<impares.length;pp++)
{System.out.print(impares[pp]+" "); }

//
}

Repetimos el proceso hasta i=N-1

Das könnte Ihnen auch gefallen