Anda di halaman 1dari 13

Clase 2 Introduccin a Java

Clase 2
Introduccin a Java

Autor: Ernesto Gigliotti

Este obra est bajo una Licencia Creative Commons Atribucin-CompartirIgual 4.0 Internacional.
UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

Clase 2 Introduccin a Java


Rangos en los tipos de datos
Los tipos de datos numricos utilizados hasta el momento, poseen un rango determinado, es
decir, una variable del tipo int no puede almacenar un nmero de cualquier tamao, si no
que existe un mnimo y mximo determinado.
Para el caso del tipo int:

Mnimo : -2.147.483.648
Mximo : 2.147.483.647

es decir, que no podemos escribir:


int a;
a = 2147483648;
Como estamos asignando un nmero ms grande que el mximo que este tipo de variable
puede guardar, el compilador nos mostrar un error:

Pueden obtenerse los valores mximos y mnimos de cada tipo de datos en la documentacin
de Java en la pgina de Oracle.
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
El tipo de dato boolean
Imaginemos que existe un tipo numrico como el tipo int pero en el cual el nmero ms
pequeo que podemos almacenar es 0 y el nmero ms grande es 1, llamamos a este tipo
de dato boolean. Este tipo slo puede contener 2 valores.
Nos podemos preguntar para qu puede servir un tipo de dato de esta caracterstica, y la
respuesta es que existe todo un lgebra desarrollada para poder realizar operaciones con estos
tipos de datos y es muy til. A estas operaciones se las conoce como operaciones lgicas y
al lgebra, lgebra booleana.
El tipo de dato boolean almacena dos valores, si nos abstraemos del lenguaje, podemos pensar
en una variable booleana como algo en donde se almacenan dos estados bien diferenciados:

Blanco o Negro.
Prendido o Apagado.
Verdadero o Falso.
Si o No.

En el lenguaje Java, estos dos valores no son nmeros sino que se representan con las
palabras reservadas* true y false.
*

Una palabra reservada es una palabra propia del lenguaje de programacin

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

Clase 2 Introduccin a Java


Al igual que cuando definimos una variable int, podemos definir una variable boolean de la
siguiente manera:
boolean variableBoolean;
La diferencia es que no podremos asignarle valores numricos:

Slo podemos asignarle el valor true o false


boolean variableBoolean;
variableBoolean = true ;
Tampoco podemos utilizar las operaciones aritmticas que usbamos con los valores
numricos, es decir, no podemos ni sumar ni restar booleans sino que existen, como ya
mencionamos antes, operaciones lgicas:

Interseccin : Se realiza mediante el smbolo &


Unin : Se realiza mediante el smbolo |
Suma exclusiva : Se realiza mediante el smbolo ^

operacin interseccin o and:


Variable 1

Variable 2

Resultado

false

&

false

false

false

&

true

false

true

&

false

false

true

&

true

true

operacin unin o or:


Variable 1

Variable 2

Resultado

false

false

false

false

true

true

true

false

true

true

true

true

operacin suma exclusiva o xor:


Variable 1

Variable 2

Resultado

false

false

false

false

true

true

true

false

true

true

true

false

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

Clase 2 Introduccin a Java


Escribamos un programa que calcule la interseccin entre dos variables booleanas:
public static
// TODO
boolean
boolean
boolean

void main(String[] args) {


Auto-generated method stub
a;
b;
resultado;

a = true ;
b = false ;
resultado = a & b ;
System.out.println("Resultado de a interseccin b:"+resultado);
}
Al ejecutar el programa, obtenemos como resultado false, ya que la tabla mencionada
anteriormente define que la operacin interseccin entre un valor true y uno false, da como
resultado false:

Operadores relacionales
Existen ciertos smbolos que nos permiten hacer comparaciones, estas operaciones dan como
resultado valores del tipo boolean.
Si queremos saber si el valor almacenado en una variable es mayor que 5, utilizamos el
operador relacional >:
int variable;
boolean resultado;
variable = 8;
resultado = variable > 5;
System.out.println("Resultado de la comparacin:"+resultado);
Si ejecutamos el programa, obtenemos que el resultado de la comparacin de la variable (que
contiene el valor 8) y el literal 5, da true (verdadero).

Si cambiamos la lnea variable=8; por variable=3; y ejecutamos de nuevo el programa,


obtenemos como resultado false (falso)

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

Clase 2 Introduccin a Java


