Esercizio - Formattare l'output usando sequenze di caratteri di escape

Completato

In questo esercizio si modificherà l'output della console dell'esercizio precedente per ottenere il formato di report specificato dal docente.

Formattare l'output della console

In questa attività si aggiornerà il codice per applicare i ritocchi finali all'output segnalato. Si inizierà aggiungendo una riga di intestazione che include le etichette di colonna specificate dal docente. Successivamente, si useranno sequenze di escape dei caratteri per aggiungere ulteriore riempimento tra le colonne di informazioni.

  1. Nell'editor .NET individuare le istruzioni Console.WriteLine() usate per visualizzare il punteggio corrente della classe e il voto in lettere di ogni studente.

  2. Creare una riga di codice vuota sopra le istruzioni Console.WriteLine().

  3. Nella riga di codice vuota creata, per aggiungere un'intestazione per i voti degli studenti, immettere il codice seguente:

    Console.WriteLine("Student Grade\n");
    

    Si noti che si sta includendo \n alla fine del testo. Nel modulo "Eseguire la formattazione di stringa di base con C#" si è appreso che la sequenza di caratteri di escape \n causerà la creazione di una nuova riga. La posizione della sequenza di escape è importante. In questo caso, l’oggetto \n si trova alla fine delle informazioni che si desidera scrivere nella console, quindi la nuova riga verrà aggiunta dopo la visualizzazione di "Student Grade".

  4. Per formattare l'output come colonne di testo allineate, sostituire gli spazi tra le parole con la sequenza di escape \t come indicato di seguito:

    Console.WriteLine("Student\tGrade\n");
    Console.WriteLine("Sophia:\t" + sophiaScore + "\tA");
    Console.WriteLine("Nicolas:\t" + nicolasScore + "\tB");
    Console.WriteLine("Zahirah:\t" + zahirahScore + "\tB");
    Console.WriteLine("Jeong:\t" + jeongScore + "\tA");
    

    La sequenza di escape \t inserirà una tabulazione tra gli elementi di testo. L'aggiunta delle interruzioni di tabulazione dovrebbe generare colonne di informazioni allineate a sinistra.

  5. Per visualizzare i risultati degli aggiornamenti, selezionare Esegui.

  6. Confrontare l'output dell'applicazione con l'output seguente:

    Student	Grade
    
    Sophia: 94.6    A
    Nicolas:    83.6    B
    Zahirah:    83.4    B
    Jeong:  95.4    A
    
  7. Si noti che, nonostante l'uso di una scheda anziché di uno spazio, alcune righe non presentano ancora molto spazio vuoto tra il nome dello studente e il relativo punteggio numerico.

    Questa differenza è dovuta al modo in cui viene applicata la spaziatura delle tabulazioni. Le posizioni delle interruzioni di tabulazione vengono impostate a intervalli di quattro caratteri e ogni tabulazione passa alla posizione di arresto della tabulazione successiva. Se si dispone di una stringa di cinque caratteri seguita da una sequenza di escape di tabulazione, tale sequenza avanzerà nella posizione a otto caratteri, riempiendo in tal modo lo spazio con i caratteri di spazio per creare spazi vuoti nell'output. Tuttavia, è possibile avanzare nella stessa posizione se si dispone di una stringa di sette caratteri seguita da una sequenza di escape di tabulazione. Ciò rende le sequenze di escape di tabulazione più evidenti quando si verificano più lontano dalla posizione successiva di interruzione di tabulazione.

  8. Per rendere più evidente lo spazio vuoto tra le prime due colonne, aggiungere un'altra \t dopo i due nomi degli studenti più brevi come indicato di seguito:

    Console.WriteLine("Student\t\tGrade\n");
    Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA");
    Console.WriteLine("Nicolas:\t" + nicolasScore + "\tB");
    Console.WriteLine("Zahirah:\t" + zahirahScore + "\tB");
    Console.WriteLine("Jeong:\t\t" + jeongScore + "\tA");
    

Controllare il lavoro svolto

In questa attività si eseguirà il codice e si verificherà che l'output sia corretto.

  1. Confrontare il codice con quanto segue:

    int currentAssignments = 5;
    
    int sophia1 = 93;
    int sophia2 = 87;
    int sophia3 = 98;
    int sophia4 = 95;
    int sophia5 = 100;
    
    int nicolas1 = 80;
    int nicolas2 = 83;
    int nicolas3 = 82;
    int nicolas4 = 88;
    int nicolas5 = 85;
    
    int zahirah1 = 84;
    int zahirah2 = 96;
    int zahirah3 = 73;
    int zahirah4 = 85;
    int zahirah5 = 79;
    
    int jeong1 = 90;
    int jeong2 = 92;
    int jeong3 = 98;
    int jeong4 = 100;
    int jeong5 = 97;
    
    int sophiaSum = sophia1 + sophia2 + sophia3 + sophia4 + sophia5;
    int nicolasSum = nicolas1 + nicolas2 + nicolas3 + nicolas4 + nicolas5;
    int zahirahSum = zahirah1 + zahirah2 + zahirah3 + zahirah4 + zahirah5;
    int jeongSum = jeong1 + jeong2 + jeong3 + jeong4 + jeong5;
    
    decimal sophiaScore = (decimal) sophiaSum / currentAssignments;
    decimal nicolasScore = (decimal) nicolasSum / currentAssignments;
    decimal zahirahScore = (decimal) zahirahSum / currentAssignments;
    decimal jeongScore = (decimal) jeongSum / currentAssignments;
    
    Console.WriteLine("Student\t\tGrade\n");
    Console.WriteLine("Sophia:\t\t" + sophiaScore + "\tA");
    Console.WriteLine("Nicolas:\t" + nicolasScore + "\tB");
    Console.WriteLine("Zahirah:\t" + zahirahScore + "\tB");
    Console.WriteLine("Jeong:\t\t" + jeongScore + "\tA");
    
  2. Per eseguire il codice e visualizzare l'output formattato, selezionare Esegui.

  3. Per verificare che il codice funzioni come previsto, confrontare l'output dell'applicazione con l'output seguente:

    Student         Grade
    
    Sophia:         94.6    A
    Nicolas:        83.6    B
    Zahirah:        83.4    B
    Jeong:          95.4    A
    

    Se il codice visualizza risultati diversi, è necessario esaminarlo per trovare l'errore e apportare aggiornamenti. Eseguire di nuovo il codice per verificare se il problema è stato risolto. Continuare ad aggiornare ed eseguire il codice fino a quando non produce i risultati previsti.