Strutture di Controllo
- #python
- #programmazione
- #operatori e controllo del flusso
- #strutture di controllo
In questa lezione
- 1. Introduzione
- 2. Struttura condizionale if
- 3. Struttura condizionale completa: if, elif, else
- Esempio pratico
- Operatori di confronto
- 4. Operatori Ternari
- 4.1 Esercizi
- 5. Strutture iterative (Cicli)
- 5.1 Il ciclo for
- Funzione range()
- 5.2 Ciclo su sequenze
- 6. Ciclo while
- 6.1 Sintassi base
- 6.2 Esempio pratico
- 7. Istruzioni di controllo del ciclo
- 7.1 Esempi
- 8. Cicli annidati
- 9. Struttura else nei cicli
- 10. Riassunto generale
- 11. Esercizi
- 11.1 Esercizio - Numero positivo o negativo
- 11.2 Esercizio - Somma dei numeri da 1 a N
- 11.3 Esercizio - Contatore con while
- 11.4 Esercizio - Numeri pari e dispari
- 11.5 Esercizio - Somma selettiva
- 12.6 Esercizio - Validazione dell’input (avanzato)
- 12. Quiz a risposta multipla
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:
| Tipo | Descrizione | Esempio tipico |
|---|---|---|
| Selezione | Esegue blocchi diversi di codice in base a una condizione | if, elif, else |
| Iterazione (Cicli) | Ripete un blocco di codice più volte finché una condizione è vera | for, while |
Nota
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è obbligatorioelifè opzionale (può comparire più volte)elseè opzionale e finale
Esempio pratico
python
Operatori di confronto
| Operatore | Significato | Esempio | Risultato |
|---|---|---|---|
== | Uguale a | 5 == 5 | True |
!= | Diverso da | 5 != 3 | True |
> | Maggiore di | 7 > 2 | True |
< | Minore di | 4 < 1 | False |
>= | Maggiore o uguale | 3 >= 3 | True |
<= | Minore o uguale | 2 <= 5 | True |
Suggerimento
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:
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
Nota
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
- Dato un numero
n, stampa"Pari"se è pari altrimenti"Dispari"usando un operatore ternario. - 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.
| Sintassi | Significato | Esempio | Output |
|---|---|---|---|
range(n) | da 0 a n-1 | range(5) | 0,1,2,3,4 |
range(a, b) | da a a b-1 | range(2,5) | 2,3,4 |
range(a, b, step) | da a a b-1, con passo step | range(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)
Nota
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)
Attenzione
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:
| Istruzione | Effetto |
|---|---|
break | Interrompe il ciclo immediatamente |
continue | Salta l’iterazione corrente e passa alla successiva |
pass | Non 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)
Suggerimento
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("---")
Nota
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
| Struttura | Descrizione breve | Esempio tipico |
|---|---|---|
if / elif / else | Selezione condizionale | Verifica condizioni |
for | Itera su sequenze | Liste, range, stringhe |
while | Ciclo basato su condizione | Ripetizione fino a fine |
break | Interrompe un ciclo | Terminazione anticipata |
continue | Salta iterazione corrente | Controllo fine del ciclo |
pass | Non esegue nulla | Strutture vuote |
Nota
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:
Parise il numero è pariDisparise il numero è dispari
11.5 Esercizio - Somma selettiva
Chiedi all’utente un numero N.
- Usa un ciclo
forda 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:
- Chieda all’utente un numero maggiore di 0
- Se il numero inserito non è valido, continui a richiederlo usando un ciclo
while - Quando l’utente inserisce un valore corretto:
- stampa tutti i numeri da 1 al numero inserito
- termina il programma
12. Quiz a risposta multipla
Mettiti alla prova
0/5 risposte
1) Cosa fa l'istruzione
if?2) Qual è la differenza tra
forewhile?3) A cosa serve
breakin un ciclo?4) Quando viene eseguito l'
elsedi un ciclofor?5) Qual è lo scopo dell'istruzione
pass?