matrices irregulares

Upload: conservatoris-sca

Post on 06-Jul-2015

608 views

Category:

Documents


0 download

TRANSCRIPT

Unidad 3Datos definidos por el usuario

Entender las razones fundamentales sobre la necesidad de agrupar los datos en estructuras que nos permitan un manejo eficiente de los mismos. Estudiar la problemtica del uso de estructuras de datos adecuadas a cada ejercicio de programacin. Prepararse en la correcta definicin de estructuras de datos de tipo array y su implementacin en JAVA. Manejo avanzado de los conceptos asociados a los arrays, como ndices, dimensiones, compatibilidad de tipos, acceso a elementos individuales. Potenciar la capacidad de adaptacin mutua entre algoritmo y estructura de datos. Saber definir y procesar arrays paralelos. Saber especificar y usar arrays cuyos ndices tengan valores con contenido semntico.

Objetivos

Saber definir y procesar una estructura de datos array bidimensional. Saber interpretar una estructura de datos array bidimensional usando la definicin recursiva. Familiarizarse a la utilizacin de arrays bidimensionales mediante aplicaciones prcticas. Conocer la sintaxis alternativa de declaracinde matrices. Implementar y manejar cadenas de caracteres en JAVA. Tipo de datos enumerados en JAVA Uso de bucle for de estilo for-each y operador ? En JAVA. Argumentos de la lnea de comandos.

2

Contenidos7. Uso de miembros de matriz 2. Arrays matrices de una 8. Trabajar con cadenas. dimensin. 9. Tipo de datos Enumerados. 3. Matrices de varias dimensiones. 10. Argumentos en la lnea de comandos. 4. Matrices irregulares. 11. Bucle for al estilo for5. Sintaxis alterna a la each. declaracin de matrices. 1. INTRODUCCIN 6. Referencias a matrices.

3

Introduccin

Tenemos cuatro partes en esta unidad:

Matrices o arrays Tipo String Tipo enum Bucle for-each

Adems veremos cmo pasar argumentos desde la lnea de comandos.

4

Arrays unidimensionales

Es una lista de elementos del mismo tipo y relacionados.Declaracin:Tipo nombrematriz [ ] = new tipo [tamao] O Tipo nombrematriz[ ]; nombrematriz = new tipo [tamao]; O Tipo [ ] nombrematriz = new tipo [tamao] Declaracin de varias matrices: Tipo [ ] array1, array2, array3; Devolucin de un array por un metodo: tipo [ ] metodo ( ){.}

Acceso:

mediante ndices desde 0 a tamao-1 Sobrepasar los lmites provocar un error de ejecucin. Tamao puede ser una variable. Al crearlas: int numeros[ ] = { 4, -8, 78, 56}; Con ndice: numeros[3] = 53;

Inicializacin

Ver array.java y burbuja.java

5

Arrays de dos dimensiones

Es una lista de elementos del mismo tipo y relacionados. Declaracin:

Tipo nombrematriz [ ] [ ] = new tipo [tamao1][tamao2] mediante ndices desde 0 a tamao-1 Sobrepasar los lmites provocar un error de ejecucin. Al crearlas: int numeros[ ] = {{ 4, -8, 78, 56},{2, 3, 4, 5}}; Con ndice: numeros[3][0] = 53;

Acceso:

Inicializacin

6

Matrices irregulares

Es posible declarar una matriz de varias dimensiones especificando slo la primera dimensin. Y las dimensiones restantes pueden tener valores diferentes. Declaracin:

Tipo nombrematriz [ ][ ] = new tipo [tamao][ ]; Nombrematriz [0] = new tipo [tamao0]; Nombrematriz [2] = new tipo [tamao1]; mediante ndices desde 0 a tamao-1 Sobrepasar los lmites provocar un error de ejecucin. int numeros[ ][ ] = new int [3][ ]; numeros[1] = new int [8]; numeros [2] = new int [2]; numeros [1][7] = 4; numeros [2][0] = 0;

Acceso:

7

Longitud de matrices

