Uma condição ou é verdadeira ou é falsa, não há meio termo. E uma condição é o que indica ao computador o que deve fazer a seguir numa estrutura de controlo. Sem nos apercebermos, estamos a utilizar um tipo de dado simples que é a base das bases da programação: o booleano.
Assume somente dois valores: True e False.
Quando uma condição é verdadeira, vai ser retornado True. Caso contrário, é retornado False.
Um booleano é, então, um tipo de dados simples que indica ao computador a veracidade de uma condição ou de uma proposição.
if (a >= 0) then write('Positivo ou nulo.') else write('Negativo.');
Este é um exemplo simples de uma condição numa estrutura de controlo, neste caso a estrutura de decisão If Then Else. a >= 0 é a condição, e, assim sendo, o seu resultado é um booleano. Se o valor atribuído à variável numérica a for maior ou igual que zero então é mostrada a mensagem "Positivo ou nulo.", caso contrário mostra "Negativo" - ou seja, se a >= 0 retorna True, o número é positivo ou nulo, e se retornar False é porque não o é, ou seja, é negativo.
Qualquer estrutura de controlo, excepto o ciclo For To/DownTo, tem uma condição implícita, e no lugar dela podemos colocar directamente uma variável booleana.
var b : boolean; // ... b := False; repeat // código... if {condição} then b := True; until b;
Ou seja, o programa sairá do ciclo quando b for True. Para um ciclo While, para termos o equivalente, teríamos de fazer o seguinte:
while not b do begin // código... if {condição} then b := True; end;
Como visto anteriormente, podemos criar variáveis booleanas que podem controlar várias estruturas ou simplesmente indicar determinada informação.
var masculino : booleano; // ... if masculino then write('Masculino') else write('Feminino');
Uma função também pode retornar um booleano. Por exemplo:
function eMultiplo (const a, b : real) : boolean; begin if (a mod b = 0) then eMultiplo := True else eMultiplo := False; end;
Para atribuir um valor a uma variável booleana, podemos fornecer directamente o valor…
var foo : boolean; // ... foo := False;
… ou fornecer o resultado de uma condição/proposição…
foo := (a = 1);
Desta forma, o código da função 'eMultiplo' poderia ser simplificado para o seguinte:
function eMultiplo (const a, b : real) : boolean; begin eMultiplo := (a mod b = 0); end;