Sunteți pe pagina 1din 39

Curso Java Online

Java es uno de los lenguajes de programacin ms usados por los programadores, y tambin por los usuarios que
ejecutan aplicaciones hechas en Java continuamente. Fue desarrollado originalmente por Sun Microsystems aunque
posteriormente fue adquirida por la compaa Oracle.
El lenguaje Java tiene grandes similitudes con la sintaxis de C y C++ pero no es capaz de llegar a tan bajo nivel
que estos ltimos. Las aplicaciones Java se ejecutan en una mquina virtual de Java (JVM) por lo que no importa
la arquitectura de nuestro sistema o el sistema operativo utilizado, un mismo programa en Java funcionar en
cualquier plataforma gracias a esta mquina virtual.
El famoso sistema operativo Android de Google, est basado en Java, por este motivo es compatible con tantos
telfonos mviles con distinto hardware, porque tan slo hay que adaptar la mquina virtual Dalvik.

Introduccin a la programacin en Java

Introduccin
Nuestro primer programa
Clase, objeto y estructura de un programa
Tipos de datos y expresiones simples
Argumentos, constructores y operadores
Instrucciones de control I
Instrucciones de control II
Ejercicios prcticos
Solucin de los dos primeros ejercicios
Solucin a los dos ejercicios restantes

Estructuras de datos

Introduccin a las listas (Arrays)


Utilizacin de Arrays como parmetros
Arrays multidimensionales
Ejercicio de repaso

Resolucin del ejercicio propuesto


ArrayList y LinkedList
Ejemplos de LinkedList
Resolucin del ejercicio de LinkedList
Solucin al ejercicio de ArrayList y pilas de datos
Colas de prioridad
Diferencia entre colas y pilas
Resolucin del ejercicio de equipos y rbitros
Mapas de datos
Mapas de datos enumerados
Ejercicio EnumMap (solucin) y rboles de datos
rboles de datos
rboles de datos II
rboles de datos binarios

Herencia y polimorfismo

Herencia
Herencia II
Polimorfismo
Modificadores de acceso y conversin de referencias
Ejercicio de herencia y polimorfismo
Solucin del ejercicio planteado en el volumen XX

Interfaces(GUIs)
Gestores de distribucin

Introduccin a las interfaces grficas


Primeros pasos con las interfaces grficas
Ampliando lo que ya sabemos
Gestores de distribucin
Ejemplo de uso gestores de distribucin
Dibujar grficos en un panel
Ejemplo de utilizacin de grficos en un panel
Ejercicio de distribucin de componentes
Resolucin del ejercicio propuesto

Gestin de eventos

Gestin de eventos
Gestin de eventos: ActionEvent

Resolucin de ejercicio e ItemEvent


Resolucin de ejercicio(ItemEvent) y explicacin de ChangeEvent
Resolucin de ejercicio(ChangeEvent) y explicacin de ListSelectionEvent
Solucin al ejercicio (ListSelectionEvent) e introduccin a las ventanas de dilogo
Utilizacin de dilogos (JDialog)
Utilizacin de dilogos II
Eventos de bajo nivel
Resolucin al ejercicio propuesto

Entrada y salida de ficheros

Introduccin
Primeros ejemplos (entrada y salida binaria)
Ficheros de texto
Clase Scanner
Entrada y salida de ficheros
Ejemplo de programa con entrada/salida de ficheros y con interfaz grfica

Programacin concurrente y distribuda en Java

Introduccin a la concurrencia
Regiones crticas
Regiones crticas. Ejemplo avanzado
Gestin de threads
Todo sobre monitores en java
Todo sobre semforos en java
Todo sobre locks en java
Interbloqueos en programacin concurrente
Estructuras para programacin concurrente I
Estructuras para programacin concurrente II
Todo sobre RMI en Java (Programacin distribuda)
Todo sobre Sockets TCP y UDP en Java

Programas

Juego Conecta4 implementado en Java


Generador de claves WPA y WPA2 en Java

