Esercizio - Introduzione ai concetti di base delle matrici

Completato

Le matrici possono essere usate per archiviare più valori dello stesso tipo in una singola variabile. I valori archiviati in una matrice sono in genere correlati. Ad esempio, un elenco di nomi di studenti potrebbe essere archiviato in una matrice di stringhe denominata students.

Il tuo lavoro nel reparto di sicurezza è incentrato sulla ricerca di un modello per gli ordini fraudolenti. Si vuole che il codice esamini gli ordini dei clienti precedenti e identifichi i marcatori associati agli ordini fraudolenti. L'azienda spera che questi marcatori possano essere usati per identificare potenziali ordini di acquisto fraudolenti in futuro prima che vengano elaborati. Dato che non sempre è nota in anticipo la quantità di ordini che sarà necessario esaminare, non è possibile creare singole variabili in cui inserire ogni ID di ordine. Come è possibile creare una struttura di dati in grado di contenere più valori correlati?

In questo esercizio si usano matrici per archiviare e analizzare una sequenza di ID di ordine.

Che cos'è una matrice?

Una matrice è una sequenza di singoli elementi dati accessibili tramite un singolo nome di variabile. Per accedere a ogni elemento di una matrice, si usa un indice numerico in base zero. Come si vedrà, le matrici consentono di raccogliere insieme dati simili che condividono uno scopo o caratteristiche comuni in una singola struttura di dati per semplificare l'elaborazione.

Dichiarazione di matrici e accesso agli elementi della matrice

Una matrice è un tipo speciale di variabile che può contenere più valori dello stesso tipo di dati. La sintassi di dichiarazione è leggermente diversa perché è necessario specificare sia il tipo di dati che la dimensione della matrice.

Preparare l'ambiente di scrittura del codice

Questo modulo include attività che illustrano il processo di compilazione ed esecuzione del codice di esempio. È consigliabile completare queste attività usando Visual Studio Code come ambiente di sviluppo. L'uso di Visual Studio Code per queste attività consente di acquisire familiarità nella scrittura e nell'esecuzione del codice in un ambiente di sviluppo usato da professionisti di tutto il mondo.

  1. Aprire Visual Studio Code.

    Per aprire Visual Studio Code, è possibile usare il menu Start di Windows (o una risorsa equivalente per un altro sistema operativo).

  2. In Visual Studio Code selezionare Apri cartella dal menu File.

  3. Nella finestra di dialogo Apri cartella passare alla cartella Desktop di Windows.

    Se si dispone di un percorso di cartella in cui si conservano i progetti di codice, è possibile usare tale percorso. Per questo training, è importante che il percorso sia facile da individuare e da ricordare.

  4. Nella finestra di dialogo Apri cartella, selezionare Seleziona cartella.

    Se viene visualizzata una finestra di dialogo di sicurezza che chiede se si considerano attendibili gli autori, selezionare .

  5. Nel menu Terminale di Visual Studio Code, selezionare Nuovo terminale.

    Si noti che un prompt dei comandi nel pannello Terminale visualizza il percorso della cartella corrente. Ad esempio:

    C:\Users\someuser\Desktop>
    

    Nota

    Se si usa il proprio PC anziché un ambiente sandbox o ospitato e sono stati completati altri moduli di Microsoft Learn in questa serie C#, potrebbe essere già stata creata una cartella di progetto per gli esempi di codice. In tal caso, è possibile ignorare il passaggio successivo, usato per creare un'app console nella cartella TestProject.

  6. Al prompt dei comandi del terminale per creare una nuova applicazione console in una cartella specificata, digitare dotnet new console -o ./CsharpProjects/TestProject e quindi premere INVIO.

    Questo comando dell'interfaccia della riga di comando .NET usa un modello di programma .NET per creare un nuovo progetto di applicazione console C# nel percorso della cartella specificato. Il comando crea le cartelle CsharpProjects e TestProject e usa TestProject come nome del file .csproj.

  7. Nel pannello ESPLORA RISORSE espandere la cartella CsharpProjects.

    Verranno visualizzati la cartella TestProject e due file, un file di programma C# denominato Program.cs e un file di progetto C# denominato TestProject.csproj.

  8. Nel pannello ESPLORA RISORSE, per visualizzare il file di codice nel pannello Editor selezionare Program.cs.

  9. Eliminare le righe di codice esistenti.

    È possibile usare questo progetto console C# per creare, compilare ed eseguire esempi di codice durante questo modulo.

  10. Chiudere il pannello del terminale.

