A maior rede de estudos do Brasil

Grátis
275 pág.
Apostila C

Pré-visualização | Página 9 de 45

de uma func¸a˜o a x
20 x = s q r t ( 9 ) ;
21 p r i n t f ( ‘ ‘ x = %f \n ’ ’ , x ) ;
22 system ( ‘ ‘ pause ’ ’ ) ;
23 return 0;
24 }
Saı´da x = 5.000000
x = 9.000000
x = 8.000000
x = 3.000000
No exemplo acima, pode-se notar que o operador de atribuic¸a˜o tambe´m
pode ser utilizado no momento da declarac¸a˜o da varia´vel (linha8). Desse
modo, a varia´vel ja´ e´ declarada possuindo um valor inicial.
53
O operador de atribuic¸a˜o “=” armazena o valor ou resultado
de uma expressa˜o contida a sua direita na varia´vel espe-
cificada a sua esquerda.
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 #include <math . h>
4 const i n t z = 9;
5 i n t main ( ) {
6 f l o a t x ;
7 f l o a t y = 3;
8 / / Correto
9 x = y + 5;
10 / /ERRADO
11 y + 5 = x ;
12 / / Correto
13 x = 5;
14 / /ERRADO
15 5 = x ;
16 system ( ‘ ‘ pause ’ ’ ) ;
17 return 0;
18 }
E´ importante ter sempre em mente que o operador de atribuic¸a˜o “=” cal-
cula a expressa˜o a` direita do operador “=” e atribui esse valor a` varia´vel a`
esquerda do operador, nunca o contra´rio.
A linguagem C suporta mu´ltiplas atribuic¸o˜es.
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 f l o a t x , y , z ;
5 x = y = z = 5;
6 p r i n t f ( ‘ ‘ x = %f \n ’ ’ , x ) ;
7 p r i n t f ( ‘ ‘ y = %f \n ’ ’ , y ) ;
8 p r i n t f ( ‘ ‘ z = %f \n ’ ’ , z ) ;
9 system ( ‘ ‘ pause ’ ’ ) ;
10 return 0;
11 }
Saı´da x = 5.000000
y = 5.000000
z = 5.000000
54
No exemplo acma, o valor 5 e´ copiado para a varia´vel z. Lembre-se, o valor
da direita e´ sempre armazenado na varia´vel especificada a sua esquerda.
Em seguida, o valor de z e´ copiado para a varia´vel y e, na sequeˆncia, o
valor de y e´ copiado para x.
A linguagem C tambe´m permite a atribuic¸a˜o entre tipos ba´scos diferen-
tes. O compilador converte automaticamente o valor do lado direto para o
tipo do lado esquerdo do comando de atribuic¸a˜o “=”. Durante a etapa de
conversa˜o de tipos, pode haver perda de informac¸a˜o.
Na conversa˜o de tipos, durante a atribuic¸a˜o, pode haver
perda de informac¸a˜o.
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 i n t x = 65;
5 char ch ;
6 f l o a t f = 25 .1 ;
7 / / ch recebe 8 b i t s menos s i g n i f i c a t i v o s de x
8 / / conver te para a tabe la ASCII
9 ch = x ;
10 p r i n t f ( ‘ ‘ ch = %c\n ’ ’ , ch ) ;
11 / / x recebe par te apenas a par te i n t e i r a de f
12 x = f ;
13 p r i n t f ( ‘ ‘ x = %d\n ’ ’ , x ) ;
14 / / f recebe va lo r 8 b i t s conver t ido para r e a l
15 f = ch ;
16 p r i n t f ( ‘ ‘ f = %f \n ’ ’ , f ) ;
17 / / f recebe o va lo r de x
18 f = x ;
19 p r i n t f ( ‘ ‘ f = %f \n ’ ’ , f ) ;
20 system ( ‘ ‘ pause ’ ’ ) ;
21 return 0;
22 }
Saı´da ch = A
x = 25
f = 65.000000
f = 25.000000
2.5.2 OPERADORES ARITME´TICOS
Os operadores aritme´ticos sa˜o aqueles que operam sobre nu´meros (valores,
varia´veis, constantes ou chamadas de func¸o˜es) e/ou expresso˜es e tem
55
como resultado valores nume´ricos. A linguagem C possui um total de cinco
operadores aritme´ticos, como mostra a tabela abaixo:
Operador Significado Exemplo
+ adic¸a˜o de dois valores z = x + y
- subtrac¸a˜o de dois valores z = x - y
* multiplicac¸a˜o de dois valores z = x * y
/ quociente de dois valores z = x / y
% resto de uma divisa˜o z = x % y
Note que os operadores aritme´ticos sa˜o sempre usados em conjunto com
o operador de atribuic¸a˜o. Afinal de contas, algue´m precisa receber o resul-
tado da expressa˜o aritme´tica.
O operador de subtrac¸a˜o tambe´m pode ser utilizado para
inverter o sinal de um nu´mero.
De modo geral, os operadores aritme´ticos sa˜o operadores bina´rios, ou
seja, atuam sobre dois valores. Mas os operadores de adic¸a˜o e subtrac¸a˜o
tambe´m podem ser aplicados sobre um u´nico valor. Nesse caso, eles sa˜o
chamados de operadores una´rios. Por exemplo, na expressa˜o:
x = -y;
a varia´vel x recebera´ o valor de y multiplicado por -1, ou seja, x = (-1) * y;
56
Numa operac¸a˜o utilizando o operador de quociente /, se
ambos numerador e denominador forem nu´meros intei-
ros, por padra˜o o compilador ira´ retornar apenas a parte
inteira da divisa˜o.
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 f l o a t x ;
5 x = 5 / 4 ;
6 p r i n t f ( ‘ ‘ x = %f \n ’ ’ , x ) ;
7 x = 5 / 4 . 0 ;
8 p r i n t f ( ‘ ‘ x = %f \n ’ ’ , x ) ;
9 system ( ‘ ‘ pause ’ ’ ) ;
10 return 0;
11 }
Saı´da x = 1.000000
x = 1.250000
No exemplo acima, a primeira divisa˜o (linha 5) possui apenas operandos
inteiros. Logo o resultado e´ um valor inteiro. Ja´ a segunda divisa˜o (linha
7), o nu´mero quatro e´ definido como real (4.0). Portanto, o compilador
considera essa divisa˜o como tendo resultado real.
O operador de resto da divisa˜o (%) so´ e´ va´lido para valores
inteiros (tipo int).
2.5.3 OPERADORES RELACIONAIS
Os operadores relacionais sa˜o aqueles que operam sobre dois valores
(valores, varia´veis, constantes ou chamadas de func¸o˜es) e/ou expresso˜es
e verificam a magnitude (quem e´ maior ou menor) e/ou igualdade entre
eles.
Os operadores relacionais sa˜o operadores de comparac¸a˜o
de valores.
A linguagem C possui um total de seis operadores relacionais, como mos-
tra a tabela abaixo:
57
Operador Significado Exemplo
> Maior do que x > 5
>= Maior ou igual a x >= 10
< Menor do que x < 5
<= Menor ou igual a x <= 10
== Igual a x == 0
!= Diferente de x != 0
Como resultado, esse tipo de operador retorna:
• o valor UM (1), se a expressa˜o relacional for considerada verdadeira;
• o valor ZERO (0), se a expressa˜o relacional for considerada falsa.
Na˜o existem os operadores relacionais: “=<”, “=>” e “<>”.
Os sı´mbolos “=<” e “=>” esta˜o digitados na ordem invertida. O correto e´ “<=”
(menor ou igual a) e “>=” (maior ou igual a). Ja´ o sı´mbolo “<>” e´ o operador
de diferente da linguagem Pascal, na˜o da linguagem C. O correto e´ “!=”.
Na˜o confunda o operador de atribuic¸a˜o “=” com o operador
de comparac¸a˜o “==”.
Esse e´ um erro bastante comum quando se esta´ programando em lingua-
gem C. O operador de atribuic¸a˜o e´ definido por UM sı´mbolo de igual “=”,
enquanto o operador de comparac¸a˜o e´ definido por DOIS sı´mbolos de igual
“==”. Se voceˆ tentar colocar o operador de comparac¸a˜o em uma operac¸a˜o
de atribuic¸a˜o, o compilador acusara´ um erro. O mesmo na˜o acontece se
voceˆ acidentalmente colocar o operador de atribuic¸a˜o “=” no lugar do ope-
rador de comparac¸a˜o “==”.
O exemplo abaixo apresenta o resultado de algumas expresso˜es relacio-
nais:
58
Exemplos de expresso˜es relacionais
1 #include <s t d i o . h>
2 #include <s t d l i b . h>
3 i n t main ( ) {
4 i n t x = 5;
5 i n t y = 3;
6 p r i n t f ( ‘ ‘ Resultado : %d\n ’ ’ , x > 4) ; / / verdade i ro
( 1 )
7 p r i n t f ( ‘ ‘ Resultado : %d\n ’ ’ , x == 4) ; / / f a l s o ( 0 )
8 p r i n t f ( ‘ ‘ Resultado : %d\n ’ ’ , x != y ) ; / / verdade i ro
( 1 )
9 p r i n t f ( ‘ ‘ Resultado : %d\n ’ ’ , x != y+2) ; / / f a l s o
( 0 )
10 system ( ‘ ‘ pause ’ ’ ) ;
11 return 0;
12 }
Saı´da Resultado: 1
Resultado: 0
Resultado: 1
Resultado: 0
2.5.4 OPERADORES LO´GICOS
Certas situac¸o˜es na˜o podem ser modeladas apenas utilizando os opera-
dores aritme´ticos e/ou relacionais. Um exemplo bastante simples disso e´
saber se uma determinada varia´vel x esta´ dentro de uma faixa de valores.
Por exemplo, a expressa˜o matema´tica
0 < x < 10
indica que o valor de x deve ser maior do que 0 (zero) e tambe´m menor do
que 10.
Para modelar esse tipo de situac¸a˜o, a linguagem C possui um conjunto de
3 operadores lo´gicos, como mostra a tabela abaixo:
Operador Significado Exemplo
&& Operador E (x >= 0 && x <= 9)
|| Operador OU (a == ‘F’ ||b != 32)
! Operador NEGAC¸A˜O !(x == 10)
Esses operadores permitem representar situac¸o˜es lo´gicas, unindo duas ou
mais expresso˜es relacionais simples numa composta:
59
• Operador E (&&): a expressa˜o resultante so´ e´ verdadeira se ambas
as expresso˜es unidas por esse operador tambe´m forem. Por exem-
plo, a expressa˜o (x >= 0 && x <= 9) sera´ verdadeira somente