venerdì 20 febbraio 2026

Corso di Programmazione Strutturata e OOP: 1 modelli e applicazioni

📖 1 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:

  1. 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
      
  2. 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")
      
  3. 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:

  1. Indentazione coerente
    Aiuta a visualizzare immediatamente le strutture logiche (cicli, condizioni).

    for i in range(5):
        if i % 2 == 0:
            print(i, "pari")
    
  2. Commenti chiari
    Non servono a ripetere ovvietà, ma a spiegare perché si fa qualcosa.

    // Calcola la media dei voti inseriti
    double media = somma / numeroVoti;
    
  3. Nomenclatura significativa
    Variabili e funzioni devono avere nomi parlanti:

    double calcolaMedia(double somma, int numero){
        return somma / numero;
    }
    
  4. 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:

  1. Correggere l’indentazione.
  2. Rinominare variabili in modo più significativo.
  3. 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
(utilizza def, 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

  1. Quale delle seguenti NON è una struttura base della programmazione strutturata?
    a) Sequenza
    b) Ricorsione
    c) Iterazione
    d) Selezione

  2. 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

  3. 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

  4. Cosa significa l'acronimo DRY?
    a) Don’t Repeat Yourself
    b) Do Repeat Yourself
    c) Don’t Run Yet
    d) Develop Recent YAML

  5. 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

  1. b) Ricorsione
  2. c) Un blocco indipendente con funzione specifica
  3. b) Rendere il codice più leggibile
  4. a) Don’t Repeat Yourself
  5. c) contatoreStudenti



Corso Imparare a Programmare: 7 Il linguaggio Python

🐍 7. Il Linguaggio Python:
Dalla Logica alla Creazione

Python non è solo un linguaggio di programmazione; è lo "standard de facto" per l'intelligenza artificiale, la ricerca scientifica e lo sviluppo web moderno. La sua forza risiede nella leggibilità: scrivere in Python è quanto di più vicino ci sia allo scrivere in inglese (o italiano) tecnico.

🎯 Obiettivi Didattici

  • Padronanza della Sintassi: Passare dalla comprensione logica alla scrittura di codice funzionante.

  • Problem Solving Creativo: Imparare a scomporre un'idea complessa in istruzioni sequenziali.

  • Sviluppo di Software Interattivo: Creare programmi che dialogano con l'utente e reagiscono alle sue scelte.

📚 Contenuti Approfonditi del Modulo

1. 🔍 Perché Python? (Oltre la Semplicità)

Python è un linguaggio interpretato e multi-paradigma. È scelto dai principianti perché elimina le barriere sintattiche (come i punti e virgola ; obbligatori o le parentesi graffe {} per i blocchi di codice), ma è amato dai professionisti per la sua potenza:

  • Versatilità: Dalle automazioni semplici ai modelli di Deep Learning.

  • Comunità Gigantesca: Esistono "pacchetti" pronti per fare quasi tutto: analizzare dati, creare videogiochi o gestire domotica.

2. ✏️ Fondamenta: Variabili e Tipi di Dato

In Python, non devi dichiarare il tipo di variabile; lui "capisce" da solo cosa contiene:

  • Stringhe: Testo racchiuso tra virgolette ("Ciao").

  • Interi e Float: Numeri interi (5) o decimali (5.5).

  • Input Dinamico: La funzione input() trasforma il tuo computer in un interlocutore.

Python
# Esempio di calcolo dinamico
prezzo = float(input("Quanto costa l'oggetto? "))
sconto = prezzo * 0.20
print(f"Lo sconto del 20% è: {sconto}€")

3. 🔁 Flusso di Controllo: Il Cervello del Programma

Senza condizioni e cicli, un programma è solo una lista della spesa. Con essi, diventa un processo decisionale.

  • if / elif / else: Gestiscono i bivi logici.

  • for: Ideale per ripetere un'azione un numero noto di volte (es. inviare 100 email).

  • while: Ideale per ripetere un'azione finché una condizione rimane vera (es. un videogioco che gira finché non premi "Esc").

4. ⚙️ Funzioni: L'Efficienza del Riuso

Le funzioni permettono di impacchettare il codice. Se devi calcolare l'area di un cerchio dieci volte nel programma, non scriverai la formula dieci volte, ma richiamerai la tua funzione calcola_area().

🛠️ Attività Guidate e Laboratori Pratici

📄 1. Hello World 2.0: L'Interazione

Il classico "Ciao Mondo" è solo l'inizio. Rendiamolo vivo.

Python
nome = input("Scrivi il tuo nome: ")
print(f"Benvenuto nel futuro della programmazione, {nome}!")

Sfida: Prova a far dire al computer quanti anni avrai nel 2030 chiedendo all'utente il suo anno di nascita.

🎲 2. Progetto: Il Quiz Master Intelligente

Non limitarti a una domanda. Crea un sistema che tiene traccia del punteggio.

Python
punteggio = 0

print("--- Benvenuti al Geo-Quiz! ---")
risposta = input("Qual è la capitale della Francia? ").lower()

if risposta == "parigi":
print("Complimenti! +10 punti")
punteggio += 10
else:
print("Peccato, era Parigi.")

print(f"Il tuo punteggio finale è: {punteggio}")
  • Esercizio: Aggiungi un ciclo for per fare 5 domande diverse e usa una variabile per dare un premio finale se il punteggio supera i 40 punti.

🧠 3. Sfida Finale: Generatore di Narrazioni Interattive

Le "Avventure Testuali" erano i videogiochi degli anni '80. Creane una moderna.

Python
protagonista = input("Nome dell'eroe: ")
arma = input("Scegli un'arma (Spada o Magia): ").capitalize()

print(f"{protagonista} cammina nel bosco...")

scelta = input("Vedi una grotta. Entri o prosegui? (entrare/proseguire): ")

if scelta == "entrare":
if arma == "Spada":
print(f"Un drago ti attacca, ma lo sconfiggi con la tua {arma}!")
else:
print("La magia non illumina la grotta... ti sei perso!")
else:
print(f"{protagonista} decide di tornare a casa sano e salvo.")

🎯 Conclusione del Modulo

Al termine di questa sezione, avrai gli strumenti per smettere di "usare" i programmi creati da altri e iniziare a costruire i tuoi. Python è la tua penna digitale: cosa scriverai?


Corso di Programmazione Strutturata e OOP: 1 modelli e applicazioni

📖 1 Programmazione strutturata: modelli e applicazioni 🎯 Obiettivo generale La programmazione strutturata è una delle basi fondamenta...