C++ Lavorare con i Booleani

Scritto da ambrix on . Postato in Corsi Programmazione, NotInHome Nessun Commento

logo programmazione c++

Lezione#03 I Booleani nel mondo del C++, il linguaggio di programmazione a oggetti più conosciuto nel mondo informatico.

In questa lezione del corso  C++ in 11 passi  tratteremo gli elementi di programmazione riguardanti i tipi booleani. Un tipo booleano fa riferimento all’Algebra di Boole e risulta di fondamentale importanza in qualsiasi progetto di programmazione.

Vero/falso, testa/croce, 1/0, alto/basso, potremmo continuare, ma ciò basta per dare l’idea di cosa siano i dati booleani. Un valore booleano è semplicemente un dato che può assumere solo due valori, che tra l’altro, sono duali tra loro. Ma vediamo subito un primo esempio:

#include <iostream>
using namespace std;

int main(){
    bool x = false;
    bool y = true;
    cout << "x = " << x << endl;
    cout << "y = " << y << endl;
}

x = 0
y = 1

Visto? Assegnando il valore false alla variabile booleana x, abbiamo in output 0. Mentre se assegniamo true ad una variabile di tipo bool, avremo in uscita 1.

Tuttavia, è possibile avere a video le keywords false e true:

#include <iostream>
using namespace std;

int main(){
    bool x = false;
    bool y = true;
    cout << "x = " << boolalpha << x << endl;
    cout << "y = " << boolalpha << y << endl;
}

x = false
y = true

Con la funzione boolalpha l’output converte 0 in false e 1 in true. Vediamo ora come funziona l’operatore negazione, ossia come avere il negato di un valore booleano.

#include <iostream>
using namespace std;

int main(){
    bool x = false;
    bool y = true;
    cout << "x negato = " << boolalpha << !x << endl;
    cout << "y negato = " << boolalpha << !y << endl;
}

x = true
y = false

Ben fatto! La negazione si effettua con l’operatore ! che precede la variabile. Questa operazione è anche conosciuta come logical not o inverter nel caso dei circuiti logici.

L’utilità dei booleani è di notevole interesse e ha un’infinità di sfaccettature e impieghi. Ad esempio possiamo usare il tipo bool per effettuare confronti tra variabili:

#include <iostream>
using namespace std;

int main(){
    bool x = 99 > 76;
    bool y = 13 < 5;
    cout << "x = " << boolalpha << x << endl;
    cout << "y = " << boolalpha << y << endl;
}

x = true
y = false

Infatti nel primo confronto 99 è maggiore di 76 e quindi x assume valore true. Nel secondo confronto, 13 non è maggiore di 5 e quindi y assume valore false. Possiamo utilizzare anche gli operatori <= (minore o uguale) e >= (maggiore o uguale):

#include <iostream>
using namespace std;

int main(){
    bool x = 99 >= 76;
    cout << "x = " << boolalpha << x << endl;
    cout << (76 <= 76);
}

x = true
y = true

In quest’ultimo caso abbiamo usato le parentesi tonde per racchiudere il confronto tra numeri. Proviamo a vedere se due valori sono uguali tra lori o in altri casi, se due variabili coincidono o meno:

#include <iostream>
using namespace std;

int main(){
    bool x = 99 == 76;
    cout << "x = " << boolalpha << x << endl;
}

x = true

Bene! Da non confondere l’uguale (=) col doppio uguale (==). Il primo è un operatore di assegnazione, il secondo è un operatore di confronto.

Possiamo verificare se due valori sono diversi tra loro? Certo! Esiste l’operatore not equal (diverso) che ci permette di effettuare questa operazione:

#include <iostream>
using namespace std;

int main(){
    bool x(99 != 76);
    cout << "x = " << boolalpha << x << endl;
}

x = true

L’operatore not equal si esprime con un punto esclamativo seguito dall’uguale (!=). Nell’ultimo esempio 99 è diverso da 76 e pertanto x assume valore true.

Possiamo passare una comparazione logica anche come argomento di una variabile! Nell’esempio infatti si nota x(99!=76)

Infine vediamo come lavorare con gli operatori AND e OR.

#include <iostream>
using namespace std;

int main(){
    bool x(99 != 76);
    bool y(true);
    bool r_and(x && y);
    bool r_or(x || y);
    cout << "r_and = " << r_and << endl;
    cout << "r_or = " << r_or;
}

r_and = 1
r_or = 1

Benissimo! L’operatore AND viene richiamato col double ampersand (&&), mentre per l’OR usiamo un double pipe (||). Con questo esempio concludiamo la terza lezione del corso  C++ in 11 passi .

Ritorna alla precedente <– []–> Vai alla successiva

Lascia un commento

Devi essere loggato per postare un commento.

Per Richieste, Avvisi e Lasciti Ereditari

Disclaimer

I contenuti di questo Blog (testi, immagini, foto, etc.) sono di mia creazione, tranne nei casi dove espressamente indicato.