Tipul Boolean

Variabilele de tip Boolean (Boolean vine de la numele matematicianului George Boole) pot avea una din valorile predefinite: true (adevarat) si false (fals). Modul de reprezentare īn calculator este (de regula) 0 pentru false si 1 pentru true (false < true). Expresiile booleene, precum z > y, intervin mult mai des īn programele PASCAL decāt variabilele booleene declarate īn cadrul acestor programe. Nu putine sunt cazurile cānd o valoare logica, rezultata īn urma evaluarii unor expresii booleene urmeaza sa fie folosita pentru diferite teste, ca īn programul urmator.


PROGRAM test;
{ Programul utilizeaza variabile de tip logic }
VAR
...major:boolean;
...varsta:integer;
BEGIN
...write(’Introduceti varsta dumneavoastra: ’);
...readln(varsta);
...IF varsta >= 18 THEN
......major:=TRUE
...ELSE
......major:=false;
...writeln(major)
END.{ test }

Rezultatele executiei programului

Introduceti varsta dumneavoastra: 14...
false
Introduceti varsta dumneavoastra: 18
true
Introduceti varsta dumneavoastra: 22
true

Īn acest program (test) major a fost declarata ca variabila de tip boolean, prin enuntul

VAR
...major:boolean;

Remarci:
  • Constantele true si false nu pot fi citite ca intrari. Aceste valori pot fi īnsa tiparite, ca iesiri. De exemplu, enunturile:
...writeln('Este ',8>3,' ca 8>3');
...writeln('Este ',8<1,' ca 8<1');

vor afisa:

Este true ca 8>3
Este false ca 8<1
  • Structura de selectie IF-THEN-ELSE are drept scop atribuirea valorii true/false variabilei de tip boolean major (vezi programul test);.
  • O alta metoda, mult mai eleganta, de atribuire a unei valori logice permite īnlocuirea testului (vezi programul):
...IF varsta>=18
...THEN major:=true
...ELSE major:=false;

cu enuntul:

...major := varsta>=18;

In acest caz, expresia varsta>=18 este evaluata si valoarea ei (true sau false) este atribuita variabilei major.

Variabila santinela. O variabila booleana folosita pentru a salva o valoare true, pentru o utilizare ulterioara se numeste flag sau santinela (Boolean sentinel).

Īn urmatoarea secventa PASCAL, variabila test este o santinela booleana.

Exemplu:
CONST
...a=1E6;
VAR
...test:boolean;
...c:real;
BEGIN
......
...test := c>=a;
......
...IF test THEN aga;
......

Īn mod curios, cuvintele true si false apar foarte rar īn programele PASCAL bine scrise, chiar īn cele care folosesc abundent variabile booleene.

Enuntul:

...IF test THEN aga;

poate fi scris de asemenea ca:

...IF test = true THEN aga;

dar o astfel de constructie nu se citeste usor. De altfel, enuntul este redundant, īntrucāt valoarea de adevar a expresiei: test=true trebuie sa fie aceeasi cu a variabilei test īnsasi.

Reguli:
  • false < true;
  • Operatorii logici, specifici tipului boolean sunt: AND, OR, NOT, XOR (ultimul apare īn versiunile de (Borland) PASCAL);
  • Pentru a compara doua valori numerice se utilizeaza operatorii de relatie: < (mai mic); <= (mai mic sau egal); > (mai mare); >= (mai mare sau egal); <> (diferit de);
  • Pentru a separa expresiile de relatie de operatorii logici se utilizeaza parantezele (Exemplu: 5 £ a £ 8 se codifica (a >= 5) AND (a <= 8));
  • Nu este indicat sa se testeze egalitatea valorilor reale;
  • Pentru valori de tip boolean putem considera o serie de functii specifice: ord, odd, eof, eoln etc.;
  • Procedura readln nu accepta o variabila booleana.