Estructuras Control Java Por Gio

Embed Size (px)

Citation preview

  • Estructuras de control Java

  • Fundamentos del LenguajeVariables.

    Operadores.

    Expresiones.

    Instrucciones.

    Bloques.

  • VariablesEl nombre de variable debe ser un identificador vlido, -- un nmero ilimitado de caracteres Unicode que comienza con una letra.El tipo de variable determina que valores puede contener y que operaciones se pueden realizar en ella.Para dar a una variable un nombre y un tipo, se escribe una declaracin de variable, la cual aparecera como:

    Ejs: int x; // Entero de 32 bitsshort y; // Entero corto de 16 bits

  • Tipos de DatosEn el lenguaje de programacin Java, existen dos categoras de datos:

    Primitivos Referenciales

    Una variable de tipo primitivo contiene un valor simple del tamao y formato apropiado para su tipo: un nmero, un carcter, o un valor booleano (condicional verdadero falso), etc

  • Tipo de Datos primitivo La siguiente tabla lista, por palabras reservadas, todos los tipos de datos primitivos soportados por Java, sus tamaos y formatos, y una breve descripcin de cada uno:

    Palabra Reservada en JAVADescripcinTamaobyteEntero c/longitud byte8-bitshortEntero corto16-bitintInteger32-bitlongEntero largo64-bitfloatPunto flotante simple p.32-bitdoublePunto flotante doble p.64-bitcharUn carcter simple16-bitbooleanUn carcter booleanotrue o false

  • Ejemplos primitivosEjemplo21: Calcular cuanto recorre la velocidad de la luz en 1000 das.Ejemplo22: Calcular el rea de un circulo.//Ejemplo de uso de char class Ejemplo23 { public static void main(String args[]) { char ch1, ch2; ch1 = 88; // codigo de x ch2 = 'Y'; System.out.print("ch1 y ch2: "); System.out.println(ch1 + " " + ch2); } }

  • Cont. De ejemplos//Ejemplo de conversion(cast) class Ejemplo24 { public static void main(String args[]) { byte b; int i = 257; double d = 323.142; System.out.println("\nConversion de int a byte."); b = (byte) i; System.out.println("i y b " + i + " " + b); System.out.println("\nConversion de double a int."); i = (int) d; System.out.println("d y i " + d + " " + i); System.out.println("\nConversion de double to byte."); b = (byte) d; System.out.println("d y b " + d + " " + b); } }

  • Ejemplo promocion//Ejemplo de promocion de valores de diferentes tipos class Ejemplo25 { public static void main(String args[]) { byte b = 42; char c = 'a'; short s = 1024; int i = 50000; float f = 5.67f; double d =0.1234; double resultado = (f * b) + (i / c) - (d * s); System.out.println((f * b) + " + " + (i / c) + " - " + (d * s)); System.out.println("resultado = " + resultado); } }

  • Tipo de datos ReferenciaUna referencia es denominada apuntador direccin de memoria en otros lenguajes.

    Java no soporta el uso explicito de apuntadores como otros lenguajes. Se emplea el nombre de variable en su lugar.

  • Tipo de datos Referencia (2)Public class MiFecha{ int dia; int mes; int ao; // Podemos usar MiFecha como sigue: public static void main(String[] args) { MiFecha hoy = new MiFecha(); hoy.dia=21; hoy.mes=8; hoy.ao=2008; System.out.println("la fecha es :" +hoy.dia+"/"+hoy.mes+"/"+hoy.ao); } } La variable hoy es una referencia a un objeto de MiFecha.

  • Constantes (final)Se puede declarar una variable en cualquier mbito para que sea final.El valor de una variable final no puede cambiar despus de que ha sido inicializada. Tales variables son similares a las constantes en otros lenguajes.Para declarar una variable final, emplee la palabra reservada final antes del tipo:Ej.

    final int aFinalVar = 0;

    En el caso del ejemplo, se ha declarado e inicializado la variable en un solo paso. Se puede hacer en dos pasos si se prefiere. Hecho esto, si se intenta asignar posteriormente un valor a sta variable, producira un error de compilacin.

  • OperadoresUn operador realiza una funcin en uno, dos o tres operandos. Un operador que requiere un operando es denominado operador unario.

    Ej. ++ es un operador unitario que incrementa en uno el valor de su operando.

    Un operador que requiere dos operandos es un operador binario.Ej. = es un operador binario. Se usa para asignacin de valores a variables.

    Un operador que requiere tres operadores se denomina ternario. Existe un operador ternario ?: que es una abreviacin de la instruccin if-else.

    Existen tambin tres modalidades de notacin: prefija, postfija e infija.

  • Operadores AritmticosJava soporta varios operadores aritmticos para todos los nmeros enteros y de punto flotante: + (suma), - (resta), * (multiplicacin), / (divisin) y % mdulo.

    OperadorUso Descripcin+op1 + op2Suma op1 y op2-op1 - op2Resta op2 de op1*op1 * op2Multiplica op1 por op2/op1 / op2Divide op1 entre op2%op1 % op2Calcula el remanente.

  • Operadores Aritmticos 2Los operadores abreviados de incremento/decremento son sumarizados en la siguiente tabla:

    OperadorUsoDescripcin++op++Incrementa op en 1. Asigna primero, incrementa despus.++++opIncrementa op en 1. Incrementa primero, asigna despus.--op--Decrementa op en 1. Asigna primero, decrementa despus.----opDecrementa op en 1. Decrementa primero, asigna despus.

  • Operadores RelacionalesUn operador relacional compara dos valores y determina la relacin entre ellos. Por ejemplo, != retorna verdadero si los dos operandos son diferentes. A continuacin una tabla de operadores:

    Ej.

    Operador Uso Retorna verdadero> op1 > op2 op1 es mayor que op2>= op1 >= op2 op1 es mayor que o igual que op2< op1 < op2 op1 es menor que op2

  • Operadores CondicionalesLos operadores relacionales frecuentemente son empleados con operadores condicionales para construir ms complejas expresiones de toma de decisiones.

    Java soporta seis operadores condicionales cinco binarios y uno unario - como aparece en la siguiente tabla:

    Operador Uso Retorna verdadero si&& op1 && op2 op1 y op2 son ambos verdad. (shortcircuit) | | op1 | | op2 o op1 o op2 es verdad. (shortcircuit)! !op op es falso. & op1 & op2 op1 y op2 son ambos verdad. (non-shortcircuit) | op1 | op2 o op1 o op2 es verdad. (non-shortcircuit) ^ op1 ^ op2 si op1 y op2 son diferentes esto es si uno u otro de los operandos es verdad, pero no los dos.

  • Operadores de CambioUn operador de cambio realiza transformaciones de manipulaciones de bits en datos cambiando los bits de su primer operando a la izquierda la derecha. La tabla a continuacin resume los operadores de cambio disponibles en Java.

    OperadorUso Operacin>> op1 >> op2 Cambia bits de op1 a la derecha basado en op2> op1 >>> op2 Cambia bits de op1 a la derecha basado en op2 (unsigned)

  • Operadores BitwiseLa siguiente tabla muestra los cuatro operadores que el lenguaje Java provee para realizar lgicas a nivel de bit en sus operandos:

    Operador Uso Operacin & op1 & op2 Bitwise and | op1 | op2 Bitwise or ^ op1 ^ op2 Bitwise xor ~ ~op2 Bitwise complement

  • Operadores de AsignacinLa siguiente lista la asignacin abreviada y sus equivalentes sin abreviar:

    Operador Uso Equivalente a+= op1 += op2 op1 = op1 + op2-= op1 -= op2 op1 = op1 op2*= op1 *= op2 op1 = op1 * op2/= op1 /= op2 op1 = op1 / op2%= op1 %= op2 op1 = op1 % op2 &= op1 &= op2 op1 = op1 & op2| = op1 | = op2 op1 = op1 | op2^= op1 ^= op2 op1 = op1 ^ op2> op2>>>= op1 >>>= op2 op1 = op1 >>> op2

  • Otros OperadoresLa siguiente tabla lista los otros operadores que el lenguaje Java soporta:

    Operador Descripcin ?: Abreviacin if - else[ ] Empleado para declarar arreglos y accesar elementos.. Usado para formar nombres cualificados( parametros ) Delimita una lista de parmetros separados por coma ( tipo ) Convierte un valor al tipo especificado new Crea un nuevo objeto un nuevo arreglo instanceof Determina si su primer operando es una instancia del segundo operando. (descendencia directa o no).

  • ExpresionesVariables y operadores, los cuales aparecen en las secciones previas, son bloques bsicos que conforman los programas. Se pueden combinar literales, variables, y operadores para formar expresiones segmentos de cdigo que realizan clculos y retornan valores. Por definicin, una expresin es una serie de variables, operadores y llamadas a mtodos (construidas de acuerdo a la sintaxis del lenguaje) que resultan en un valor simple.

  • Instrucciones (Sentencias)Instrucciones son claramente equivalentes a las sentencias en los lenguajes naturales. Una instruccin forma una completa unidad de ejecucin. Los siguientes tipos de expresiones pueden ser convertidas en instrucciones finalizando la expresin con un punto y coma, ( ; ). Expresiones de asignacin. Cualquier uso de ++ --. llamadas a mtodos. Expresiones de creacin de objetos.

    Hay tres tipos de expresiones: instruccin de expresin, instruccin de declaracin e instruccin de control de flujo.

  • Instrucciones de Control de FlujoSe pueden emplear instrucciones de flujo para condicionalmente ejecutar instrucciones, para repetidamente ejecutar bloques de instrucciones y para de otro modo cambiar el flujo secuencial de control.

    Hay cuatro tipos de instrucciones de control de flujo que son: bucles, de decisin, manejo de excepciones y ramificaciones (branching).

  • While y Do-WhileSe debe usar una instruccin while para continuamente ejecutar un bloque de instrucciones mientras una condicin permanezca verdadera. La sintaxis general de while es:

    while (expression) { statement }

    Primero, la instruccin while evala la expresin, la cual debe retornar un valor booleano. Si la expresin retorna verdadero, entonces la instruccin while ejecuta las instrucciones dentro del bloque asociado. El proceso se mantiene ininterrumpido hasta que la expresin retorne falso.

  • Do - WhileEsta instruccin es muy similar a la anterior, con la diferencia de que la evaluacin de la instruccin se hace al final, no al principio. Esto permite ejecutar aunque sea una vez el bloque asociado sin evaluar la expresin.

  • Instruccin ForLa instruccin for provee una forma compacta de iterar sobre un rango de valores. La forma general de la instruccin for puede ser expresada como esto:for (initialization; termination; increment) { statement } La inicializacin es una expresin que inicializa el bucle. Es ejecutada una vez al comienzo del bucle. La expresin de terminacin determina cuando terminar el bucle. Esta expresin es evaluada al tope de cada iteracin del bucle. Cuando la expresin evala a falso, el bucle termina. Finalmente, la expresin increment es invocada despus de cada iteracin. Todos esos componentes son opcionales.Los bucles for son frecuentemente utilizados para iterar sobre los elementos de un arreglo, o los caracteres de un String.

  • If/ElseLa instruccin if / else permite al programa ejecutar selectivamente otras instrucciones, basado en algn criterio. La forma general sera:

    if (expression) { statement(s) }

  • La Instruccin SwitchSe emplea la instruccin switch para condicionalmente ejecutar instrucciones basadas en expresiones de enteros.

    La instruccin switch evala su expresin, y ejecuta la instruccin case adecuada. Otro punto de inters es la instruccin break despus de cada case. Cada instruccin break termina el bloque de switch, y el flujo de control contina con la primera instruccin que sigue despus del bloque de switch. Si no se colocaran instrucciones break, el cursor de ejecucin seguira ejecutando otros bloques case.

  • Manejo de ExcepcionesEl lenguaje de programacin Java provee un mecanismo conocido como excepciones para ayudar a los programas a reportar y manejar errores. Cuando un error ocurre, el programa arroja una excepcin, lo cual significa que el flujo normal de ejecucin a quedado interrumpido y que el entorno de runtime intenta encontrar un manejador de excepciones un bloque de cdigo que pueda manejar un tipo particular de error. El manejador de excepciones puede intentar recuperar del error , si determina que el error es irrecuperable, proveer una finalizacin gentil del programa. Hay tres instrucciones que juegan un rol en el manejo de excepciones: Try, Catch y Finally.try { statement(s) } catch (exceptiontype name) { statement(s) } finally { statement(s) } En otro apartado ampliaremos este tema.

  • Instrucciones de RamificacinEl lenguaje de programacin Java soporta tres instrucciones de ramificacin:

    Break

    Continue

    Return.

  • Instruccin BreakLa instruccin break tiene dos formas: con etiqueta sin etiqueta. La forma sin etiqueta es empleada para terminar el bucle interno en que se encuentre, mientras que la forma con etiqueta permite terminar una instruccin marcada con una etiqueta.

  • Instruccin ContinueLa instruccin continue se emplea para saltar (obviar) la iteracin actual de un bucle for, while do-while. La forma sin etiqueta salta hasta el final del bucle interno y evala la expresin booleana que controla el bucle, bsicamente obviando el remanente de esta iteracin del bucle. La forma con etiqueta salta (obvia) la iteracin actual con la etiqueta dada. A continuacin unos ejemplos con cada una de las formas:

  • Instruccin ReturnSe emplea la instruccin return para salir del mtodo actual. El flujo de control retorna a la instruccin que sigue al mtodo llamador. La instruccin return tiene dos formas: una que retorna un valor y otra que no lo hace. Para retornar un valor, simplemente coloque el valor (o una expresin que calcule el valor) despus de la palabra reservada return:

    return ++count;

    El tipo de dato del valor retornado debe ser acorde con el tipo de dato de retorno del mtodo (en su declaracin). Cuando un mtodo es declarado void, use la forma de return que no retorna valor.

    return;

  • Ejemplos:// ejemplo de un arreglo sencillo. class Ejemplo26 { public static void main(String args[]) { int diasDelMes[]; diasDelMes = new int[12]; diasDelMes[0] = 31; diasDelMes[1] = 29; diasDelMes[2] = 31; diasDelMes[3] = 30; diasDelMes[4] = 31; diasDelMes[5] = 30; diasDelMes[6] = 31; diasDelMes[7] = 31; diasDelMes[8] = 30; diasDelMes[9] = 31; diasDelMes[10] = 30; diasDelMes[11] = 31; System.out.println("Febrero tiene " + diasDelMes[1] + " dias."); } }

  • // Ejemplo de ++ y --. class Ejemplo27 { public static void main(String args[]) { int a = 1; int b = 2; int c; int d; c = ++b; d = a++; c++; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); System.out.println("d = " + d); } }

  • //ejemplo de if class Ejemplo28 { public static void main(String args[]) { int mes = 4; // abril String estacion; if(mes == 12 || mes == 1 || mes == 2) estacion = "el Invierno"; else if(mes == 3 || mes == 4 || mes == 5) estacion = "la primavera"; else if(mes == 6 || mes == 7 || mes == 8) estacion = "el verano"; else if(mes == 9 || mes == 10 || mes == 11) estacion = "el Otoo"; else estacion = "Mes desconocido"; System.out.println("Abril esta en " + estacion + "."); } }