top of page

IL COSTRUTTO CONDIZIONALE

a cura di Michele Andreozzi

Introduzione

CONCETTI FONDAMENTALI DI LOGICA

La lezione che stai per affrontare non è particolarmente complicata dal punto di vista tecnico, ma per comprendere davvero l'uso del costrutto condizionale è necessaria una breve introduzione alla logica, che a primo impatto potrebbe sembrare più complessa del dovuto.

 

Prenditi tutto il tempo necessario per comprendere ogni concetto teorico a fondo.  L'applicazione informatica di tali strumenti risulterà molto più semplice!

Algebra Booleana

In apertura di corso abbiamo gestito le operazioni aritmetiche. Per introdurre efficacemente i costrutti condizionali, spendiamo qualche parola per parlare dell’algebra booleana

 

Si definisce booleana un’espressione che, quando valutata, può assumere solo due valori, vero o falso, in base agli operatori logici e al valore delle costanti e delle variabili contenute nell'espressione. In particolare, Python definisce due espressioni da utilizzare nella sintassi dei programmi, utili proprio a tale scopo: True e False.

Ad esempio potresti imbatterti in espressioni del tipo:

  • 5 == (3+2), che assumerà valore True;

  • 5 == 6, che assumerà valore False.

Nell'algebra booleana un altro strumento fondamentale sono gli operatori, che si dividono in operatori logici e relazionali.

Gli operatori

Gli operatori relazionali permettono di confrontare due variabili o costanti mettendole appunto in relazione per il valore che esse assumono. Questi operatori sono:

  • == (uguale);

  • != (diverso);

  • > (maggiore);

  • < (minore);

  • >= (maggiore o uguale);

  • <= (minore o uguale).

Gli operatori logici, invece, permettono di costruire espressioni composte valutando il valore booleano di due espressioni. Questi operatori sono:

  • and (congiunzione logica, ovvero, nella lingua italiana, e);

  • or (congiunzione logica, ovvero o);

  • not (congiunzione logica, ovvero non).

Adesso il loro significato può sembrare astratto e complicato, ma sono uno strumento chiave nella programmazione e il loro uso ti apparirà più chiaro tramite esempi ed esercizi.

Quando valutati nell’ambito dell’aritmetica Booleana, questi operatori rispettano il seguente ordine di priorità (da maggiore a minore): 

  1. negazione not;

  2. operatori di relazione <, >, <=, >=;

  3. uguaglianza == e disuguaglianza !=;

  4. congiunzione and;

  5. disgiunzione or.

Per comprendere come questi operatori interagiscono tra loro è necessario comprendere lo strumento delle tabelle di verità: esse sono tavole che riportano il valore assunto da un'espressione, secondo la logica binaria True/False.

Ora è possibile dunque costruire, per ciascun operatore logico, le rispettive tabelle di verità, che ci permettono di valutare i valori di espressioni composite. Di seguito sono riportate le tabelle di verità per i principali operatori, in funzione di tutti i possibili valori in ingresso:

Tabella di verità: operatore not
Tabella di verità: operatore and
Tabella di verità: operatore or

Si può allora notare che l'operatore not inverte il valore di verità dell'espressione, l'operatore and fa assumere valore True solo se entrambe le espressioni hanno valore True e l'operatore or fa assumere valore True se almeno una delle due espressioni ha valore True.

Ovviamente tutti questi operatori possono a loro volta essere combinati, secondo l'ordine di priorità definito sopra, per creare espressioni più complicate.

IL COSTRUTTO CONDIZIONALE

Grazie a tutti questi operatori logici e relazionali possiamo ora scrivere i costrutti condizionali. Essi permettono al calcolatore di eseguire un'istruzione (o una serie di istruzioni) solo se una particolare condizione è verificata.

Il costrutto if

Il primo costrutto che incontriamo è quello if, esso esegue le istruzioni condizionali solo se l'espressione da valutare risulta TrueAd esempio:

 

   if 2 > 1:

      print("2 è maggiore di 1")

 

La condizione 2 > 1 risulterà vera e il calcolatore mostrerà il messaggio voluto, in questo caso "2 è maggiore di 1".

Attenzione!

Python riconosce le istruzioni logicamente legate ad un costrutto condizionale tramite indentation, ovvero grazie allo spazio ad inizio riga che precede tali operazioni.

