Algoritmi Base

LAB Posizione Massimo

Esercizio Svolto: Ricerca di Massimo, Minimo e della loro Posizione (Indice) in una sequenza di N dati con pseudocodice e tabella di traccia.

Durata

20 minuti

Software

Flowgorithm / Pseudocodice

Linguaggio

Diagrammi di Flusso

Esercizio Svolto: Ricerca di Massimo, Minimo e loro Posizione

Argomenti: ricerca estremi, variabili di posizione (indici), tracciamento contatore, selezione annidata

Traccia dell'Esercizio:

In una gara di atletica leggera vengono registrati i tempi di corsa (in secondi) di N atleti.

Progetta un algoritmo che acquisisca i tempi degli N corridori e determini non solo il tempo migliore (minimo) e il tempo peggiore (massimo), ma indichi anche a quale atleta (es. 1° atleta, 2° atleta, ecc.) appartengono tali record.

1. Analisi dei Dati e delle Posizioni

Oltre alle classiche variabili per i valori di max e min, introduciamo due variabili d'indice:

Variabile Tipo di Dato Ruolo
tempo Reale (Float) Input: Tempo di corsa in secondi letto ad ogni ciclo.
max, min Reale (Float) Estremi: Tempo peggiore (max) e tempo migliore (min).
posMax, posMin Intero (Integer) Indici: Memorizzano il valore del contatore i nel momento in cui max o min vengono aggiornati.

2. Pseudocodice con Numerazione di Riga

Schema a Blocchi (Flowchart):
Diagramma di Flusso Posizione Max e Min
Inizializzazione 1° Atleta: max = tempo, min = tempo, posMax = 1, posMin = 1
Aggiornamento Indice: Se tempo < min ➔ min = tempo, posMin = i
Output Finale: Scrivi tempo record e numero dell'atleta
Pseudocodice Completo:
1 Inizio
2     // Dichiarazione delle variabili
3     Reale tempo, max, min
4     Intero N, i, posMax, posMin
5
6     Scrivi "Inserisci il numero di atleti:"
7     Leggi N
8
9     // Lettura del 1° Atleta e inizializzazione posizioni
10     Scrivi "Inserisci il tempo dell'atleta 1:"
11     Leggi tempo
12     max = tempo
13     min = tempo
14     posMax = 1
15     posMin = 1
16
17     // Ciclo dal 2° atleta fino ad N
18     i = 2
19     Mentre i <= N Fai
20         Scrivi "Inserisci il tempo dell'atleta ", i, ":"
21         Leggi tempo
22
23         // Controllo per il tempo MINIMO (Record migliore)
24         Se tempo < min Allora
25             min = tempo
26             posMin = i
27         Fine Se
28
29         // Controllo per il tempo MASSIMO (Tempo peggiore)
30         Se tempo > max Allora
31             max = tempo
32             posMax = i
33         Fine Se
34
35         i = i + 1
36     Fine Mentre
37
38     Scrivi "Miglior tempo: ", min, "s fatto dall'Atleta n° ", posMin
39     Scrivi "Peggiore tempo: ", max, "s fatto dall'Atleta n° ", posMax
40 Fine

3. Tabella di Traccia dell'Esecuzione

Simulazione con 3 atleti (N = 3) e tempi letti: 10.5s, 9.8s e 11.2s:

Atleta (i) tempo (s) min (Migliore) posMin max (Peggiore) posMax
1 (r. 11-15) 10.5 10.5 1 10.5 1
2 (r. 21-26) 9.8 9.8 (9.8 < 10.5) 2 10.5 1
3 (r. 30-33) 11.2 9.8 2 11.2 (11.2 > 10.5) 3

Dettaglio Logico: L'aggiornamento simultaneo dell'Indice

Alle righe 26 e 32, l'istruzione posMin = i dev'essere posizionata **all'interno del blocco `Se`**, subito dopo aver aggiornato il valore numerico del minimo! Se la metessimo fuori dal `Se`, la variabile `posMin` verrebbe sovrascritta ad ogni ciclo perdendo l'indice corretto.

Quiz di Verifica

Rispondi alle domande per verificare la tua comprensione sul tracciamento degli indici.

1. Alla riga 14 e 15, perché inizializziamo posMax = 1 e posMin = 1?

2. Cosa accadrebbe se spostassimo l'istruzione `posMin = i` fuori dal blocco `Se` (es. alla riga 34)?


In sintesi

Argomenti: concetti principali, riepilogo, competenze

  1. Applicazione reale: identificazione del valore record e del relativo numero di tentativo o atleta.
  2. Utilizzo di variabili d'indice (posMax e posMin) aggiornate insieme ai valori di max e min.

Cosa hai imparato
  1. Salvare il valore del contatore i quando viene superato un valore massimo o minimo.
  2. Distinguere il valore numerico registrato (es. 9.58) dalla sua posizione d'ingresso nella sequenza (es. tentativo 3).
  3. Analizzare lo scivolamento e l'aggiornamento degli indici tramite la tabella di traccia.


Esercizio Svolto, Algoritmi, Massimo, Minimo, Posizione, Indice, Flowgorithm, Pseudocodice,