Ntese que el resultado de la operacin variable > 5 se asigna a una variable del tipo
boolean ya que el resultado de una comparacin, solo tiene dos valores posibles: o se
cumple lo que estamos comparando, o no se cumple. En el caso de cumplirse, el resultado es
true, y en el caso de no cumplirse, el resultado es false.
Ms comparaciones
Qu otras cosas podemos comparar? Podemos comparar si una variable es:

igual
mayor
menor
distinto

que otra variable o literal. Estas 4 comparaciones dan como resultado un valor del tipo
boolean.
Cmo comparamos por menor? Simplemente utilizando el smbolo en sentido contrario:

Comparacin por mayor : >


Comparacin por menor : <

Ejemplo:

int variableA;
int variableB;
boolean resultado;
variableA = 3;
variableB = 5;
resultado = variableA < variableB;
System.out.println("Resultado de la comparacin:"+resultado);

En este ejemplo, comparamos si variableA es menor que variableB de ser as, la variable
resultado almacenar un true, de lo contrario, almacenar un false.
Cmo comparamos por igual? Mediante el smbolo ==
Cmo comparamos por distinto? Mediante el smbolo !=
Ejemplo:
int variableA;
int variableB;
boolean resultado;
variableA = 5;
variableB = 5;
resultado = variableA == variableB;
System.out.println("Resultado de la comparacin:"+resultado);
Al ejecutar el cdigo, da como resultado true:

Otras operaciones relacionales:

Mayor igual : >=


Menor igual : <=

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

Clase 2 Introduccin a Java


La condicin Y y la condicin O
Imaginemos que tenemos 2 variables, cada una contiene la nota de un alumno:
int notaJuan;
int notaPedro;
notaJuan=8;
notaPedro=8;
y queremos que nuestro programa calcule si los 2 alumnos aprobaron ( 7 o ms ), para ello
comparamos cada variable con la nota, con el literal 7, para saber si es mayor o igual a 7:
int notaJuan;
int notaPedro;
boolean resultadoJuan;
boolean resultadoPedro;
notaJuan=8;
notaPedro=8;
resultadoJuan = notaJuan >= 7;
resultadoPedro = notaPedro >= 7;
Hasta aqu tenemos 2 variables donde cada una contiene el resultado de la comparacin de la
nota de cada alumno. Pero nosotros queremos saber si los 2 aprobaron, es decir, si para los 2
resultados, la comparacin dio true.
En otras palabras, necesitamos saber si resultadoJuan es igual a true Y resultadoPedro es igual
a true. Para ello utilizamos el operador interseccin, el cual dar como resultado true si
todos los miembros que computemos son true:
int notaJuan;
int notaPedro;
boolean resultadoJuan;
boolean resultadoPedro;
boolean resultado;
notaJuan=8;
notaPedro=9;
resultadoJuan = notaJuan >= 7;
resultadoPedro = notaPedro >= 7;
resultado = resultadoJuan & resultadoPedro;
System.out.println("Resultado de la comparacin:"+resultado);
La variable resultado se cargar con true si y slo si resutadoJuan es true y
resultadoPedro es true. Si alguna de las dos notas es menor a 7 ( y como consecuencia
alguna de las dos variables resultado es false ) entonces resultado ser false.
Siempre que nuestra condicin implique que se cumpla una condicin Y otra,
utilizamos el operador interseccin &

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

Clase 2 Introduccin a Java


Ahora supongamos que queremos saber si alguno de los dos aprob, en otras palabras: si
resultadoJuan es true O resultadoPedro es true. Para ello utilizamos el operador unin, el
cual dar como resultado true si alguno de los miembros que computemos es true:
resultado = resultadoJuan | resultadoPedro;
La variable resultado se cargar con true si resutadoJuan es true o resultadoPedro es
true. Si las dos notas son menores a 7 ( y como consecuencia las dos variables resultado son
false ) entonces resultado ser false.
Siempre que nuestra condicin implique que se cumpla una condicin o la otra,
utilizamos el operador unin |
Modo abreviado
No es necesario definir una variable para guardar cada resultado de comparacin y despus
hacer intersecciones o uniones entre slo 2 operandos, sino que puede escribirse todo en
menos lneas:
int notaJuan;
int notaPedro;
boolean resultado;
notaJuan=8;
notaPedro=9;
resultado = (notaJuan>=7) & (notaPedro>=7);
System.out.println("Resultado de la comparacin:"+resultado);
Ahora el cdigo parece ms legible : Si notaJuan es mayor o igual a 7 Y notaPedro es
mayor o igual a 7, entonces resultado ser true.
Comparacin en modo seguro (short circuiting)
Supongamos que tenemos la siguiente comparacin:
int x;
boolean resultado;
x = 2;
resultado = (x != 0) &

