📖 Programmazione strutturata:
modelli e applicazioni
🎯 Obiettivo generale
La programmazione strutturata è una delle basi fondamentali dell’informatica. Il suo obiettivo è fornire un insieme di regole e buone pratiche che permettano di scrivere programmi chiari, leggibili e manutenibili nel tempo. Comprendere questo approccio significa imparare a progettare software che non solo funzioni, ma che possa essere facilmente compreso, corretto ed esteso anche da altri programmatori.
📚 Contenuti
🔹 Cos’è la programmazione strutturata
Negli anni ’60 e ’70, quando i programmi diventavano sempre più grandi e complessi, nacque l’esigenza di imporre ordine e rigore alla scrittura del codice. La programmazione strutturata è stata la risposta a questo bisogno: un paradigma che riduce la complessità tramite regole semplici e universali.
I tre costrutti fondamentali sono:
-
Sequenza
- Le istruzioni vengono eseguite una dopo l’altra, in ordine cronologico.
- È il flusso “naturale” del programma, come leggere una ricetta passo dopo passo.
- Esempio in C:
int a = 5; int b = 10; int somma = a + b; // eseguito dopo le due assegnazioni
-
Selezione
- Permette di scegliere un percorso alternativo in base a una condizione.
- Tipici costrutti:
if/else,switch. - Esempio in Python:
x = 7 if x > 0: print("Positivo") else: print("Negativo o zero")
-
Iterazione
- Ripete un blocco di istruzioni fino al verificarsi di una condizione.
- Tipici costrutti:
for,while,do while. - Esempio in Java:
for(int i=0; i<5; i++){ System.out.println("Ciclo numero " + i); }
👉 Con questi soli tre strumenti, qualsiasi algoritmo può essere espresso senza bisogno di salti arbitrari (goto), che rendono il codice difficile da leggere e mantenere.
🔹 Suddivisione del programma in moduli e sottoprogrammi
Un programma complesso non dovrebbe mai essere affrontato come un unico blocco monolitico. La decomposizione è il principio guida:
- Modulo: parte indipendente del programma con un compito preciso. Può essere pensato come un “pezzo di macchina” che svolge una funzione specifica (es. gestione file, calcolo matematico).
- Sottoprogramma: una funzione o procedura che realizza un’operazione riutilizzabile.
Esempio in C (uso di funzione come sottoprogramma):
int somma(int a, int b){
return a + b;
}
int main(){
int risultato = somma(5, 7);
printf("%d", risultato);
}
Vantaggi:
- Riutilizzabilità: lo stesso sottoprogramma può essere richiamato più volte.
- Manutenibilità: se serve una modifica, basta agire nel punto centrale.
- Chiarezza logica: ogni parte ha un compito ben definito.
🔹 Buone pratiche di scrittura del codice
Scrivere codice “che funziona” non basta: deve anche essere leggibile e mantenibile. Alcune regole fondamentali:
-
Indentazione coerente
Aiuta a visualizzare immediatamente le strutture logiche (cicli, condizioni).for i in range(5): if i % 2 == 0: print(i, "pari") -
Commenti chiari
Non servono a ripetere ovvietà, ma a spiegare perché si fa qualcosa.// Calcola la media dei voti inseriti double media = somma / numeroVoti; -
Nomenclatura significativa
Variabili e funzioni devono avere nomi parlanti:double calcolaMedia(double somma, int numero){ return somma / numero; } -
Principio DRY (Don’t Repeat Yourself)
Evitare duplicazioni di codice, creando funzioni riutilizzabili. La ridondanza aumenta il rischio di errori e rende il software più difficile da mantenere.
🛠️ Applicazioni pratiche
La programmazione strutturata è alla base di quasi tutti i linguaggi moderni (C, Java, Python, ecc.). Alcuni esempi di applicazione:
- Calcolatori semplici (uso di sequenza, funzioni matematiche).
- Gestione di dati (input da tastiera, selezione tramite condizioni).
- Cicli di simulazione (iterazioni per testare scenari).
- Progettazione modulare (programmi suddivisi in librerie e funzioni).
✅ In sintesi, la programmazione strutturata insegna a pensare in modo ordinato:
- scomporre i problemi,
- scegliere strutture logiche semplici,
- scrivere codice leggibile e robusto.
È il primo passo verso lo sviluppo software professionale e costituisce la base su cui si innestano paradigmi più complessi, come la programmazione orientata agli oggetti o la programmazione funzionale.
🎯 Attività pratiche
✏️ Attività 1 – Ristruttura il codice
Consegna uno spezzone di codice scritto in modo confuso e chiedi di:
- Correggere l’indentazione.
- Rinominare variabili in modo più significativo.
- Inserire commenti esplicativi.
🔧 Esempio prima:
a=10
b=20
if a>b:
print("a maggiore")
else:
print("b maggiore")
✅ Esempio dopo:
# Confronta due numeri e stampa il maggiore
num1 = 10
num2 = 20
if num1 > num2:
print("num1 è maggiore")
else:
print("num2 è maggiore")
🧩 Attività 2 – Costruzione di mini-programmi modulati
Progetta un semplice programma a scelta (es. calcolo media voti, convertitore di temperature, somma di numeri pari...) usando almeno:
- 1 struttura di selezione
- 1 ciclo
- 1 funzione
Esempio:
Funzione che calcola se un numero è primo
(utilizzadef,for,if,return)
🧠 Attività 3 – Decomposizione logica di un problema
Dai un problema reale (es. organizzare una giornata scolastica, cucinare una ricetta, prenotare un volo) e chiedi di:
- Identificare le azioni in sequenza
- Dove ci sono scelte
- Dove ci sono ripetizioni
Esempio: “Organizza la giornata di scuola”
- Sequenza: svegliarsi, fare colazione, vestirsi
- Selezione: se piove, prendere l’ombrello
- Iterazione: per ogni ora scolastica, seguire la lezione
✅ Test di verifica finale
Domande a scelta multipla
-
Quale delle seguenti NON è una struttura base della programmazione strutturata?
a) Sequenza
b) Ricorsione
c) Iterazione
d) Selezione -
Cosa si intende per "modulo" in un programma?
a) Una parte casuale del codice
b) Una sezione che stampa su schermo
c) Un blocco indipendente con funzione specifica
d) Una struttura ciclica -
Qual è lo scopo dei commenti in un programma?
a) Velocizzare l’esecuzione
b) Rendere il codice più leggibile
c) Salvare il codice automaticamente
d) Impedire errori di sintassi -
Cosa significa l'acronimo DRY?
a) Don’t Repeat Yourself
b) Do Repeat Yourself
c) Don’t Run Yet
d) Develop Recent YAML -
Quale tra questi è un buon esempio di nome di variabile?
a) a1
b) xz3
c) contatoreStudenti
d) 123nome
Esercizio aperto
Scrivi un semplice programma (in pseudocodice o Python) che:
- Chieda all’utente tre numeri
- Calcoli la media
- Stabilisca se è maggiore di 10
- Restituisca un messaggio coerente
📝 Soluzioni test
- b) Ricorsione
- c) Un blocco indipendente con funzione specifica
- b) Rendere il codice più leggibile
- a) Don’t Repeat Yourself
- c) contatoreStudenti

Nessun commento:
Posta un commento