Un Approccio a Java: Le Variabili Booleane

Partiamo dai valori booleani



Ciao a tutti e bentornati!

La volta precedente, ho fatto un'introduzione alle strutture condizionali, definendo il loro funzionamento. Prima di poter dare qualche esempio pratico, è necessario chiarire in che modo ci è concesso operare con le condizioni. Per fare questo, è necessario approfondire leggermente il tipo dato boolean.

Tipo dati boolean

Prima di introdurre il tipo dato, è bene introdurre il concetto di dominio.

Con dominio di un tipo dato, intendiamo tutti i valori che una variabile di quel tipo dato può assumere. Nel nostro caso, il tipo dato boolean può assumere i valori true false. Si può quindi dire che:

dominio(boolean) = {true, false}

La cosa che potrebbe suscitare dubbi è proprio l'utilizzo di questi valori. Vediamo meglio.

Per capire come usare un valore booleano, dobbiamo prima aver chiaro un concetto riguardante le condizioni. Nel momento in cui Java interpreta una condizione, la sostituisce nel codice con il valore booleano derivante dalla sua valutazione. Per esempio, immaginiamo di avere questo frammento di codice:

int a = 5;
if(a > 3){
	//fai qualcosa
}

La variabile a vale 5. La condizione viene valutata. Con questa configurazione di variabili, la condizione è vera. Possiamo quindi immaginare che il codice, dopo la valutazione, venga modificato in questo modo:

int a = 5;
if(true){
    //fai qualcosa
}

All'atto pratico, questo non è un passaggio che è evidente allo sviluppatore, ma ci introduce bene all'utilizzo del tipo booleano.

Dichiarazione e inizializzazione di una variabile boolean

Java mette a disposizione con la libreria standard il tipo dati booleano. 

Come tutte le variabili, ha una sua sintassi di dichiarazione.

boolean variabile;

Può anche essere inizializzata in questo modo:

variabile = true;

Ovviamente, se volessimo inizializzare la variabile con il valore false, basterebbe sostituire il true con il false, ottenendo un risultato come il seguente:

variabile = false;

Chiaramente, posso combinare insieme dichiarazione e inizializzazione in questo modo:

boolean variabile = false;

É bene spezzare una lancia a favore di Java. La messa a disposizione di valori booleani è comoda e rende il codice, a mio parere, più leggibile. Altri linguaggi, come il C per esempio, mettono a disposizione questo tipo dato solo per mezzo di altre librerie. Comodo il fatto di averlo a disposizione con la libreria standard.

Utilizzo di una variabile booleana

Dopo aver dichiarato e valorizzato la variabile booleana, giunge il fatidico momento dove è necessario utilizzarla. Vediamo come questo è possibile partendo da un esempio.

int a = 5;
int b = 4;
boolean variabileBooleana = (a + b) < 10;

Questo primo semplice esempio porta in evidenza il fatto che si possa valorizzare una variabile anche con il risultato della valutazione di una condizione anche non elementare. In questo caso, la condizione da valutare è (a+b)<10 che, con questa particolare configurazione di variabili, risulta essere vera. 

La variabile booleana conterrà quindi il valore true. Per verificarlo, è possibile stampare sul terminale la condizione attraverso una semplice System.out.println();.

Ipotizziamo ora di voler controllare mediante un if se la variabile booleana contiene il valore true. Lo possiamo fare mediante l'operatore di confronto ==. Scriveremo quindi:

int a = 5;
int b = 4;
boolean variabileBooleana = (a + b) < 10;
if(variabileBooleana == true){
    //fai qualcosa
}

In questa maniera, possiamo effettuare controlli con oggetto variabili booleane. Possiamo comportarci analogamente per valutare se il contenuto sia false. Scriveremo quindi: 

...
if(variabileBooleana == false){
  //fai qualcosa
}

La scrittura variabileBooleana == true risulta però essere inutilmente verbosa. Quello che vorremmo è trovare un modo per esprimere lo stesso concetto, ma in maniera più semplice e concisa.

