Ameliara Freire
[email protected]


Em toda linguagem de programação, existem
operadores que nos permitem armazenar,
modificar, comparar e avaliar dados no
computador.
Veremos três tipos de operadores:
◦ Aritméticos, Relacionais e Lógicos.

Usamos os operadores aritméticos quando
precisamos executar operações aritméticas
(matemáticas) sobre os nossos dados (variáveis).
Operador
Descrição
+
Adição
-
Subtração
*
Multiplicação
/
Divisão
%
Retorna o resto da divisão
inteira de a por b
()
Parênteses



Vamos dar uma atenção especial aos operadores da
divisão(/) e resto(%).
O resultado de uma divisão, em C, depende dos tipos
dos dados que estão sendo divididos.
A tabela abaixo apresenta o resultado da operação de
divisão, de acordo com os tipos de dados do numerador
e do denominador.
numerador /
denominador
Resultado
inteiro / inteiro
inteiro
inteiro/ real
real
real / inteiro
real
real/real
real


Quando dois números inteiros são divididos, o
resultado é a parte inteira do quociente da
divisão.
Quando pelo menos um dos elementos
(numerador e/ou denominador) é real, o
resultado é um número real.
O operador do resto (%) só pode ser usado
quando as variáveis envolvidas são do tipo
inteiro. Não poderemos usar tal operador para
obter resto de divisão de números reais. Outra
coisa: o operador % não tem nada haver com
percentagem,
certo?




Prioridade dos Operadores
◦ A prioridade que o operador aritmético tem sob o outro é que vai
determinar como a expressão será resolvida.
◦ Na matemática, quando montamos uma expressão, usamos
parênteses, colchetes e chaves. Nas linguagens de programação,
nós só temos os parênteses.
◦ Os parênteses têm um papel importante nas expressões e
possibilitam que a ordem das operações seja alterada.
Expressões entre parênteses são calculadas primeiro, portanto eles
fornecem o maior grau de prioridade às expressões que envolvem.
Os parênteses têm um papel importante nas expressões e
possibilitam que a ordem das operações seja alterada.
Expressões entre parênteses são calculadas primeiro,
portanto eles fornecem o maior grau de prioridade às
expressões que envolvem

Prioridade dos Operadores
Prioridade
Operador
1º
Operações embutidas em parênteses
“mais internos”
2º
% (resto) e/ou * (multiplicação) e/ou
/ (divisão)
3º
+ (adição) e/ou – (subtração)

Prioridade de Operadores
int X, Y, Z, W, A, B, C, D;
X = 19;
Y = 3;
Z = 4;
W = 2;
A = X + Y * Z;
B = (X + Y) * Z;
C = X – Y * Z / W;
D = (X-Y) * (Z/W);



São utilizados para comparar valores de
variáveis ou expressões aritméticas.
Uma expressão aritmética tem como resultado
um valor numérico.
No caso de uma expressão relacional, o
resultado será sempre um valor lógico:
“Verdade” ou “Falso”.
Operador
Descrição
==
Igualdade
!=
Diferença (≠)
<
Menor
>
Maior
<=
Menor ou Igual (≤)
>=
Maior ou Igual (≥)
Sintaxe
Variavel operador Valor
Variável1 operador variável2
Variavel operador Expressão Aritmética
Expressão Aritmética operador Expressão Aritmética
Expressões relacionais
X == 10
X>Y
X<Y+Z
X*Y>Z/W



Servem para interligar duas ou mais expressões
relacionais.
Uma expressão lógica representa a união de
expressões relacionais, permitindo que os
resultados de várias expressões relacionais
sejam transformados em um único resultado
lógico (verdade ou falso).
Os operadores lógicos são:
◦ E
◦ OU
◦ NÃO
Operador Lógico
Operador Lógico em C
E
&&
OU
||
NÃO
!

Exemplos
(X > 10) && (Y < 30) || (Z == 1)
(A == 2) || (B <> C) && (D < 1) || (E > 10)
!(A == 1) || (B <= C + B)
(X + Y < Z + W) && (A < 3 + D) || (F < 5)
Prioridade
Operador
1º
Operações embutidas em
parênteses “mais internos”;
2º
Resto e/ou multiplicação e/ou
divisão;
3º
Adição e/ou Subtração;
4º
Operadores Relacionais;
5º
Operadores Lógicos.


A linguagem C oferece um conjunto de operadores que é
uma combinação de operador de atribuição e operador
aritmético, são os operadores aritméticos de atribuição.
Eles são utilizados para representar de maneira reduzida
uma operação aritmética, seguida de uma atribuição.
Operador
Exemplos de Uso
Descrição
+=
X += 4;
Equivale a X = X + 4;
-=
Y -= X;
Equivale a Y = Y – X;
*=
Z *= W;
Equivale a Z = Z * W;
/=
K /= 7;
Equivale a K = K / 7;
%=
L %= M;
Equivale a L = L % M

Os operadores ++ e -- são utilizados após o nome de
uma variável e servem para incrementar (++) ou
decrementar (--) uma unidade da variável, ou seja,
somar 1 ou subtrair 1 do valor da variável.
Operador
Exemplos de Uso
Descrição
++
X++;
Equivale a X = X + 1;
--
Y--;
Equivale a Y = Y -- 1;



