Loading
Loading
Un algoritmo è una sequenza finita e non ambigua di passi che, a partire da dati di ingresso, produce in un numero finito di operazioni la soluzione di un problema. Questo appunto guida dall'analisi del problema alla sua formalizzazione, presentando le proprietà fondamentali degli algoritmi, le strategie di problem solving (analisi, scomposizione top-down, raffinamenti successivi), le tre strutture di controllo della programmazione strutturata (sequenza, selezione, iterazione) garantite dal teorema di Böhm-Jacopini, e i due linguaggi di descrizione — pseudocodice e diagrammi di flusso. Si chiude con i primi cenni a correttezza ed efficienza, valutata contando le operazioni eseguite.
5sezionica. 18min di lettura3competenzeLivelloBase 1 · Standard 3 · Approfondimento 1Verificato · 06/2026
livello base
È richiesto saper analizzare un problema, scomporlo e descriverne la soluzione con le tre strutture di controllo, in pseudocodice o con un diagramma di flusso corretto.
livello avanzato
Nell'opzione Scienze Applicate si aggiungono la dimostrazione informale di correttezza (invarianti, casi limite) e la valutazione dell'efficienza tramite il conteggio delle operazioni e il confronto fra algoritmi alternativi.
Lesetiefe: Approfondimento
Schriftgröße: Standard
Il processo di problem solving: dal problema all'algoritmo
Analizza il problema «calcolare la media aritmetica dei voti di uno studente»: individua i dati di ingresso e di uscita, esprimi la relazione che li lega e scomponi il problema in sottoproblemi elementari.
Il risultato richiesto è un solo valore: la media aritmetica dei voti, un numero reale.
Servono i voti dello studente, cioè una sequenza di n valori numerici, e implicitamente la loro quantità n.
La media è la somma dei voti divisa per il loro numero.
Sottoproblema 1: leggere i voti e contarli (determinare n). Sottoproblema 2: calcolare la somma S dei voti. Sottoproblema 3: dividere S per n e restituire il risultato (con la condizione n > 0 per evitare la divisione per zero).
Risultato: Output: media M; input: i voli v_1, ..., v_n e il loro numero n; relazione M = S/n; il problema si scompone in «leggi e conta», «somma», «dividi e restituisci».
Errori frequenti
Ripasso attivo
Dato il problema «calcolare la media aritmetica dei voti di uno studente», svolgi l'analisi: indica i dati di ingresso e di uscita, scrivi la relazione che li lega e scomponi il problema top-down in almeno tre sottoproblemi elementari.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Le quattro proprietà fondamentali di un algoritmo
È dato il seguente procedimento: «parti da x = 1; finché x è diverso da 0, aumenta x di 1; quando x = 0 stampa x». Stabilisci se è un algoritmo, verificando le quattro proprietà fondamentali.
Ogni passo (assegnazione, confronto, incremento, stampa) è un'operazione elementare effettivamente compibile: la proprietà è soddisfatta.
Ogni passo è definito in modo univoco, senza ambiguità: la proprietà è soddisfatta.
Partendo da x = 1 e incrementando, x assume i valori 2, 3, 4, ... e non vale mai 0: la condizione di uscita non si verifica mai e il ciclo non termina.
Poiché la finitezza è violata (ciclo infinito), il procedimento NON è un algoritmo, pur sembrando ben definito.
Risultato: Non è un algoritmo: viola la proprietà di finitezza perché la condizione di terminazione non è mai raggiunta.
Errori frequenti
Ripasso attivo
Per ciascuna delle quattro proprietà fondamentali (finitezza, determinismo, generalità, eseguibilità), proponi un esempio di procedimento che la viola e spiega perché, di conseguenza, non può essere considerato un algoritmo.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Le tre strutture di controllo: sequenza, selezione, iterazione
Somma dei primi n interi
La somma accumulata dal ciclo enumerativo coincide con la formula chiusa di Gauss: un utile controllo di correttezza del risultato dell'iterazione.
Scrivi in pseudocodice un algoritmo che, dato un intero n > 0, calcoli e stampi la somma 1 + 2 + ... + n usando un ciclo enumerativo, e indica la grandezza che garantisce la terminazione.
Si pone una variabile accumulatore S a 0 prima del ciclo.
Per i da 1 a n: S <- S + i. Il contatore i parte da 1 e cresce a ogni iterazione fino a n.
La grandezza che garantisce la terminazione è il contatore i: poiché aumenta di 1 a ogni passo e n è finito, dopo esattamente n iterazioni si ha i > n e il ciclo termina.
Per n = 5 il ciclo accumula 1+2+3+4+5 = 15; la formula chiusa conferma 5*6/2 = 15.
Risultato: leggi n; S <- 0; per i da 1 a n esegui S <- S + i; stampa S. Per n = 5 il risultato è 15, in accordo con n(n+1)/2.
Errori frequenti
Ripasso attivo
Scrivi in pseudocodice un algoritmo che, dato un intero n > 0, calcoli e stampi la somma 1 + 2 + ... + n utilizzando un ciclo enumerativo; indica esplicitamente quale grandezza garantisce la terminazione.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Diagramma di flusso: numero pari o dispari
Scrivi lo pseudocodice di un algoritmo che legge un intero n e stampa «pari» se n è divisibile per 2, «dispari» altrimenti, coerente con il diagramma di flusso della Fig. 4.
leggi n (il dato di ingresso è un numero intero).
Si calcola il resto della divisione intera di n per 2 con l'operatore modulo: la condizione è n mod 2 = 0.
se n mod 2 = 0 allora scrivi «pari» altrimenti scrivi «dispari».
Per n = 7: 7 mod 2 = 1, diverso da 0, quindi si esegue il ramo altrimenti e si stampa «dispari» (corretto).
Risultato: leggi n; se n mod 2 = 0 allora scrivi «pari» altrimenti scrivi «dispari». Per n = 7 stampa «dispari».
Errori frequenti
Ripasso attivo
Disegna il diagramma di flusso e scrivi lo pseudocodice di un algoritmo che legge un numero intero e stampa la parola «pari» se è divisibile per 2, «dispari» altrimenti.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Crescita del numero di confronti: ricerca lineare (~n) e ricerca binaria (~log2 n)
Ricerca lineare (caso peggiore)
Nel caso peggiore (elemento assente o in ultima posizione) la ricerca lineare confronta x con tutti gli n elementi: il costo cresce linearmente con n.
Ricerca binaria (dati ordinati)
Dimezzando a ogni passo lo spazio di ricerca, il numero di confronti cresce come il logaritmo in base 2 di n: per n = 1000 sono circa 10 confronti contro i 1000 della ricerca lineare.
Scrivi la ricerca lineare di un valore x in una sequenza di n elementi, determina il numero di confronti nel caso peggiore e confrontalo con la ricerca binaria su dati ordinati per n = 1000.
trovato <- falso; per i da 1 a n esegui: se A[i] = x allora trovato <- vero. Si scorre l'intera sequenza confrontando ogni elemento con x.
Se x non è presente (o è l'ultimo elemento), si eseguono n confronti: il costo è proporzionale a n.
Su dati ordinati la ricerca binaria dimezza lo spazio a ogni passo: il numero di confronti è circa il logaritmo in base 2 di n.
Lineare: fino a 1000 confronti. Binaria: log2(1000) ~ 9.97, quindi circa 10 confronti. La binaria è circa cento volte più conveniente, ma richiede dati ordinati.
Risultato: La ricerca lineare costa fino a n = 1000 confronti nel caso peggiore; la ricerca binaria ne richiede circa 10 (~log2 1000), risultando nettamente più efficiente sui dati ordinati.
Errori frequenti
Ripasso attivo
Per una sequenza di n elementi, scrivi lo pseudocodice della ricerca lineare di un valore x, conta il numero di confronti nel caso peggiore e confrontalo con il costo della ricerca binaria su dati ordinati per n = 1000.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Riferimenti e fonti
Ministero dell'Istruzione e del Merito (MIM)