lunes, 30 de diciembre de 2013

Tutorial Java en Linux Basico 3

Vectores y matrices

En java podemos definir arrays igual que en otros lenguajes de programación,los mas sencillos son los vectores,arrays unidimensionales. Un arreglo sea de una dimensión o de dos o mas es una agrupación de valores del el mismo tipo(en Java).

Un array lo usamos para agrupar datos relacionados,no necesariamente relacionados pero es para lo que se usaría comúnmente,un array se define como un tipo de dato solo que lo que lo diferencia es que lo definimos junto con una pareja de corchetes ,por ejemplo un array de strings de una dimensión(vector) con 6 elementos:

String [] arrayS;

o

String arrayS [];

Un vector se crea como un objeto,con la palabra new pero se le pasa el numero de elementos que vamos a crear dentro de otros corchetes por ejemplo, 5 palabras:

arrayS = new String[5];

 Luego podemos definir cada valor comenzando desde 0:

arrayS[0] = "Palabra1";arrayS[1] = "Palabra2";...
También podemos hacerlo mas sencillo:

String arrayS []  = new String[5];
Bueno eso es el estilo de definición solamente,pero también contamos con la definición al mismo tiempo,para hacer esto usamos una pareja de  ({}),y no necesitamos decir el numero de elementos,esto se hace automático por el sistema(compilador):

String [] arrayS = {"Palabra1","Palabra2","..."};

Como decía en el tutorial anterior los vectores se pasan por referencia,así que si le pasamos un valor a una función puede modificar el valor:


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
 * Archivo Ejemplo.java
 * Ejecuta : javac Ejemplo.java && java Ejemplo
 * @author Atheyus
 *
 */

public class Ejemplo {
	
	public static void main(String[] args) {
		String [] arrayS = {"Palabra1","Palabra2","..."};
		System.out.println("Valor 1 antes de la funcion : "+arrayS[1]); // Vale 10
		cambiar(arrayS);
		System.out.println("Valor 1 despues de la funcion : "+arrayS[1]); // Vale 10

	}
	
	private static void cambiar(String [] x) {
		System.out.println("Valor 1 en la funcion antes del cambio : "+x[1]); // Vale 10
		x[1] = "Cambio";
	}

}


Para los arrays tenemos varias funciones,algunas que se heredan de un nivel mas alto,la mas importante(que no es una funcion):

length

Que devuelve el numero de elementos del array:

Una función para recorrer los valores de un vector seria esta:


1
2
3
4
5
6
private static void recorre(String [] x) {
	for (int i = 0;i < (x.length);i++ ){
		System.out.println("Numero "+i+" :"+x[i]);
	}
        System.out.println("Ultimo valor :"+x[x.length-1]); // Para obtener el ultimo valor se usa esta solucion
}


Los vectores pueden ser de cualquier dato,siempre y cuando sea el mismo tipo.

Matrices

Una matriz es un array bidimensional,el cual se define igual que un vector pero con el doble de corchetes,podemos decir que es un vector de vectores:

Para no complicar mucho vamos a crear un valor de dos filas(primera dimension) y dos columnas
(segunda dimensión):


1
2
3
4
5
String[][] matrizS = new String[2][2];
matrizS[0][0] = "Palabra uno fila 1";
matrizS[0][1] = "Palabra dos fila 1";
matrizS[1][0] = "Palabra uno fila 2";
matrizS[1][1] = "Palabra dos fila 2";


Eso es todo,ahora podemos acceder a sus valores,solamente que hay que tratar la primera dimencion como un vector no como un valor en si:

Si quisiéramos saber el numero de elementos de la primera fila haríamos esto:

matrizS[0].length();

También podemos usar una definición,de una sola linea,solo que debemos subir un nivel en ({}):


1
2
String [][] matrizS = {{"Palabra uno fila 1","Palabra dos fila 1"},
{"Palabra uno fila 2","Palabra dos fila 2"}};

Como lo consultamos?

Fácil,el algoritmo que yo uso(que aprendí en C) lo usamos creando un bucle anidado en cada nivel es una dimensión,esto es bueno porque he visto arrays de mas de tres dimensiones:

Solución:


1
 2
 3
 4
 5
 6
 7
 8
 9
10
private static void recorre(String[][] x) {

	for (int i = 0; i < x.length; i++) {
		int columnas = x[i].length;
		System.out.println("Fila : "+(i+1));
		for (int o = 0; o < columnas; o++) {
			System.out.println("Valor : "+x[i][o]);
		}
	}
}



Bien,como dije arriba los arrays tienen funciones pero estas son inútiles a excepción de length que no es una función si no que es una variable,pero Java nos ofrece una biblioteca muy buena para usar algunas funciones sobre nuestros arrays de una dimensión:

Primero debemos importar:

import java.util.Arrays;


Para ordenar un vector alfabéticamente o en orden asendente(numeros):

Arrays.sort(vector);
Como dije los valores de los vectores se pasan por referencia,por lo que no hay porque hacer esto:

ejem = Arrays.sort(ejem); // no
sort también tiene constructores mas avanzados,los veremos en su momento.

Arrays.toString(vector)

Esa función devuelve una String que representa el vector.

Arrays.equals(vector1,vector2)

Esa función devuelve un boolean para saber si dos vectores son iguales.

 De momento es todo, existen algunas cosas un poco mas avanzadas y utiles como son los diccionarios y las listas ademas de las funciones avanzadas de la clase Arrays,pero lo veremos en su momento :D.

Codigo completo: Vectors y Matrices

No hay comentarios.:

Publicar un comentario

Los comentarios serán revisados antes de ser publicados.