Saltar al pie de página
Iron Academy Logo
Aprender C#
Aprender C#

Otras categorías

Comprender las matrices de C#

Layla Porter
21m 53s

Las matrices en C# son una estructura de datos fundamental que permite a los desarrolladores almacenar una colección de elementos del mismo tipo en ubicaciones de memoria contiguas. Las matrices pueden ser unidimensionales, multidimensionales o dentadas.

Este artículo sobre matrices en C# está inspirado en el vídeo educativo de Layla Porter, "C# para principiantes Parte 5 - Matrices y más bucles." En su vídeo, Layla se sumerge en los fundamentos de las matrices e introduce más técnicas de bucles en C#, dotando a los espectadores de habilidades esenciales para gestionar colecciones e iterar a través de los datos de forma eficaz.

Entender las matrices

Layla comienza explicando las matrices como colecciones de longitud fija en C#. A diferencia de otros lenguajes de programación, en los que las matrices pueden cambiar de tamaño dinámicamente, en C# son inmutables una vez creadas. Esto significa que su tamaño no puede alterarse después de la inicialización debido a las limitaciones de asignación de memoria.

Interacción sencilla con la consola: Cómo elegir tu queso favorito

En el siguiente código, a diferencia de las matrices, Layla (1:50) demuestra primero cómo se puede presentar a un usuario una lista de elementos entre los que puede elegir.

Console.WriteLine("Hello, what is your favourite cheese from this list?");
Console.WriteLine("1. Stilton");
Console.WriteLine("2. Cheddar");
Console.WriteLine("3. Pineapple");
Console.WriteLine("4. Brie");
var favouriteCheese = Console.ReadLine();
Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");
Console.WriteLine("Hello, what is your favourite cheese from this list?");
Console.WriteLine("1. Stilton");
Console.WriteLine("2. Cheddar");
Console.WriteLine("3. Pineapple");
Console.WriteLine("4. Brie");
var favouriteCheese = Console.ReadLine();
Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");

Este código primero usa Console.WriteLine para imprimir un mensaje en la consola que pregunta al usuario cuál es su queso favorito. Luego usa Console.WriteLine cuatro veces más para imprimir una lista de quesos en la consola. El código luego usa Console.ReadLine para leer la entrada del usuario desde la consola y la almacena en la variable favouriteCheese. Finalmente, el código usa Console.WriteLine nuevamente para imprimir un mensaje en la consola que incluye el queso favorito del usuario.

Layla, en el minuto 2:04, ejecuta este código para mostrar cómo funciona:

Understanding Csharp Arrays 1 related to Interacción sencilla con la consola: Cómo elegir tu queso favorito

Declarar una matriz - Inicialización de matrices

Para ilustrarlo, Layla empieza demostrando cómo declarar e inicializar una matriz de cadenas, en este caso, una lista de quesos que se presentaban inicialmente al usuario como un menú. Presenta la sintaxis para definir una matriz unidimensional (2:30) y rellenarla con valores iniciales mediante llaves (2:54).

string[] cheeses = { "Brie", "Cheddar", "Stilton", "Gouda" };
string[] cheeses = { "Brie", "Cheddar", "Stilton", "Gouda" };

Layla destaca la importancia de la indexación basada en cero en las matrices, en las que se accede al primer elemento de una matriz unidimensional utilizando el índice 0. A continuación, Layla muestra cómo utilizar la indexación basada en cero en las matrices. A continuación, Layla muestra cómo iterar sobre matrices utilizando un bucle for. Esta estructura de bucle es fundamental en programación, ya que permite la ejecución repetitiva de código basado en una condición especificada.

Implementación de bucles

Pasando a los bucles, Layla presenta el bucle for con sus tres componentes esenciales: inicializador, condición e iterador. Este bucle se utiliza para recorrer los elementos de una matriz en función de su longitud.

for (int i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine(cheeses[i]);
}
for (int i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine(cheeses[i]);
}

Ella, a las 4:44, enfatiza que cheeses.Length da el número de elementos en el arreglo, asegurando que el bucle itere precisamente a través de cada elemento. La variable i funciona como una variable de índice para iterar a través de índices. Esto imprime efectivamente elementos individuales del arreglo sin escribir el método Console.WriteLine múltiples veces como se muestra arriba sin acceder a los elementos del arreglo. Layla, en el minuto 6:17, ejecuta la aplicación para mostrar que la salida de este bucle for es exactamente la misma que en el ejemplo anterior:

Understanding Csharp Arrays 2 related to Implementación de bucles

Clasificación y mutabilidad

Layla explica el beneficio de ordenar, y luego a las 7:17, ella demuestra cómo ordenar un arreglo alfabéticamente usando el método Sort, advirtiendo que ordenar en realidad crea un nuevo arreglo en segundo plano debido a la inmutabilidad de los arreglos en C#. Este es un punto crucial para entender cómo la manipulación de datos afecta a la memoria y al rendimiento.

Array.Sort(cheeses);
Array.Sort(cheeses);

También muestra cómo se pueden modificar directamente elementos individuales dentro de la matriz sin crear una nueva matriz (8:10), ilustrando la mutabilidad dentro de la inmutabilidad. El índice del elemento a ser reemplazado se pasa dentro de corchetes después de la variable de arreglo cheeses:

cheeses[0] = "Roquefort";
cheeses[0] = "Roquefort";

Esto sustituirá el elemento de la matriz "Brie" en el índice 0 por el nuevo valor "Roquefort".

Actualización de la lista de quesos: Manejo de nuevas entradas (8:46)

Layla explica cómo podemos añadir valores a una lista existente. Esto implica tomar los valores existentes y el nuevo valor, crear un nuevo array que incluya ambos, y actualizar nuestra referencia para que apunte a este nuevo array. El siguiente código demuestra cómo funciona:

