TOC

This article has been localized into Spanish by the community.

Collections / Colecciones:

Matrices (Arrays)

Los Array (matrices o también traducidos como arreglos) funcionan como colecciones de elementos, por ejemplo, strings. Puede usarlos para reunir elementos en un solo grupo y realizar varias operaciones en ellos, p. e. ordenar. Además de eso, es posible aceptar un rango de elementos en lugar de solo uno. Este hecho por sí solo hace que sea importante saber un poco sobre los arrays.

Los Array se declaran como variables, con un conjunto de corchetes [] después del tipo de datos, como este:

string[] names;

Necesitas instanciar el array para usarlo, ejemplo:

string[] names = new string[2];

El número [2] es el tamaño del array, es decir, el número de elementos que puedes meter. Meter elementos en el array es tan sencillo como:

names[0] = "John Doe";

¿Por qué 0? Como sucede muchas veces en el mundo de la programación, se empieza a contar desde 0 en lugar de 1. Por lo tanto, el primer elemento se indexa como 0, el siguiente como 1 y así sucesivamente. Hay que tenerlo en cuenta al llenar el array, pues llenar más de la cuenta producirá una excepción. Cuando observa el inicializador, configurando la matriz en un tamaño de 2, puede parecer natural colocar los elementos número 0, 1 y 2, pero este es un elemento de más. Si lo haces, se lanzará una excepción. Discutiremos las excepciones en un capítulo posterior.

Anteriormente, aprendimos sobre los bucles, y obviamente estos van muy bien con los array. La forma más común de obtener datos de un array es recorrerlo y realizar algún tipo de operación con cada valor. Usemos el anterior array, para hacer un ejemplo real:

using System;
using System.Collections;

namespace ConsoleApplication1
{
    class Program
    {
static void Main(string[] args)
{
    string[] names = new string[2];

    names[0] = "John Doe";
    names[1] = "Jane Doe";

    foreach(string s in names)
Console.WriteLine(s);

    Console.ReadLine();
}
    }
}

Usamos el bucle foreach, porque es el más fácil, pero por supuesto podríamos haber usado uno de los otros tipos de bucle. El bucle for también es bueno, por ejemplo, si necesita contar cada elemento, de esta manera:

for(int i = 0; i < names.Length; i++)
    Console.WriteLine("Item number " + i + ": " + names[i]);

En realidad es muy simple. Usamos la propiedad Length del array para decidir cuántas veces debe iterar el ciclo, y luego usamos el contador (i) para mostrar dónde estamos en el proceso, así como obtener el elemento del array. Al igual que usamos un número, un llamado indexador, para colocar elementos en la matriz, podemos usarlo para obtener un elemento específico nuevamente.

Se dijo anteriormente que podríamos usar un array para ordenar un rango de valores, y en realidad es muy fácil. La clase Array contiene un montón de métodos inteligentes para trabajar con matrices. Este ejemplo usará números en lugar de cadenas, solo para probar otra cosa, pero podría haber sido cadenas con la misma facilidad. Deseo mostrarle otra forma de completar una matriz, que es mucho más fácil si tiene un conjunto pequeño y predefinido de elementos que desea poner en su matriz. Démosle un vistazo:

int[] numbers = new int[5] { 4, 3, 8, 0, 5 };

Con una línea, hemos creado una matriz con un tamaño de 5, y la llenamos con 5 enteros. Al llenar la matriz de esta manera, obtienes una ventaja adicional, ya que el compilador verificará y se asegurará de no poner demasiados elementos en la matriz. Intente agregar un número más; verá que el compilador se queja al respecto.

En realidad, se puede hacer aún más corto, así:

int[] numbers = { 4, 3, 8, 0, 5 };

Esto es breve y no tiene que especificar un tamaño. Sin embargo, el primer enfoque puede ser más fácil de leer más adelante.

Intentemos ordenar la matriz: aquí hay un ejemplo completo:

using System;
using System.Collections;

namespace ConsoleApplication1
{
    class Program
    {
static void Main(string[] args)
{
    int[] numbers = { 4, 3, 8, 0, 5 };

    Array.Sort(numbers);

    foreach(int i in numbers)
Console.WriteLine(i);

    Console.ReadLine();
}
    }
}

Lo único realmente nuevo aquí es el comando Array.Sort. Puede tomar varios parámetros, para varios tipos de clasificación, pero en este caso, simplemente toma nuestra matriz. Como puede ver en el resultado, nuestra matriz ha sido ordenada. La clase Array también tiene otros métodos, por ejemplo, el método Reverse (). Puede buscarlo en la documentación para ver todas las características de la clase Array.

Las matrices que hemos usado hasta ahora solo han tenido una dimensión. Sin embargo, las matrices de C # pueden ser multidimensionales, a veces denominadas matrices en matrices. Las matrices multidimensionales vienen en dos sabores con C #: matrices rectangulares y matrices irregulares. La diferencia es que con las matrices rectangulares, todas las dimensiones tienen que ser del mismo tamaño, de ahí el nombre rectangular. Una matriz irregular puede tener dimensiones de varios tamaños. Las matrices multidimensionales son un tema pesado y un poco fuera del alcance de este tutorial.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!