Vous êtes sur la page 1sur 31

Bloques y sentencias

SENTENCIAS SELECTIVAS O CONDICIONALES

Dentro de las sentencias condicionales tenemos las estructuras selectivas (if) y las repetitivas (while, for). Se dicen condicionales debido a que el control de flujo de ejecucin de sentencias se determina en base al resultado de una condicin (recuerde que una condicin es una expresin lgica).

Bloques y sentencias
SENTENCIAS SELECTIVAS O CONDICIONALES

Las sentencias condicionales selectivas if (si) tenemos tres casos: selectiva simple selectiva doble selectiva mltiple

Bloques y sentencias
SELECTIVA SIMPLE if
Se evala la condicin, si es verdadera se ejecutan las sentencias; en caso contrario se salta dicho grupo o bloque de sentencias.

if (condicin) Sentencia Ejemplo: a = 8; if ( a != 8 ) System.out.print( a es diferente de ocho);


En este ejemplo como a tiene el valor de 8 por asignacin, entonces la condicin ( a != 8 ) es false entonces se brincar la instruccin para escribir a es diferente de ocho, esto es, no la ejecutar.

Bloques y sentencias
SELECTIVA SIMPLE if
Ejemplo: int a = 8, b = 7; if ( b < a ) { System.out.println( b es menor que a ); c = a + b; System.out.println( a mas b es igual a + c ); } System.out.println( a = + a + b = + b ); En el ejemplo anterior, a tiene el valor de 8 y b el de 7, luego la condicin (b<a) es verdadera , entonces el programa ejecutar las instrucciones dentro del bloque if { } y escribir en la pantalla: b es menor que a a mas b es igual a 15

Bloques y sentencias
ESTRUCTURA SELECTIVA SIMPLE if false condicin true
Sentencias

Se evalua la condicion, si es verdadera se ejecuta las sentencias; en caso contrario se salta dicho grupo de instrucciones. Recuerde que la decisin (condicin o expresin lgica) se representa con un rombo.

Bloques y sentencias
ESTRUCTURA SELECTIVA DOBLE if else
Es similar a la sentencia if, pero incluye dos sentencias en lugar de una. Permite la ejecucin de una sentencia o bloque de sentencias si se cumple la condicin lgica, al igual que la sentencia if, pero en el caso de que no se cumpla esa condicin, permite la ejecucin de otra sentencia u otro bloque de sentencias diferente La sintaxis de la sentencia if-else es: if (condicin) Sentencia 1; else Sentencia 2;

Bloques y sentencias
ESTRUCTURA SELECTIVA DOBLE if - else
true
condicin

false

Sentencias 1

Sentencias 2

Si la condicin lgica es verdadera, se ejecutar la sentencia 1. Despus, l Ejecucin se reanudar tras la sentencia - sino, esto es, tras la sentencia 2 ( que n se ejecutar ). Si la condicin lgica es falsa, se ejecutar la sentencia 2, y no se ejecutar la sentencia 1. Despus proseguir l ejecucin del programa. Tanto sentencia 1 como sentencia pueden ser bloques de sentencia delimitadas por llaves de bloque.

Bloques y sentencias
ESTRUCTURA SELECTIVA DOBLE if - else
Ejemplo:
Int da = 7; if ( dia != 7 ) { System.out.println( Hoy no es domingo); System.out.println( Hoy tienes que trabajar); } else { System.out.println(Hoy hay que descansar porque es domingo); System.out.println( Y como es domingo hay que ver el football); }

En el ejemplo anterior, como da es una variable numrica con un valor asignado de 7, entonces la condicin (da != 7 ) ser false, entonces se escribir por pantalla:
Hoy hay que descansar porque es domingo. Y como es domingo hay que ver el football.

Bloques y sentencias
ESTRUCTURA SELECTIVA MLTIPLE if anidados

Esta estructura se aplica cuando tenemos condiciones mltiples. Observe el lector que el nmero de llaves que cierran } corresponde al nmero de if o condiciones que tenga el algoritmo, adems de la identificacin en forma de escalerita nos facilita visualizar esta estructura de control.