Introduccin a la programacin en
Java
Volumen I : Introduccin
Empezamos este curso de iniciacin a Java. A continuacin os comentar como se desarrollar el curso y
comenzaremos a instalar todo lo que nos hace falta.
El IDE (Entorno de desarrollo) que vamos a utilizar es NetBeans en su ltima versin, personalmente lo tengo
funcionando bajo Windows 7 Ultimate 64bits, pero es compatible con todos los sistemas operativos Windows, usar
NetBeans en idioma ingls. Podis cambiar el idioma fcilmente siguiendo este manual.
Netbeans tambin existe para GNU/Linux, y es exactamente igual que el Netbeans para Windows, no tendris
ningn problema si usis Linux.
En este mini curso de iniciacin aprenderemos lo bsico de Java (y luego cosas ms avanzadas), pondremos
ejemplos prcticos con capturas de pantalla de la ejecucin y el cdigo utilizado.
A programar se aprende programando, vosotros sois los que tendris que aprender (siguiendo nuestras pautas),
aunque siempre podremos ayudaros por si algo se os atraganta, al final de cada artculo os mandaremos deberes
para que podis practicar (y de paso os ponemos a prueba).
Lo primero que debemos hacer es bajarnos el JDK de Java y el propio NetBeans, aunque seguro que todos lo tenis
instalado sin daros ni cuenta.
Nos vamos a esta web: Descargar JDK y pinchamos sobre el icono de Java que veis en la imagen.

E instalis el JDK (repito que seguramente ya lo tengis instalado).


Ahora nos vamos a la web de Netbeans. Seleccionamos nuestro NetBeans, yo tengo la tope de gama (All), y la
instalamos (omito la instalacin porque es como cualquier programa).

Luego nos bajamos la documentacin desde la misma web de antes donde pone: Java SE 6 Documentation
(Download .ZIP) y descomprims este fichero en la ruta del JDK: C:Archivos de programaJavajdk1.6.0_24
Abrimos Netbeans y deberamos ver esto:

Ahora os voy a ensear el JavaDOC que nos hemos bajado (y que debera aparecer en NetBeans) que nos ser muy
til para saber como declarar las variables o como usar los distintos mtodos.
Nos vamos a TOOLS/Java Platforms

Y luego a JAVADOC y tendris que ver algo as:

El Javadoc sirve para ver la sintaxis de los distintos mtodos a usar, es una ayuda extra cuando no sabemos cmo
utilizar un parseInt (por ejemplo).
Hasta aqu hemos llegado con la introduccin.
Deberes: Intentad crear un programa que muestre por pantalla Hola Mundo.

Volumen II : Nuestro primer programa


En este segundo volumen os voy a ensear como crear vuestro primer programa, un Hola Mundo en Java.
No me voy a entretener en explicar qu es una clase, qu significa un void etc, eso lo dejaremos para el siguiente
artculo que ser todo (o casi todo) de teora, aqu os ensear a crear un proyecto, paquete y la clase main,
explicando su significado.
A continuacin escribiremos por pantalla el famoso Hola Mundo o lo que queramos.
Estis preparados para la segunda clase? All vamos
Abrimos Netbeans y pinchamos arriba a la izquierda donde pone New Project para crear un proyecto nuevo.
Qu es un proyecto?
Es donde van a estar todo el programa, un proyecto se puede dividir en paquetes, y esos paquetes a su vez pueden
estar dividirse en otros paquetes. Dentro de los paquetes tendremos todas las clases .java que vayamos creando,
incluyendo el programa principal (main). Esta forma de organizacin hace que cumplamos las normas bsicas de la
programacin orientada a objetos.

Pinchamos en JAVA/ Java Application y pulsamos NEXT.

Ahora damos un nombre al proyecto.


Se recomienda dar nombres a los proyectos y variables del estilo:
ProgramaRedeszone
Con la primera letra de cada palabra en mayscula para diferenciarlo bien, algo muy importante que debemos saber
de JAVA es que diferencia entre maysculas y minsculas. Deseleccionamos crear el main.java, ya lo crearemos ms
adelante.

Aqu vemos el proyecto vaco, si pulsamos clic derecho New podremos empezar a crear nuevos paquetes o clases.

Creamos un paquete, recomiendo para cada programita que hagamos, ponerlo en un paquete distinto para tenerlo
bien organizado.

Elegimos el nombre del paquete, puede ser de nombre paquete1 por ejemplo.

Una vez en el paquete, pinchamos clic derecho sobre l y creamos un nuevo Java Main, un programa principal
donde tendremos nuestro programa. Al principio no har falta usar clases extra porque los programas que haremos sern

muy sencillos.

Le damos un nombre al nuevo programa:

Y automticamente tendremos lo siguiente (todo te lo escribe automticamente).

Debemos escribir en el Main el famoso System.out.println(Hola Mundo);


Tal y como est en la imagen.

Lo habis escrito ya? Probad a escribir debajo lo siguiente:


sout
Pulsas rpidamente tabulador
Escribes Hola Mundo
NetBeans tiene muchos atajos de teclado, donde podris configurar todo a vuestro gusto, con un simple comando +
tabulador podis poner todas las lneas de cdigo que queris (previamente deberis configurarlo).
Tenis todos los atajos en este PDF: Descargar PDF

