Introduzione ai Sottoprogrammi e alla Modularità
Argomenti: concetti base, differenza tra Sottoprogramma, Funzione e Procedura, quando conviene usarli, esempi pratici
Immagina di dover costruire un'automobile: non si assembla ogni singolo ingranaggio nello stesso momento e nello stesso posto. Si creano invece componenti separati (il motore, l'impianto frenante, le luci) e poi si collegano tra loro. In programmazione, i sottoprogrammi servono esattamente a questo.
Il principio del "Divide et Impera" (Dividi e Conquista):
Un sottoprogramma è un blocco di codice indipendente dotato di un proprio nome, pensato per svolgere un unico compito ben preciso all'interno dell'algoritmo.
Sottoprogramma, Funzione e Procedura: Le 3 Definizioni
SOTTOPROGRAMMA
È il termine generale che indica qualsiasi blocco di codice autonomo e separato dal programma principale (Main). Rappresenta la famiglia globale di cui fanno parte Funzioni e Procedure.
FUNZIONE
È un sottoprogramma che esegue un calcolo o un'elaborazione ed è obbligato a restituire un valore finale al programma principale (es. calcolare l'area di una figura).
PROCEDURA
È un sottoprogramma che esegue una serie di azioni o stampe a schermo senza restituire alcun valore finale al programma principale (es. mostrare un menu o pulire la grafica).
Quando conviene creare un Sottoprogramma?
Ci sono 3 situazioni principali in cui un programmatore sceglie di isolare una porzione di codice in un sottoprogramma:
1. Evitare Codice Ripetuto
Se devi ripetere lo stesso calcolo per dati diversi, rischieresti di duplicare decine di righe di codice.
Riscrivi la formula dello sconto prezzo - (prezzo * sconto / 100) per il 1° prodotto, poi la ri-scrivi per il 2° e per il 3°. Se la formula cambia, devi modificarla manualmente in 3 punti diversi.
Scrivi la formula una sola volta nella funzione CalcolaSconto(prezzo, %sconto).
Nel Main ti limiti a richiamarla:
p1 = CalcolaSconto(100, 20)
p2 = CalcolaSconto(50, 10)
2. Semplificare Calcoli Complessi
Se un'operazione richiede formule articolate, lasciarla nel programma principale rende tutto confuso.
Nel Main di una stazione meteo devi inserire direttamente formule complesse come la conversione da Celsius a Fahrenheit (gradi * 9 / 5) + 32, appesantendo la lettura del flusso principale.
Isoli il calcolo nella funzione ConvertiFahrenheit(gradi).
Nel Main scrivi semplicemente:
tempF = ConvertiFahrenheit(tempC)
rendendo l'algoritmo principale immediato da comprendere.
3. Lavoro di Squadra e Moduli di Servizio
Permette a più programmatori di sviluppare parti distinte del programma senza intralciarsi.
Tutti i programmatori devono lavorare sullo stesso identico file principale, modificando contemporaneamente il flusso di stampa dei menu, i controlli di validazione e le formule matematiche.
Un programmatore crea la procedura StampaMenu(), un altro crea la funzione ValidaVoto().
Nel Main le due componenti vengono semplicemente invocate all'occorrenza.
Osservazione
Come abbiamo visto negli esempi, l'obiettivo fondamentale dei sottoprogrammi non è modificare cosa fa l'algoritmo, ma come viene organizzato. Nella prossima lezione analizzeremo nel dettaglio la sintassi, le caratteristiche e la struttura per definire ed invocare le Funzioni e le Procedure!
In sintesi
Argomenti: concetti principali, riepilogo, competenze
- Sottoprogramma è il termine generale: si divide in Funzioni (restituiscono un valore) e Procedure (eseguono azioni senza restituire valori).
- Utilizzare la modularità rende gli algoritmi puliti, leggibili e facili da correggere o aggiornare nel tempo.
- Comprendere la gerarchia: Sottoprogramma è la categoria generale, Funzione e Procedura sono le due tipologie specifiche.
- Riconoscere i 3 casi d'uso principali in cui conviene creare un sottoprogramma (Codice ripetuto, Calcoli complessi, Lavoro di squadra).
- Analizzare per ciascun caso d'uso il confronto pratico tra l'approccio Senza e Con Sottoprogramma.