Condizionali

Nomi delle variabili

Quando scrivi un programma è sempre importante scegliere dei nomi per le variabili che ti facciano subito capire di cosa si tratta.

Ad esempio questi non sono dei nomi buoni:

...mentre questi sì:

Per le variabili booleane è anche consigliabile non usare variabili negate.

Ad esempio se mi serve una variabile che mi dica se il serbatoio è vuoto, potrei fare così:

Ma è sempre preferibile dare alla variabile il significato che il serbatoio è pieno e poi usare il NOT per dire: if(!carburante), che si traduce in se NON c'è carburante avviso il conducente

Operatori di confronto

Riprendiamo questo esercizio della lezione precedente:

Mi metto la sciarpa se la temperatura è inferiore a 5 gradi, o se sono raffreddato.

Qualcuno ha svolto l'esercizio in questo modo:

... ma un modo più interessante di svolgerlo è questo:

Abbiamo cioè usato una variabile float che registra il valore della temperatura, e poi per decidere se mettere la sciarpa abbiamo usato l'operatore di minoranza:

Il minore o uguale si scrive così:

Il maggiore:

Possiamo anche verificare se la temperatura è esattamente uguale a 5:

Attenzione a non confondere l'operatore = che assegna un valore a una variabile, con l'operatore == che verifica se una variabile ha un certo valore.

If nidificati

Proviamo a scrivere un programma che - data l'età di una persona - scriva il prezzo del biglietto in base alle seguenti fascie di età:

  • ragazzi sotto i 16 anni: pagano 4 €
  • persone tra i 16 e i 65 anni: pagano 7 €
  • persone sopra i 65 anni: pagano 5 €

Possiamo ragionare così:

  • verifico se l'età è sotto i 16, se è così paga 4 €...
  • altrimenti verifico se è sopra i 65, se è così paga 5 €, altrimenti paga 7 €

Questo si traduce nel seguente programma:

Osserva che il primo if contiene un secondo if, che viene detto nidificato, perché "ha fatto il nido" dentro all'else del primo. In questi casi per rendere comprensibile il codice è molto importante usare l'indentazione, cioè rientrare a destra il contenuto di ogni blocco (i blocchi sono identificati dalle parentesi { }).

Else if

Dato che queste situazioni capitano spesso, è possibile semplificare il programma usando un else if:

Si può usare anche più di un else if... supponiamo ad esempio di avere 4 fasce di prezzo:

  • sotto i 6: entrano gratis
  • dai 6 ai 15: pagano 4 €
  • dai 16 ai 65: pagano 7 €
  • oltre i 65: pagano 5 €

Questo si traduce nel seguente programma:

Nota che l'ultima situazione è sempre espressa da un semplice else, e non da un ulteriore else if.

Esercizi

Scrivi un programma che, date le seguenti informazioni:

  • temperatura dell'acqua: numero con virgola
  • pentola piena: vero se c'è acqua a sufficienza, falso se serve altra acqua
  • timer: numero intero che parte dal numero di minuti di cottura previsti e conta all'indietro fino ad arrivare a zero

...comandi l'accensione di una pompa e di un fornello.
(Il comando si fa semplicemente scrivendo "Fornello acceso. Pompa spenta." e simili)

La pompa si deve accendere finché la pentola non è piena.

Il fornello non si deve accendere se non c'è acqua a sufficienza e se il timer è già arrivato a zero.
Inoltre deve accendersi alla massima potenza se la temperatura è sotto gli 80 gradi, mentre deve accendersi solo a metà della potenza se la temperatura è tra gli 80 e i 100 gradi. Sopra i 100 deve spegnersi.

  • C#

CFP CNOS-FAP DON BOSCO - via XIII Martiri, 86 - 30027 San Donà di Piave (VE) - tel. 0421 338 980 - Organismo di Formazione accreditato dalla Regione del Veneto