Bloques y sentencias
ESTRUCTURA SELECTIVA MLTIPLE if anidados
public class SelectivaMultiple{ public static void main(String args[]){ int edadPancho=50; int edadPaco=45; System.out.println("BIENVENIDO AL PROGRAMA"); if (edadPancho>=18 && edadPaco>=18){ System.out.println("Pancho y Paco son mayores de edad"); System.out.println("Pancho y Paco pueden votar"); } else if(edadPancho>=18 && edadPaco<18){ System.out.println("Pancho es mayor de edad,Paco no"); System.out.println("Pancho puede votar, Paco no"); } else if(edadPancho<18 && edadPaco>=18){ System.out.println("Paco es mayor de edad, Pancho no"); System.out.println("Paco puede votar, Pancho no"); } else{ System.out.println("Pancho y Paco no son mayores de edad"); System.out.println("Ni Pancho ni Paco pueden votar"); } System.out.println("FIN DE PROGRAMA"); } }

Bloques y sentencias
ESTRUCTURA SELECTIVA MLTIPLE if anidados Diagrama de sintaxis

Bloques y sentencias
SENTENCIAS CONDICIONALES CICLOS (while, for)

Las instrucciones repetitivas o iterativas ms comunes son los ciclos while y for , estas dependen de la condicin para seguir repitiendo un bloque de sentencias. A este tipo de sentencias tambin se les conocen como sentencias de bucle (loop )