Quando usamos operadores aritméticos, temos que
lembrar que o resultado da expressão depende do
tipo das variáveis envolvidas.
É que alguns operadores só podem ser usados por um
tipo de dado.
É usada em uma expressão aritmética e é feita da
seguinte forma:
◦ Antes da variável, colocamos entre parênteses, o tipo que
queremos que a variável seja nesta expressão aritmética.
◦ É importante salientar que a conversão de tipo é feita com o
dado armazenado em uma variável, mas a variável continua
tendo o seu tipo original.
int A,B,C;
float X,Y;
A=3;
B=5;
X=6.5;
C = (int)X % B;
Y = (float)A/B;



Nas linhas 1 e 2, temos as declarações de cinco variáveis.
Nas linhas 3, 4, e 5 foram atribuídos valores as variáveis A, B e X.
Na linha 6, precisamos executar uma operação para obter o resto
da divisão entre a variável X (que é do tipo float) e a variável B
(que é do tipo int). Esta operação não seria possível, já que o
operador do resto não aceita números reais na expressão.


No entanto, esta operação se torna possível, se fizermos a
conversão de tipo da variável X. Queremos que, nesta expressão,
o conteúdo de X seja um inteiro.
Para isso, colocamos (int) na frente da variável X, como mostra a
linha 6 do exemplo. Como a variável X tem 6.5 armazenado,
nesta conta, a parte fracionária será desprezada e a conta será
feita considerando que X é 6. Assim, 6 % 5 = 1. Então, 1 é o valor
que será atribuído a variável C.





A linguagem de programação C possui uma biblioteca que
agrupa um conjunto de funções matemáticas. É a biblioteca
math.h.
Nesta seção, vamos ver quatro funções matemáticas, da
biblioteca math.h, que utilizaremos com mais frequência
nos nossos programas.
São as funções para encontrar a raiz quadrada de um
número, potência (elevar um número a uma potência) e
duas funções de arredondamento.
Esta biblioteca possui outras funções, mas estas são as
mais utilizadas nos nossos programas.
As funções matemáticas precisam receber um ou vários
parâmetros e nos retornam um resultado.
Função
Descrição
Exemplos de uso
sqrt
Função para encontrar a raiz quadrada
de um número. A função sqrt precisa
receber como parâmetro, o número que
desejamos encontrar
a
sua
raiz
quadrada. O resultado desta função é
um número real. Como uma função
retorna um resultado, devemos atribuílo a uma variável.
R = sqrt(16);
Função para encontrar a potência de um
número, ou seja, eleva um número a um
expoente: AB. Assim, se A = 4 e B = 3, 4
elevado a 3 é 64. A função pow irá
receber dois parâmetros. O primeiro é a
base (neste exemplo é o A) e o segundo
é o expoente (neste caso é o B). Esta
função retorna um número real como
resultado.
P = pow(3,4);
pow
R = sqrt(A);
P = pow(A, 3);
Função
Descrição
Exemplos de uso
ceil
A função ceil serve para arredondar um número real. Esta
função arredonda o número para cima. Assim, ela retornará
como resultado: o primeiro número inteiro maior que o
número que desejamos arredondar. Por exemplo: se x =
1.34, e desejamos arredondar com a função ceil, o
resultado será 2.0. Ou seja, o primeiro número inteiro
acima de 1.34. Apesar do arredondamento, esta função
retorna um número real como resultado.
Z = ceil(1.67);
A função floor serve para arredondar um número real. Esta
função arredonda o número para baixo. Assim, ela
retornará como resultado: o primeiro número inteiro menor
que o número que desejamos arredondar. Por exemplo: se
x = 1.34, e desejamos arredondar com a função floor, o
resultado será 1.0. Ou seja, o primeiro número inteiro
abaixo de 1.34. Apesar do arredondamento, esta função
retorna um número real como resultado.
Z = floor(1.67);
Z = floor(Z);
floor
Z = ceil(Z);
double acos(double x)
Returns the arc cosine of x in radians.
double asin(double x)
Returns the arc sine of x in radians.
double atan(double x)
Returns the arc tangent of x in radians.
double atan2(doubly y, double x)
Returns the arc tangent in radians of y/x based on
the signs of both values to determine the correct
quadrant.
double cos(double x)
Returns the cosine of a radian angle x.
double cosh(double x)
Returns the hyperbolic cosine of x.
double sin(double x)
Returns the sine of a radian angle x.
double sinh(double x)
Returns the hyperbolic sine of x.
double tanh(double x)
Returns the hyperbolic tangent of x.
double exp(double x)
Returns the value of e raised to the xth power.
double frexp(double x, int *exponent)
The returned value is the mantissa and the integer
pointed to by exponent is the exponent. The
resultant value is x = mantissa * 2 ^ exponent.
double ldexp(double x, int exponent)
Returns x multiplied by 2 raised to the power of
exponent.
double log(double x)
Returns the natural logarithm (base-e logarithm) of
x.
double log10(double x)
Returns the common logarithm (base-10
logarithm) of x.
double modf(double x, double *integer)
The returned value is the fraction component (part
after the decimal), and sets integer to the integer
component.
double pow(double x, double y)
Returns x raised to the power of y.
double sqrt(double x)
Returns the square root of x.
double ceil(double x)
Returns the smallest integer value greater than or
equal to x.
double fabs(double x)
Returns the absolute value of x
double floor(double x)
Returns the largest integer value less than or equal
to x.
double fmod(double x, double y)
Returns the remainder of x divided by y.
Download

Aula 5 - Operadores, Expressões e Funções Matemáticas