Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Operador
+
*
/
%
++
--
Ao
Soma (inteira e ponto flutuante)
Subtrao ou Troca de sinal (inteira e ponto
flutuante)
Multiplicao (inteira e ponto flutuante)
Diviso (inteira e ponto flutuante)
Resto de diviso (de inteiros)
Incremento (inteiro e ponto flutuante)
Decremento (inteiro e ponto flutuante)
O C possui operadores unrios e binrios. Os unrios agem sobre uma varivel apenas,
modificando ou no o seu valor, e retornam o valor final da varivel. Os binrios usam
duas variveis e retornam um terceiro valor, sem alterar as variveis originais. A soma
um operador binrio pois pega duas variveis, soma seus valores, sem alterar as
variveis, e retorna esta soma. Outros operadores binrios so os operadores (subtrao), *, / e %. O operador - como troca de sinal um operador unrio que no
altera a varivel sobre a qual aplicado, pois ele retorna o valor da varivel
multiplicado por -1.
O operador / (diviso) quando aplicado a variveis inteiras, nos fornece o resultado da
diviso inteira; quando aplicado a variveis em ponto flutuante nos fornece o resultado
da diviso "real". Assim seja o seguinte trecho de cdigo:
int a = 17, b = 3;
int x, y;
float z = 17. , z1, z2;
x = a / b;
y = a % b;
z1 = z / b;
z2 = a/b;
so equivalentes a
x=x+1;
x=x-1;
Estes operadores podem ser pr-fixados ou ps- fixados. A diferena que quando so
pr-fixados eles incrementam e retornam o valor da varivel j incrementada. Quando
so ps-fixados eles retornam o valor da varivel sem o incremento e depois
incrementam a varivel. Ento, em
x=23;
y=x++;
x=y=z=1.5;
if (k=w) ...
/* Expressao 1 */
/* Expressao 2 */
A expresso 1 vlida, pois quando fazemos z=1.5 ela retorna 1.5, que passado
adiante. A expresso dois ser verdadeira se w for diferente de zero, pois este ser o
valor retornado por k=w. Pense bem antes de usar a expresso dois, pois ela pode gerar
Expresses aritmticas
Regras de Precedncia e Associao
Regras de Avaliao
Operadores Aritmticos
Os operadores aritmticos esto implementados na generalidade das linguagens de programa, ainda
que possam ter algumas ligeiras variaes em alguns casos.
Os operadores podem subdividir-se em:
Operadores unrios - por envolverem apenas um operador
Smbolo
Exemplo
Operao
menos
-x
negao de x
mais
*
+x
valor do operando
.
O operador de sinal no deve ser confundido com o operador subtraco e soma, pois apesar de
utilizarem o mesmo smbolo, so operadores diferentes.
Assim nos seguintes exemplo:
supondo que m = 5
ento -m ser igual a -5.
supondo a expresso j = 3 - - x
esta ser interpretada como sendo J = 3 - ( -x )
Operadores binrios
Operador
Smbolo
Exemplo
Operao
multiplicao
x*y
multiplica x por y
diviso
x/y
divide x por y
soma
x+y
soma x a y
subtraco
x-y
de x subtrai y
Operador de atribuio
Operador
Smbolo
Exemplo
Operao
igual
x=y
atribui o valor de Y a x
Operador especial
Algumas linguagens dispem ainda de um operador ou funo que permite calcular o resto da
diviso inteira de dois nmeros, .que representaremos por agora por resto(x,y).
assim por exemplo o resto(9,5) 4
Veremos posteriormente algumas aplicaes deste operador.
Expresses aritmticas
Uma das capacidades mais importante do computador a facilidade de manipulao de expresses
matemticas mais ou menos complexas, pelo que de importncia capital a compreenso da forma
como estas so tratadas.
Um programa depois de escrito passa, como vimos, por um processo de compilao antes da sua
execuo efectiva. No processo de compilao so executadas, entre outras tarefas a interpretao das
declaraes do programa e o estabelecimento da sequncia de operaes a serem executadas a propsito
de cada uma delas.
No caso das expresses aritmticas este processo executado tendo em ateno duas propriedades
fundamentais, a precedncia e a associao. Estas propriedades afectam a forma como os operadores
so aos operadores.
A precedncia - estabelece que os operadores de maior precedncia tm os seus operandos
atribudos antes dos de menor precedncia, independentemente da ordem em que surjam na
expresso. Veja a tabela de precedncias e associao.
Considere os seguintes exemplos:
2+3*4
3*4+2
Em ambos os casos a expresso avaliada em 14. Isto acontece porque primeiro executada a
multiplicao por ter maior precedncia e s depois a soma.
A associao - estabelece, no caso dos operadores terem a mesma precedncia, a ordem pela
qual os operandos sero agrupado, da esquerda para a direita ou da direita para a esquerda.
Esta propriedade estabelecida para cada operador. Veja a tabela de precedncia e associao
que se segue.
Considere o seguinte exemplo:
a+b-c
Esta expresso ser agrupada da esquerda para a direita, de acordo com as suas propriedades de
associao, pelo que a ordem ser primeiro a soma e s depois a subtraco.
So tambm utilizados os parntesis curvos para a criao de expresses matemticas, que impem
uma determinada ordem de agrupamento.
Considere os seguintes exemplos:
(2-3)*4
2 - ( 2 * 4)
No primeiro exemplo seria avaliado primeiro o parntesis ( 2 - 3 ) e s depois seria efectuada a
multiplicao.
No segundo exemplo os parntesis seriam desnecessrios j que a multiplicao tem precedncia
relativamente subtraco. No entanto, uma boa prtica que, mesmo que irrelevantes sejam
utilizados os parntesis mesmo nas expresses mais simples.
No caso de expresses com parntesis encaixados, a ordem de agrupamento do mais interior ao
mais exterior, sendo aplicada a propriedade da associatividade correspondente aos operadores
envolvidos.
Assim na seguinte expresso 1 + ( ( 3 + 1 ) / ( 8 - 4 ) - 5 ) a ordem de agrupamento ser:
1+((3+1)/(8-4)-5)
1+(4/(8-4)-5)
1 + (4 / 4 - 5)
1+(1-5)
1+-4
-3
Classe do operador
Operadores da
classe
unrios
multiplicativo
Associatividade
+ !
direita / esquerda
Resto()
Esquerda / direita
aditivo
+ -
esquerda / direita
relacionais
esquerda / direita
igualdade
esquerda / direita
AND
OR
atribuio
&&
||
=
Precedncia
maior
esquerda / direita
esquerda / direita
direita / esquerda
menor
Regras de Avaliao
Como foi referido anteriormente, a avaliao um processo distinto, constituindo uma propriedade
importante. Esta refere-se ordem pela qual o compilador avalia os operadores. Os compiladores
reorganizam as expresses desde que esta no afecte o resultado.
Chama-se a ateno para o facto de a diviso poder levantar alguns problemas em alguns
compiladores, especialmente quando esto envolvidos operandos de tipos diferentes ou operandos
negativos.
No caso dos operandos serem de tipo diferente devemos forar a converso entre tipos.
Relativamente aos operandos negativos, estes devem ser evitados..
Operador
Sintaxe
Adio
a+b
Subtrao
a-b
Multiplicao
a*b
Diviso
a/b
Mdulo(resto)
5 % 2 (resulta 1)
Pr incremento
++
++a
Ps incremento
++
a++
Pr decremento
--
--a
Ps decremento
--
a--
+=
-=
*=
/=
%=
Operador
Sintaxe
Menor que
<
a<b
Maior que
>
a>b
<=
a <= b
>=
a >= b
Igual a
==
a == b
Diferente de
!=
a != b
No (Lgico)
!a
E (Lgico)
&&
a && b
Ou (Lgico)
||
a || b
Exemplos de comportamento
Operador
falso
30 < 60
verdadeiro
30 < 30
falso
verdadeiro
30 > 100
falso
30 > 29
verdadeiro
verdadeiro
30 <= 29
falso
30 <= 80
verdadeiro
verdadeiro
30 >= 10
verdadeiro
30 >= 40
falso
== Igual a
30 == 30
verdadeiro
30 == 32
falso
!= Diferente de
30 != 20
verdadeiro
30 != 10
verdadeiro
30 != 30
falso
! No
!(30 == 30)
falso
falso
!(30 < 1)
verdadeiro
&& E
(10 > 1 && 1>=1)
verdadeiro
falso
|| Ou
(10 > 20 || 30 > 20)
verdadeiro
(40 != 10 || 20==30)
verdadeiro
Para isso ser possvel voc deve ser canadense OU ser casado com uma
canadense.
Se voc for canadense, mas no for casado com uma, pode trabalhar? Sim,
pode.
Se voc no Operadores Lgicos E (&&), OU (||) e de Negao (!)
Vimos no artigo passado de nossa apostila de C, uma explicao sobre
valores lgicos true ou false em computao.
Ento, para fazer o concurso: (ser brasileiro) && (ter 18 anos ou mais)
Vamos supor que voc brasileiro. Vamos representar esse fato como '1',
pois verdade.
Vamos supor que voc tem 18 anos, representaremos isso pelo valor lgico
'1' tambm.
Se voc for canadense, mas no for casado com uma, pode trabalhar? Sim,
pode.
Se voc no for canadense, mas for casado com uma canadense, pode
trabalhar l? Sim, pode.
Pode porque para isso ser possvel (para ser verdade), necessrio ser
canadense OU ser casado com uma.
Preenchendo apenas um dos requisitos, voc est apto e o resultado
positivo.
E se voc for canadense e casado com uma canadense? Ora, bvio que
pode tambm.
Ento, para fazer o concurso: (ser brasileiro) && (ter 18 anos ou mais)
Vamos supor que voc brasileiro. Vamos representar esse fato como '1',
pois verdade.
Vamos supor que voc tem 18 anos, representaremos isso pelo valor lgico
'1' tambm.
Se voc for canadense, mas no for casado com uma, pode trabalhar? Sim,
pode.
Se voc no for canadense, mas for casado com uma canadense, pode
trabalhar l? Sim, pode.
Pode porque para isso ser possvel (para ser verdade), necessrio ser
canadense OU ser casado com uma.
Preenchendo apenas um dos requisitos, voc est apto e o resultado
positivo.
E se voc for canadense e casado com uma canadense? Ora, bvio que
pode tambm.
Ento, para fazer o concurso: (ser brasileiro) && (ter 18 anos ou mais)
Vamos supor que voc brasileiro. Vamos representar esse fato como '1',
pois verdade.
Vamos supor que voc tem 18 anos, representaremos isso pelo valor lgico
'1' tambm.
Para isso ser possvel voc deve ser canadense OU ser casado com uma
canadense.
Se voc for canadense, mas no for casado com uma, pode trabalhar? Sim,
pode.
Se voc no for canadense, mas for casado com uma canadense, pode
trabalhar l? Sim, pode.
Pode porque para isso ser possvel (para ser verdade), necessrio ser
canadense OU ser casado com uma.
Preenchendo apenas um dos requisitos, voc est apto e o resultado
positivo.
E se voc for canadense e casado com uma canadense? Ora, bvio que
pode tambm.