Algoritmi Base

LAB Occorrenze Del Massimo

Esercizio Svolto: Calcolo del Valore Massimo e Conteggio delle sue Occorrenze (Frequenza) in una sequenza di N dati.

Durata

20 minuti

Software

Flowgorithm / Pseudocodice

Linguaggio

Diagrammi di Flusso

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! Aggiorniamo max = punteggio e **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

Schema a Blocchi (Flowchart):
Diagramma di Flusso Occorrenze del Massimo
Inizializzazione 1° dato: max = primoPunteggio, contaMax = 1
Se punteggio > max: max = punteggio, contaMax = 1
Altrimenti Se punteggio == max: contaMax = contaMax + 1
Pseudocodice Completo:
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.

1. Se inseriamo i punteggi 10, 10, 10, quale sarà il valore finale di contaMax?

2. Cosa accadrebbe se alla riga 24 scrivessimo `contaMax = contaMax + 1` anziché `contaMax = 1`?


In sintesi

Argomenti: concetti principali, riepilogo, competenze

  1. Applicazione reale: identificazione del punteggio record e del numero di candidati o tentativi che lo hanno raggiunto.
  2. Gestione dinamica del contatore: reset a 1 quando si supera il massimo, incremento di 1 in caso di parità.

Cosa hai imparato
  1. Resettare un contatore a 1 quando viene scoperto un nuovo valore massimo assoluto.
  2. Incrementare il contatore quando il valore letto è uguale al massimo corrente.
  3. Analizzare le variazioni di frequenza del massimo tramite la tabella di traccia.


Esercizio Svolto, Algoritmi, Massimo, Occorrenze, Frequenza, Contatore, Pseudocodice,