Uma expressão em linguagens de programação é uma combinação sintática de valores, variáveis, operadores, e chamadas de funções que são particulares a uma determinada linguagem de programação, que computa e, em seguida, produz (retorna) um valor semanticamente válido. Expressões são os meios fundamentais de especificação de computações em uma linguagem de programação. O propósito de uma expressão é especificar um valor a ser calculado.
Por exemplo, 2+3 é uma expressão aritmética e de programação, que avalia a 5. Já a expressão de atribuição x = 2+3 também avalia a 5 e é uma expressão de programação, mas é uma equação em matemática e não uma expressão matemática. Uma variável é uma expressão, porque é um ponteiro para um valor na memória, então y+6 é uma expressão. Um exemplo de uma expressão de programação relacional seria 4 == 4, que avalia para o valor booleano verdadeiro.
Expressões infixas, pré-fixas e pós-fixas Expressões podem ser representadas de diversas formas. Uma expressão onde os operadores binários estão inseridos entre os operandos é dita estar na forma infixa. Uma expressão infixa é a forma mais natural de representação de expressões. Em uma expressão posfixa, os operadores são posicionados após as operações de forma que os parentesis não são necessários. Por exemplo, a expressão:
( a + b ) * ( c - d )
pode ser transformada na forma posfixa sem parentesis:
a b + c d - *
Avaliação curto-circuito Expressões booleanas dão uma importante oportunidade para a melhoria da leitura eficiência de código. Considerando-se a expressão:
( a > b ) and ( c >= d )
Se a < b então não há a necessidade de se avaliar a segunda parte da expressão, uma vez que já se sabe que o resultado da expressão como um todo será falso. Um compilador que é provido de avaliação curto-circuito irá gerar código que salte condicionalmente a segunda parte do código baseado no resultado da avaliação da primeira parte.
A linguagem Ada dispões de dois operadores lógicos que implementam explicitamente a avaliação curto-circuito. São os operadores and then e or else. Por exemplo, ambas as partes das expressões abaixo serão avaliadas pois os operadores and e or em Ada não fazem avaliação curto-circuito:
( a = 0 ) and ( c/a < d ) -- para a = 0 (dará erro de divisão por zero) ( a > b ) or ( c < d ) -- para a > b
Contudo, nos casos abaixo, apenas a primeira parte das expressões será avaliada uma vez que a avaliação curto-circuito saltara a segunda parte de ambas as expressões:
( a = 0 ) and then ( c/a < d ) -- para a = 0 (não dará erro de divisão por zero, pois a segunda expressão não será avaliada) ( a > b ) or else ( c < d ) -- para a > b
Ver também Estratégia de avaliação Expressão matemática
Categoria:Avaliação Categoria:Construções de programas