Avaliação de curto-circuito

Origem: Wikipédia, a enciclopédia livre.

Avaliação de curto-circuito, avaliação mínima ou avaliação de McCarthy especifica a semântica de alguns operadores booleanos em algumas linguagens de programação na qual o segundo argumento é apenas executado ou avaliado se o primeiro argumento não for suficiente para determinar o valor da expressão: quando o primeiro argumento de uma função AND é avaliado como falso, o valor global deve ser falso e quando o primeiro argumento da função OR for avaliado como verdadeiro, o valor global deve ser verdadeiro. Em algumas linguagens de programação (Lisp), os operadores booleanos usuais são de curto-circuito. Em outras (Java, Ada), os operadores booleanos padrões e de curto-circuito estão disponíveis.

O operador de curto-circuito x Sand y é equivalente à expressão condicional if x then y else false. x Sor y é equivalente à if x then true else y.

Suporte em linguagens de programação comuns[editar | editar código-fonte]

Operadores booleanos em várias linguagens
Linguagem Operadores Operadores de curto-circuito Tipo do resultado
Ada, Eiffel and , or and then , or else Booleano
ALGOL 68 and , & , ∧ ; or , ∨ andf , orf (ambos definidos pelo usuário) Booleano
C1 & , | && , || Numérico
C++, Objective Caml, Haskell none && , || Booleano
C#, Java,

MATLAB,[1] R

& , | && , || Booleano
ColdFusion none AND , OR , && , || Booleano
Erlang and, or andalso , orelse Booleano
Fortran .and. , .or. Booleano
JavaScript none && , || Último valor
Lisp, Lua, Scheme none and , or Último valor
Pascal and, or2 and_then , or_else3 Booleano
Perl, Ruby & , | && , and , || , or Último valor
PHP none && , and , || , or Booleano
Python none and , or Último valor
Smalltalk & , | and: , or: Booleano
Standard ML Desconhecido andalso , orelse Booleano
Visual Basic .NET And , Or AndAlso , OrElse Booleano
VB Script, VB Classic, VBA And , Or Select Case Numérico

1 C, antes C99, de fato não possuía um tipo booleano distinto.
2 ISO Pascal permite, mas não requer operações de curto-circuito.
3 ISO-10206 Extended Pascal suporta and_then e or_else.[2]

Referências[editar | editar código-fonte]

Este artigo é um esboço. Você pode ajudar a Wikipédia expandindo-o. Editor: considere marcar com um esboço mais específico.