11/30/10
1
Introducción a la Programación V Curso de Programación en Java
San<ago Muelas Pascual [email protected]
Noviembre 2010
break
Dentro de un switch, for, while o un do/while
Provoca la salida inmediata de la estructura
La ejecución con<nua con la primera sentencia después de la estructura Scanner sc = new Scanner(System.in);
while ( true ) {
int valor = sc.nextInt();
if (valor < 0 )
break;
else
System.out.println(”valor: ” + valor);
}
con<nue
Dentro de un switch, for, while o un do/while
Provoca la finalización de la iteración que se esté llevando a cabo
Hay que tener en cuenta los efectos que pueda tener en el bucle
for (int i=0; i<10; i++) {
continue;
System.out.println(“Dentro del bucle”);
}
Ejemplo
Scanner sc = new Scanner(System.in);
while ( true ) {
int valor = sc.nextInt();
if (valor < 0 ) {
System.out.println(”Valor invalido”);
continue;
}
else
System.out.println(”valor: ” + valor);
}
e<quetas
Tanto break como con<nue se pueden u<lizar junto con e<quetas
Se u<lizan cuando hay bucles anidados y se quiere indicar a donde se quiere salir o qué iteración se quiere con<nuar
La e<queta se sitúa antes del bucle Las e<quetas siguen el esquema de nombrado de las variables
etiqueta:
sentencias
Ejemplos
externo:
for (int i=0; i<3; i++) {
System.out.println(”Externo”);
for (int j=0; j<5; j++) {
if (j>1) continue externo;
System.out.println(”Interno");
} // final del bucle interno
System.out.println(“Adios”);
Salida: Externo Interno Interno Externo Interno Interno Externo Interno Interno Adios
11/30/10
2
Ejemplos
externo:
for (int i=0; i<3; i++) {
System.out.println(”Externo”);
for (int j=0; j<5; j++) {
if (j>1) break externo;
System.out.println(”Interno");
} // final del bucle interno
System.out.println(“Adios”);
Salida: Externo Interno Interno Adios
Arrays
Arrays
Es un contenedor de elementos de un mismo <po (int, double, char, …)
Se almacenan en memoria con*gua
Se indexan con un índice que comienza en 0
Creación de Arrays
Hay que especificar el tamaño int[] valores = new int [5];
O por medio de una lista de valores int[] valores = {5,4,2,1};
Se accede a sus elementos por medio del operador [] System.out.println(valores[0])
valores[1] = 4;
Creación de Arrays II
¿Qué ocurre cuando no se especifican sus valores ?
int[] valores = new int[5];
System.out.println(valores[0]);
Se inicializa con el valor de por defecto del <po definido
¿Qué ocurre cuando se intenta acceder a una posición que no existe?
System.out.println(valores[27]);
Se produce una excepción (se verá más adelante)
Ejemplos
int[] valores = {5,4,2,1};
System.out.println(valores[0])
System.out.println(valores[4])
int a = 1, b=2;
valores[a+b] += 2;
11/30/10
3
¿Qué es un array?
Un array es un objeto especial
“Almacena” los valores del array
Controla el acceso Al contrario que en C/C++
Almacena más información:el tamaño del array La variable length con<ene el tamaño del array
System.out.println(valores.length);
¿Qué es un array? II
int[] valores = {10,20,30,40};
10 20 30 40
4
¿Qué es un array? III
int[] valores = {10,20,30,40};
En valores no se almacena el valor sino la referencia Las referencias a objetos se explicarán en detalle más adelante Sucede lo mismo con todos los objetos
¿Qué ocurriría?
int[] valores1 = {10,20,30,40};
int[] valores2 = {50,60,70,80};
valores1 = valores2;
¿Qué es un array? IV
10 20 30 40
4
50 60 70 80
4
int[] valores1 = {10,20,30,40};
int[] valores2 = {50,60,70,80};
valores1 = valores2;
¿Qué es un array? V
10 20 30 40
4
50 60 70 80
4
int[] valores1 = {10,20,30,40};
int[] valores2 = {50,60,70,80};
valores1 = valores2;
¿valores1[0] = 1;?
¿valores2[0] = 2;?
¿Qué es un array? V
10 20 30 40
4
2 60 70 80
4
int[] valores1 = {10,20,30,40};
int[] valores2 = {50,60,70,80};
valores1 = valores2;
¿valores1[0] = 1;?
¿valores2[0] = 2;?
11/30/10
4
Copia de Arrays
Hay que copiar los elementos uno a uno
int[] valores1 = {10,20,30,40};
int[] valores2 = {50,60,70,80};
valores1[0] = valores2[0];
valores1[1] = valores2[1];
valores1[2] = valores2[2];
valores1[3] = valores2[3;
Declaración sin inicialización de un Array
int[] miArray;
Para almacenar la referencia de otro array
Para crearlo más tarde
int[] miArray;
miArray = new int[4];
miArray = new int[] {1,2,3};
¿Qué sucede si ejecuto esta sentencia después de int[] miArray?
System.out.println(miArray[0]);
¿Y si imprimo el valor de la variable array?
System.out.println(miArray);
Arrays Mul<dimensionales
Son simplemente arrays de arrays Cada elemento del array almacena la referencia a otro array
int[][] multiArray = new int[2][2];
multiArray[0][0] = 1;
multiArray[0][1] = 2;
multiArray[1][0] = 3;
multiArray[0][1] = 4;
1 2
3 4
Arrays Mul<dimensionales II
Otra forma equivalente
int[][] multiArray;
multiArray = new int[2][];
multiArray[0] = new int[2];
multiArray[1] = new int[2];
También se pueden declarar con una lista de valores
int[][] multiArray = { {1,2} , {3,4} };
1 2
3 4
Arrays Mul<dimensionales III
Son arrays de arrays Pueden tener un número dis<nto de columnas
int[][] multiArray;
multiArray = new int[2][];
multiArray[0] = new int[1];
multiArray[1] = new int[3];
multiArray[0][0] = 10;
multiArray[1][0] = 20;
multiArray[1][1] = 45;
multiArray[2][2] = 6;
10
20 45 6
for each/ for mejorado
Para iterar sobre los elementos de un array sin u<lizar un contador
for ( tipo variable : nombreArray) {
sentencias
}
11/30/10
5
Ejemplo
int[] array = {1,2,3,4,5,6};
int total = 0;
// for básico
for (int i=0; i<array.length; i++) {
total += array[i];
}
for (int numero : array) {
total += numero;
}