Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 28

Ruth Carballo

Pgina 1

26/09/2015

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.

Ruth Carballo

Pgina 2

26/09/2015

Bibliografa:
Java 2. Manual de Programacin. L. Joyanes Aguilar, M. Fernndez Azuela. Mc Graw-Hill
2001. ISBN 84-481-3193-2
Manual Avanzado de Java. F. Lima Daz. Anaya Multimedia. 1998. ISBN 84-415-0517-9

Ruth Carballo

Pgina 3

26/09/2015

Leccin 1: Instalacin del SetUp Developer Kit de Java


Ficheros de inters:
j2sdk-1_3_1-win.exe
j2sdk-1_3_1_doc.zip

el programa
la documentacin (o ayuda)

Pulsando dos veces sobre el icono j2sdk-1_3_1-win se comienza la instalacin.


Automticamente se crear un directorio C:\ jdk1.3.1 con los subdirectorios
\bin
\lib
\demo
etc
Al directorio C:\jdk1.3.1 es a lo que se le llama Java Home
El programa queda instalado en C:\jdk1.3.1 y las instrucciones javac (compilacin) y
java (ejecucin) funcionarn nicamente en C:\jdk1.3.1\bin
En lnea de comandos se podr comprobar si el programa est bien instalado en la forma
siguiente:
Ejecutando
>javac en C:
obtendremos como respuesta que el comando es
desconocido. Pero ejecutando >javac
en C:\jdk1.3.1\bin obtendremos como
respuesta Usage: javac <options> <source files> etc . Los mensajes exactos dependen
de si se usa Windows 98 o 2000.
La ventana de lnea de comandos es la ventana de MS-DOS. En Windows 2000 se
accede a ella en la forma PROGRAMAS->ACCESORIOS->SIMBOLO DEL
SISTEMA
Hasta ahora los comandos javac y java slo funcionan en la direccin C:\jdk1.3.1\bin
Si queremos que funcionen desde cualquier direccin , la direccin C:\jdk1.3.1\bin
debe estar incluida en el parmetro PATH. Path se traduce al castellano como
camino o senda. Cuando WINDOWS tiene que realizar una aplicacin busca el
programa en las direcciones dadas en PATH.
Ampliacin del PATH para una sesin en MS-DOS
C:>PATH

(me ensea lo que hay en el path)

C:>set PATH=%PATH%;C:\jdk1.3.1\bin

(aade al PATH anterior el directorio


C:\jdk1.3.1\bin
en Windows2000 sin comillas)

C:>PATH (confirmamos que C:\jdk1.3.1\bin est en el PATH)

Ruth Carballo

Pgina 4

26/09/2015

C:> javac (confirmamos que se produce la respuesta Usage: javac <options> >source
files> etc)
Si salimos de la sesin MS-DOS (con exit) y abrimos una nueva, veremos que lo que
habamos aadido ha desaparecido, el PATH vuelve a ser el inicial.
Ampliacin permanente del PATH (Windows98)
Para que la ampliacin del PATH sea permanente la direccin a aadir debe escribirse
en el fichero de Windows Autoexec.bat
- accedemos al fichero con INICIO->EJECUTAR->SYSEDIT
- nos aparecer delante de todo la ventana Autoexec.bat
- en la instruccin PATH=... aadimos la direccin que nos interesa
- escribimos la instruccin
> set classpath = .
(Al escribir > javac filename.java se crear filename.class, que es el fichero
pseudocompilado. En el paso de ejecucin: >java filename se hace la llamada a
filename.class. La instruccin set classpath=. hace que el filename.class se
busque en el directorio dnde ejecutamos java.)
-

reiniciamos el ordenador

Ahora abriendo una ventana en MS_DOS, en cualquier momento, veremos que javac
funciona desde todas las direcciones.

Instalacin de la ayuda de Java


Se abre j2sdk-1_3_1-doc.zip

con Winzip, y se extrae en el directorio jdk1.3.1

Automticamente aparecer en jdk1.3.1 el subdirectorio /docs con la documentacin y


un ndice (fichero index.html)

Ruth Carballo

Pgina 5

26/09/2015

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.

Ruth Carballo

Pgina 6

26/09/2015

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
variable encendido del flash
variable de cargada o descargada
variable de nmero de foto
variable de niebla, etc

que puede tener el valor on o off


que puede ser on o off
on o off
de 1 a 36

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

Ruth Carballo

Pgina 7

26/09/2015

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 [].

Ruth Carballo

Pgina 8

26/09/2015

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 JCreato?
Configure
Options

Ruth Carballo

Pgina 9

26/09/2015

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

Ruth Carballo

Pgina 10

26/09/2015

Leccin 4. Variables numricas. Operaciones aritmticas


bsicas.
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
hacerlo como:
floatc=2;
floatc;
c=2

(declaracin y asignacin)

c=2; debemos

(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

Ruth Carballo

Pgina 11

26/09/2015

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

Ruth Carballo

Pgina 12

26/09/2015

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

Ruth Carballo

k1 vale 2

Pgina 13

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

26/09/2015

Ruth Carballo

Pgina 14

26/09/2015

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

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

Stream

Reader

significa

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

Ruth Carballo

Pgina 15

26/09/2015

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.

Ruth Carballo

Pgina 16

26/09/2015

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
Math.Pi
Math.abs()
Math.acos()
Math.asin()
Math.atan()
Math.cos()
Math.sin()
Math.tan()
Math.exp()
Math.log()
Math.pow(a,b)
Math.toDegrees
Math.toRadians

el nmero E
el valor de Pi
valor absoluto
arcocoseno de un ngulo en radianes
arcoseno
arcotangente
coseno
seno
tangente
e elevado al nmero
logaritmo neperiano de un nmero
a elevado a b
convierte un ngulo de radianes a grados
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);
}
}

Ruth Carballo

Pgina 17

26/09/2015

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

Ruth Carballo

Pgina 18

26/09/2015

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

Ruth Carballo

Pgina 19

26/09/2015

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.

Ruth Carballo

Pgina 20

26/09/2015

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

Ruth Carballo

Pgina 21

26/09/2015

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

Ruth Carballo

Pgina 22

26/09/2015

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

Ruth Carballo

Pgina 23

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

26/09/2015

Ruth Carballo

Pgina 24

26/09/2015

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;

El primer valor de j es 3.

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

System.out.println(pp);

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.

Ruth Carballo

Escribamos

Pgina 25

26/09/2015

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)

Ruth Carballo

Pgina 26

26/09/2015

2. Escribe una aplicacin que calcule el factorial de un nmero, introduciendo el bloque que
calcula el factorial como una funcin.

Ruth Carballo

Pgina 27

26/09/2015

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

Ruth Carballo

Pgina 28

26/09/2015

También podría gustarte