Los objetos del tipo array public class lenght { public static void main(String args[]) { siempre llevan asociados un int lista[] = new int[10]; atributo lenght (nmero de int nums[] = { 1, 2, 3 }; int tabla[][] = { // una tabla de longitud variable elementos que el array puede {1, 2, 3}, contener) {4, 5}, {6, 7, 8, 9} }; System.out.println("La longitud de la lista es " + lista.length); System.out.println("La longitud de nums es " + nums.length); System.out.println("La longitud de tabla es " + tabla.length); System.out.println("La longitud de tabla[0] es " + tabla[0].length); System.out.println("La longitud de tabla[1] es " + tabla[1].length); System.out.println("La longitud de tabla[2] es " + tabla[2].length); System.out.println(); // uso de length para inicializar la lista for(int i=0; i < lista.length; i++) lista[i] = i * i; System.out.print("Esta es la lista: "); // ahora use length para desplegar la lista for(int i=0; i < lista.length; i++) System.out.print(lista[i] + " "); System.out.println(); } }8

Arrays de Objetoy y msArrays de objetosDeclaracin: clase[ ] nombre = new clase[t]; Accesos a mtodos: Nombre[ind].metodo(); Inicializacin: nombre[ind] = new clase(atri1, atri2);

import java.util.Arrays; Arrays tipos primitivosArrays.fill(array, valor); Arrays.fir(array,pos1,pos2,valor); Arrays.sort(array,pos1,pos2); Carga array con valor Carga array desde pos1 hasta pos2con valor. Pos2 excluido Ordena de pos1 a pos2 ascendentemente

Int Devuelve posicin en array del elto buscado. pos=Arrays.binarySearch(array,elto); Si no existe un nmero menor que cero Si repetido no nos dice cual devuelve9

Bucle for-eachNos va a permitir hacer un recorrido de principio a fin de un conjunto de datos: array, enumeraciones //ejemplo2 Sintaxis: class ForEach2 { For(tipo var_iteracin:coleccin) public static void main(String args[ ]) { int suma = 0; bloque instrucciones

int nums[ ][ ] = new int[3][5]; // da a nums algunos valores //ejemplo1 for(int i = 0; i < 3; i++) class ForEach { for(int j=0; j < 5; j++) public static void main(String args[ ]) { int nums[ ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; nums[i][j] = (i+1)*(j+1); // Usa for estilo for-each int suma = 0; for(int x[ ] : nums) { // Use for de estilo for-each . for(int y : x) { for(int x : nums) { System.out.println("El valor es: " + y) System.out.println("El valor es: " + x); suma += y; suma += x; } } } System.out.println("Sumatorio: " + suma); System.out.println("Sumatoria: " + suma); } } } }10

Ejemplo for-eachimport java.util.Scanner; class Buscar { Hacer un programa que cree una array de 10 enteros, pida un entero al public static void main(String args[]) { usuario y nums[] = { 6, en3, 7, 5, 6, 1, 4 };Provocaremos la salida del bucle cuando lo busque 8, dicho array. int lo encuentre. int val; boolean encontrado = false; Scanner teclado = new Scanner(System.in); System.out.printf("\n Deme dato a buscar: "); val = teclado.nextInt(); // Use for de estilo for-each para buscar nums por val. for(int x : nums) { if(x == val) { encontrado = true; break; } } if(encontrado) System.out.println("Valor encontrado"); else System.out.println("Valor no encontrado en el array"); }}11

Enumeraciones

Definicin

Es una lista de constantes con nombre que definen un nuevo tipo de dato.Puede contener slo los valores que estn definidos por la lista. nmero fijo de valores permitidosPor convenio se escriben sus elementos en maysculas- constantes Si queremos cargar un valor diferente a cada elemento deberemos crear un constructor para el tipo enumerado, es decir, un enumerado en java puede ser implementado como una clase. En enumeracion.java ver enum_2.class

.

Creacin:

enum nombrenumeracin { elto1, elto2,....elton};

Uso - acceso: //declaramos variable-referencia al tipo nombrenumeracin var1; var1 = nombrenumeracin.elto2;Ver enumeracion.java y urna.java

12

Cadenas

Ver proyecto cadenas

Las cadenas son objetos, no son arrays y no se puede modificar su contenido una vez que se crean. (Java las crea nuevas) Declaracin:

String nombrecadena1 = new String ( hola); String nombrecadena = new String (nombrecadena2);

Algunos mtodos aplicables a cadena:True si la cadenaInvoca contiene cad. Devuelve la longitud de la cadena que invoca 0 si cadenaInvoca es mayor que cad ==0 si cadenaInvoca es igual a cad -1 si no encontrado e ndice de primera/ltima coincidencia de cad en la cadenaInvoca13

boolean equals(String cad) int lenght() int compareTo (String cad) int indexOf(String cad) int lastIndexOf(String cad)

Argumentos en la lnea de comandos

Definicin:

los argumentos al programa principal se pasan como cadenas de caracteres. Se cargan en run +Open Run dialog...+ Arguments + Programs arguments Se cargan en una matriz de cadenas de caracteres El primer ndice ser 0 y el ltimo nos lo devolver el atributo lenght aplicado sobre args[]

Ver argmain14

No hay cosa, por fcil que sea, que no la haga difcil la desgana Jaume Vicens Vives

15