Per fare questo, è necessario sapere che una scrittura del tipo

if(true){
    ....
}

è assolutamente inutile da scrivere in un programma, ma è assolutamente funzionante, infatti il blocco di istruzioni nell'if verrà sempre eseguito in questo caso. Ci si potrebbe chiedere il perchè di questa parentesi. Il perchè è abbastanza semplice giunti a questo punto. Nel momento in cui si fa un confronto con oggetto una variabile, al posto del nome simbolico, viene sostituito il valore contenuto in essa. 

Ma se viene sostituito il valore, un controllo del tipo variabileBooleana == true diventa true == true, che è inutilmente verboso. Ci si chiede quindi quale sia il metodo per poter rendere meno verbosa la scrittura. 

In modo molto semplice, si scrive un if come il seguente

if(variabileBooleana){
    ....
}

Si nota subito che, nel momento in cui il nome simbolico della variabile verrà sostituito con il suo valore, si otterrà un codice come quello mostrato poc'anzi, che abbiamo detto essere assolutamente funzionante. Ecco perchè quella scrittura rimane valida. Chiaramente, non capita praticamente mai di vederla scritta esplicitamente così nelle soluzioni a dei normali esercizi, dal momento in cui non influenzerebbe in alcuna maniera il normale flusso del programma.

Analogamente, ci si potrebbe domandare se esista una maniera di controllare se una variabile sia valorizzata con false. In questo momento, mi limiterò a dare la sintassi Java per poterlo fare. La spiegazione dettagliata è rimandata al prossimo articolo.

La sintassi è:

if(!variabileBooleana){
    ...
}

Questa scrittura si legge "if not variabileBooleana".

Come detto prima, al momento non è necessario capire il significato. Per capirlo è necessario introdurre gli operatori booleani, cosa che faremo in seguito.

Nota conclusiva

Un'ultima cosa importante da dire è che spesso si tende a bistrattare i valori booleani in favore di condizioni molto lunghe e complesse negli if. A mio parere, e ribadisco che è un mio parere personale dettato dalla mia esperienza, talvolta è preferibile creare una variabile booleana e valorizzarla con il valore dato dalla valutazione della condizione lunga e complessa.

L'idea è di avere un codice così:

boolean isValid = condizioneLungaEComplessa;
if(isValid){

}

Al posto di un codice così:

if(condizioneLungaEComplessa){

}

Ci si potrebbe chiedere perchè. Secondo me, si guadagna in leggibilità del codice. Questa cosa è vera se la variabile booleana ha un nome che permetta di capire quello che quella variabile rappresenta. 

La regola di dare dei nomi significativi alle variabili è una good practice sempre valida. Credo fortemente che sia meglio dare un nome leggermente più lungo ad una variabile in modo che sia significativo. Sottolineo il leggermente perchè l'estremo opposto è altrettanto brutto. Non è mai bello avere variabili con nomi lunghissimi. Al posto che guadagnare leggibilità, si perde. 

Anche per questa volta è tutto, vi invito a continuare a sperimentare wink Alla prossima!

 
by Alessio Mungelli Date: 19-10-2020 java jdk jre programmazione strutture condizionali if else elseif teoria tutorial boolean variabili booleane visite : 521  
 
Alessio Mungelli

Alessio Mungelli

Computer Science student at UniTo (University of Turin), Network specializtion, blogger and writer. I am a kind of expert in Java desktop developement with interests in AI and web developement. Unix lover (but not Windows hater). I am interested in Linux scripting. I am very inquisitive and I love learning new stuffs.

 
 
 

Articoli correlati

Un approccio a Java: Il ciclo while

Ciao a tutti e bentornati! Dopo aver fatto una breve, ma corposa, introduzione sui cicli, andiamo oggi a vedere finalmente le prime implementazioni che utilizzano quello che abbiamo definito ciclo precondizionale. In Java, come…

