Ejercicio: Introducción a los fundamentos de las matrices
- 19 minutos
Se pueden usar matrices para almacenar varios valores del mismo tipo en una sola variable. Los valores almacenados en una matriz generalmente están relacionados. Por ejemplo, una lista de nombres de alumnos podría almacenarse en una matriz de cadenas llamada students.
Su trabajo en el departamento de seguridad se centra en encontrar un patrón para los pedidos fraudulentos. Quiere que el código revise los pedidos anteriores de los clientes e identifique los marcadores asociados a pedidos fraudulentos. Su empresa espera que los marcadores se puedan usar para identificar posibles pedidos de compra fraudulentos en el futuro antes de que se procesen. Como no siempre se sabe de antemano cuántos pedidos hay que revisar, no puede crear variables individuales que contengan cada identificador de pedido. ¿Cómo se puede crear una estructura de datos que contenga varios valores relacionados?
En este ejercicio, usará matrices para almacenar y analizar una colección de id. de pedido.
¿Qué es una matriz?
Una matriz es una colección de elementos de datos individuales a los que se puede acceder a través de un nombre de variable único. Se usa un índice numérico de base cero para acceder a cada elemento de una matriz. Las matrices permiten crear una colección de valores de datos que comparten un propósito o unas características comunes bajo un único nombre de variable para facilitar su procesamiento.
Declaración de matrices y acceso a elementos de matriz
Una matriz es un tipo especial de variable que puede contener varios valores del mismo tipo de datos. La sintaxis de declaración es ligeramente diferente para una matriz porque tiene que especificar tanto el tipo de datos como el tamaño de la matriz.
Preparación del entorno de creación de código
Este módulo incluye actividades que le guiarán por el proceso de compilación y ejecución de código de ejemplo. Se recomienda completar estas actividades con Visual Studio Code como entorno de desarrollo. El uso de Visual Studio Code para estas actividades le ayuda a familiarizarse con la escritura y la ejecución de código en un entorno de desarrollo que usan profesionales de todo el mundo.
Abra Visual Studio Code.
Puede usar el menú Inicio de Windows (o un recurso equivalente para otro sistema operativo) para abrir Visual Studio Code.
En Visual Studio Code, en el menú Archivo, seleccione Abrir archivo.
En el cuadro de diálogo Abrir carpeta, vaya a la carpeta Escritorio de Windows.
Si tiene una ubicación de carpeta diferente donde guarda los proyectos de código, úsela. Para este curso, lo importante es tener una ubicación fácil de encontrar y recordar.
En el cuadro de diálogo Abrir carpeta, elija Seleccionar carpeta.
Si ve un cuadro de diálogo de seguridad en el que se le pregunta si confía en los autores, seleccione Sí.
En Visual Studio Code, en el menú Terminal, seleccione Nuevo terminal.
Observe que un símbolo del sistema en el panel Terminal muestra la ruta de acceso de la carpeta actual. Por ejemplo:
C:\Users\someuser\Desktop>Nota
Si está trabajando en su propio equipo, en lugar de en un entorno aislado u hospedado, y ha realizado otros módulos de Microsoft Learn de esta serie de C#, es posible que ya haya creado una carpeta de proyecto para ejemplos de código. Si ese es el caso, puede saltar al paso siguiente, que se usa para crear una aplicación de consola en la carpeta TestProject.
En la terminal, para crear una nueva aplicación de consola en una carpeta especificada, escriba el siguiente comando:
dotnet new console -o ./CsharpProjects/TestProjectEste comando de la CLI de .NET usa una plantilla de programa de .NET para crear un nuevo proyecto de aplicación de consola de C# en la ubicación de carpeta especificada. El comando crea las carpetas CsharpProjects y TestProject y usa TestProject como nombre del archivo
.csproj.Si se muestra un mensaje que indica que los archivos ya existen, continúe con los pasos siguientes. Reutilizará los archivos de proyecto existentes.
En la vista EXPLORER, expanda la carpeta CsharpProjects .
Debería ver la carpeta TestProject y dos archivos, un archivo de programa de C# denominado Program.cs y un archivo de proyecto de C# denominado TestProject.csproj.
En Visual Studio Code, en el menú Archivo, seleccione Abrir archivo.
En el cuadro de diálogo Abrir carpeta , seleccione la carpeta CsharpProjects y, a continuación, seleccione Seleccionar carpeta.
En la vista EXPLORER, expanda la carpeta TestProject y, a continuación, seleccione Program.cs.
Elimine las líneas de código existentes.
Usará este proyecto de consola de C# para crear, compilar y ejecutar ejemplos de código durante este módulo.
Cierre el panel del terminal.
Declaración de una nueva matriz
Para declarar una nueva matriz de cadenas que contengan tres elementos, escriba el código siguiente:
string[] fraudulentOrderIDs = new string[3];Dedique un minuto a examinar el código.
El operador
newcrea una nueva instancia de una matriz en la memoria del equipo que puede contener tres valores de cadena. Para obtener más información sobre la palabra clavenew, consulte el módulo “Llamada a métodos de la biblioteca de clases .NET mediante C#”.Observe que el primer conjunto de corchetes
[]simplemente indica al compilador que la variable denominadafraudulentOrderIDsserá una matriz, pero el segundo conjunto de corchetes[3]indica el número de elementos que puede contener la matriz.Nota
Aunque en este ejemplo se muestra cómo declarar una matriz de cadenas, puede crear una matriz de todos los tipos de datos, incluidos los tipos primitivos como
intybool, así como tipos de datos más complejos, como las clases. En este ejemplo se usa la simplicidad de las cadenas para minimizar el número de ideas nuevas que debe comprender al principio.
Asignación de valores a los elementos de una matriz
En este punto, ha declarado una matriz de cadenas, pero todos los elementos de la matriz están vacíos. Para acceder a un elemento de una matriz, se usa un índice numérico de base cero entre corchetes. Para asignar un valor a un elemento de la matriz, use el valor = como si fuera una variable normal.
Para asignar valores de identificación de pedidos a la matriz
fraudulentOrderIDs, actualice el código de la siguiente manera:string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789";Dedique un minuto a examinar el código.
Observe que usa el nombre de la matriz para acceder a los elementos de la matriz. A cada elemento se acede individualmente especificando el número de índice de base cero entre corchetes.
Puesto que la matriz se declara como una cadena, los valores que asigne también deben ser cadenas. En este escenario, va a asignar identificadores de pedido a los elementos de la matriz.
Intento de usar un índice que está fuera de los límites de la matriz
Podría no parecer intuitivo al principio, pero es importante recordar que estamos declarando el número de elementos de la matriz. Sin embargo, se accede a los elementos de la matriz a partir de cero. Por lo tanto, para acceder al segundo elemento de la matriz, se usa el índice 1.
Es habitual que los principiantes olviden que las matrices son de base cero e intenten acceder a un elemento de la matriz que no existe. Si comete este error, se produce una excepción en tiempo de ejecución por haber intentado obtener acceso a un elemento que está fuera del límite de la matriz.
Para "interrumpir" intencionadamente la aplicación, intente acceder a un cuarto elemento de la matriz mediante el valor de índice de 3.
En la parte inferior del archivo de código, escriba la siguiente línea de código:
fraudulentOrderIDs[3] = "D000";Asegúrese de que el código coincide con este ejemplo:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; fraudulentOrderIDs[3] = "D000";En el menú Archivo Visual Studio Code, seleccione Guardar.
En la vista EXPLORER, para abrir un terminal en la ubicación de la carpeta TestProject, haga clic con el botón derecho en TestProject y, a continuación, seleccione Abrir en terminal integrado.
Se abrirá un panel de terminal que debe incluir un símbolo del sistema que muestra que el terminal está abierto en la ubicación de carpeta TestProject.
En el símbolo del sistema del terminal, para compilar el código, escriba
dotnet buildy presione Entrar.Verá el mensaje siguiente:
Build succeeded. 0 Warning(s) 0 Error(s)En el símbolo del sistema del terminal, para ejecutar el código, escriba
dotnet runy presione Entrar.Al ejecutar la aplicación, recibirá el siguiente mensaje de error en tiempo de ejecución:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array. at Program.<Main>$(String[] args) in C:\Users\someuser\Desktop\CsharpProjects\TestProject\Program.cs:line 6Observe las siguientes partes del error:
- Mensaje de error:
System.IndexOutOfRangeException: Index was outside the bounds of the array. - Ubicación del error:
Program.cs:line 6
- Mensaje de error:
Convierta en comentario la línea que generó el error en tiempo de ejecución.
// fraudulentOrderIDs[3] = "D000";
Ha visto cómo asignar un valor a un elemento de la matriz. Ahora verá cómo obtener acceso a un valor que se almacena en un elemento de la matriz.
Recuperación de valores de elementos de una matriz
Acceder al valor de un elemento de la matriz es lo mismo que asignar un valor a un elemento de la matriz. Solo tiene que especificar el índice del elemento cuyo valor quiere recuperar.
Para escribir el valor de cada identificador de pedido fraudulento, actualice el código de la siguiente manera:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}");En el menú Archivo Visual Studio Code, seleccione Guardar.
En la vista EXPLORER, para abrir un terminal en la ubicación de la carpeta TestProject, haga clic con el botón derecho en TestProject y, a continuación, seleccione Abrir en terminal integrado.
En el símbolo del sistema del terminal, escriba
dotnet runy presione Entrar.Verá el mensaje siguiente:
First: A123 Second: B456 Third: C789
Reasignación del valor de una matriz
Los elementos de una matriz son como cualquier otro valor de variable. Puede asignar, recuperar y reasignar un valor a cada elemento de la matriz.
Al final del archivo de código, para reasignar e imprimir el valor del primer elemento de matriz, escriba el código siguiente:
fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Asegúrese de que el código coincide con el ejemplo siguiente:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");En el menú Archivo Visual Studio Code, seleccione Guardar.
En la vista EXPLORER, para abrir un terminal en la ubicación de la carpeta TestProject, haga clic con el botón derecho en TestProject y, a continuación, seleccione Abrir en terminal integrado.
En el símbolo del sistema del terminal, escriba
dotnet runy presione Entrar.Verá el mensaje siguiente:
First: A123 Second: B456 Third: C789 Reassign First: F000
Inicialización de una matriz
Puede inicializar una matriz durante la declaración igual que haría con una variable normal.
Convierta en comentario las líneas en las que declara la variable
fraudulentOrderIDs.Puede usar un comentario de varias líneas (
/* ... */) para convertir en comentario la declaración defraudulentOrderIDsy las líneas usadas para asignar valores a los elementos de la matriz.Para declarar la matriz e inicializar los valores en una sola instrucción, escriba el código siguiente:
string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ];Este ejemplo usa la sintaxis de Expresión de colección, que se introdujo en C# 12.
También puede ver una sintaxis anterior que se usa para inicializar una matriz.
string[] fraudulentOrderIDs = { "A123", "B456", "C789" };Observe que esta sintaxis más antigua utiliza llaves
{}para delimitar los valores de la matriz. Ambas sintaxis son válidas.Nota
Puede que vea una combinación de la sintaxis antigua y la sintaxis de Expresión de colección usada en este entrenamiento.
Asegúrese de que el código coincide con el ejemplo siguiente:
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Dedique un minuto a examinar la instrucción de declaración.
Observe que esta sintaxis es compacta y fácil de leer. Al ejecutar la aplicación, no habrá ningún cambio en la salida.
En el menú Archivo Visual Studio Code, seleccione Guardar.
En la vista EXPLORER, para abrir un terminal en la ubicación de la carpeta TestProject, haga clic con el botón derecho en TestProject y, a continuación, seleccione Abrir en terminal integrado.
En el símbolo del sistema del terminal, escriba
dotnet runy presione Entrar.Verá el mismo mensaje que antes:
First: A123 Second: B456 Third: C789 Reassign First: F000
Uso de la propiedad Length de una matriz
En función de cómo se cree la matriz, es posible que no sepa de antemano cuántos elementos contiene. Para determinar el tamaño de una matriz, puede usar la propiedad Length.
Nota
La propiedad Length de una matriz no se basa en cero.
Al final del archivo de código, para notificar el número de pedidos fraudulentos, escriba el código siguiente:
Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");Este código usa la propiedad
Lengthde la matriz, un entero, para devolver el número de elementos de la matrizfraudulentOrderIDs.Asegúrese de que el código coincide con este ejemplo:
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");Guarde los cambios en el archivo Program.cs y, a continuación, ejecute la aplicación.
Debería ver la siguiente salida:
First: A123 Second: B456 Third: C789 Reassign First: F000 There are 3 fraudulent orders to process.
Resumen
Estos son los aspectos más importantes que debe recordar al trabajar con matrices:
- Una matriz es una variable especial que contiene una colección de elementos de datos relacionados.
- Debe memorizar el formato básico de una declaración de variable de matriz.
- Acceda a cada elemento de una matriz para establecer u obtener sus valores mediante el uso de un índice de base cero entre corchetes.
- Si intenta acceder a un índice fuera del límite de la matriz, recibirá una excepción en tiempo de ejecución.
- La propiedad
Lengthproporciona una manera de determinar mediante programación el número de elementos de una matriz.