Dichiarare una nuova matrice

  1. Per dichiarare una nuova matrice di stringhe che può contenere tre elementi, immettere il codice seguente:

    string[] fraudulentOrderIDs = new string[3];
    
  2. Soffermarsi qualche istante a esaminare il codice.

    L'operatore new crea una nuova istanza di una matrice nella memoria del computer che può contenere tre valori stringa. Per altre informazioni sulla parola chiave new, vedere il modulo "Chiamare i metodi dalla libreria di classi .NET usando C#".

    Si noti che il primo set di parentesi quadre [] indica semplicemente al compilatore che la variabile denominata fraudulentOrderIDs è una matrice, ma il secondo set di parentesi quadre [3] indica il numero di elementi che può contenere la matrice.

    Nota

    Questo esempio dimostra come dichiarare una matrice di stringhe, ma è possibile creare matrici con ogni tipo di dati, incluse primitive come int e bool, nonché tipi di dati più complessi, come le classi. In questo esempio vengono usate per semplicità le stringhe per agevolare l'apprendimento nella fase iniziale.

Assegnare valori agli elementi di una matrice

A questo punto, è stata dichiarata una matrice di stringhe, ma ogni elemento della matrice è vuoto. Per accedere a un elemento di una matrice, è possibile usare un indice numerico in base zero racchiuso tra parentesi quadre. È possibile assegnare un valore a un elemento di matrice usando = come se fosse una variabile regolare.

  1. Per assegnare i valori degli ID di ordine alla matrice fraudulentOrderIDs, aggiornare il codice come indicato di seguito:

    string[] fraudulentOrderIDs = new string[3];
    
    fraudulentOrderIDs[0] = "A123";
    fraudulentOrderIDs[1] = "B456";
    fraudulentOrderIDs[2] = "C789";
    
  2. Soffermarsi qualche istante a esaminare il codice.

    Si noti che si usa il nome della matrice per accedere ai suoi elementi. È possibile accedere singolarmente a ogni elemento specificando il numero di indice in base zero all'interno di parentesi quadre.

    Poiché la matrice viene dichiarata come stringa, anche i valori assegnati devono essere stringhe. In questo scenario si assegnano gli ID degli ordini agli elementi della matrice.

Provare a usare un indice non compreso nei limiti della matrice

Anche se potrebbe non sembrare intuitivo inizialmente, è importante ricordare che il numero di elementi nella matrice viene dichiarato. Si accede tuttavia a ogni elemento della matrice a partire da zero. Per accedere al secondo elemento nella matrice, quindi, si usa l'indice 1.

È normale che i principianti dimentichino che le matrici sono in base zero e che tentino di accedere a un elemento della matrice che non esiste. Se si commette questo errore, si verifica un'eccezione di runtime che informa che si è tentato di accedere a un elemento non compreso entro i limiti della matrice.

Per causare intenzionalmente un errore nell'applicazione, tentare di accedere a un quarto elemento della matrice usando il valore di indice 3.

  1. Nella parte inferiore del file di codice immettere la riga di codice seguente:

    fraudulentOrderIDs[3] = "D000";
    
  2. Assicurarsi che il codice corrisponda a questo esempio:

    string[] fraudulentOrderIDs = new string[3];
    
    fraudulentOrderIDs[0] = "A123";
    fraudulentOrderIDs[1] = "B456";
    fraudulentOrderIDs[2] = "C789";
    fraudulentOrderIDs[3] = "D000";
    
  3. Nel menu File di Visual Studio Code selezionare Salva.

  4. Nel pannello ESPLORA RISORSE, per aprire un terminale nella posizione della cartella TestProject, fare clic con il pulsante destro del mouse su TestProject e quindi scegliere Apri in terminale integrato.

    Dovrebbe aprirsi un pannello del terminale con un prompt dei comandi che indica che il terminale è aperto nella posizione della cartella TestProject.

  5. Al prompt dei comandi del terminale, per compilare il codice, digitare dotnet build e quindi premere INVIO.

    Verrà visualizzato il messaggio seguente:

    Build succeeded.        
        0 Warning(s)        
        0 Error(s)
    
  6. Al prompt dei comandi del terminale, per eseguire il codice, digitare dotnet run e quindi premere INVIO.

    Quando si esegue l'app, viene visualizzato il seguente messaggio di errore di runtime:

    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 6
    

    Si notino le parti seguenti dell'errore:

    • Messaggio di errore: System.IndexOutOfRangeException: Index was outside the bounds of the array.
    • Posizione dell'errore: Program.cs:line 6
  7. Impostare come commento la riga che ha generato l'errore di runtime.

    // fraudulentOrderIDs[3] = "D000";
    

Si è visto come assegnare un valore a un elemento della matrice. Ora si vedrà come accedere a un valore archiviato in un elemento della matrice.

Recuperare i valori dagli elementi di una matrice