(1/x > 1);

System.out.println("Resultado de la comparacin:"+resultado);
La condicin se lee : Si x es distinto de cero Y, 1 dividido x, es mayor que 1, entonces
resultado se cargar con true.
Si ejecutamos el ejemplo con x = 2 obtenemos como resultado false, ya que :

(x!=0) da como resultado true


(1/x >1) da como resultado false

La operacin interseccin entre true y false da como resultado false.

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

Clase 2 Introduccin a Java


Como puede observarse, primero se calcul el trmino (x!=0) y luego se calcul el termino
(1/x >1) , es decir, el programa va ejecutando la lnea de izquierda a derecha, calcula
todos los trminos y luego aplica la operacin interseccin con los resultados de cada
trmino.
Qu ocurre si x=0? Cuando el programa se ejecute y se calcule el segundo trmino (1/x >1)
entonces se ejecutar la divisin 1/x con x=0, produciendo un error y terminando con la
ejecucin del programa, ya que la divisin no est definida para el divisor igual a cero (no se
puede dividir por cero)

Para evitar este problema, se utiliza el operador interseccin condicional && o unin
condicional ||.
Cuando escribimos el operador dos veces, se comenzarn a calcular los trminos de
izquierda a derecha, si alguno es false, la operacin completa devuelve false sin
calcular los trminos faltantes que estn ms a derecha. Esto se conoce como short
circuiting.
Ejemplo:
resultado = (x != 0) &&
Trmino 1

(1/x > 1);


Trmino 2

Si x = 0 , despus de calcular el primer trmino (izquierda) como el resultado del mismo es


false, entonces resultado se carga con false y la operacin termina, no se evalan el resto
de los trminos y en consecuencia nunca se produce la divisin por cero.

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

Clase 2 Introduccin a Java


Sentencias de control de flujo
Si slo pudiramos escribir programas en donde se ejecutan una lnea debajo de la otra son
control, no podramos hacer que el programa se comporte de manera diferente segn algunas
condiciones que nosotros queramos, es por ello que existen sentencias de control de flujo, las
cuales nos permitirn ejecutar o no cierto bloque de programa segn alguna condicin.
Sentencia if-else
La sentencia if nos permite ejecutar un bloque de lneas de programa solo si si cumple cierta
condicin, de lo contrario, el bloque de lneas no se ejecutar.
Sintaxis:
if(CONDICION)
{
bloque de lneas de cdigo que se ejecutan si se cumple la condicin.
...
}
else
{
bloque de lneas de cdigo que se ejecutan si no se cumple la condicin.
...
}
Las dos palabras reservadas que utilizamos son if y else y podemos distinguir dos bloques
encerrados entre llaves, el primer bloque, se ejecutar si CONDICION es igual a true, si es
igual a false el bloque que se ejecutar es el segundo.
Ejemplo:
int nota;
boolean aprobo;
nota = 8;
aprobo = nota >= 7;

1er bloque

2do bloque

if(aprobo)
{
System.out.println("El alumno est aprobado");
}
else
{
System.out.println("El alumno est desaprobado");
}

En este ejemplo, realizamos la comparacin de una variable que contiene el valor de la nota de
un alumno, y la comparamos con el valor literal 7 en el caso de que al nota sea mayor o
igual a 7 la variable boolean aprobo se cargar con true, de la contrario, con false.
Como se explic anteriormente, si la condicin de la sentencia if es true, como en este
caso, (porque nota vale 8 y entonces aprobo vale true) entonces se ejecutar el primer
bloque encerrado entre llaves, y se saltear el segundo.

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

Clase 2 Introduccin a Java


Si ejecutamos el programa, podemos observar que la lnea que imprime por consola El
alumno est aprobado se ejecuta (primer bloque) pero la lnea que esta dentro del segundo
bloque, no.

En el caso de cambiar el valor de la nota por un nmero menor a 7, la variable aprobo se


cargar con false, y el primer bloque de nuestro if-else no se ejecutar, pero el segundo s.
Con nota=5 , el resultado de la ejecucin del programa es:

Evitando la variable boolean


Puede escribirse el mismo programa de una manera ms reducida, sin utilizar la variable
boolean, escribiendo dentro de los parntesis del if directamente la comparacin que da
como resultado un valor boolean:
int nota;
nota = 8;
if(nota >= 7)
{
System.out.println("El alumno est aprobado");
}
else
{
System.out.println("El alumno est desaprobado");
}
El programa queda mucho ms claro y se lee de la siguiente forma: Si nota es mayor o igual a
7, se imprime El alumno est aprobado sino, se imprime El alumno est desaprobado.

