curso java online.odt

Download Curso Java OnLine.odt

If you can't read please download the document

Upload: jose-manuel-rivera-claure

Post on 04-Dec-2015

233 views

Category:

Documents


0 download

TRANSCRIPT

Curso Java OnlineJava 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 JavaIntroduccin

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 datosIntroduccin 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 polimorfismoHerencia

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 distribucinIntroduccin 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 eventosGestin 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 ficherosIntroduccin

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

ProgramasJuego Conecta4 implementado en Java

Generador de claves WPA y WPA2 en Java

Introduccin a la programacin en JavaVolumen I : IntroduccinEmpezamos 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_24Abrimos 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 programaEn 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 vamosAbrimos 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.Curso Java Volumen 2 NetbeansPinchamos en JAVA/ Java Application y pulsamos NEXT.Curso Java Volumen 2 NetbeansAhora damos un nombre al proyecto.Se recomienda dar nombres a los proyectos y variables del estilo:ProgramaRedeszoneCon 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.Curso Java Volumen 2 NetbeansAqu vemos el proyecto vaco, si pulsamos clic derecho New podremos empezar a crear nuevos paquetes o clases.Curso Java Volumen 2 NetbeansCreamos un paquete, recomiendo para cada programita que hagamos, ponerlo en un paquete distinto para tenerlo bien organizado.Curso Java Volumen 2 NetbeansElegimos el nombre del paquete, puede ser de nombre paquete1 por ejemplo.Curso Java Volumen 2 NetbeansUna 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.Curso Java Volumen 2 NetbeansLe damos un nombre al nuevo programa:Curso Java Volumen 2 NetbeansY automticamente tendremos lo siguiente (todo te lo escribe automticamente).Curso Java Volumen 2 NetbeansDebemos escribir en el Main el famoso System.out.println(Hola Mundo);Tal y como est en la imagen.Curso Java Volumen 2 NetbeansLo habis escrito ya? Probad a escribir debajo lo siguiente:soutPulsas rpidamente tabuladorEscribes Hola MundoNetBeans 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 PDFPara configurar o cambiar los atajos predefinidos debes irte a: Tools/Options/Editor/ Code TemplatesUna 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.Curso Java Volumen 2 NetbeansMirad abajo, ah tenis la salida de nuestro programa.Curso Java Volumen 2 NetbeansEsto 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 nmero2Que 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 ObjetoLos 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 programaUn 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 operacinEl caso ms sencillo es el de un programa con una sola clase, que tiene esta estructura:import clases_importadas;public class Nombre {atributosoperaciones}

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 operacinLas 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 declaracionesSystem.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 doubleEmpecemos 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 JavaLos 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

AtributosRepresentan un dato de un tipo determinado, declarado como parte un objeto y alojado en la memoriaContiene 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.

VariablesRepresentan 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 variablesAtributosprivate int lo = 1;private int hi = 2;private double x;

Variablesint 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 identificadoresDeben seguir estas reglasDeben comenzar por una letra, y luego letras, dgitos, y _.

Influyen maysculas y minsculas.

Estilo:

clases empiezan con maysculas.

objetos, mtodos y datos con minsculas.

las palabras se separan con maysculas.

Ejemplo: NombreVariableParaUsarConstantesLos atributos y variables se pueden definir como constantes: su valor no se puede cambiarDeclaracin: 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 operadoresEn 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.ArgumentosRepresentan 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 argumentospublic tipo_retornado nombreDelMetodo1 (tipo1 nombre1,
tipo2 nombre2)
{

}Ejemplo de programa con datosClculo 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:

Implementacinpublic class Notas{//Atributos de la claseprivate 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 constructorEl ejemplo pone de manifiesto la necesidad de dar valor a los atributosHemos 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 expresionesLas 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 expresinDependen 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 OperadoresClculo 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(){ // Kohmsreturn 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; // Kohmsdouble r2=5.6; // Kohmsdouble r3=8.3; // Kohmsdouble reff; // KohmsResistencias 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 ejemploCreacin 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 tiposCompatibilidad 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) expHay 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=3byte 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 IEn 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 vosotrosechasteisen 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:Expresiones: de asignacin, incremento o decremento

Llamadas a mtodos

Creacin de objetos

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

Compuestas:Se encierran entre llaves {}, y tambin se llaman bloques

Pueden contener muchas instrucciones y declaraciones;

Las declaraciones del bloque slo son visibles en l, y en losbloques contenidos en l

Instruccin condicional simpleLa 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:Se comprueba al principio: las instrucciones del bucle se hacen cero o ms veces

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 instruccionesRestantes del bucle:break:

Termina el bucle

continue:

Termina las instrucciones del bucle, pero sigue en l

return:

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 instruccioneselseif, ejercicio de la instruccinswitch.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 elmtodo:obj.nombre delmtodo;Else if

Crear un programa principal con dos atributos enteros, queserndos 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)

{

hacer1

}else{

hacer2

}

|| es un o, es decir que, si se cumple lacondicion1o si se cumple la condicion2, hacemos el hacer1, si no hacemos el hacer2:if (condicion1 && condicion2)

{

hacer1

}else{

hacer2

}

&& 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 hacer2Switch

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 quequeris(*, +, . /) o bien uno distinto de los signosaritmticos(a, x, $, ).Si es el *,debermostrar por pantalla El operador es el *.
Si es el +,debermostrar El operador es el +.
Si es el -,debermostrar El operador es el .
Si es el /,debermostrar El operador es el /.
Si no es ninguno de losanteriores, mostrar Carcterdesconocido.Estos son los ejercicios que os proponemos para quepractiquis. Yasabisque sitenisalguna duda, lapodisexponer 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.IFCrear 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.

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 comentarEn 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 restantesEn 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.ElseIfCrear un programa principal con dos atributos enteros, queserndos 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.SwitchCrear 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 quequeris(*, +, ./) o bien uno distinto de los signosaritmticos(a,x,$, ).Si es el *,debermostrar por pantalla El operador es el *.

Si es el +,debermostrar El operador es el +.

Si es el -,debermostrar El operador es el .

Si es el /,debermostrar El operador es el /.

Si no es ninguno de losanteriores, mostrar Carcterdesconocido.

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.