Vous êtes sur la page 1sur 33

Lenguaje de Programacin Java

(SL-275-SE6)
Mdulo 4
Expresiones y control de flujo

Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 1
Objetivos
Distinguir entre la instancia y variables locales.
Describir cmo inicializar las variables de instancia.
Identificar y corregir una referencia posible antes de
asignacin de error del compilador.
Reconocer, describir y utilizar los operadores del
software Java.
Distinguir entre asignaciones legales e ilegales de
tipos primitivos.
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 2
Objetivos
Identificar las expresiones booleanas y sus requisitos
en las construcciones de control.
Reconocer la compatibilidad de asignacin y las
necesidades en tipos fundamentales.
Utilice, si, switch, for, while y do construcciones y
las formas etiquetadas de break y continue como el
flujo de controlar las estructuras en un programa.

Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 3
Discusin
Qu tipos de variables son tiles para los
programadores?
Pueden las clases tener variables mltiples con el
mismo nombre y, en caso afirmativo, cul es su
alcance?
Qu tipos de estructuras de control se utilizan en
otros lenguajes? Qu mtodos utilizan para el control
del flujo estos lenguajes?

Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 4
Variables y mbito
Las variables locales son las siguientes:
Las variables que se definen dentro de un mtodo son
llamadas locales, automticas, temporales, o variables de
pila.
Las variables que se crean cuando se ejecuta el mtodo y
se destruyen cuando se sale del mtodo.

La inicializacin de variables comprende lo siguiente:
Las variables locales requiere la inicializacin explcita.
Las variables de instancia se inicializa automticamente.

Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 5
Ejemplo del Ambio de Variable
public class ScopeExample {
private int i=1;
public void firstMethod() {
int i=4, j=5;
this.i = i + j;
secondMethod(7);
}
public void secondMethod(int i) {
int j=8;
this.i = i + j;
}
}

public class TestScoping {
public static void main(String[] args) {
ScopeExample scope = new ScopeExample();
scope.firstMethod();
}
}
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 6
Inicializacin de una Variable
Variable Valor
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0D
char '\u0000'
boolean false
All reference types null
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 7
Principio del Uso Antes de la
inicializacin
El compilador verificar que las variables locales han
sido inicializadas antes de usarse.
3 public void doComputation() {
4 int x = (int)(Math.random() * 100);
5 int y;
6 int z;
7 if (x > 50) {
8 y = 9;
9 }
10 z = y + x; // Possible use before initialization
11 }
javac TestInitBeforeUse.java
TestInitBeforeUse.java:10: variable y might not have been initialized
z = y + x; // Possible use before initialization
^
1 error
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 8
Precedencia de Operadores
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 9
Operadores lgicos
Los operadores booleanos son:
! NOT (n0) & AND (y)
| OR (o) ^ XOR (o exclusivo)

Los operadores lgicos corto circuito son:
&& AND || OR