var favouriteCheese = Console.ReadLine();

bool containsFavourite = false;

foreach (var cheese in cheeses)
{
    if (favouriteCheese == cheese)
    {
        containsFavourite = true;
    }
}

if (!containsFavourite)
{
    cheeses = cheeses.Append(favouriteCheese).ToArray();
}
var favouriteCheese = Console.ReadLine();

bool containsFavourite = false;

foreach (var cheese in cheeses)
{
    if (favouriteCheese == cheese)
    {
        containsFavourite = true;
    }
}

if (!containsFavourite)
{
    cheeses = cheeses.Append(favouriteCheese).ToArray();
}

Este ejemplo muestra el proceso de una manera simple usando operaciones básicas de arreglo y un bucle foreach para verificar si el queso ya está en la lista. Si no lo está, Layla lo agrega (13:33) al arreglo usando el método Append de System.Linq.

Layla, a las 13:50, dice que el código da errores porque cheeses y el resultado de Append son tipos diferentes. Append devuelve un IEnumerable, una interfaz para colecciones. Para solucionar esto, convertimos el IEnumerable en un arreglo usando el método ToArray() y luego lo asignamos de nuevo a cheeses. Layla señala que la línea amarilla ondulada es una advertencia del compilador que indica posibles problemas, como que favouriteCheese sea nulo, pero estamos ignorando las verificaciones de seguridad en esta demostración.

Actualización e impresión de la lista de quesos

Layla explica que, una vez que hemos añadido un nuevo elemento a nuestra matriz, debemos imprimir la lista actualizada en la pantalla. Para lograr esto, usamos un bucle for, imprimiendo cada elemento junto con su índice para mostrar que el arreglo ahora contiene más elementos.

Console.WriteLine("The new list:");

for (var i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine(i + " " + cheeses[i]);
}

Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");
Console.WriteLine("The new list:");

for (var i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine(i + " " + cheeses[i]);
}

Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");

Demuestra la naturaleza dinámica de las matrices en C#, mostrando cómo añadir nuevos elementos y verificar la actualización imprimiendo el contenido de la matriz.

A continuación, Layla ejecuta la aplicación para mostrar el queso recién añadido (15:19):

Understanding Csharp Arrays 3 related to Actualización e impresión de la lista de quesos

Mejorar con matrices de objetos

Para ampliar la comprensión, Layla presenta arreglos de objetos creando una clase Cheese con propiedades para Name y Strength (16:14). Luego reemplaza la lista de cadenas para crear un arreglo de objetos Cheese y demuestra cómo acceder a las propiedades dentro de los objetos durante la iteración (17:46).

class Cheese
{
    public string Name { get; set; }
    public int Strength { get; set; }

    public Cheese(string name, int strength)
    {
        Name = name;
        Strength = strength;
    }
}

Cheese[] cheeses = new Cheese[]
{
    new Cheese("Stilton", 3),
    new Cheese("Cheddar", 2),
    new Cheese("Pineapple", 1),
    new Cheese("Brie", 2)
};

cheeses[0] = new Cheese("Roquefort", 4);
class Cheese
{
    public string Name { get; set; }
    public int Strength { get; set; }

    public Cheese(string name, int strength)
    {
        Name = name;
        Strength = strength;
    }
}

Cheese[] cheeses = new Cheese[]
{
    new Cheese("Stilton", 3),
    new Cheese("Cheddar", 2),
    new Cheese("Pineapple", 1),
    new Cheese("Brie", 2)
};

cheeses[0] = new Cheese("Roquefort", 4);

Este segmento proporciona una comprensión básica de cómo las matrices pueden encapsular estructuras de datos complejas, ofreciendo flexibilidad y potencia en la programación.

Utilización del objeto Cheese en bucles

Layla muestra ahora cómo imprimir en pantalla todos los elementos de la lista actualizada. En este escenario, cada queso se representa como un objeto con propiedades Name y Strength. El bucle for itera a través de este arreglo de objetos Cheese donde cada iteración maneja directamente un solo elemento del arreglo.

for (int i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine($"{cheeses[i].Name}, Strength: {cheeses[i].Strength}");
}
for (int i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine($"{cheeses[i].Name}, Strength: {cheeses[i].Strength}");
}

Este bucle simplifica el acceso a las propiedades de los objetos Cheese almacenados en el arreglo cheeses. Layla, a las 20:34, ejecuta el programa y el resultado es el siguiente:

Understanding Csharp Arrays 4 related to Utilización del objeto Cheese en bucles

Conclusión

En conclusión, el tutorial de Layla Porter sobre arrays y bucles en C# proporciona una base sólida para que los principiantes comprendan estos conceptos esenciales. Al dominar las matrices y varias construcciones de bucles, los aspirantes a desarrolladores de C# pueden manipular eficazmente las estructuras de datos e iterar a través de colecciones en sus programas. Comprender estos fundamentos es crucial para crear aplicaciones más complejas y explorar otros aspectos de la programación en C#.

Siguiendo los ejemplos y explicaciones de Layla, los principiantes pueden ganar confianza en el uso eficaz de matrices y bucles en sus propios proyectos de C#. Para profundizar en las colecciones de C# y en las matrices bidimensionales y dentadas avanzadas, se anima a los alumnos a explorar los tutoriales y ejercicios prácticos posteriores.

Hero Worlddot related to Comprender las matrices de C#
Hero Affiliate related to Comprender las matrices de C#

Gana más compartiendo lo que te gusta

¿Creas contenidos para desarrolladores que trabajan con .NET, C#, Java, Python o Node.js? ¡Convierte tu experiencia en un ingreso extra!

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame