You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
6.3 KiB
118 lines
6.3 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "ffe366b2d1f037b99fbadbe1dc81083d",
|
|
"translation_date": "2025-10-22T23:21:05+00:00",
|
|
"source_file": "2-js-basics/3-making-decisions/assignment.md",
|
|
"language_code": "it"
|
|
}
|
|
-->
|
|
# Prendere Decisioni: Processore di Voti degli Studenti
|
|
|
|
## Obiettivi di Apprendimento
|
|
|
|
In questo esercizio, metterai in pratica i concetti di decision-making appresi in questa lezione creando un programma che elabora i voti degli studenti provenienti da diversi sistemi di valutazione. Utilizzerai istruzioni `if...else`, operatori di confronto e operatori logici per determinare quali studenti superano i loro corsi.
|
|
|
|
## La Sfida
|
|
|
|
Lavori per una scuola che si è recentemente fusa con un'altra istituzione. Ora devi elaborare i voti degli studenti provenienti da due sistemi di valutazione completamente diversi e determinare quali studenti stanno superando i corsi. Questa è un'ottima opportunità per esercitarti con la logica condizionale!
|
|
|
|
### Comprendere i Sistemi di Valutazione
|
|
|
|
#### Primo Sistema di Valutazione (Numerico)
|
|
- I voti sono espressi con numeri da 1 a 5
|
|
- **Voto sufficiente**: 3 e superiore (3, 4 o 5)
|
|
- **Voto insufficiente**: Inferiore a 3 (1 o 2)
|
|
|
|
#### Secondo Sistema di Valutazione (Lettere)
|
|
- I voti sono espressi con lettere: `A`, `A-`, `B`, `B-`, `C`, `C-`
|
|
- **Voti sufficienti**: `A`, `A-`, `B`, `B-`, `C`, `C-` (tutti i voti elencati sono sufficienti)
|
|
- **Nota**: Questo sistema non include voti insufficienti come `D` o `F`
|
|
|
|
### Il Tuo Compito
|
|
|
|
Dato il seguente array `allStudents` che rappresenta tutti gli studenti e i loro voti, costruisci un nuovo array `studentsWhoPass` contenente tutti gli studenti che superano i corsi secondo i rispettivi sistemi di valutazione.
|
|
|
|
```javascript
|
|
let allStudents = [
|
|
'A', // Letter grade - passing
|
|
'B-', // Letter grade - passing
|
|
1, // Numeric grade - failing
|
|
4, // Numeric grade - passing
|
|
5, // Numeric grade - passing
|
|
2 // Numeric grade - failing
|
|
];
|
|
|
|
let studentsWhoPass = [];
|
|
```
|
|
|
|
### Approccio Passo-Passo
|
|
|
|
1. **Imposta un ciclo** per esaminare ogni voto nell'array `allStudents`
|
|
2. **Controlla il tipo di voto** (è un numero o una stringa?)
|
|
3. **Applica le regole del sistema di valutazione appropriato**:
|
|
- Per i numeri: verifica se il voto è >= 3
|
|
- Per le stringhe: verifica se è uno dei voti validi sufficienti
|
|
4. **Aggiungi i voti sufficienti** all'array `studentsWhoPass`
|
|
|
|
### Tecniche di Codice Utili
|
|
|
|
Utilizza questi concetti di JavaScript dalla lezione:
|
|
|
|
- **Operatore typeof**: `typeof grade === 'number'` per verificare se è un voto numerico
|
|
- **Operatori di confronto**: `>=` per confrontare i voti numerici
|
|
- **Operatori logici**: `||` per verificare più condizioni di voto con lettere
|
|
- **Istruzioni if...else**: per gestire i diversi sistemi di valutazione
|
|
- **Metodi degli array**: `.push()` per aggiungere i voti sufficienti al nuovo array
|
|
|
|
### Output Atteso
|
|
|
|
Quando esegui il programma, `studentsWhoPass` dovrebbe contenere: `['A', 'B-', 4, 5]`
|
|
|
|
**Perché questi voti sono sufficienti:**
|
|
- `'A'` e `'B-'` sono voti validi con lettere (tutti i voti con lettere in questo sistema sono sufficienti)
|
|
- `4` e `5` sono voti numerici >= 3
|
|
- `1` e `2` sono insufficienti perché sono voti numerici < 3
|
|
|
|
## Testare la Soluzione
|
|
|
|
Testa il tuo codice con diversi scenari:
|
|
|
|
```javascript
|
|
// Test with different grade combinations
|
|
let testGrades1 = ['A-', 3, 'C', 1, 'B'];
|
|
let testGrades2 = [5, 'A', 2, 'C-', 4];
|
|
|
|
// Your solution should work with any combination of valid grades
|
|
```
|
|
|
|
## Sfide Bonus
|
|
|
|
Una volta completato l'esercizio base, prova queste estensioni:
|
|
|
|
1. **Aggiungi validazione**: Controlla la presenza di voti non validi (come numeri negativi o lettere non valide)
|
|
2. **Calcola statistiche**: Determina quanti studenti superano e quanti falliscono
|
|
3. **Conversione dei voti**: Converti tutti i voti in un unico sistema numerico (A=5, B=4, C=3, ecc.)
|
|
|
|
## Rubrica
|
|
|
|
| Criteri | Esemplare (4) | Competente (3) | In via di sviluppo (2) | Principiante (1) |
|
|
|---------|---------------|----------------|-------------------------|------------------|
|
|
| **Funzionalità** | Il programma identifica correttamente tutti i voti sufficienti da entrambi i sistemi | Il programma funziona con piccoli problemi o casi limite | Il programma funziona parzialmente ma ha errori logici | Il programma ha errori significativi o non funziona |
|
|
| **Struttura del Codice** | Codice pulito e ben organizzato con logica if...else appropriata | Buona struttura con istruzioni condizionali adeguate | Struttura accettabile con alcuni problemi organizzativi | Struttura scarsa, logica difficile da seguire |
|
|
| **Uso dei Concetti** | Utilizzo efficace di operatori di confronto, operatori logici e istruzioni condizionali | Buon utilizzo dei concetti della lezione con piccole lacune | Utilizzo parziale dei concetti della lezione ma mancano elementi chiave | Utilizzo limitato dei concetti della lezione |
|
|
| **Risoluzione del Problema** | Dimostra una chiara comprensione del problema e un approccio elegante alla soluzione | Buon approccio alla risoluzione del problema con logica solida | Approccio adeguato con qualche confusione | Approccio poco chiaro, non dimostra comprensione |
|
|
|
|
## Linee Guida per la Consegna
|
|
|
|
1. **Testa il tuo codice** accuratamente con gli esempi forniti
|
|
2. **Aggiungi commenti** per spiegare la tua logica, soprattutto per le istruzioni condizionali
|
|
3. **Verifica che l'output** corrisponda ai risultati attesi: `['A', 'B-', 4, 5]`
|
|
4. **Considera i casi limite** come array vuoti o tipi di dati imprevisti
|
|
|
|
> 💡 **Suggerimento Pro**: Parti dalle basi! Fai funzionare prima la funzionalità principale, poi aggiungi caratteristiche più sofisticate. Ricorda, l'obiettivo è esercitarti con la logica decisionale utilizzando gli strumenti appresi in questa lezione.
|
|
|
|
---
|
|
|
|
**Disclaimer**:
|
|
Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale umana. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione. |