Ad esempio:

 

   if 2 > 1:

      print("2 è maggiore di 1")

      print("anche se non era difficile saperlo")

   print("cosa vuoi fare ora?")

 

In questo caso i primi due utilizzi di print sono correttamente indentati e i rispettivi messaggi verranno visualizzati solo se la condizione dell'if risulta vera. L'ultimo uso di print, invece, non è indentato rispetto ad if, e perciò verrà eseguito indipendentemente dal valore della condizione.

 

Per indentare un’istruzione (normalmente l’ambiente lo farà in automatico), premi il tasto “Tab” sulla tua tastiera (appena sopra il caps lock), mentre per eliminare l’indentazione e scrivere del codice al di fuori del costrutto if usa il backspace.

I costrutti else e else if

Il costrutto else invece è logicamente equivalente al termine italiano "altrimenti" e dunque esegue le operazioni ad esso legate solo se la condizione precedente è risultata FalseAd esempio:

 

   if 2 > 3:

      print("2 è maggiore di 3")

   else:

      print("2 è minore di 3")

 

In questo caso verrà visualizzato il secondo messaggio, poiché l'utilizzo di if ha restituito valore False. Attenzione però: se la prima espressione risultasse vera il blocco else non verrebbe eseguito dal calcolatore, che avendo valutato True la condizione dell'if, non esegue le alternative ad esso.

Utilizzando in modo composto if e else si possono costruire espressioni sempre più complicate, ad esempio:

 

   if 1 > 2:

      print("1 è maggiore di 2")

   else if 1 == 2:

      print("1 è uguale a 2")

   else:

      print("1 è minore di 2")

 

Nota: Python permette di semplificare la seconda espressione (else if) usando il costrutto elif, che è sostanzialmente equivalente.

ESERCIZI

Adesso che hai imparato i concetti di base dei costrutti condizionali, puoi iniziare ad applicarli in programmi Python. Qui sotto trovi tre esercizi risolti che ti aiuteranno a fare pratica!

Esercizio 1

Scrivi un programma che, data la variabile anni che indica l'età dell'utente, determini se l'utente è maggiorenne, cioè se la sua età è maggiore o uguale a 18 anni.

Nota: l’esercizio può essere risolto inizializzando la variabile anni a un valore fisso durante la scrittura del codice, oppure tramite la funzione input(). La risoluzione fornita utilizza la funzione input().

1   anni = int(input("Quanti anni ha l'utente? "))

2

3   if anni >= 18:

4      print("L'utente è maggiorenne")

5   else:

6      print("L'utente è minorenne")

Esercizio 2

Scrivi un programma che, dati tre numeri a, b e c, determini se tali numeri possono essere le misure dei lati di un triangolo, stampando sì se possono esserlo e no altrimenti.

Nota: in ogni triangolo si ha che la somma di ogni coppia di lati deve essere maggiore dell'altro lato. Ad esempio, la terna (3, 4, 5) può rappresentare le misure di tre lati di un triangolo, mentre (2, 6, 10) non può, in quanto 2 + 6 = 8 < 10.

1   a = int(input("Misura lato a: "))

2   b = int(input("Misura lato b: "))

3   c = int(input("Misura lato c: "))

4

5   if a+b > c and b+c > a and a+c > b:

6      print("Sì")

7   else:

8      print("No")

Esercizio 3

Scrivi un programma che, data la variabile anno che indica un anno nella storia, determini se tale anno è bisestile o meno.

Nota: un anno è bisestile se il suo numero è divisibile per 4 ma non per 100, oppure se è divisibile per 400. Un numero n è divisibile per un numero k se n mod k = 0 (in Python, n % k == 0).

1   anno = int(input("Inserisci un anno: "))

2

3   if anno % 4 == 0 and anno % 100 != 0 or anno % 400 == 0:

4      print("Sì")

5   else:

6      print("No")

CONCLUSIONE

Complimenti, hai completato la lezione 3!

In questa lezione hai preso confidenza con i fondamenti di algebra booleana, in particolare gli operatori relazionali e logici, per poi applicare questi concetti nel costrutto condizionale in Python.

Usa i pulsanti qui sotto per avanzare alla lezione 4 o per tornare alla home del corso.

bottom of page