Bloques y sentencias
SENTENCIAS CONDICIONALES Ciclo while
Supongamos que queremos hacer un programa que haga una tabla de conversin de grados Fahrenheit a grados Celsius, empezando de un lmite superior a un lmite inferior. Usaremos el ciclo while para este propsito:
import javax.swing.JOptionPane; import java.util.*; public class CicloWhile { public static void main( String args[] ) { double fahr=0; double limite=0; double decre =0; Scanner s = new Scanner( System.in );// creamos un flujo de entrada System.out.println("Convierte a grados centgrados partiendo de Fahrenheit") ; System.out.println("Dame el lmite de grados a calcular "); limite = s.nextDouble(); // leemos un double del teclado System.out.println("Dame el decremento"); decre = s.nextDouble(); // leemos un double del teclado fahr = limite ; while ( fahr > 0 ) { System.out.printf("%f %f\n", fahr,( 5.0 / 9.0 ) * ( fahr - 32 ) ) ; fahr = fahr - decre ; } System.out.println ("Pulse cualquier tecla para continuar"); byte car = s.nextByte(); }// fin del main() } // fin de la clase CicloWhile

Bloques y sentencias
Observe que la condicin lgica (fahr > 0) controla la repeticin de las sentencias que se encuentran entre el bloque del while. Cuando sea verdadera se repetirn las sentencias, pero cuando sea falsa se terminar el ciclo repetitivo para ejecutar las sentencias que estn inmediatamente despus, entre las cuales esta la invocacin o llamado a una funcin obtencar( ) que tiene el efecto de pedir un carcter del teclado al usuario para terminar el programa.

Bloques y sentencias
SENTENCIAS CONDICIONALES Ciclo while

false expresin

true

sentencias

S e evala la condicin o expresin lgica y segn sea el resultado, si es verdad se ejecutan las sentencias N veces, si es falsa no se ejecutan las sentencias. Debido a la condicin o expresin lgica que se evala al principio, este ciclo se ejecuta de 0 a N veces

Bloques y sentencias
SENTENCIAS CONDICIONALES CICLO do - while
Este ciclo o bucle nos permite por lo menos ejecutar una repeticin del bloque de sentencias. Veamos el ejemplo del programa que hace una tabla de conversin de grados Fahrenheit a grados Celsius, empezando de un lmite superior a un lmite inferior. Usaremos el ciclo do - while para este propsito:
import javax.swing.JOptionPane; import java.util.*; public class GradosDoWhile { public static void main( String args[] ) { double fahr=0; double limite=0; double decre =0; Scanner s = new Scanner( System.in );// creamos un flujo de entrada System.out.println("Convierte a grados centgrados partiendo de Fahrenheit") ; System.out.println("Dame el lmite de grados a calcular "); limite = s.nextDouble(); // leemos un double del teclado System.out.println("Dame el decremento"); decre = s.nextDouble(); // leemos un double del teclado fahr = limite ; do { System.out.printf("%f %f\n", fahr,( 5.0 / 9.0 ) * ( fahr - 32 ) ) ; fahr = fahr - decre ; } while( fahr > 0 ); System.out.println ("Pulse cualquier tecla para continuar"); byte car = s.nextByte(); }// fin del main() } // fin de la clase GradosDoWhile

2.6 Bloques y sentencias


SENTENCIAS CONDICIONALES CICLO do - while Vea en el ejemplo que las sentencias dentro del bloque do - while se ejecutan por lo menos una vez y que la condicin lgica (fahr > 0) controla la repeticin de las sentencias. Cuando la condicin o expresin lgica sea falsa se repetirn las sentencias, pero cuando sea verdadera se terminar el ciclo repetitivo para ejecutar las sentencias que estn inmediatamente despus.

Bloques y sentencias
SENTENCIAS CONDICIONALES CICLO do - while

sentencias

true

condicin

false

S e ejecutan las sentencias y luego se evala la condicin o expresin lgica, si es falsa se ejecutan las sentencias N veces, si es verdadera se sale del ciclo. Por la condicin o expresin lgica que se evala al final, este ciclo se ejecuta de 1 a N veces.

CONDICIONALES CICLO for


Este es uno de los ciclos o bucles ms utilizados en los lenguajes de programacin, Veamos el mismo ejemplo del programa que hace una tabla de conversin de grados Fahrenheit a grados Celsius, empezando de un lmite superior a un lmite inferior. Usaremos el ciclo for para este propsito:
import javax.swing.JOptionPane; import java.util.*; public class GradosFor { public static void main( String args[] ) { double limite=0; double decre =0; Scanner s = new Scanner( System.in );// creamos un flujo de entrada System.out.println("Convierte a grados centgrados partiendo de Fahrenheit") ; System.out.println("Dame el lmite de grados a calcular "); limite = s.nextDouble(); // leemos un double del teclado System.out.println("Dame el decremento"); decre = s.nextDouble(); // leemos un double del teclado for ( double fahr = limite ; fahr > 0; fahr -= decre ) { System.out.printf("%f %f\n", fahr,( 5.0 / 9.0 ) * ( fahr - 32 ) ) ; } System.out.println ("Pulse cualquier tecla para continuar"); byte car = s.nextByte(); }// fin del main() } // fin de la clase GradosFor

Bloques y sentencias
SENTENCIAS CONDICIONALES CICLO for Vea que la definicin e incializacin de la variable fahr se hace en la primera parte del for, asi: double fahr = limite Vea en el ejemplo que las sentencias dentro del bloque for se ejecutan mientras condicin lgica (fahr > 0) sea true y controla la repeticin de las sentencias. Vea como se decrementa la variable fahr en la tercera parte del for, asi: fahr -= decre

Bloques y sentencias
SENTENCIAS CONDICIONALES CICLO for
En el siguiente diagrama se muestra la sintaxis del ciclo repetitivo for, el cual funciona as: primeramente se ejecuta la expresin1 ( que es la parte de inicializacin de las variables contador del ciclo o donde se asignan valores iniciales a los contadores ), despus se evala pro primera vez la expresin2 que es booleana y si da true entonces se ejecuta el bloque de sentencias, pero si da false entonces se finaliza el ciclo transfirindose el control de flujo despus de la llave que cierra el bloque. Se preguntar Cundo se evala la expresion3 ? , esta se evala primeramente en la segunda pasada o en la segunda iteracin, y posteriormente se pasa a evaluar de nuevo la expresin2, despus se vuelve a hacer la prueba lgica de la expresin2 y as sucesivamente hasta que la expresin2 sea false. Observe en el diagrama que la expresin1 solo se evala una vez ( en la inicializacin ).

2.6 Bloques y sentencias


Seleccin multiple (switch - case)
Algunos lenguajes de programacin tienen una estructura de control selectiva mltiple conocida como switch - case. Es utilizada cuando hay que seleccionar entre ms de dos alternativas como true o false, sino mas bien de un rango de posibles valores resultantes de la evaluacin de una expresin.

Bloques y sentencias
Seleccin mltiple (switch - case) Ejemplo: Supongamos que desea hacer un algoritmo que le pida dos nmeros reales por teclado y luego un carcter (+ , - , * , / ) para efectuar dicha operacin entre esos dos nmeros e imprimir el resultado por pantalla. El programa se repetir hasta que el usuario de una N o un NO y terminar el programa, pero en caso contrario volver a iniciar el proceso de preguntarnos dos nuevos nmeros reales y una opcin para calcular.

Bloques y sentencias
Seleccin multiple (switch - case)
Inicio Inicio Real num1, num2; Carcter opera; Cadena respuesta; Escribe Hace una operacin ( + , - , *. / ) con dos nmeros reales leidos por teclado y muestra el resultado por pantalla ; Repetir Lee Dame el primer nmero , num1 ; Lee Dame el segundo numero , num2 ; Escribe Qu operacin desea hacer? Introduzca el smbolo de la Operacin a calcular : + para Sumar - para Restar * para Multiplicar / para Dividir ; Lee De el smbolo , opera ;

Pseudocdigo

Bloques y sentencias
Seleccin mltiple (switch - case)
Caso ( opera ) hacer + : Escribe La suma de , num1, + , num2 , es igual a , (num1 + num2) ; break; - : Escribe La resta de , num1, - , num2 , es igual a , (num1 - num2) ; break; * : Escribe La multiplicacin de , num1, * , num2 , es igual a , (num1 * num2) ; break; / : Escribe La divisin de , num1, / , num2 , es igual a , (num1 / num2) ; break; Sino : Escribe Smbolo incorrecto! Solo son validos los smbolos ( +,- , * , / ) break; FinCaso Lee Desea hacer otro clculo ( S / N ) ? , respuesta ; Hasta ( respuesta = S or respuesta = SI or respuesta = s or respuesta = si ) ; Escribe Pulse cualquier tecla para continuar ; llama obtencar( ) ; Fin

Observe que hay que utilizar la palabra break para poder terminar cada uno de los casos o de lo contrario, se seguir ejecutando el siguiente caso. Esta palabra reservada break es de uso en lenguajes como C / C++, Java, PHP

Bloques y sentencias Multiple (switch - case)

2.6 Bloques y sentencias


Seleccin multiple (switch - case)

Bloques y sentencias
package unam; import javax.swing.JOptionPane; public class Calculadora { public double p,q,r; String cad; char n; String menu; public Calculadora() { menu = "Operacion a realizar:\n " + "+ : suma \n" + "- : resta \n" + "* : multiplicacion \n" + "/ : divicion \n" + "% : modulo \n" + "^ : potencia \n\n "; }//fin del constructor

Seleccin multiple (switch - case)

public static void main(String[] args) { Calculadora c = new Calculadora(); String mayuscula = ""; do{ c.p = Double.parseDouble (JOptionPane. showInputDialog(null, "De el 1er nmero:")); c.q = Double.parseDouble (JOptionPane. showInputDialog(null, "De el 2do nmero:")); String cad = JOptionPane.showInputDialog (null, c.menu); c.n = cad.charAt (0);// obtengo el caracter para el operador

Bloques y sentencias
switch (c.n){ case '+' : c.r = c.p + c.q; JOptionPane.showMessageDialog(null, "La suma es:" + c.r); break; case '-' : c.r = c.p - c.q; JOptionPane.showMessageDialog(null, "La resta es:" + c.r); break; case '*' : c.r = c.p * c.q; JOptionPane.showMessageDialog(null, "La multiplicacion es:" + c.r); break; case '/' : c.r = c.p / c.q; JOptionPane.showMessageDialog(null, "La divicion es:" + c.r); break; case '%' : c.r = c.p % c.q; JOptionPane.showMessageDialog(null, "El mdulo es:" + c.r); break; case '^' : c.r = Math.pow (c.p , c.q); JOptionPane.showMessageDialog(null, "La Potencia es:" + c.r); break; default:JOptionPane.showMessageDialog(null, "Opcion no valida"); break; }//fin del switch c.cad = JOptionPane.showInputDialog(null,"Deseas otro claculo? (s/n):"); mayuscula = c.cad.toUpperCase(); }while (mayuscula.equals("S") || mayuscula.equals("SI") ); System.out.println("Adios, hasta luego"); System.exit (0); }//fin de main() }//fin de la clase calculadora

Seleccin multiple (switch - case)

Bloques y sentencias
Seleccin multiple (switch - case)
Formalizando, esta estructura de control selectiva mltiple conocida como switch-case Es utilizada cuando se evala la expresin (una expresin Numrica, o una expresin que nos de un valor discreto como un carcter por ejemplo) Segn sea el resultado, si es el valor c1 ejecutan las sentencias 1, si es el valor c2 ejecutan las sentencias 2, etc. Si no es ningn caso se ejecutan las sentencias del bloque default.

Vous aimerez peut-être aussi