giovedì 19 febbraio 2026

Corso Imparare a Programmare: 6 Funzioni e moduli

🧩 6. Funzioni e Moduli: 

L'Arte di Organizzare il Codice

Scrivere codice non significa solo "far funzionare le cose", ma farlo in modo che anche un altro essere umano (o tu stesso tra sei mesi) possa capirle. Le funzioni e i moduli sono gli strumenti fondamentali per passare da semplici script a software professionali, ordinati e scalabili.

📌 L'Essenza della Funzione: Il "Sottoprogramma"

Immagina una funzione come una scatola nera: tu le fornisci degli ingredienti (input/parametri), lei esegue una ricetta specifica e ti restituisce il piatto pronto (output/valore di ritorno).

Una funzione ben scritta segue il principio SRP (Single Responsibility Principle): deve fare una sola cosa e farla bene.

Python
# Definizione di una funzione con parametri e ritorno
def calcola_area_rettangolo(base, altezza):
"""Calcola l'area di un rettangolo dati base e altezza."""
area = base * altezza
return area

# Invocazione della funzione
risultato = calcola_area_rettangolo(10, 5)
print(f"L'area è: {risultato}") # Output: 50

🔁 La Potenza della Modularizzazione

Perché non scrivere tutto in un unico, lungo blocco di codice? La scomposizione (o decomposizione) offre vantaggi cruciali:

  • DRY (Don't Repeat Yourself): Se devi correggere un errore, lo fai in un unico punto (la funzione) e la modifica si riflette ovunque nel programma.

  • Astrazione: Non hai bisogno di sapere come funziona internamente la funzione print() o math.sqrt(), ti basta sapere cosa fa.

  • Testabilità: È molto più facile verificare se una piccola funzione da 5 righe funziona correttamente rispetto a un intero programma da 500.

  • Collaborazione: In un team, uno sviluppatore può occuparsi della funzione di "Log-in", mentre un altro scrive quella per il "Carrello acquisti".

🧰 Moduli e Librerie: Non Reinventare la Ruota

In Python, un modulo è semplicemente un file .py che contiene funzioni e variabili. Una libreria è una collezione di questi moduli. Esistono librerie per ogni necessità:

LibreriaScopoEsempio di utilizzo
MathOperazioni matematiche avanzatemath.sin(x), math.pi
RandomGenerazione di numeri casualirandom.randint(1, 10)
DatetimeGestione di date e oraridatetime.now()
PandasAnalisi di grandi moli di datiGestione di tabelle Excel/CSV

Esempio pratico: Invece di scrivere l'algoritmo per calcolare la radice quadrata a mano, importiamo l'intelligenza collettiva della community:

Python
import math
print(math.isqrt(16)) # Output: 4

🛠️ Attività Didattiche e Sfide Creative

1. Il Pensiero Computazionale: Scomposizione

Sfida: Immagina di dover gestire una classe. Invece di un unico script caotico, progetta la struttura di tre funzioni separate:

  1. leggi_voti(): Chiede all'utente di inserire i numeri.

  2. elabora_media(lista): Somma i voti e divide per il numero di elementi.

  3. genera_pagella(nome, media): Stampa un messaggio formattato con il giudizio finale.

2. Laboratorio Scratch: Blocchi Personalizzati

In Scratch, usa la sezione "I miei blocchi":

  • Crea un blocco chiamato DisegnaQuadrato che accetti un parametro lato.

  • Usa l'estensione "Penna" per far muovere lo sprite.

  • Obiettivo: Comprendere che richiamando il blocco tre volte con valori diversi, lo sprite disegnerà quadrati di dimensioni differenti senza riscrivere i comandi di movimento.

3. Coding in Python: La Funzione Sicura

Scrivi una funzione valida_password(pwd) che:

  • Controlli se la lunghezza è superiore a 8 caratteri.

  • Restituisca True se valida, False altrimenti.

  • Bonus: Importa il modulo re per controllare se contiene anche numeri.

🎯 Obiettivo del Modulo

Al termine di questa unità, non sarai solo in grado di scrivere funzioni, ma avrai acquisito la mentalità dell'architetto del software: saper guardare un problema enorme e vederlo come un insieme ordinato di piccoli pezzi logici che collaborano tra loro.


Nessun commento:

Posta un commento

Corso di CSS & Web Design: 9 – Progetto completo di un sito internet

9 – Progetto completo di un sito internet  Struttura dettagliata del sito di un artista di arti figurative 🎯 Obiettivi del sito Presentar...