Para configurar o cambiar los atajos predefinidos debes irte a: Tools/Options/Editor/ Code Templates
Una vez que hayis guardado los cambios (arriba en el smbolo de los disquetes) o pulsando CTRL+s nos vamos a la
izquierda y click derecho sobre nuestro programa y pulsamos a Run File.

Mirad abajo, ah tenis la salida de nuestro programa.

Esto es lo ms sencillo que podis hacer con Java, el prximo volumen tendremos teora + prctica ya que sin saber
algo de teora no podemos hacer nada.
Habis conseguido hacer esto de forma fcil? Intentad ahora conseguir esta salida:
Lnea nmero 1
Lnea nmero2
Que halla un espacio entre medias, hay dos formas de resolverlo, una elegante y la otra un poco chapuceras.

Ahora intentad tambin en un slo println hacer un retorno de carro (un enter), muy fcil si anteriormente habis
resuelto el problema de una forma elegante. No os preocupis sino os sale, lo importante es intentarlo, en el prximo
artculo dir la solucin.

Volumen III : Clase, objeto y estructura de un programa


En este artculo veremos un poco de teora para afianzar conceptos que habis odo hablar de ellos pero no tenis
muy claro qu son ni para qu sirven.
En el anterior volumen os propusimos unos retos, Lo habis resuelto?
A continuacin tienes la solucin.

Ejercicio1:
System.out.println("Linea nmero 1 n");
System.out.println("Lnea nmero 2");

Ejercicio 2:
System.out.println("Lnea nmero 1"+"nhola");
Tambin podramos haber hecho sin necesidad de concatenar las cadenas (el smbolo + sirve para concatenar cadenas
con variables u otras cadenas).
La barra invertida y la n (n) es un caracter reservado y sirve para hacer una nueva lnea (ya veris que hay varios
ms).
Una vez solucionado y comentado el reto anterior, es hora de ponernos con este artculo, si algo no lo entendis,
buscad informacin para ampliar o contrastar, y si segus sin entenderlo bien, poned un comentario.

Concepto de Clase y Objeto


Los programas en java estn formados por clases. Una clase en java, es una definicin de un modulo de un programa.
A partir de una clase se pueden crear objetos. A cada uno de estos objetos se dice que es una instancia de la clase.

Diferencia entre clase y objeto

Un objeto es un elemento de programa que se caracteriza por:


Atributos: son datos contenidos en el objeto, y que determinan su estado.
Operaciones o mtodos: son acciones con las que podemos solicitar informacin del objeto, o modificarla.
Estn compuestas por secuencias de instrucciones que operan con los atributos.

Estructura de un programa
Un programa java es un conjunto de clases, donde una de ellas es especial en dos aspectos:
Contiene una operacin llamada main.
Habitualmente no se crean objetos de esta clase.
El sistema operativo invoca el mtodo main al ejecutar el programa.

Estructura de una operacin


El caso ms sencillo es el de un programa con una sola clase, que tiene esta estructura:
import clases_importadas;
public class Nombre {
atributos
operaciones
}
Las clases importadas son aquellas pertenecientes a paquetes externos.
Un paquete es una coleccin de clases.

En una clase principal, una de las operaciones se llama main.

Estructura de un mtodo u operacin


Las operaciones o mtodos (como main) tienen la siguiente estructura:
descriptores valor_retornado nombre (argumentos)
{
declaraciones;
instrucciones;
}
En las declaraciones se indican y se hace referencia a datos, clases y objetos que se van a usar en las instrucciones.
Las instrucciones representan clculos que se hacen con esos datos.
Ejemplo de programa (El mismo del primer artculo):
public class Hola
{
/** este es el mtodo principal */
public static void main (String[] args)
{
// No hay declaraciones
System.out.println ("Hola, Que tal estas?");
}
}

public: el mtodo se puede usar desde fuera.


