25
If anidados y Switch Prof. Lillian Bras

If Anidados y Switch

Embed Size (px)

DESCRIPTION

uso de if anidado y switch

Citation preview

  • If anidados y SwitchProf. Lillian Bras

  • if-else-if Una instruccin de if que contiene, en el then o en el else, otra estructura de seleccin es conocida como un if anidado.La sintxis de un if anidado sera como sigue:if (expression) statement or blockelse if (expression) statement or block // Put as many else ifs as needed here else statement or blockHay que tener mucho cuidado al construir una estructura de if anidados ya que el compilador va a emparejar cada else con el if anterior mas cercano.

  • Flujograma de If anidado

  • Programa correspondiente al flujograma anteriorimport..javax.swing.JOptionPane;public class TestResults { public static void main(String[] args) { int testScore; // Numeric test score String input; // To hold the user's input

    // Get the numeric test score. input = JOptionPane.showInputDialog("Enter your numeric " + "test score and I will tell you the grade: "); testScore = Integer.parseInt(input);

    // Display the grade. if (testScore < 60) JOptionPane.showMessageDialog(null, "Your grade is F."); else if (testScore < 70) JOptionPane.showMessageDialog(null, "Your grade is D."); else if (testScore < 80) JOptionPane.showMessageDialog(null, "Your grade is C."); else if (testScore < 90) JOptionPane.showMessageDialog(null, "Your grade is B."); else if (testScore

  • if-else MatchingLas llaves son necesarias siempre que necesitemos que se ejecute mas de una instruccin en caso de cierto o en caso de falso(else).A pesar de que para una sola instruccin las llaves no son necesarias, muchas veces es conveniente colocarlas porque esto puede hacer que la lgica sea mas clara.Adems es recomendable indentar los else de forma que puede identificarse facilmente a que if pertenece.

  • if-else Matchingif (employed == y){if (recentGrad == y){ System.out.println("You qualify for the " + "special interest rate.");}else{ System.out.println("You must be a recent " + "college graduate to qualify.");}}else{ System.out.println("You must be employed to qualify.");}Este elseva con esteif.Este elseva con esteif.

  • Operadores LgicosJava provee tres operadores lgicos: uno unario (!) y dos binarios (&& y ||).Los operadores lgicos de AND(&&) y OR(| |)se utilizan para combinar expresiones booleanas.El operador unario correspondiente al NOT se utiliza para convertir una expresin booleana en el valor opuesto.

  • Operadores lgicos

    OperadorSignificadoEfecto&&ANDUne dos expresiones booleanas. Ambas tienen que ser ciertas para que la expresin completa sea cierta.||ORUne dos expresiones booleanas. Basta con que una sola de las expresiones sea cierta para que la expresin completa sea cierta.!NOTSi este operador es aplicado a una expresin cierta devuelve falso y si es aplicado a una expresin falsa devuelve cierto..

  • Tabla de valores para &&

    Expresin 1Expresin 2Expresin1 && Expresin2truefalsefalsefalsetruefalsefalsefalsefalsetruetruetrue

  • Tabla de valores para el operador | |

    Expresin 1Expresin 2Expresin1 | | Expresin2truefalsetruefalsetruetruefalsefalsefalsetruetruetrue

  • Tabla de valores para !

    Expresin 1!Expresin1truefalsefalsetrue

  • Short Circuit EvaluationShort Circuit Evaluation corresponde al hecho de evaluar en una expresin lgica el mnimo necesario.

    Si el primer operando de una expresin construida con AND (&&) es falso inmediatamente se devuelve un falso sin tan siquiera evaluar el segundo operando.

    En el caso del OR(| |) , tan pronto como se descubre que uno de los operandos es cierto la expresin es evaluada como cierta.

  • Order of Precedence

    Orden de PrecedenciaOperadores1( negacin) !2* / %3+ -4< > =5== !=6&&7||8= += -=*= /= %=

  • El operador condicional: ?El operador condicional(?) es un operador ternario; tiene tres operandos.Puede ser utilizado para escribir un enunciado simple que trabaje como un if-else.La forma del operador es:expresin1 ? expresin2 : expresin3Por ejemplo: System.out.println(your grade is: +(score> 60 ? Fail. : Pass.)); x > y ? z = 10 : z = 5; number = x > 100 ? 20 :50;

  • Otro tipo de seleccin: switch El switch permite usar una variable o expresin de tipo ordinal para determinar cual instruccin/es se debe ejecutar segn su contenido. El switch puede evaluar una variable de tipo caracter o entero y tomar decisiones en base a su valor o contenido.

  • Sintxis del switchswitch (SwitchExpression){ case CaseExpression: // place one or more statements here break; case CaseExpression: // place one or more statements here break; // case statements may be repeated //as many times as necessary default: // place one or more statements here}

  • Ejemplo de switchimport java.util.Scanner; public class SwitchDemo{ public static void main(String[] args){ int number; // A number entered by the user Scanner keyboard = new Scanner(System.in); System.out.print("Enter 1, 2, or 3: "); number = keyboard.nextInt();

    // Determine the number entered. switch (number) { case 1: System.out.println("You entered 1."); break; case 2: System.out.println("You entered 2."); break; case 3: System.out.println("You entered 3."); break; default: System.out.println("That's not 1, 2, or 3!"); } }}

  • SwitchCada case debe contener una expresin o valor nico.case CaseExpression: // place one or more statements here break; Si el contenido de la variable o valor de la expresin parea con uno de los case, las instrucciones entre el colon y el enunciado de break son ejecutadas.En otras palabras, si hay un case que paree con el valor dela variable utilizada en el switch, la ejecucin del programa es transferida a ese case.

  • switchcase

    Si un case no contiene break, entonces contina ejecutando por el prximo case.

    La seccin de default es opcional y ser ejecutada si no se encuentra ningn case que paree con la expresin del Switch.

  • Ejemplo de Switch(sin break)public static void main(String[] args) { int number; // A number entered by the user // Create a Scanner object for keyboard input. Scanner keyboard = new Scanner(System.in); // Get one of the numbers 1, 2, or 3 from the user. System.out.print("Enter 1, 2, or 3: "); number = keyboard.nextInt();

    // Determine the number entered. switch (number) { case 1: System.out.println("You entered 1."); case 2: System.out.println("You entered 2."); case 3: System.out.println("You entered 3."); default: System.out.println("That's not 1, 2, or 3!"); } }

  • Switch: Otro ejemplo System.out.println("Our pet food is available in " + "three grades:"); System.out.print("A, B, and C. Which do you want " + "pricing for? "); input = keyboard.nextLine(); foodGrade = input.charAt(0);

    // Display pricing for the selected grade. switch(foodGrade) { case 'a': case 'A': System.out.println("30 cents per lb."); break; case 'b': case 'B': System.out.println("20 cents per lb."); break; case 'c': case 'C': System.out.println("15 cents per lb."); break; default: System.out.println("Invalid choice."); }

  • Para comparar objetos de tipo String: No podemos usar los operadores de relacin para comparar dos objetos de tipo String.(Recuerde que lo que est almacenado en una variable de tipo String es una direccin)Para compararlos tenemos que usar los mtodos compareTo y equals de la clase String.

  • Ejemplo de comparacin de cadenas de caracteres public class StringCompare{ public static void main(String [] args){ String name1 = "Mark", name2 = "Mark", name3 = "Mary";

    // Compare "Mark" and "Mark" if (name1.equals(name2)) System.out.println(name1 + " and " + name2 + " are the same."); else System.out.println(name1 + " and " + name2 + " are the NOT the same."); // Compare "Mark" and "Mary" if (name1.equals(name3)) System.out.println(name1 + " and " + name3 + " are the same."); else System.out.println(name1 + " and " + name3 + " are the NOT the same."); } }

  • Mas sobre la comparacin de cadenasLos mtodos equals y compareTo son sensitivos a las letras maysculas y minsculas.Si queremos comparar dos cadenas de caracteres que podran diferenciarse en el tipo de letra y no queremos considerar esa diferencia debemos usar equalsIgnoreCase o compareToIgnoreCase.

  • Otro ejemplo de comparacin de cadenasimport java.util.Scanner;

    public class SecretWord{ public static void main(String[] args){

    String input; // To hold the user's input Scanner keyboard = new Scanner(System.in); // Prompt the user to enter the secret word. System.out.print("Enter the secret word: "); input = keyboard.nextLine();

    // Determine whether the user entered the secret word. if (input.equalsIgnoreCase("PROSPERO")) System.out.println("Congratulations! You know the " + "secret word!"); else System.out.println("Sorry, that is NOT the " + "secret word!"); }}

    *************************