domingo, 25 de fevereiro de 2007

Expressões e Operadores

No artigo anterior nós vimos como linearizar uma fórmula, mas vimos sem comentar um dos comandos básicos de programação, a atribuição; que segue o padrão: variável=expressão.
Uma expressão pode ser composta de variáveis, propriedades, métodos, funções e operadores.
Os operadores aritméticos são:
+ adição
- subtração
* multiplicação
/ divisão
% resto da divisão
Os operadores lógicos são:
== igual
!= diferente
> maior
>= maior ou igual
  • x=5+(a%2)
    x recebe o valor de 5+(resto da divisão de 5 por 2), ou seja, x receberá 5 ou 6 dependendo se a for par ou ímpar.
  • a=Math.sqrt(Math.pow(b,2)+Math.pow(c,2))
    a recebe o valor da raiz quadrada de (b ao quadrado mais c ao quadrado). Alguém reparou o teorema de Pitágoras aqui?
  • y=10*(x==2||x>20)
    quando a gente trabalha com expressões lógicas, o verdadeiro vale 1 e o falso vale 0. Então, neste caso, y vai receber 10 se x for 2 ou se x for maior que 20; senão y recebe 0.
  • b=a-2
    uma simples, b recebe o valor de a menos 2.
  • y=10*x==2||x>20
    truque sujo, só tirei os parênteses. Agora y recebe 1 se x for 0.2 ou se x for maior que 20. O que mudou? Agora estou verificando se 10 multiplicado por x é 2 (ou seja, se x é igual a 0.2) ou se x for maior que 20.
  • a=b>0&&b<=9 a recebe 1 se b valer entre 1 e 9. Se b for menor ou igual a 0 ou se for maior que 9, então a recebe 0. Então eu poderia escrever a mesma coisa da seguinte forma: a=!(b<=0||b>9)
Percebam a diferença entre &&amp;amp; e ||. && vai ser verdadeiro se todos as comparações forem verdadeiras; || vai ser verdadeiro se qualquer uma das comparações for verdadeira. O ! inverte o que é verdadeiro e o que é falso; é literalmente um "não"; tudo que não é verdadeiro, é falso; tudo que não é falso, é verdadeiro.

7 comentários:

Leonardo Zimbres disse...

Me lembro de quando não sabia programar. Essa coisa de variável parecia complicada, mas é mó piece of cake.

Leonardo Zimbres disse...

Mas tem uma coisa que de fato eu não peguei. Acho que é por que nunca prestei muito atenção em matemática... mas a seguinte equação:
y=10*x==2||x>20

quer dizer, y igual a dez multiplicado por (x==2 ou x maior que vinte?)

Guilherme - Homebrew Maker disse...

Como não tem parenteses, a ordem de execução fica y=((10*x)==2)||(x>20). As operações aritméticas têm prioridade em relação às lógicas. Dentre as aritméticas, segue a prioridade padrão da matemática. Dentre as logicas, as comparações têm prioridade em relacão a || e &&.

Diogo disse...

deixa eu ver se eu entendi...entao y=1 qdo x=2 ou maior que 20..é isso?

Leonardo Zimbres disse...

é por que esse tipo de operação para mim é novidade. Eu só uso == nos "ifs" do actionscript, tipo
if(x==20){
do something
}
Eu fiquei confuso, quanto a lógica, que me é nova. Você poderia fazer que tipo de coisa com tal equação?

Guilherme - Homebrew Maker disse...

com o y=10*x==2||x>20, eu poderia dizer:
if (10*x==2||x>20) {
    y=1;
} else {
    y=0;
}

Guilherme - Homebrew Maker disse...

só que o custo computacional seria muito maior. Ficaria muito mais lento.