uso de if,uso de switch

25
If anidados y Switch Prof. Lillian Bras

Upload: james-jaems

Post on 17-Jan-2016

238 views

Category:

Documents


0 download

DESCRIPTION

if, switch

TRANSCRIPT

Page 1: Uso de if,Uso de Switch

If anidados y Switch

Prof. Lillian Bras

Page 2: Uso de if,Uso de Switch

if-else-if

Una instrucción de if que contiene, en el then o en el else, otra estructura de selección es conocida como un if anidado.

La sintáxis de un if anidado sería como sigue:if (expression)

statement or blockelse if (expression)statement or block// Put as many else ifs as needed here

else statement or block Hay 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.

Page 3: Uso de if,Uso de Switch

Flujograma de If anidado

Page 4: Uso de if,Uso de Switch

Programa correspondiente al flujograma anterior

import..javax.swing.JOptionPane;public class TestResults {

public static void main(String[] args) {int testScore; // Numeric test scoreString 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 <= 100)

JOptionPane.showMessageDialog(null, "Your grade is A.");else // Invalid score

JOptionPane.showMessageDialog(null, "Invalid score.");System.exit(0);

}}

Page 5: Uso de if,Uso de Switch

if-else Matching

Las llaves son necesarias siempre que necesitemos que se ejecute mas de una instrucción en caso de cierto o en caso de falso(else).

A pesar de que para una sola instrucción las llaves no son necesarias, muchas veces es conveniente colocarlas porque esto puede hacer que la lógica sea mas clara.

Además es recomendable indentar los else de forma que puede identificarse facilmente a que if pertenece.

Page 6: Uso de if,Uso de Switch

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.

Page 7: Uso de if,Uso de Switch

Operadores Lógicos

Java provee tres operadores lógicos: uno unario (!) y dos binarios (&& y ||).

Los operadores lógicos de AND(&&) y OR(| |)se utilizan para combinar expresiones booleanas.

El operador unario correspondiente al NOT se utiliza para convertir una expresión booleana en el valor opuesto.

Page 8: Uso de if,Uso de Switch

Operadores lógicosOperador Significado Efecto

&& AND Une dos expresiones booleanas. Ambas tienen que ser ciertas para que la expresión completa sea cierta.

|| ORUne dos expresiones booleanas. Basta con que una sola de las expresiones sea cierta para que la expresión completa sea cierta.

! NOTSi este operador es aplicado a una expresión cierta devuelve falso y si es aplicado a una expresión falsa devuelve cierto..

Page 9: Uso de if,Uso de Switch

Tabla de valores para &&Expresión 1 Expresión 2 Expresión1 && Expresión2

true false falsefalse true falsefalse false falsetrue true true

Page 10: Uso de if,Uso de Switch

Tabla de valores para el operador | |

Expresión 1 Expresión 2 Expresión1 | | Expresión2true false truefalse true truefalse false falsetrue true true

Page 11: Uso de if,Uso de Switch

Tabla de valores para !

Expresión 1 !Expresión1true falsefalse true

Page 12: Uso de if,Uso de Switch

“Short Circuit Evaluation” “Short Circuit Evaluation” corresponde al hecho de

evaluar en una expresión lógica el mínimo necesario.

Si el primer operando de una expresión 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 expresión es evaluada como cierta.

Page 13: Uso de if,Uso de Switch

Order of Precedence

Orden de Precedencia Operadores

1 ( negación) !

2 * / %

3 + -

4 < > <= >=

5 == !=

6 &&

7 ||

8= += -=*= /= %=

Page 14: Uso de if,Uso de Switch

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:expresión1 ? expresión2 : expresión3

Por ejemplo:System.out.println(“your grade is: “ +

(score> 60 ? “Fail.” : “Pass.”));x > y ? z = 10 : z = 5;number = x > 100 ? 20 :50;

Page 15: Uso de if,Uso de Switch

Otro tipo de selección: switch

El switch permite usar una variable o expresión de tipo ordinal para determinar cual instrucción/es se debe ejecutar según su contenido.

El switch puede evaluar una variable de tipo caracter o entero y tomar decisiones en base a su valor o contenido.

Page 16: Uso de if,Uso de Switch

Sintáxis del switch

switch (SwitchExpression){

case CaseExpression:// place one or more statements herebreak;

case CaseExpression:// place one or more statements herebreak;// case statements may be repeated//as many times as necessary

default:// place one or more statements here

}

Page 17: Uso de if,Uso de Switch

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

}}

}

Page 18: Uso de if,Uso de Switch

Switch…

Cada case debe contener una expresión o valor único.case CaseExpression:

// place one or more statements herebreak;

Si el contenido de la variable o valor de la expresión 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 ejecución del programa es transferida a ese case.

Page 19: Uso de if,Uso de Switch

switch…case

Si un case no contiene break, entonces continúa ejecutando por el próximo case.

La sección de default es opcional y será ejecutada si no se encuentra ningún case que paree con la expresión del Switch.

Page 20: Uso de if,Uso de 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!");

}}

Page 21: Uso de if,Uso de Switch

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

}

Page 22: Uso de if,Uso de Switch

Para comparar objetos de tipo String:

No podemos usar los operadores de relación para comparar dos objetos de tipo String.(Recuerde que lo que está almacenado en una variable de tipo String es una dirección)

Para compararlos tenemos que usar los métodos compareTo y equals de la clase String.

Page 23: Uso de if,Uso de Switch

Ejemplo de comparación 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.");

elseSystem.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.");

elseSystem.out.println(name1 + " and " + name3 +

" are the NOT the same.");}

}

Page 24: Uso de if,Uso de Switch

Mas sobre la comparación de cadenas

Los métodos equals y compareToson sensitivos a las letras mayúsculas y minúsculas.

Si queremos comparar dos cadenas de caracteres que podrían diferenciarse en el tipo de letra y no queremos considerar esa diferencia debemos usar equalsIgnoreCase o compareToIgnoreCase.

Page 25: Uso de if,Uso de Switch

Otro ejemplo de comparación de cadenas

import java.util.Scanner;

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

String input; // To hold the user's inputScanner 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!");

elseSystem.out.println("Sorry, that is NOT the " +

"secret word!");

}}