Esercizio - Calcolare la media dei punteggi delle assegnazioni degli studenti
In questo esercizio si calcolerà e si archivierà la media dei punteggi di assegnazione di ogni studente. Poiché si conosce il numero di assegnazioni con punteggio per ogni studente, la media viene calcolata dividendo la somma dei punteggi di assegnazione in base al numero di assegnazioni. Per archiviare le medie, si userà il tipo di dati decimale.
Creare variabili in cui archiviare la media
In questa attività si creerà una variabile per ogni studente, che può essere usata per archiviare il punteggio medio per le assegnazioni classificate.
Nell'editor .NET individuare le istruzioni
Console.WriteLine()
usate per visualizzare i punteggi sommati di ogni studente.Creare una riga di codice vuota sopra le istruzioni
Console.WriteLine()
.Nella riga di codice vuota creata, per dichiarare le variabili decimali che verranno usate per i punteggi correnti degli studenti, immettere il codice seguente:
decimal sophiaScore; decimal nicolasScore; decimal zahirahScore; decimal jeongScore;
Si noti che si le variabili
decimal
vengono solo dichiarate e non inizializzate. È stato scelto il tipodecimal
perché per rappresentare un livello medio si vuole includere una posizione decimale che non sarebbe disponibile se si usasse un numero intero. In questo modo, puoi vedere se uno studente ha ottenuto un punteggio pari a 89,9 ed è progredito da B a A.Nell'esercizio precedente sono state inizializzate le variabili integer in modo da poterle usare immediatamente nell'output della console. In questo caso, queste variabili
decimal
verranno inizializzate nel passaggio successivo usando calcoli con i dati esistenti, a partire dal punteggio di Sophia.Per assegnare il punteggio corrente di Sophia nella classe al decimale
sophiaScore
, aggiornare la variabile con il codice seguente:decimal sophiaScore = sophiaSum / currentAssignments;
Per calcolare il punteggio corrente di uno studente per la classe, si divide la somma dei punteggi di assegnazione in base al numero totale di assegnazioni. Ogni studente della classe ha cinque assegnazioni, rappresentate dall'inizializzazione
currentAssignments
durante la configurazione.Per assegnare il resto dei punteggi degli studenti, immettere il codice seguente:
decimal nicolasScore = nicolasSum / currentAssignments; decimal zahirahScore = zahirahSum / currentAssignments; decimal jeongScore = jeongSum / currentAssignments;
In definitiva, si vogliono visualizzare i voti di ogni studente in questa applicazione. Nel passaggio successivo si modificherà il codice per visualizzare il punteggio di ogni studente anziché la somma dell'assegnazione.
Per visualizzare il punteggio corrente di ogni studente, sostituire le variabili sum nelle istruzioni di visualizzazione con le variabili di punteggio:
Console.WriteLine("Sophia: " + sophiaScore); Console.WriteLine("Nicolas: " + nicolasScore); Console.WriteLine("Zahirah: " + zahirahScore); Console.WriteLine("Jeong: " + jeongScore);
Prendere in considerazione l'approccio incrementale usato per sviluppare questa applicazione.
Suddividere un problema in parti più piccole è una competenza importante per gli sviluppatori. La compilazione del codice in modo incrementale e il controllo frequente del lavoro consentono di sviluppare rapidamente applicazioni affidabili. In questo caso, è possibile riprovare
Console.WriteLine()
per verificare che i calcoli siano corretti durante il completamento di ogni fase del processo.Per visualizzare i valori del voto corrente di ogni studente, selezionare Esegui.
Verrà visualizzato l'output seguente:
Sophia: 94 Nicolas: 83 Zahirah: 83 Jeong: 95
Si noti che i punteggi vengono visualizzati come numeri interi anziché decimali.
Quando si desidera che il risultato di un calcolo di divisione sia un valore decimale, il dividendo o il divisore deve essere di tipo decimale (o entrambi). Quando si usano variabili integer nel calcolo, è necessario applicare una tecnica nota come cast per "convertire" un numero intero in uno decimale.
Per il calcolo del punteggio, è possibile ottenere un risultato decimale eseguendo il cast della variabile sum o
currentAssignments
come tipo decimale. In questo caso, si eseguirà il cast della somma come decimale.Nelle operazioni di divisione, per eseguire il cast di una variabile integer come decimale, aggiornare il codice nel modo seguente:
decimal sophiaScore = (decimal) sophiaSum / currentAssignments; decimal nicolasScore = (decimal) nicolasSum / currentAssignments; decimal zahirahScore = (decimal) zahirahSum / currentAssignments; decimal jeongScore = (decimal) jeongSum / currentAssignments;
È sufficiente che il dividendo o il divisore sia un tipo decimale per la divisione per ottenere un valore decimale. In questo caso si esegue il cast solo della variabile sum usata come dividendo.
Esaminare la scala di gradazione seguente usata dall'insegnante per assegnare voti in lettera:
97 - 100 A+ 93 - 96 A 90 - 92 A- 87 - 89 B+ 83 - 86 B
Il passaggio successivo consiste nell'includere un voto in lettera per ogni studente in base al punteggio totale. L'aggiunta del grado di lettera all'output visualizzato sarà un processo manuale.
Per determinare il valore del voto corrente di ogni studente, selezionare Esegui.
Utilizzare il voto corrente per ogni studente per determinare il grado di lettera appropriato, arrotondando verso l'alto o verso il basso in base alle esigenze.
Per accodare il voto di lettera dopo il punteggio numerico di ogni studente, aggiornare il codice come segue:
Console.WriteLine("Sophia: " + sophiaScore + " A"); Console.WriteLine("Nicolas: " + nicolasScore + " B"); Console.WriteLine("Zahirah: " + zahirahScore + " B"); Console.WriteLine("Jeong: " + jeongScore + " A");
Controllare il lavoro svolto
In questa attività si eseguirà il codice e si verificherà che l'output sia corretto.
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("Sophia: " + sophiaScore + " A"); Console.WriteLine("Nicolas: " + nicolasScore + " B"); Console.WriteLine("Zahirah: " + zahirahScore + " B"); Console.WriteLine("Jeong: " + jeongScore + " A");
Per eseguire il codice e visualizzare i punteggi degli studenti con voti in lettera, selezionare Esegui.
Per verificare che il codice funzioni come previsto, confrontare l'output dell'applicazione con l'output seguente:
Sophia: 94.6 A Nicolas: 83.6 B Zahirah: 83.4 B Jeong: 95.4 A
Il codice dovrebbe ora visualizzare i punteggi degli studenti come valore decimale e dovrebbe essere visualizzato il voto in lettera assegnato.
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.
Importante
Assicurati di non eliminare il codice scritto finora. Questo codice verrà usato come base nell'esercizio successivo.