Sostieni AppuntiFacili con una piccola donazione su PayPal

Dona con PayPal
AppuntiFacili
Torna Indietro Segnala errore

Strutture di Controllo

✍️ Dennis Turco 🏷️ Informatica 📘 Python
Ultima modifica:
#python#programmazione#operatori e controllo del flusso#strutture di controllo

1. Introduzione

Le strutture di controllo permettono di decidere il flusso di esecuzione di un programma:

  • quali istruzioni eseguire
  • quante volte eseguirle

Esistono due grandi categorie di strutture di controllo:

TipoDescrizioneEsempio tipico
SelezioneEsegue blocchi diversi di codice in base a una condizioneif, elif, else
Iterazione (Cicli)Ripete un blocco di codice più volte finché una condizione è verafor, while

INFO

Le strutture di controllo rendono i programmi dinamici, flessibili e reattivi ai dati. Senza di esse, il codice eseguirebbe sempre le stesse istruzioni in modo lineare.

2. Struttura condizionale if

L’istruzione if consente di eseguire codice solo se una condizione è vera.

Sintassi base:

if condizione:
    istruzioni

La condizione è un’espressione booleana (True o False).

Esempio:

numero = int(input("Inserisci un numero: "))

if numero > 0:
    print("Il numero è positivo")

3. Struttura condizionale completa: if, elif, else

# Esempio base di struttura condizionale
numero = int(input("Inserisci un numero: "))

if numero > 0:
    print("Il numero è positivo.")
elif numero < 0:
    print("Il numero è negativo.")
else:
    print("Il numero è zero.")

Regole importanti:

  • if è obbligatorio
  • elif è opzionale (può comparire più volte)
  • else è opzionale e finale

Esempio pratico

python

Operatori di confronto

OperatoreSignificatoEsempioRisultato
==Uguale a5 == 5True
!=Diverso da5 != 3True
>Maggiore di7 > 2True
<Minore di4 < 1False
>=Maggiore o uguale3 >= 3True
<=Minore o uguale2 <= 5True

TIP

Le condizioni in Python non richiedono parentesi tonde, ma devono essere seguite da : e un rientro del blocco successivo.

4. Operatori Ternari

L’operatore ternario (o condizionale) permette di scrivere un if in una sola riga. È utile per assegnare un valore a una variabile in base a una condizione.

Sintassi:

valore_se_vero  if  condizione  else  valore_se_falso\text{valore\_se\_vero \ if \ condizione \ else \ valore\_se\_falso}

Esempio:

x = 10
messaggio = "Positivo" if x > 0 else "Negativo"
print(messaggio)  # Output: Positivo

Altro esempio:

eta = 18
status = "Maggiorenne" if eta >= 18 else "Minorenne"
print(status)  # Output: Maggiorenne

INFO

L’operatore ternario è una forma compatta dell’istruzione if-else, utile quando si vuole scrivere codice più leggibile e sintetico, ma va usato con moderazione per non compromettere la chiarezza.

4.1 Esercizi

  1. Dato un numero n, stampa "Pari" se è pari altrimenti "Dispari" usando un operatore ternario.
  2. Chiedi all’utente un voto (0-30) e assegna "Promosso" se è ≥ 18, "Bocciato" altrimenti.

5. Strutture iterative (Cicli)

Le strutture iterative consentono di ripetere un blocco di istruzioni più volte, finché una condizione è verificata o per un certo numero di elementi.

5.1 Il ciclo for

Il ciclo for in Python serve per iterare su sequenze (liste, stringhe, tuple, range, ecc.).

# Esempio base di ciclo for con range
for i in range(5):
    print("Iterazione numero:", i)

Funzione range()

La funzione range() genera una sequenza di numeri interi.

SintassiSignificatoEsempioOutput
range(n)da 0 a n-1range(5)0,1,2,3,4
range(a, b)da a a b-1range(2,5)2,3,4
range(a, b, step)da a a b-1, con passo steprange(1,10,2)1,3,5,7,9
# range con valori di inizio, fine e passo
for i in range(1, 11, 2):
    print("Numero dispari:", i)

5.2 Ciclo su sequenze

# Iterazione su una lista di nomi
nomi = ["Anna", "Luca", "Marco"]

for nome in nomi:
    print("Ciao", nome)

INFO

