Do sada smo naučili kako C++ radi sa:

  • celim brojevima (int)
  • decimalnim brojevima (float, double)
  • karakterima (char)

Ali programiranje nije samo čuvanje podataka.

Program često mora da donosi odluke.

Na primer:

  • da li je korisnik punoletan?
  • da li je lozinka tačna?
  • da li je broj paran?
  • da li je korisnik prijavljen?
  • da li je temperatura previsoka?
  • da li je proizvod na stanju?

Za ovakve situacije ne trebaju nam brojevi ili tekst.

Treba nam odgovor koji ima samo dva moguća stanja:

  • DA
  • NE

U programiranju to predstavljamo pomoću tipa:

bool

Ovo je jedna od najvažnijih osnova programiranja, jer bez logike nema:

  • uslova,
  • odluka,
  • kontrolisanja toka programa,
  • ozbiljnih aplikacija.

U ovoj lekciji naučićemo:

  • šta je bool,
  • šta su logičke vrednosti,
  • kako rade true i false,
  • kako nastaju logički izrazi,
  • kako se koriste poređenja,
  • kako računar vidi logičke vrednosti,
  • i koje greške početnici najčešće prave.

Šta je bool?

bool je skraćenica od:

boolean

Naziv dolazi od matematičara:

George Boole

koji je razvio logičku algebru — osnovu modernog računarstva.

Tip:

bool

može sadržati samo dve vrednosti:

true
false

što znači:

tačno
netačno

Primer:

bool prijavljen = true;

znači:

korisnik je prijavljen.

Primer:

bool admin = false;

znači:

korisnik nije administrator.

Zašto su logičke vrednosti važne?

Bez logike program ne može da odlučuje.

Na primer:

Ako korisnik ima više od 18 godina:

dozvoli registraciju.

Ako nema:

zabrani pristup.

Ako je stanje računa pozitivno:

odobri plaćanje.

Ako nije:

prikaži grešku.

Sve ove odluke zasnivaju se na logičkim vrednostima.

Deklaracija bool promenljive

Primer:

bool aktivan = true;

Ovde:

  • bool = tip
  • aktivan = ime promenljive
  • true = vrednost

Još primera:

bool upaljeno = true;
bool pristupDozvoljen = false;
bool ispravanKod = true;
bool korisnikPostoji = false;

Ispis bool vrednosti

Primer:

#include <iostream>
using namespace std;

int main() {
    bool stanje = true;

    cout << stanje;

    return 0;
}

Rezultat:

1

Ako napišemo:

bool stanje = false;

rezultat:

0

Zašto?

Jer računar interno vidi:

true = 1
false = 0

Kako računar vidi bool?

Interno:

true  → 1
false → 0

To je veoma važno.

Primer:

bool x = true;
cout << x;

ispisuje:

1

Primer:

bool y = false;
cout << y;

ispisuje:

0

Ako želimo pravi tekst:

true
false

kasnije ćemo koristiti posebne opcije ispisa.

Šta je logički izraz?

Logički izraz je izraz koji daje rezultat:

true

ili:

false

Primer:

5 > 3

rezultat:

true

Primer:

2 > 10

rezultat:

false

To su logički izrazi.

Operatori poređenja

Najčešći operatori:

Jednako:

==

Nije jednako:

!=

Veće:

>

Manje:

<

Veće ili jednako:

>=

Manje ili jednako:

<=

Primeri

5 == 5

Rezultat:

true
5 == 7

Rezultat:

false
10 > 3

Rezultat:

true
2 < 1

Rezultat:

false

Čuvanje rezultata u bool promenljivoj

Možemo rezultat logičkog izraza sačuvati.

Primer:

bool rezultat = 10 > 5;

Pošto:

10 > 5

jeste tačno:

rezultat = true

Primer:

cout << rezultat;

Rezultat:

1

Primer sa korisnikom

int godine = 20;
bool punoletan = godine >= 18;

Pošto:

20 >= 18