Un approccio a Java: I cicli - Introduzione

Ciao a tutti e bentornati! Sino ad ora, abbiamo parlato di variabili e di strutture di selezione, andando a considerare alcuni degli aspetti fondamentali di questi due concetti. Teoricamente, per…

Un approccio a Java: strutture di selezione - casi d'uso

Ciao a tutti e bentornati! Sino ad ora ci siamo preoccupati di fare una carrellata quanto più completa riguardo i concetti fondamentali di cui abbiamo bisogno per approcciarci all'utilizzo delle…

Un approccio a Java: operatori booleani

La volta precedente, abbiamo ampiamente parlato delle variabili booleane, cercando di delineare quali siano le principali operazioni che si possono effettuare proprio a livello pratico.  Di tutti i casi esaminati, non abbiamo…

Un approccio a Java: strutture condizionali

Ciao a tutti e bentornati! Le volte precedenti abbiamo introdotto il concetto di variabile, tentando di definire alcuni concetti basilari a riguardo.  Alcune situazioni fanno però intuire come il solo concetto…

Un approccio a Java: Le variabili - caso d'uso

Ciao a tutti amici e bentornati! Dopo l'introduzione fatta sulle variabili, cerchiamo di analizzare alcune criticità che si possono presentare in situazioni alquanto comuni. Partiamo quindi analizzando degli esempi pratici.  Esempio 1: divisione…

Un approccio a Java: Le variabili

Ciao a tutti e bentornati! Quest'oggi inizieremo un percorso che ci porterà a studiare, ed eventualmente ripassare, quelle che sono le basi della programmazione. Inizieremo parlando di variaibli. Introduzione Chiunque voglia approcciarsi al…

Hashmap con concatenamento: liste di trabocco

In questa breve serie di articoli andremo a vedere com'è possibile realizzare in C la struttura dati Hashmap. Nell'implementazione andremo ad usare le liste doppiamente concatenate come strutture dati ausiliarie. Andiamo…

Facebook: come rimuovere i dati nascosti e le informazioni personali

Facebook è un fantastico social network che ci permette di essere sempre aggiornati su tutte le notizie dei nostri amici o della nostra famiglia o anche sulle notizie più rilevanti…

Linux per Principianti: Guida all'installazione di Ubuntu

Abbiamo dato precedentemente una panoramica su qualche aspetto di base dei sistemi Unix e in particolar modo Ubuntu. Abbiamo infatti fatto un'introduzione, dopodichè abbiamo parlato di terminale Ubuntu e infine abbiamo parlato…

Linux per Principianti: Introduzione

Se hai pensato di migrare da Windows a un sistema operativo Unix, o Linux nello specifico ci sono cose che dovresti sapere. L'obiettivo è quello di dare le informazioni essenziali…

Java Strutture Dati: Liste Concatenate

Con il 2020 andiamo ad esaminare un nuovo aspetto della programmazione: le strutture dati. Spesso capita a tutti di utilizzare strutture messe a disposizione dai vari linguaggi di programmazione. L'obiettivo sarà…

Utilizziamo i nostri cookie e quelli di terzi per migliorare i nostri servizi, compilare informazioni statistiche e analizzare le vostre abitudini di navigazione. Questo ci permette di personalizzare i contenuti che offriamo e di mostrarvi le pubblicità relative alle vostre preferenze. Cliccando su "Accetta tutto" acconsentite alla memorizzazione dei cookie sul vostro dispositivo per migliorare la navigazione del sito web, analizzare il traffico e assistere le nostre attività di marketing. Potete anche selezionare "Solo cookies di sistema" per accettare solo i cookies necessari al funzionamento del sito web, oppure potete selezionare i cookies che desiderate attivare cliccando su "Impostazioni". Tradotto con www.DeepL.com/Translator (versione gratuita)" o "Rifiuta".

Accetta tutti Solo cookies del sistema Configurazione