Expressão (computação)
Uma expressão em linguagens de programação é uma combinação de valores, variáveis, operadores, e chamadas de funções que são interpretadas (avaliadas) de acordo com as regras de precedência e de associatividade particulares a uma determinada linguagem de programação, que calcula e, em seguida, produz (retorna) um valor. Expressões são os meios fundamentais de especificação de computações em uma linguagem de programação.[1] O propósito de uma expressão é especificar um valor a ser calculado. [2]
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.[3]
Expressões infixas, pré-fixas e pós-fixas
[editar | editar código-fonte]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.[4] 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
[editar | editar código-fonte]Expressões booleanas dão uma importante oportunidade para a melhoria da leitura eficiência de código.[5] 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.[6] 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
[editar | editar código-fonte]Referências
- ↑ Sebesta, Robert W. (2006). Concepts of Programming Languages (em inglês) 7ª ed. Boston: Addison Wesley. pp. 311–320. ISBN 0-321-33025-0
- ↑ Horowitz, Ellis (1984). Fundamentals of Programming Languages (em inglês) 2ª ed. Rockville: Computer Science Press. pp. 89–93. ISBN 0-088175-004-2
- ↑ «Programming in C». Consultado em 10 de julho de 2010. Arquivado do original em 9 de janeiro de 2015
- ↑ ORGANICK, E. I.;FORSYTHE, A. I.; PLUMMER, R. P (1978). Programming Languages Structures (em inglês) 2ª ed. New York: Academic Press. 52 páginas. ISBN 0-12-528260-5
- ↑ SCOTT, Michael L (2000). Programming Language Pragmatics (em inglês). San Francisco: Morgan Kaufmann/Academic Press. 265 páginas. ISBN 1-55860-442-1
- ↑ SMITH, James F.; FRANK, Thomas S (1994). Introduction to Programming Concepts and Methods with Ada (em inglês). New York: McGraw- Hill. 328 páginas. ISBN 0-07-911725-2