L'accesso al valore di un elemento della matrice funziona come l'assegnazione di un valore a un elemento della matrice. È sufficiente specificare l'indice dell'elemento di cui si vuole recuperare il valore.

  1. Per scrivere il valore di ogni ID di ordine fraudolento, aggiornare il codice come indicato di seguito:

    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]}");
    
  2. Nel menu File di Visual Studio Code selezionare Salva.

  3. Nel pannello ESPLORA RISORSE, per aprire un terminale nella posizione della cartella TestProject, fare clic con il pulsante destro del mouse su TestProject e quindi scegliere Apri in terminale integrato.

  4. Al prompt dei comandi del terminale digitare dotnet run e quindi premere INVIO.

    Verrà visualizzato il messaggio seguente:

    First: A123
    Second: B456
    Third: C789
    

Riassegnare il valore di una matrice

Gli elementi di una matrice sono come qualsiasi altro valore di variabile. È possibile assegnare, recuperare e riassegnare un valore a ogni elemento della matrice.

  1. Alla fine del file di codice, per riassegnare e quindi stampare il valore del primo elemento della matrice, immettere il codice seguente:

    fraudulentOrderIDs[0] = "F000";
    
    Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");
    
  2. Assicurarsi che il codice corrisponda all'esempio seguente:

    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]}");
    
  3. Nel menu File di Visual Studio Code selezionare Salva.

  4. Nel pannello ESPLORA RISORSE, per aprire un terminale nella posizione della cartella TestProject, fare clic con il pulsante destro del mouse su TestProject e quindi scegliere Apri in terminale integrato.

  5. Al prompt dei comandi del terminale digitare dotnet run e quindi premere INVIO.

    Verrà visualizzato il messaggio seguente:

    First: A123
    Second: B456
    Third: C789
    Reassign First: F000
    

Inizializzare una matrice

È possibile inizializzare una matrice durante la dichiarazione esattamente come si farebbe con una variabile regolare. Tuttavia, per inizializzare gli elementi della matrice, si usa una sintassi speciale con parentesi graffe.

  1. Impostare come commento le righe in cui si dichiara la variabile fraudulentOrderIDs.

    È possibile usare un commento su più righe (/* ... */) per impostare come commento la dichiarazione di fraudulentOrderIDs e le righe usate per assegnare valori agli elementi della matrice.

  2. Per dichiarare la matrice e inizializzare i valori in una singola istruzione, immettere il codice seguente:

    string[] fraudulentOrderIDs = { "A123", "B456", "C789" };
    
  3. Assicurarsi che il codice corrisponda all'esempio seguente:

    /*
    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]}");
    
  4. Soffermarsi qualche istante a esaminare l'istruzione di dichiarazione.

    Si noti che questa sintassi è sia compatta che facile da leggere. Quando si esegue l'applicazione, l'output non dovrebbe cambiare.

  5. Nel menu File di Visual Studio Code selezionare Salva.

  6. Nel pannello ESPLORA RISORSE, per aprire un terminale nella posizione della cartella TestProject, fare clic con il pulsante destro del mouse su TestProject e quindi scegliere Apri in terminale integrato.

  7. Al prompt dei comandi del terminale digitare dotnet run e quindi premere INVIO.

    Dovrebbe essere visualizzato lo stesso messaggio di prima:

    First: A123
    Second: B456
    Third: C789
    Reassign First: F000
    

Usare la proprietà Length di una matrice

A seconda della modalità di creazione della matrice, è possibile che non si conosca in anticipo il numero di elementi in essa contenuti. Per determinare le dimensioni di una matrice, è possibile usare la proprietà Length.

Nota

La proprietà Length di una matrice non è basata su zero.

  1. Alla fine del file di codice immettere il codice seguente per restituire il numero di ordini fraudolenti:

    Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");
    

    Questo codice usa la proprietà Length della matrice, un numero intero, per restituire il numero di elementi nella matrice fraudulentOrderIDs.

  2. Assicurarsi che il codice corrisponda a questo esempio:

    /*
    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.");
    
  3. Salvare le modifiche apportate al file Program.cs e quindi eseguire l'applicazione.

    Verrà visualizzato l'output seguente:

    First: A123
    Second: B456
    Third: C789
    Reassign First: F000
    There are 3 fraudulent orders to process.
    

Riepilogo

Ecco gli aspetti più importanti da ricordare quando si lavora con le matrici:

  • Una matrice è una variabile speciale che contiene una sequenza di elementi dati correlati.
  • È necessario memorizzare il formato di base di una dichiarazione di variabile di matrice.
  • Accedere a ogni elemento di una matrice per impostare o ottenere i valori usando un indice in base zero racchiuso tra parentesi quadre.
  • Se si tenta di accedere a un indice non compreso entro i limiti della matrice, viene restituita un'eccezione in fase di esecuzione.
  • La proprietà Length offre un modo programmatico per determinare il numero di elementi in una matrice.

Verificare le conoscenze

1.

Che cos'è una matrice?

2.

Quale delle istruzioni seguenti è un esempio corretto della creazione di una matrice e della sua inizializzazione?