Sentencia if-else-if
Dentro de un bloque ( el de if o el de else ), o en ambos, puede volver a escribirse otro
if-else.
Supongamos que en caso de no aprobar, ( bloque else ) queremos indicar si el alumno puede
recuperar ( si saco ms de 4 ) o debe recursar la materia ( nota menor a 4 ). Escribimos el
siguiente programa:

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

10

Clase 2 Introduccin a Java


int nota;
nota = 5;
if(nota >= 7)
{
System.out.println("El alumno est aprobado");
}
else
{
if(nota >= 4)
{
System.out.println("El alumno est desaprobado y puede recuperar");
}
else
{
System.out.println("El alumno est desaprobado y debe recursar");
}
}
Existe una forma ms compacta de escribir un if que esta dentro de un else:
int nota;
nota = 3;
if(nota >= 7)
{
System.out.println("El alumno est aprobado");
}
else if(nota >= 4)
Else - If
{
System.out.println("El alumno est desaprobado y puede recuperar");
}
else
{
System.out.println("El alumno est desaprobado y debe recursar");
}
El else-if nos evita poner tantas llaves y el programa queda ms compacto, sin dejar de
comprenderse fcilmente.
Pueden colocarse tantos else-if como se deseen.
Reglas a tener en cuenta:

Siempre que haya un if no es necesario que exista un else


Cuando el bloque de programa dentro de las llaves tiene una sola lnea, las llaves
pueden no ponerse.
Si se usa un else-if tampoco es necesario escribir un ltimo else como se escribi en
el ejemplo.

Es importante aclarar que una vez que alguna de las condiciones de alguno de los if se
cumple, y se ejecuta el bloque de cdigo que le corresponde, no se ejecutan el resto de los
bloques, y el programa continuar despus de todos los bloques if-else.

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

11

Clase 2 Introduccin a Java


Sentencia switch
La sentencia switch evala una variable numrica entera, y nos permite definir un bloque de
lneas de programa a ejecutar, para cada valor que definamos, ejemplo:
Si tenemos una variable que indica el da de la semana, y queremos imprimir el nombre del da
segn el valor numrico, podemos hacer 7 if o utilizar el siguiente programa:
int dia;
dia = 2;
switch(dia)
{
case 1 :
{
System.out.println("Domingo");
break;
}
case 2 :
En este ejemplo {
System.out.println("Lunes");
se ejecuta este
break;
bloque.
}
case 3 :
{
System.out.println("Martes");
break;
}
case 4 :
{
System.out.println("Mircoles");
break;
}
case 5 :
{
System.out.println("Jueves");
break;
}
case 6 :
{
System.out.println("Viernes");
break;
}
case 7 :
{
System.out.println("Sbado");
break;
}
}
El valor de la variable que coloquemos entre los parntesis del switch, se comparar con los
valores literales que coloquemos en las sentencias case, si se cumple la igualdad, se
ejecutar el bloque de cdigo encerrado entre llaves que corresponde a ese case. La
sentencia break va al final de cada bloque case y evita que al terminar el bloque en
cuestin, se siga ejecutando el que est debajo.
Al ejecutar este programa, la salida por consola ser Martes

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

12

Clase 2 Introduccin a Java


Ejercicios
1. Crear un programa que defina una variable a del tipo double. Cargarla con el valor
3.14 e imprimirla por pantalla. Reescribir el programa cambiando el tipo de la variable a
int. Podemos compilar el programa? Por qu?
2. Encontrar el error en el siguiente programa:
public class Main {
public static void main(String[] args)

double variable;
Variable = 5,56;
System.out.println("Variable vale:"+variable);
}

3. Crear un programa que defina las variables nota1 y nota2 del tipo double.
Asignarle valores a ambas. Comparar si nota1 es mayor a nota2 e imprimir el
resultado de la comparacin.
4. Crear un programa que defina las variables nota1 y nota2 del tipo double.
Asignarle valores a ambas. Comparar si nota1 es mayor a nota2 imprimir el
mensaje Nota1 es mayor o Nota2 es mayor segn el resultado de la comparacin.
5. Las puntuaciones de las pelculas se clasifican en:
0 : mala
1 : regular
2 : buena
3 : muy buena
4 : excelente
Definir una variable del tipo int llamada puntuacion y cargarla con un valor de 0 a 4.
Imprimir la clasificacin de la pelcula segn el valor numrico.

UTN FRA Curso desarrollo de aplicaciones mviles basadas en Android http://www.lslfra.com.ar

13

Anda mungkin juga menyukai