Il ciclo for in Python non è un ciclo “classico” come in C o Java. Non serve un contatore: Python itera direttamente sugli elementi.

6. Ciclo while

Il ciclo while ripete un blocco di istruzioni finché una condizione rimane vera.

6.1 Sintassi base

# Esempio base di ciclo while
contatore = 0

while contatore < 5:
    print("Contatore:", contatore)
    contatore += 1

6.2 Esempio pratico

# Ciclo che termina quando l'utente scrive "esci"
parola = ""

while parola != "esci":
    parola = input("Scrivi qualcosa ('esci' per terminare): ")
    print("Hai scritto:", parola)

WARNING

Attenzione ai cicli infiniti: se la condizione non diventa mai False, il programma non terminerà.

7. Istruzioni di controllo del ciclo

Python offre tre istruzioni speciali per modificare il comportamento dei cicli:

IstruzioneEffetto
breakInterrompe il ciclo immediatamente
continueSalta l’iterazione corrente e passa alla successiva
passNon fa nulla; usata come segnaposto

7.1 Esempi

# Uso di break, continue e pass
for i in range(1, 10):
    if i == 5:
        break        # Interrompe il ciclo
    if i % 2 == 0:
        continue     # Salta i numeri pari
    if i == 7:
        pass         # Non fa nulla
    print(i)

TIP

pass è utile quando si vuole lasciare un blocco vuoto, ad esempio durante la scrittura iniziale di una funzione o ciclo.

8. Cicli annidati

I cicli possono essere inseriti uno dentro l’altro. Ogni ciclo interno verrà eseguito completamente per ogni iterazione di quello esterno.

# Tabellina 3x3 con cicli annidati
for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i} x {j} = {i*j}")
    print("---")

INFO

I cicli annidati sono usati spesso per matrici, tabelle o algoritmi di ricerca combinata.

9. Struttura else nei cicli

In Python, i cicli for e while possono avere una clausola else. Il blocco else viene eseguito solo se il ciclo termina normalmente, cioè senza essere interrotto da break.

# Esempio di ciclo for con else
for n in range(1, 6):
    print(n)
    if n == 3:
        break
else:
    print("Ciclo completato senza interruzioni.")

print("Fine del programma.")

10. Riassunto generale

StrutturaDescrizione breveEsempio tipico
if / elif / elseSelezione condizionaleVerifica condizioni
forItera su sequenzeListe, range, stringhe
whileCiclo basato su condizioneRipetizione fino a fine
breakInterrompe un cicloTerminazione anticipata
continueSalta iterazione correnteControllo fine del ciclo
passNon esegue nullaStrutture vuote

INFO

Le strutture di controllo permettono di creare algoritmi complessi, combinando logica condizionale e ripetizione controllata.

11. Esercizi

11.1 Esercizio - Numero positivo o negativo

Scrivi un programma che chieda all’utente un numero e stampi se è positivo, negativo o zero.

11.2 Esercizio - Somma dei numeri da 1 a N

Chiedi un numero N e calcola la somma di tutti i numeri da 1 a N utilizzando un ciclo for.

11.3 Esercizio - Contatore con while

Crea un ciclo while che conti da 1 a 10 e si interrompa se raggiunge il numero 7.

11.4 Esercizio - Numeri pari e dispari

Chiedi all’utente un numero intero positivo N.

  • Usa un ciclo for per scorrere tutti i numeri da 1 a N
  • Per ogni numero stampa:
    • Pari se il numero è pari
    • Dispari se il numero è dispari

11.5 Esercizio - Somma selettiva

Chiedi all’utente un numero N.

  • Usa un ciclo for da 1 a N
  • Somma solo i numeri multipli di 3
  • Alla fine stampa la somma totale

12.6 Esercizio - Validazione dell’input (avanzato)

Scrivi un programma che:

  1. Chieda all’utente un numero maggiore di 0
  2. Se il numero inserito non è valido, continui a richiederlo usando un ciclo while
  3. Quando l’utente inserisce un valore corretto:
  • stampa tutti i numeri da 1 al numero inserito
  • termina il programma

12. Quiz a risposta multipla

1) Cosa fa l'istruzione `if`?

2) Qual è la differenza tra `for` e `while`?

3) A cosa serve `break` in un ciclo?

4) Quando viene eseguito l'`else` di un ciclo `for`?

5) Qual è lo scopo dell'istruzione `pass`?

Prenota una lezione