važi:

punoletan = true

Ovo je veoma praktično.

Direktna poređenja

Ne moramo uvek koristiti promenljive.

Možemo direktno:

cout << (5 > 2);

Rezultat:

1

Primer:

cout << (10 == 7);

Rezultat:

0

Bool i if uslovi

Najveća snaga bool tipa dolazi kod uslova.

Primer:

bool prijavljen = true;

if (prijavljen) {
    cout << "Pristup dozvoljen";
}

Pošto je:

prijavljen = true

kod se izvršava.

Ako je:

false

ne izvršava se.

Bool i unos korisnika

Možemo uneti broj:

bool status;
cin >> status;

Ako korisnik unese:

1

dobijamo:

true

Ako unese:

0

dobijamo:

false

Kombinovanje logike

Kasnije ćemo koristiti:

AND:

&&

OR:

||

NOT:

!

Primer:

bool uslov = (godine >= 18 && prijavljen == true);

Ovo ćemo detaljno učiti kasnije.

Razlika između = i ==

Ovo je jedna od NAJVAŽNIJIH početničkih grešaka.

Pogrešno:

if (x = 5)

Ovo nije poređenje.

To je:

dodela vrednosti

Ispravno:

if (x == 5)

Ovde proveravamo jednakost.

Veoma česta greška na ispitima.

Bool iz realnog života

Login sistem:

bool prijavljen = true;

E-commerce:

bool proizvodNaStanju = false;

Bankarstvo:

bool transakcijaUspešna = true;

Igra:

bool igracZiv = true;

Alarm sistem:

bool alarmAktivan = false;

Najčešće greške početnika

1. Mešanje = i ==

Pogrešno:

if (x = 10)

2. Očekivanje true/false ispisa

Početnik očekuje:

true

a dobije:

1

3. Pogrešno korišćenje brojeva

Primer:

bool x = 5;

Tehnički radi:

jer sve osim 0 postaje:

true

ali početnicima ovo zbunjuje.

4. Nerazumevanje poređenja

Pogrešno:

5 = 5

Ispravno:

5 == 5

5. Pogrešno očekivanje od if

if (false)

nikad se ne izvršava.

Veoma praktičan primer

#include <iostream>
using namespace std;

int main() {
    int godine;

    cout << "Unesi godine: ";
    cin >> godine;

    bool punoletan = godine >= 18;

    cout << punoletan;

    return 0;
}

Ako korisnik unese:

20

rezultat:

1

Ako unese:

15

rezultat:

0

Zašto je bool jedna od najvažnijih osnova?

Bez logičkih vrednosti nema:

  • if uslova
  • while petlji
  • login sistema
  • validacija
  • poslovnih pravila
  • sigurnosnih provera
  • algoritama odlučivanja

Ovo je jedna od najvažnijih osnova programiranja.

Rezime

U ovoj lekciji naučili smo:

bool

tip koji čuva:

true
false

Interno:

1 i 0

Koristi se za:

  • poređenja
  • odluke
  • kontrolu toka programa

Jedna od najvažnijih početničkih tema.

Mini test

  1. Koje vrednosti može imati bool?
    a) 0–100
    b) true / false
    c) tekst
  2. Šta daje:
5 > 2

a) true
b) false

  1. Šta znači:
==

a) dodela
b) poređenje jednakosti

  1. Šta je:
=

a) poređenje
b) dodela

  1. Šta ispisuje:
bool x = true;
cout << x;

a) true
b) 1

Zadaci za vežbu

  1. Napravi bool promenljivu za login status.
  2. Proveri da li je broj veći od 10.
  3. Sačuvaj rezultat poređenja u bool promenljivu.
  4. Napravi proveru punoletstva.
  5. Namerno napravi grešku sa = umesto ==.

Domaći zadatak

Napravi program koji:

  • traži unos godina
  • proverava punoletstvo
  • proverava da li je broj pozitivan
  • ispisuje rezultate

Pristupačnost