Seguinte: Operadores Lógicos Acima: Expressões Condicionais Anterior: Expressões Condicionais
Índice remissivo

Predicados

Desta forma, reduzimos todos os testes a expressões cujo valor pode ser apenas um de dois, e a expressão condicional assume a forma de ``se ...então ...caso contrário ...''. Nesta situação, a função usada como teste é denominada predicado e o valor do teste é interpretado como sendo verdadeiro ou falso. Nesta óptica, o facto de se considerar o valor como verdadeiro ou falso não implica que o valor seja de um tipo de dados especial, como o booleano ou lógico de algumas linguagens (como o Pascal), mas apenas que a expressão condicional considera alguns dos valores como representando o verdadeiro e os restantes como o falso.

Em Lisp, as expressões condicionais consideram como falso um único valor. Esse valor é representado por nil. Qualquer outro valor diferente de nil é considerado como verdadeiro. Assim, do ponto de vista de uma expressão condicional, qualquer número é um valor verdadeiro. Contudo, não faz muito sentido para o utilizador humano considerar um número como verdadeiro ou falso, pelo que se introduziu uma constante na linguagem para representar verdade. Essa constante representa-se por t.

Note-se que, se t é diferente de nil, e se nil é o único valor que representa a falsidade, então t representa verdade. Desta forma, existem muitos predicados em Lisp cujo valor é t quando a expressão por eles designada é considerada verdadeira.

> (> 4 3)
t
> (< 4 3)
nil

Existem muitos predicados em Lisp. Os predicados numéricos mais usados são o zerop, =, >, <, >=, <=. O zerop testa se um número é zero ou diferente de zero.

> (zerop 1)
nil
> (zerop 0)
t

O facto de zerop terminar com a letra ``p'' deve-se a uma convenção adoptada em Common Lisp segundo a qual os predicados devem ser distinguidos das restantes funções através da concatenação da letra ``p'' (de predicate) ao seu nome.

Apesar da adopção dos símbolos t e nil, convém alertar que nem todos os predicados devolvem t ou nil exclusivamente. Alguns há que, quando querem indicar verdade, devolvem valores diferentes de t (e de nil, obviamente).


Seguinte: Operadores Lógicos Acima: Expressões Condicionais Anterior: Expressões Condicionais
Índice remissivo

Copyright António Leitão, 1995