Esercizio Svolto: Conteggio delle Occorrenze del Massimo
Argomenti: ricerca del massimo, frequenza e occorrenze, reset e incremento del contatore, selezioni annidate
Traccia dell'Esercizio:
In un test di ammissione scolastico vengono registrati i punteggi ottenuti da N candidati.
Progetta un algoritmo che legga tutti i punteggi, individui il punteggio massimo raggiunto e determini quanti candidati hanno ottenuto esattamente quel punteggio massimo (numero di occorrenze/frequenza).
1. Analisi dei Dati e dei Casi di Confronto
Ad ogni lettura di un nuovo punteggio si possono verificare **3 casi differenti**:
- Caso 1 (
punteggio > max): È stato superato il vecchio record! Aggiorniamomax = punteggioe **resettiamo il contatore**contaMax = 1. - Caso 2 (
punteggio == max): Un altro candidato ha ottenuto lo stesso record! **Incrementiamo il contatore**contaMax = contaMax + 1. - Caso 3 (
punteggio < max): Il punteggio è inferiore al massimo attuale. **Non facciamo nulla**.
| Variabile | Tipo di Dato | Ruolo |
|---|---|---|
punteggio |
Reale (Float) | Input: Punteggio del candidato corrente. |
max |
Reale (Float) | Estremo: Punteggio massimo registrato finora. |
contaMax |
Intero (Integer) | Contatore: Frequenza/numero di volte in cui il valore max compare nella sequenza. |
2. Pseudocodice con Numerazione di Riga
Se punteggio > max: max = punteggio, contaMax = 1
Altrimenti Se punteggio == max: contaMax = contaMax + 1
| 1 | Inizio |
| 2 | // Dichiarazione delle variabili |
| 3 | Reale punteggio, max |
| 4 | Intero N, i, contaMax |
| 5 | |
| 6 | Scrivi "Quanti punteggi vuoi inserire?" |
| 7 | Leggi N |
| 8 | |
| 9 | // Inizializzazione con il 1° candidato |
| 10 | Scrivi "Inserisci il punteggio del candidato 1:" |
| 11 | Leggi punteggio |
| 12 | max = punteggio |
| 13 | contaMax = 1 |
| 14 | |
| 15 | // Ciclo dal 2° candidato fino ad N |
| 16 | i = 2 |
| 17 | Mentre i <= N Fai |
| 18 | Scrivi "Inserisci il punteggio del candidato ", i, ":" |
| 19 | Leggi punteggio |
| 20 | |
| 21 | // CASO 1: Trovato un NUOVO massimo assoluto |
| 22 | Se punteggio > max Allora |
| 23 | max = punteggio |
| 24 | contaMax = 1 // Reset contatore |
| 25 | Altrimenti |
| 26 | // CASO 2: Trovato un punteggio PARI al massimo attuale |
| 27 | Se punteggio == max Allora |
| 28 | contaMax = contaMax + 1 |
| 29 | Fine Se |
| 30 | Fine Se |
| 31 | |
| 32 | i = i + 1 |
| 33 | Fine Mentre |
| 34 | |
| 35 | Scrivi "Il punteggio massimo ottenuto e': ", max |
| 36 | Scrivi "Numero di candidati con il punteggio massimo: ", contaMax |
| 37 | Fine |
3. Tabella di Traccia dell'Esecuzione
Simulazione con N = 4 candidati e punteggi letti: 85, 90, 80, 90:
| Candidato (i) | punteggio | Condizione Verificata | max | contaMax |
|---|---|---|---|---|
| 1 (r. 11-13) | 85 | Primo dato (Inizializzazione) | 85 | 1 |
| 2 (r. 22-24) | 90 | 90 > 85 (Nuovo Massimo) ➔ RESET | 90 | 1 |
| 3 (r. 22, 27) | 80 | 80 < 90 (Nessuna modifica) | 90 | 1 |
| 4 (r. 27-28) | 90 | 90 == 90 (Parità Massimo) ➔ INCREMENTO | 90 | 2 |
Spunto Didattico: La differenza tra Reset ed Incremento
La riga 24 fa contaMax = 1 (reset) perché quando viene superato il vecchio massimo, le precedenti occorrenze non sono più riferite al punteggio record! La riga 28 fa invece contaMax = contaMax + 1 perché abbiamo incontrato un'altra copia del massimo corrente.
Quiz di Verifica
Rispondi alle domande per verificare la comprensione sul conteggio delle occorrenze del massimo.
In sintesi
Argomenti: concetti principali, riepilogo, competenze
- Applicazione reale: identificazione del punteggio record e del numero di candidati o tentativi che lo hanno raggiunto.
- Gestione dinamica del contatore: reset a 1 quando si supera il massimo, incremento di 1 in caso di parità.
- Resettare un contatore a 1 quando viene scoperto un nuovo valore massimo assoluto.
- Incrementare il contatore quando il valore letto è uguale al massimo corrente.
- Analizzare le variazioni di frequenza del massimo tramite la tabella di traccia.