Puede utilizar estos operadores de la siguiente manera:
MyDate d = reservation.getDepartureDate();
if ( (d != null) && (d.day > 31) {
// do something with d
}

Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 10
Los operadores lgicos en modo bit
Los operadores bit a bit enteros son los siguientes:
~ Complement & AND
^ XOR | OR
Los ejemplos incluyen tamaos en byte:
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 11
Operadores de Desplazamiento de
Derecha- >> y >>>
Aritmtica o asignacin de desplazamiento a la
derecha del Operador (>>) :
Algunos ejemplos:
128 >> 1 regresa 128/2
1
= 64
256 >> 4 regresa 256/2
4
= 16
-256 >> 4 regresa -256/2
4
= -16
El bit de signo se copia durante el turno.
Lgico o desplazamiento a la derecha sin signo (>>>)
Operador:
Este operador se utiliza para los patrones de bits.
El bit de signo no se copia durante el turno.
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 12
Operador de Desplazamiento a la
izquierda <<
El operador de desplazamiento a la izquierda (<<)
funciona de la siguiente manera:

128 << 1 returns 128 * 2
1
= 256
16 << 2 returns 16 * 2
2
= 64
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 13
Ejemplos de Operadores de
Desplazamiento
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 14
La concatenacin de cadenas con
el signo +
El operador + funciona como sigue:
Realiza concatenacin de cadenas
Produce un nuevo String:
String salutation = "Dr.";
String name = "Pete" + " " + "Seymour";
String title = salutation + " " + name;
Uno de los argumentos debe ser un objeto String.
Las que no son cadenas se convierten en objetos String
automticamente.
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 15
Conversin (Casting)
Si la informacin se pueden perder en una asignacin,
el programador debe confirmar la asignacin con un
Casting (moldear).
La asignacin entre el long y un int requiere
conversin explcita.
long bigValue = 99L;
int squashed = bigValue; // Wrong, needs a cast
int squashed = (int) bigValue; // OK
int squashed = 99L; // Wrong, needs a cast
int squashed = (int) 99L; // OK, but...
int squashed = 99; // default integer literal
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 16
Promocin y Conversin de
Expresiones
Las variables son promovidas automticamente a una
forma ms larga (por ejemplo, int a long).
La expresin es compatible con la asignacin si el tipo
de variable es al menos tan grande (el mismo nmero
de bits) como el tipo de la expresin.
long bigval = 6; // 6 is an int type, OK
int smallval = 99L; // 99L is a long, illegal
double z = 12.414F; // 12.414F is float, OK
float z1 = 12.414; // 12.414 is double, illegal

Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 17
Prctica #7
Disea una clase la cual represente al objeto velocmetro
de cualquier automvil el cual contenga los atributos
velocidad en kilmetros, kilmetros recorridos, y que me
ayude a convertir estos en millas, realiza su propia clase
de prueba.
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 18
Sentencias simples if, else
Sintaxis de la sentencia if:
if ( <boolean_expression> )
<statement_or_block>

Ejemplo:
if ( x < 10 )
System.out.println("Are you finished yet?");

O (recomendado):

if ( x < 10 ) {
System.out.println("Are you finished yet?");
}
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 19
Sentencias if, else complejas
Sintaxis de la sentencias if-else
if ( <boolean_expression> )
<statement_or_block>
else
<statement_or_block>

Ejemplo:

if ( x < 10 ) {
System.out.println("Are you finished yet?");
} else {
System.out.println("Keep working...");
}
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 20
Sentencias if, else complejas
Sintaxis de la sentencias if-else-if
if ( <boolean_expression> )
<statement_or_block>
else if ( <boolean_expression> )
<statement_or_block>
Ejemplo:
int count = getCount(); // a method defined in the class
if (count < 0) {
System.out.println("Error: count value is negative.");
} else if (count > getMaxCount()) {
System.out.println("Error: count value is too big.");
} else {
System.out.println("There will be " + count +" people for lunch today.");
}
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 21
Sentencia switch
Sintaxis de la sentencia switch
switch ( <expression> ) {
case <constant1>:
<statement_or_block>*
[break;]
case <constant2>:
<statement_or_block>*
[break;]
default:
<statement_or_block>*
[break;]
}
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 22
Sentencia switch
Un ejemplo de la sentencia switch:
switch ( carModel ) {
case DELUXE:
addAirConditioning();
addRadio();
addWheels();
addEngine();
break;
case STANDARD:
addRadio();
addWheels();
addEngine();
break;
default:
addWheels();
addEngine();
}
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 23
Sentencia switch
Esta instruccin switch es equivalente al ejemplo anterior:
switch ( carModel ) {
case DELUXE:
addAirConditioning();
case STANDARD:
addRadio();
default:
addWheels();
addEngine();
}

Sin las sentencias break, la ejecucin cae a travs de
cada case posterior.
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 24
Las sentencias de bucle (ciclo)
El ciclo for:
for ( <init_expr>; <test_expr>; <alter_expr> )
<statement_or_block>
Ejemplo:
for ( int i = 0; i < 10; i++ )
System.out.println(i + " squared is " + (i*i));

O (recomendado):
for ( int i = 0; i < 10; i++ ) {
System.out.println(i + " squared is " + (i*i));
}
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 25
Las sentencias de bucle (ciclo)
El ciclo while:
while ( <test_expr> )
<statement_or_block>

Ejemplo:
int i = 0;
while ( i < 10 ) {
System.out.println(i + " squared is " + (i*i));
i++;
}
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 26
Las sentencias de bucle (ciclo)
El ciclo do/while:
do
<statement_or_block>
while ( <test_expr> );
Ejemplo:
int i = 0;
do {
System.out.println(i + " squared is " + (i*i));
i++;
} while ( i < 10 );
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 27
Comandos Especiales para el
Control de Flujo de los Ciclos
El comando break [<label>];
El comando continue [<label>];
El comando <label> : <statement> donde
<statement> debera ser un ciclo.
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 28
La sentencia break
1 do {
2 statement;
3 if ( condition ) {
4 break;
5 }
6 statement;
7 } while ( test_expr );
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 29
La sentencia continue
1 do {
2 statement;
3 if ( condition ) {
4 continue;
5 }
6 statement;
7 } while ( test_expr );
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 30
Usando la sentencia break con
labels (etiquetas)
1 outer:
2 do {
3 statement1;
4 do {
5 statement2;
6 if ( condition ) {
7 break outer;
8 }
9 statement3;
10 } while ( test_expr );
11 statement4;
12 } while ( test_expr );
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 31
Usando la sentencia continue con
labels (etiquetas)
1 test:
2 do {
3 statement1;
4 do {
5 statement2;
6 if ( condition ) {
7 continue test;
8 }
9 statement3;
10 } while ( test_expr );
11 statement4;
12 } while ( test_expr );
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 32
Prctica #8
Realiza un programa que me ayude a contar el nmero ingresado
de letras o caracteres diferentes a x o y, cuando se introduzca una
x el ciclo debe continuar si se ingresa una y se interrumpe el ciclo
y por tanto la captura del ciclo, y por consiguiente deber mostrar
el resultado al final del programa.

Nota: Utiliza la sentencia continue y break con etiquetas.
Academia de Java Cecyteg
Ocampo ISC. Hctor Gabriel Prez Martnez 33

Vous aimerez peut-être aussi