Modulo 7. Expresiones y sentencias de control de Flujo En este

Anuncio
Modulo 7. Expresiones y sentencias de control de Flujo
En este punto de estudio se considera que tenemos claro los conceptos relacionados con
variables y operadores, ahora estudiaremos como con las variables y los operadores
construyen expresiones, estas expresiones son el componente principal de las declaraciones
(statemenst) y como estas declaraciones (statements) se agrupan en bloques que en
ocasiones pueden no tener una ejecución secuencial, esto se logra gracias a las sentencias o de
control de flujo proporcionadas por el lenguaje.
Que es una Expresión?
Es una construcción que evalúa un solo valor y esta compuesto por variables, operadores,
llamadas a métodos; se debe tener muy presente que esta construcción debe cumplir con la
sintaxis del lenguaje.
En módulos anteriores se estudio que se pueden crear un variable de diferentes tipos de
datos, entre los que tenemos el int. Un ejemplo de una expresión es la creación y asignación
de un valor a un dato primitivo.
int variableEjemploEntero = 100;
Observemos que cumple con la sintaxis del lenguaje, esta expresión en particular utiliza una
variable y el operador de asignación.
¿Se puede componer una expresión con otra expresión?
La respuesta es sí, una expresión se puede componer de expresiones más pequeñas, siempre y
cuando el tipo de datos evaluado en la porción de la expresión sea compatible con el tipo de
datos de la expresión más grande.
El lenguaje java puede evaluar expresiones y declararlas como ambiguas al utilizar expresiones
dentro de expresiones, supongamos la expresión
3+5*6/7
Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, ¿qué
parte de la expresión se realiza primero?
Esta ambigüedad se soluciona especificando exactamente como se debe evaluar la expresión
mediante el uso de los paréntesis, así:
( 3 +5 ) *( 6/7)
( 3 +( 5 *6 )) /7
Declaraciones o sentencias de control de flujo.
Las declaraciones o sentencias de control de flujo no son más que instrucciones que permiten
que el código se ejecute de diferentes formas, es decir, permite que la ejecución no se realice
en una forma vertical, declaración por declaración; si no que por el contrario logran ejecutar
ramificaciones del código, bloques repetitivos de código, agregar condiciones para saber que
bloques se deben ejecutar.
A continuación estudiaremos las sentencias de control de flujo soportadas por el lenguaje Java.
Los conceptos acá expuestos y su uso, deben estar ya comprendidos y estudiados.
Sentencia if – then
Esta sentencia permite ejecutar un bloque del código solo si una condición a evaluar es
verdadera.
La sintaxis de escritura es la siguiente:
if ( condición boolena)
código A.
código B
Si la condición es verdadera el código A se ejecutaría, seguido del código B; ahora bien, si la
condición es falsa se ejecuta el código B.
Cuando código A es más de una declaración se debe colocar entre corchetes y formar un
bloque de código.
if ( condición boolena)
{
Bloque de código
}
código B
El colocar corchetes cuando solo se ejecute una instrucción es opcional, pero es una buena
práctica que evita errores en el código y hace más fácil su lectura.
if ( condición )
{
código A, solo una declaración
}
código B
La condición boolena puede ser una expresión que de cómo resultado true o false, o una
variable boolena
Ejemplo
int numeroUno = 19;
int numeroDos = 27;
if( numeroDos > numeroUno)
{
System.out.println("El número mayor es el numeroDos = " +
numeroDos );
}
System.out.println("Al finalizar esta sentencia se ejecutaria"
);
Sentencia if – then - else
Brinda un complemento a la sentencia if – then, ya que permite escribir las instrucciones o
declaraciones de código a ejecutar cuando una condición es falsa luego de ser evaluada.
Utiliza la misma sintaxis solo que agrega la palabra reservada else, el uso de los corchetes tiene
el mismo comportamiento.
if ( condición )
código A.
else
código B
código C
ó
if ( condición )
{
Bloque de código A
}
else
{
Bloque de código B
}
código C
ó
if ( condición 1 )
{
Bloque de código A
}
else
if ( condición 2 )
{
código B, solo una declaración
}
código C
En el último caso se anido la sentencia if de la condición 2.
int numeroDos = 27;
if( numeroDos > 25)
{
System.out.println("numero dos es mayor que 25 y es igual a "+
“numeroDos “);
}
else
{
System.out.println("numero dos NO es mayor que 25 y es “ +
“igual a = " + numeroDos );
}
System.out.println("Al finalizar esta sentencia se ejecutaria"
);
Otro Ejemplo:
int grados = 68;
if( grados > 90 ){
System.out.println("Muy bien, super grande!");
}
else if( grados > 60 ){
System.out.println("Muy bien, no tan grande!");
}
else{
System.out.println("Hmm no alcanza lo esperado");
}
Errores comunes
1. Evaluar un número en la expresión
//Mal
int numero = 0;
if(numero){
//Declaraciones
}
2. Usar = (asignación) en lugar del operador == (igualdad)
// Mal
int numero = 0;
if(numero = 0 ){
//Declaraciones
}
3. Escribir elseif (junto) el lenguaje reconoce a else y a if
La sentencia switch
A diferencia de las sentencias if – then o if – then – else, que solo permiten a lo máximo dos
posibles caminos a seguir, switch permite cualquier cantidad de posibles caminos a seguir.
Las declaraciones o sentencias que se encuentran dentro de la sentencia switch conoce como
el cuerpo del switch y contiene los posibles caminos a seguir o un camino por defecto.
La sintaxis es:
switch ( variableEvaluar )
{
case 1:
camino A, solo se ejecuta cuando variableEvaluar sea igual a 1
case 2:
camino B, solo se ejecuta cuando variableEvaluar sea igual a 2
case 3:
camino C, solo se ejecuta cuando variableEvaluar sea igual a 3
case 4:
camino D, solo se ejecuta cuando variableEvaluar sea igual a 4
default:
camino E, solo se ejecuta cuando variableEvaluar no cumplió ninguna
condición o por defecto.
}
Observe las llaves { luego de la sentencia switch y la llave } al finalizar, lo que se encuentra
dentro del switch es su cuerpo.
Para este caso en particular, el switch evalúa la variableEvaluar y determina cual camino seguir
dentro de las posibilidades del switch.
Para tener en cuenta en su uso:
1. Al encontrar el camino el switch continúa ejecutando los demás caminos que se
encuentren. Para nuestro caso particular si variableEvaluar es 1, se ejecutaran los
caminos A, B, C, D y E. Si variableEvaluar es 4, se ejecutaran los caminos D y E.
Esta particularidad se soluciona con la sentencia break, la cual obliga al switch a continuar la
ejecución con la siguiente instrucción luego del cuerpo del switch.
switch ( variableEvaluar )
{
case 1:
camino A, solo se ejecuta cuando variableEvaluar sea igual a 1
break;
case 2:
camino B, solo se ejecuta cuando variableEvaluar sea igual a 2
break;
case 3:
camino C, solo se ejecuta cuando variableEvaluar sea igual a 3
break;
case 4:
camino D, solo se ejecuta cuando variableEvaluar sea igual a 4
break;
default:
camino E, solo se ejecuta cuando variableEvaluar no cumplió ninguna
condición o por defecto.
}
2. switch solo permite que variableEjecutar sea de los siguientes tipos:
Un tipo de datos primitivo entre byte, short, char y int;
Con tipos de datos enum1.
Algunas clases que envuelven (“wrap”) algunos tipos de datos primitivos (Clase
Integuer, Clase Character, Clase Byte, Clase Short).
3. La decisión de utilizar switch o if anidados parte del análisis de la necesidad, if
anidados es más utilizado cuando se debe evaluar rangos de valores o diferentes
condiciones.
public class EjemploSwith
{
public static void main( String[] args )
{
int edad = 92;
switch(edad){
case 100:
System.out.println( "Tienes un siglo!!!!" );
break;
case 90:
System.out.println("Ya tienes 90,” +
“hmm felicitaciones!!!!" );
break;
case 80:
System.out.println("Aún te falta un poco “ +
“para los 90 !" );
break;
default:
System.out.println("Que lastima no aplicas “ +
“para nuestra selección");
}
}
}
1
Si se desea conocer este tipo de datos puede
http://java.sun.com/docs/books/tutorial/java/javaOO/enum.html
Sentencias while
La sentencia while permite ejecutar un bloque de código mientras una condición sea
verdadera. Es conocida como un ciclo.
while (expresión) {
bloque de código
}
Ó
while (expresión)
código A
En este caso código A solo es una instrucción
La expresión es evaluada y si su resultado es un boolean true, se ejecuta el bloque de código
entre los corchetes o el código A.
int i = 4;
while ( i > 0 ){
System.out.print(i);
i--;
}
Sentencias do – while
La sentencia do – while, ejecuta primero una porción del código y luego evalúa una expresión,
si esta expresión es verdadera la porción de código se continua ejecutando.
do
{
Bloque de código
}
while ( expresión )
Dentro del bloque de código a ejecutar se debe contemplar las instrucciones tales que la
expresión a evaluar en un momento deseado sea falso, si no, se incurre en el error de generar
ciclos infinitos. En ocasiones se desea realizar ciclos infinitos, un fragmento de código para tal
fin es:
while (true){
// Bloque de código a repetirse en el ciclo infinito
}
Ejemplo 1:
int x = 0;
do
{
System.out.println(x);
x++;
}while(x<10);
Ejemplo 2:
do
System.out.println(“hello”);
while(false);
Sentencias for
Permite realizar un ciclo en un rango de valores controlados, el rango de ejecuciones se define
mientras una condición es cumplida.
La sintaxis de esta sentencia es:
for (iniciación ; condición de terminación; incremento) {
Bloque de código
}
¿Que es iniciación?
Es la expresión que se ejecuta al iniciar el ciclo, normalmente se inicia una variable que
permite el control del ciclo.
¿Qué es condición de terminación?
Es la expresión que se evalúa y termina el ciclo cuando su valor es false.
¿Qué es incremento?
Es la expresión que se ejecuta después de la ejecución de una iteración del ciclo, esta
expresión puede ser de incremento o de decremento.
En el siguiente ejemplo se muestra como imprimir los números del 1 al 10.2
class ForDemo {
public static void main(String[] args){
for(int i=1; i<11; i++){
System.out.println("Count is: " + i);
}
}
}
La sentencia for también permite la iteración entre arreglos y Colecciones de datos, la sintaxis
para lograr esto es:
2
Ejemplo publicado en el tutorial de sun:
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/for.html
for ( tipoDato item : grupo o arreglo )
{
Bloque de código
}
Donde el grupo o arreglo a iterar debe existir y estar declarado previamente.
Recordar preguntar por esta instrucción especial cuando se vea el tema de arreglos.
Descargar