static: el mtodo pertenece a la clase (no a los objetos de la clase).
void: no retorna nada.
String[] args: es el argumento, datos que se pasan a la operacin.
System: es una clase predefinida que representa al computador.
out: es un objeto de la clase System, predefinido: representa la pantalla.
println: mtodo para poner un texto en la pantalla.
Comentarios: De documentacin (/** */), normales, con principio y final (/* */) , normales, hasta fin de
lnea (//).
Uso de ; para finalizar declaraciones e instrucciones.
Uso de {} para definir los contenidos de clases y mtodos.

En la prxima entrega continuaremos con tipos de datos y expresiones simples

Volumen IV : Tipos de datos y expresiones simples


Una vez que habis empezado a familiarizaros un poco con las clases, objetos etc, es hora de mostraros los tipos de
datos y las expresiones simples en Java para posteriormente poder hacer vuestros programas.
Java es muy sensible a las maysculas, como ya habris podido observar, no es lo mismo poner double que Double a

la hora de definir una variable.


Double es un objeto, sin embargo double es un tipo primitivo. Al principio siempre usaremos double para definir las
variables. Muy importante que miris el JavaDOC para este tipo de dudas: JavaDOC sobre Double y double
Empecemos con los tipos de datos.

Tipos de datos primitivos (Predefinidos):


En la siguiente imagen tenis los tipos de datos primitivos principales y su rango de trabajo .

Los datos en Java


Los datos son de un tipo, se almacenan en la memoria del computador y se pueden usar de dos formas:

Poniendo directamente su valor: constantes literales.


Usando un nombre para referirse al dato.

Segn dnde declaremos ese nombre tendremos:

Constantes literales

Atributos
Representan un dato de un tipo determinado, declarado como parte un objeto y alojado en la memoria

Contiene un valor que puede cambiar.


Se representa por un nombre.

Declaracin de atributos, dentro de una clase:


private tipo nombre;
private tipo nombre = valor;
La palabra private es un descriptor opcional:

Indica que el dato slo se puede usar dentro de la clase.


Salvo para clases muy simples, es habitual que los atributos sean privados.

Variables
Representan un dato de un tipo determinado, declarado dentro de un mtodo y alojado en la memoria:

Contiene un valor que puede cambiar


Se representa por un nombre
Se destruye al finalizar el mtodo

Declaracin de variables, dentro de un mtodo:


tipo nombre;
tipo nombre = valor;
//2 variab. del mismo tipo
tipo nombre1, nombre2;

Ejemplos de declaracin de atributos y variables


Atributos
private int lo = 1;

private int hi = 2;
private double x;

Variables
int x1,x2;
double y=1.0e6;
Si no se pone valor inicial, el valor es indefinido, y Java te avisar de que puede que la variable no est inicializada,
un String se inicializa a (cadena vaca).

Nombres o identificadores
Deben seguir estas reglas

Deben comenzar por una letra, y luego letras, dgitos, y _.


Influyen maysculas y minsculas.
Estilo:
1. clases empiezan con maysculas.
2. objetos, mtodos y datos con minsculas.
3. las palabras se separan con maysculas.

Ejemplo: NombreVariableParaUsar

Constantes
Los atributos y variables se pueden definir como constantes: su valor no se puede cambiar

Declaracin: atributo o variable con descriptor final.


Final indica que el dato ya no se puede cambiar de valor.
Constantes con valor en blanco: se les puede asignar el valor una vez.
No es necesario definirlas como private, ya que nadie puede estropearlas.

Ejemplos de declaracin de constantes.


final double pi = 3.1416;
final int maxNum = 50;
final double factorEscala;
Todo esto es muy terico, pero es necesario saberlo para poder continuar, en el prximo habr ejemplos funcionales.
Hasta aqu hemos llegado, en el prximo volumen seguiremos hablando sobre los tipos de datos, argumentos,
constructores etc.

Volumen V : Argumentos, constructores y operadores


En este volumen os voy a explicar qu son los argumentos en Java y cmo se usan, tambin hablaremos de los
constructores y de los principales operadores que nos podemos encontrar en Java.
Este artculo ser ms prctico que los anteriores que tena slo teora, debemos ir poco a poco ya que sino

programaremos sin saber qu es cada cosa, y al principio podremos sobrevivir pero cuando luego las cosas no
salenah est el problema.
Este va a ser de los ltimos artculos de teora pura y dura (necesitaremos uno ms para hablar de los bucles) y a
partir de aqu estaremos con ejemplos y con ejercicios diversos usando todo lo que hemos aprendido.

Argumentos
Representan un dato de un tipo determinado, declarado dentro de los parntesis en el encabezamiento de un mtodo,
y alojado en la memoria.

Contiene un valor.
Se representa por un nombre.

Ejemplo de declaracin de argumentos


public tipo_retornado nombreDelMetodo1 (tipo1 nombre1,
tipo2 nombre2)
{

Ejemplo de programa con datos


Clculo de la media de tres notas.
La clase tendr:

Tres atributos enteros (las tres notas)


Mtodo para cambiar las notas: Tres parmetros enteros (nuevos valores de las notas). No retorna nada

Mtodo para hallar la media entera: retorna la media


Mtodo para hallar la media real: retorna la media

Este es el diagrama de clases que podra estar asociado a los requerimientos de el problema que se plantea:

Implementacin
public class Notas
{
//Atributos de la clase
private int nota1, nota2, nota3;
/** Pone los valores de las tres notas */
public void ponNotas (int n1, int n2, int n3)

{
nota1=n1;
nota2=n2;
nota3=n3;
}
/** Calcula la media real */
public double media()
{
return (nota1+nota2+nota3)/3.0;
}
/** Calcula la media entera */
public int mediaEntera()
{
return (nota1+nota2+nota3)/3;
}
}

Comentarios sobre el ejemplo:

Argumentos de un mtodo: datos que el mtodo necesita.


Valor de retorno de un mtodo: respuesta.
Operador de asignacin : =.
Operador de suma: +.
Uso de parntesis.
Expresiones reales y enteras: conversiones automticas.

Probad el clculo como (nota1+nota2+nota3)*(1/3)!

Uso de un constructor
El ejemplo pone de manifiesto la necesidad de dar valor a los atributos

Hemos creado ponNotas para ello


Es una necesidad frecuente

El constructor:

Es un mtodo especial, usado al crear el objeto (con new) para dar valor a los atributos
Sintaxis: mtodo de nombre igual a la clase y en el que no se pone lo que retorna:
Ventaja: al crear el objeto, el constructor nos obliga a poner las notas.

Operadores y expresiones
Las expresiones permiten transformar datos para obtener un resultado. Se construyen con operadores y operandos.
Operandos:

Constantes literales.
Datos simples (atributos, variables, o argumentos de tipos simples).
Funciones (mtodos que retornan un valor de un tipo simple).

Operadores ms usuales:
Indican la operacin a realizar en una expresin

Dependen del tipo de dato


Tienen unas reglas de precedencia
El parntesis altera la precedencia

Operadores aritmticos: operan con nmeros, y dan como resultado nmeros del mismo tipo.

Operadores relacionales: comparan dos nmeros o caracteres y dan un resultado lgico.

Operadores lgicos: operan con valores lgicos y dan otro valor lgico.

Operador de asignacin simple: copia un valor en una variable (=)


Otros operadores de asignacin: opera con los operandos izquierdo y derecho y copia el resultado en el izquierdo.

Operador de concatenacin: retorna la concatenacin del operando izquierdo (String) con la conversin a String del
operando derecho (+).

Ejemplo de uso de Operadores


Clculo de valores resistivos en paralelo.

Diseo de la clase:

Atributos: las resistencias


Constructor que les da valor inicial
Un mtodo que devuelve la resistencia equivalente

public class Resistencias


{
private double r1, r2, r3; //Kohms
/** Constructor*/
public Resistencias(double res1, double res2, double res3)
{
r1=res1;
r2=res2;

r3=res3;
}
/** Calcula la resistencia equivalente a 3 resistencias en paralelo */
public double calculaResEquiv()
{ // Kohms
return 1/((1/r1)+(1/r2)+(1/r3));
}
}

Ejemplo: uso desde un programa principal (main).


Ahora podemos hacer una clase que usa un objeto de la clase anterior, para poder usar su operacin:
public class ResistenciasEnParalelo
{
public static void main(String[] args)
{
double r1=3.5; // Kohms
double r2=5.6; // Kohms
double r3=8.3; // Kohms
double reff; // Kohms
Resistencias res=new Resistencias(r1,r2,r3);
// alternativamente se podra hacer
// Resistencias res= new Resistencias(3.5,5.6,8.3);
reff=res.calculaResEquiv();
System.out.println("Resist. en paralelo: "+r1+","+r2+","+r3);
System.out.println("Resistencia efectiva = "+reff);
}
}

Observaciones del ejemplo

Creacin de un objeto de la clase Resistencias: declaracin+new.


Creacin de variables locales.
Diferencias entre crear una variable y un objeto.
Uso de un mtodo.
Concatenacin.

Conversin de tipos
Compatibilidad de tipos: Java es un lenguaje con tipificacin estricta..

Los nmeros son compatibles hacia arriba (promocin automtica de tipos): es decir, el tipo destino tiene
mayor cabida que el origen
No son compatibles cosas de distinta naturaleza (p.e., nmeros con char o boolean)
Tambin hay conversin automtica al almacenar un literal en un byte o short (pero no en expresiones no
literales).

Conversiones explicitas de tipos (cast)


Sintaxis
(tipo) exp
Hay que usarlas con precaucin, porque hay truncamiento de la parte fraccionaria, y/o operacin mdulo. Por

Ejemplo:
int i;
double d=3.4;
i= (int) d; // valor=3
byte b;
int j=1000;
b=(byte) j; // valor=-24
Hasta aqu finalizamos por hoy, el prximo artculo tratar sobre los distintos tipos de bucles en Java y luego nos
pondremos a hacer ejercicios que es donde ms se aprende.

Volumen VI: Instrucciones de control I


En esta entrega vamos a hablar de las instrucciones de control que posee Java, es decir, las diferentes formas en las
que podemos emplear las instrucciones if y switch.
En los artculos anteriores, seguro que muchos de vosotros echasteis en falta programar.
A partir de ahora, vamos a tener mucho cdigo en los ejemplos y vamos a tener que programar.

Instrucciones de control.
Las instrucciones de un programa pueden ser:
Simples:
1. Expresiones: de asignacin, incremento o decremento
2. Llamadas a mtodos
3. Creacin de objetos

4. instrucciones de control: if, switch, while, do-while, for


Compuestas:
1. Se encierran entre llaves {}, y tambin se llaman bloques
2. Pueden contener muchas instrucciones y declaraciones;
3. Las declaraciones del bloque slo son visibles en l, y en los bloques contenidos en l

Instruccin condicional simple


La instruccin condicional simple permite tomar decisiones empleando una variable booleana:

Ejemplo: poner un texto aprobado o suspenso segn la nota

Instruccin condicionales anidadas.


Las instrucciones if tambin se pueden anidar:
El else se asocia al if anterior ms prximo que no tenga else, siempre que est en el mismo bloque que el else.

Ejemplo: poner cum laude en el ejemplo anterior si nota>=9

Instruccin condicional mltiple (switch).


Permite tomar una decisin de mltiples posibilidades, en funcin de un valor no booleano
Si este valor es discreto (byte, short, int, long, char, o enumerado), podemos utilizar una instruccin switch

El funcionamiento es el siguiente:

Se compara la expresin con el primer valor.

Si coincide, se ejecutan las instrucciones puestas bajo ese valor, y todas las siguientes que se encuentren,
hasta encontrar un break.
Si no coincide, se compara con el segundo valor, y as sucesivamente.
Si no coincide con ningn valor, se ejecutan las instrucciones que haya en la parte default, si existe.
Despus de un break, la instruccin switch termina y seguimos por la siguiente instruccin.
Los valores deben ser constantes, no variables.
No puede haber ninguno coincidente.

Ejemplo: poner nota media entera con letra

-Instruccin condicional mltiple no discreta(else if).


Cuando la decisin no es discreta, usamos una escalera de instrucciones if:

Las condiciones se examinan empezando por la de arriba.


Tan pronto como una se cumple, sus instrucciones se ejecutan y la instruccin se abandona.
Si ninguna de las condiciones es cierta se ejecuta la ltima parte else.
La instruccin switch es mucho ms eficiente que la instruccin condicional mltiple
En switch slo se toma una decisin
En el if mltiple se evalan muchas condiciones.

Ejemplo: Poner nota media entera con letra

Hasta aqu el sexto volumen del curso de Java.


No olvidis que si tenis cualquier duda sobre lo que estamos explicando, nos lo preguntis.
Como podis ver poco a poco hay ms cosas que programar, y menos teora, a partir de ahora ser la dinmica. Poca
teora y bastante ms cdigo.
En el prximo volumen, trataremos el tema de los bucles.

Volumen VII: Instrucciones de control II


Otro Lunes ms, venimos con otra entrega del curso de Java.
En esta entrega vamos a hablar de los bucles que nos servirn de gran ayuda para automatizar diferentes rutinas que
debamos hacer.
En el artculo anterior aprendimos como se deban utilizar de las instrucciones if, else if y switch.
Los bucles que veremos sern el for, el while y el do-while, explicaremos cuantas veces se ejecuta uno u otro y
cmo funcionan.

-Instrucciones bucle o de lazo.


Permiten ejecutar mltiples veces unas instrucciones
Se corresponden a la composicin iterativa de teora.
La cantidad de veces se puede establecer mediante:
Una condicin:
1. Se comprueba al principio: las instrucciones del bucle se hacen cero o ms veces
2. Se comprueba al final: las instrucciones del bucle se hacen una o ms veces.
Un nmero fijo de veces: se usa una variable de control
Bucle con condicin de permanencia al principio, este bucle se ejecuta 0 o N veces.

Ejemplo: Calcular el primer entero positivo tal que la suma de l y los anteriores sea mayor
que 100.

Bucle con condicin de permanencia al final, como mnimo se ejecuta 1 vez, y como mximo N veces.

Bucle con variable de control. Se puede ejecutar 0 o N veces (normalmente este bucle no se usa para
ejecutar 0 veces).

Es equivalente a:

Ejemplo: Sumar los 100 primeros nmeros enteros positivos

Ejemplo: Sumar los 51 primeros nmeros pares.

Recomendaciones sobre el bucle for(experiencia propia).

Debe usarse para lazos con variable de control y de una manera uniforme.
Es conveniente declarar la variable de control en el lazo (no usar variables globales).
Es conveniente que la expresin de incremento sea la propia variable de control.
Es conveniente que la expresin de permanencia sea simple.
Nunca cambiar el valor de la variable de control en las instrucciones (utilizarla como operando).

Instrucciones de salto en bucle.


Hay tres instrucciones que permiten saltarse las instrucciones
Restantes del bucle:

break:

1. Termina el bucle

continue:

1. Termina las instrucciones del bucle, pero sigue en l

return:

1. Termina un mtodo, pero si estamos en un bucle, lgicamente tambin lo termina.


Hasta aqu hemos llegado con los bucles. En el prximo nmero empezaremos a hacer ejercicios para practicar todo
lo que hemos aprendido.

Volumen VIII: Ejercicios prcticos


En la entrega anterior se explicaron los bucles en Java.
Esta entrega ser un poco diferente, ya que esta formada por una serie de ejercicios de repaso, con los cuales podris
practicar todo lo que hemos dado en el curso hasta el momento. Los ejercicios estn formados por: Ejercicio de un
bucle, ejercicio de instrucciones if, ejercicio de instrucciones elseif, ejercicio de la instruccin switch.
Por lo que en principio, son 4 ejercicios.
Para el que quiera aprender ms, el problema del bucle, el que lo haga con for, puede probar opcionalmente a
implementarlo con while y viceversa. Tambin de manera opcional, el quiera, puede intentar hacer el problema del
switch con elseif.
A continuacin, los ejercicios que os vamos a proponer.

Bucle

Crear un programa principal que sea capaz de imprimir por pantalla los nmeros del 0 al 10 (bucles).

If
Crear una clase que se llame ExamenConducirTeorico, con un unico atributo que se llame numFallos.

Poseer un constructor al que se le pase como parametro el numero de fallos .


Mtodo que se llamara esApto, no se le pasa ningun parmetro. Si numFallos es menos o igual que 3,
mostrara un mensaje por pantalla (por ejemplo: aprobado). Sino mostrara otro mensaje ( por ejemplo:
suspenso).
Para probar la clase, en un programa principal, crearemos un objeto de la clase (asignndole el nmero de
fallos que queramos) y haciendo una llamada a la funcin esApto.

Recordatorio: Para crear un objeto de prueba de una clase recordar que se debe utilizar el constructor, por lo tanto:
ExamenConducirTeorico obj= new ExamenConducirTeorico(parmetros del constructor);
y una vez creado el objeto para probar el mtodo:
obj.nombre del mtodo;

Else if
Crear un programa principal con dos atributos enteros, que sern dos edad de dos personas, se les asignara un valor
que vosotros escogeris.

Si las dos son mayores de 18, se mostrar por pantalla Pueden votar los dos.

En el caso de que solo uno tenga mayora de edad, se mostrara por pantalla un mensaje indicando quien
puede votar y quien no.

En caso de que los dos sean menor de edad mostraremos Ninguno de los dos puede votar.
Recordatorio: en las instrucciones condicionales (if), pueden evaluarse dos condiciones o ms en un mismo if, por
ejemplo:

if (condicion1 || condicion2)</em>
<em>{</em>
<em> hacer1</em>
<em>}else{</em>
<em>hacer2</em>
<em>}
|| es un o, es decir que, si se cumple la condicion1 o si se cumple la condicion2, hacemos el hacer1, si no
hacemos el hacer2:
if (condicion1 && condicion2)</em>
<em>{</em>

<em>hacer1</em>
<em>}else{</em>
<em>hacer2</em>
<em>}
&& es un y. Por lo tanto, si se cumple la condicion1 y se cumple tambin la condicin2, hacemos el hacer1, si
alguna de las dos no se cumple, haremos el hacer2

Switch
Crear un programa principal en el cual trataremos de identificar que operador aritmtico es. El programa tendr un
nico atributo que sera un carcter, al cual le asignaris vosotros el valor que queris (*, +, . /) o bien uno distinto
de los signos aritmticos (a, x, $, ).
Si es el *, deber mostrar por pantalla El operador es el *.
Si es el +, deber mostrar El operador es el +.
Si es el -, deber mostrar El operador es el .
Si es el /, deber mostrar El operador es el /.
Si no es ninguno de los anteriores, mostrar Carcter desconocido.
Estos son los ejercicios que os proponemos para que practiquis. Ya sabis que si tenis alguna duda,
la podis exponer y os la resolveremos.

Volumen IX: Solucin de los dos primeros ejercicios


Debido a que esta semana hemos estado trabajando con ejercicios, hemos adelantado la siguiente entrega para que
podis ir comprobando qu tal vais con los ejercicios, y si tenis alguna duda, nos la preguntis.
En esta entrega vamos a poner la solucin de los dos primeros problemas propuestos.

Bucle
-Crear un programa principal que sea capaz de imprimir por pantalla los nmeros del 0 al 10 (bucles).
Solucin:

Alternativa:

Podis ver que de un while a un for cambia un poco la estructura, sobre todo porque la variable de control debes
inicializarla fuera de la estructura del bucle.
Vamos con el segundo problema.

IF
Crear una clase que se llame ExamenConducirTeorico, con un unico atributo que se llame numFallos.
1. Poseer un constructor al que se le pase como parametro el numero de fallos .
2. Mtodo que se llamara esApto, no se le pasa ningun parmetro. Si numFallos es menos o igual que 3, mostrara
3.

un mensaje por pantalla (por ejemplo: aprobado). Sino mostrara otro mensaje ( por ejemplo: suspenso).
Para probar la clase, en un programa principal, crearemos un objeto de la clase (asignndole el nmero de
fallos que queramos) y haciendo una llamada a la funcin esApto.

Vamos con la implementacin de la clase que otorga la calificacin

A continuacin, una vez tenemos la clase, vamos a hacer un pequeo MAIN para probarla

Como podis ver, el funcionamiento de un main creando objetos es sencillo, puedes acceder a los atributos y mtodo
de la clase del objeto (siempre que no sean privados) poniendo:
objCreado.metodo(atributos);
objCreado.atributosDeLaClase;
Hasta aqu ha llegado la solucin de los dos primeros ejercicios. Al principio lo podis ver un tanto complicado, pero

todo es cuestin de prctica. Hay que ir rodando poco a poco. Si tenis alguna duda sobre la implementacin o la
solucin, nos lo pods comentar
En la siguiente entrega, veremos la solucin de los dos siguientes problemas, la del problema del elseif y la del
switch.

Volumen X : Solucin a los dos ejercicios restantes


En esta nueva entrega del curso de java, vamos a tratar las soluciones relacionadas a los dos ltimos problema.
En el volumen VIII, se propusieron 4 problemas cortos, para coger soltura con el lenguaje, en el volumen anterior,
dimos la solucin a los dos primeros.
Ahora vamos a facilitaros una posible solucin a los dos siguientes. El primero de ellos trataba sobre la utilizacin de
if anidados ( los conocidos elseif), mientras que el segundo trataba sobre la implementacin de un programa
sencillo mediante un switch. Como parte opcional a este ltimo, se propuso que tambin se poda implementar con
elseif.
Sin tardar mas vamos meternos en las soluciones de los problemas.

ElseIf
Crear un programa principal con dos atributos enteros, que sern dos edades de dos personas, se les asignar un valor
que vosotros escogeris.

Si las dos son mayores de 18, se mostrar por pantalla Pueden votar los dos.
En el caso de que solo uno tenga mayora de edad, se mostrara por pantalla un mensaje indicando quin puede

votar y quin no.


En caso de que los dos sean menor de edad mostraremos Ninguno de los dos puede votar.

Solucin:

Comentar que losmas complicado tal vez sea el uso del operador &&. Resulta de bastante utilidad ya que de no
haberle utilizado, el numero de if habra aumentado hasta el doble, ya que es una comparacin. Este operador junto
con ||, nos van a servir de mucho en un futuro prximo.
&& significa un AND (i lgico), ambas cosas deben cumplirse.
|| significa un OR (o lgico), se cumple una cosa u otra.
Vamos con la solucin del segundo problema.

Switch
Crear un programa principal en el cual trataremos de identificar que operador aritmtico es. El programa tendr un
nico atributo que sera un carcter, al cual le asignaris vosotros el valor que queris (*, +, . /) o bien uno distinto
de los signos aritmticos (a, x, $, ).

Si es el *, deber mostrar por pantalla El operador es el *.


Si es el +, deber mostrar El operador es el +.
Si es el -, deber mostrar El operador es el .
Si es el /, deber mostrar El operador es el /.
Si no es ninguno de los anteriores, mostrar Carcter desconocido.

Solucin:

Solucin alternativa:

Como podis ver, la solucin alternativa resulta algo mas pesada a la vista, ya que tienes que hacer comparaciones
que con el switch, puedes suprimir, ya que el propio switch, internamente se encarga de hacerlo.

Hasta aqu, la resolucin de los ejercicios. Cualquier duda o comentario sobre la resolucin, as como posibles
soluciones alternativas que queris compartir, no las podis exponer.
En el siguiente volumen, os propondremos la primera parte de un ejercicio, se tratara de la implementacin de una
clase con funcionalidades, pero bueno, no quiero desvelar ms, el lunes lo veris.

S-ar putea să vă placă și