1. Introdução à Programação em
Linguagem C
Rodolfo Riyoei Goya
http://rgoya.sites.uol.com.br
rgoya@uol.com.br
2. Modelo Abstrato de Programação
Elementos Estruturais
Dados de Tipo Simples
Dados em Estruturas Homogêneas
Dados em Estruturas Heterogêneas
Elementos Algorítmicos
Declaração
Comandos de Entrada/Saída
Comandos de Expressão
Comandos de Decisão
Comandos de Iteração
16.02.14
Linguagem C
Rodolfo Goya 2
3. Comandos de Expressões
Permitem manipular e alterar valor de variáveis.
Operadores:
Aritméticos
Incremento e Decremento
Relacionais
Booleanos
Bit a bit
Atribuição
16.02.14
Linguagem C
Rodolfo Goya 3
4. Comandos de Expressões
Aritméticos
+ Adição
- Subtração
* Multiplicação
% Resto de Divisão Entre Inteiros
/ Divisão (com truncamento se entre inteiros)
16.02.14
Linguagem C
Rodolfo Goya 4
5. Comandos de Expressões –
Aritméticos
A aritmética em ponto flutuante procede de modo
convencional
A aritmética inteira apresenta algumas diferenças:
O resto da divisão tem o mesmo sinal que o primeiro operando:
9 % 5 resulta em 4
-9 % 5 resulta em -4
A divisão de inteiros é com truncamento:
39 / 10 resulta em 3
A divisão de inteiros negativo é consistente com o resto:
9 / 5 resulta em 1
-9 / 5 resulta em -1
16.02.14
Linguagem C
Rodolfo Goya 5
6. Comandos de Expressões –
Precedência em Aritmética
Multiplicações, divisões e resto têm precedência (são
executadas primeiro) sobre adição e subtração.
9 - 3 * 2 resulta em 3
9 - 3 / 3 resulta em 8
Multiplicações, divisões e resto têm mesma precedência
e são executadas da esquerda para a direita.
9 / 3 / 3 resulta em 1
Adições e subtrações têm mesma precedência e são
executadas da esquerda para a direita.
9 - 3 - 3 resulta em 3
16.02.14
Linguagem C
Rodolfo Goya 6
7. Comandos de Expressões –
Aritméticos
A ordem de cálculo das expressões pode ser alterada
com o uso de parênteses
Expressões internas a parênteses são executadas antes da
externas.
( 9 - 3 ) * 2 resulta em 12
( 9 - 3 ) / 3 resulta em 2
Parênteses podem ser aninhados.
( 3 - ( 2 + 5 ) / 7 ) * 4 resulta em 8
Parênteses podem ser usados para maior clareza (sem prejuízo
em termos de tamanho de código e desempenho).
( 9 / 3 ) / 3 resulta em 1
16.02.14
Linguagem C
Rodolfo Goya 7
8. Comandos de Expressões –
Incremento e Decremento
Incremento e Decremento
++ Incremento
-- Decremento
++i Pré-incremento
--i Pré-decremento
i++ Pós-incremento
i-- Pós-decremento
16.02.14
Linguagem C
Rodolfo Goya 8
9. Comandos de Expressões –
Incremento e Decremento
Somente sobre variáveis.
1++ e ( a + b )++ são usos inválidos para este comando.
Pré-incremento: Incrementa a variável antes de dar
qualquer outro uso para ela na expressão.
a = 2;
b = ++a; resulta em a = 3 e b = 3
Pós-incremento: Incrementa a variável após qualquer
outro uso para ela na expressão.
a = 2;
b = a++; resulta em a = 3 e b = 2
16.02.14
Linguagem C
Rodolfo Goya 9
10. Comandos de Expressões –
Incremento e Decremento
Cuidados: i + 1 é diferente de i++
j = i + 1 não altera o valor de i.
j = i++ altera o valor de i.
11. Comandos de Expressões –
Operadores Relacionais
Relacionais
Resultam em 0 se falso.
Resultam em 1 se verdadeiro.
= = Igualdade
!= Desigualdade
> Maior que
< Menor que
>= Maior ou igual a
<= Menor ou igual a
16.02.14
Linguagem C
Rodolfo Goya 11
12. Comandos de Expressões –
Operadores Relacionais
A B A == B A != B A > B
5 10 Falso Verdadeiro Falso
10 10 Verdadeiro Falso Falso
15 5 Falso Verdadeiro Verdadeiro
16.02.14
Linguagem C
Rodolfo Goya 12
A B A >= B A <= B A < B
5 10 Falso Verdadeiro Verdadeiro
10 10 Verdadeiro Verdadeiro Falso
15 5 Verdadeiro Falso Falso
13. Comandos de Expressões –
Operadores Relacionais
A B A == B A != B A > B
5 10 0 1 0
10 10 1 0 0
15 5 0 1 1
16.02.14
Linguagem C
Rodolfo Goya 13
A B A >= B A <= B A < B
5 10 0 1 1
10 10 1 1 0
15 5 1 0 0
14. Comandos de Expressões –
Operações Booleanos
Booleanos
Resultam em 0 se falso.
Resultam em 1 se verdadeiro.
&& AND
|| OR
! NOT
16.02.14
Linguagem C
Rodolfo Goya 14
15. Comandos de Expressões –
Operadores Booleanos
A B A && B A || B
Falso Falso Falso Falso
Falso Verdadeiro Falso Verdadeiro
Verdadeiro Falso Falso Verdadeiro
Verdadeiro Verdadeiro Verdadeiro Verdadeiro
16.02.14
Linguagem C
Rodolfo Goya 15
A !A
Falso Verdadeiro
Verdadeiro Falso
16. Comandos de Expressões
Bit a bit
Operam sobre a representação binário do número.
& AND
| OR
~ NOT
^ EXCLUSIVE-OR
>> SHIFT-RIGHT
<< SHIFT-LEFT
16.02.14
Linguagem C
Rodolfo Goya 16
17. Comandos de Expressões –
Operadores bit a bit
unsigned char x = 60 em binário: 00111100
unsigned char y = 85 em binário: 01010101
x & y x | y
00111100 00111100
01010101 & 01010101 |
00010100 (20) 01111101 (125)
x ^ y ~x
00111100 00111100
01010101 ^ 00111100 ~
01101001 (105) 11000011 (195)
16.02.14
Linguagem C
Rodolfo Goya 17
18. Comandos de Expressões –
Operadores bit a bit
unsigned char x = 60 em binário: 00111100
unsigned char y = 85 em binário: 01010101
x >> 2 x << 2
00111100 >> 2 00111100 << 2
00001111 (15) 11110000 (240)
16.02.14
Linguagem C
Rodolfo Goya 18
19. Comandos de Atribuição
= Atribuição
+= Soma e Atribuição
-= Subtração e Atribuição
*= Multiplicação e Atribuição
%= Resto de Divisão e Atribuição
/= Divisão e Atribuição
&= Operação AND e Atribuição
|= Operação OR e Atribuição
^= EXCLUSIVE-OR e Atribuição
<<= Deslocamento para Esquerda e Atribuição
>>= Deslocamento para Direita e Atribuição
16.02.14
Linguagem C
Rodolfo Goya 19
20. Comandos de Atribuição
O lado esquerdo da atribuição é sempre uma variável:
Variável = Constante
i = 10;
Variável = Variável
x = y;
Variável = Expressão
z = x + y – 1;
i = i + 1;
Uma atribuição é também uma operação com resultado:
a = i = j + 1;
b = x + ( y = c + d );
16.02.14
Linguagem C
Rodolfo Goya 20
21. Comandos de Atribuição –
Cuidados
Atribuição é um comando e não tem relação com o uso
do símbolo “=” em equações matemáticas:
a = a + 1; (isso não faria sentido em uma equação)
Ordem de avaliação: da direita para a esquerda:
a = b = c = d = 1;
Atribuição e comparação:
a = 20 é diferente de a == 20
No primeiro caso faz com que a passe a valer 20.
No segundo caso, o valor de a não é alterado. A expressão
resulta em 0 se a for diferente de 20 e resulta em 1 se a for 20.
16.02.14
Linguagem C
Rodolfo Goya 21
22. Comandos de Atribuição
Aritmética
Formas compactas de produzir expressões:
+= -=
i += 10; equivale a: i = i + 10;
i -= 10; equivale a: i = i - 10;
*= %= /=
i *= 10; equivale a: i = i * 10;
i %= 10; equivale a: i = i % 10;
i /= 10; equivale a: i = i / 10;
Uma atribuição é também uma operação com resultado:
a = i += j + 1;
b = x + ( y *= c + d );
16.02.14
Linguagem C
Rodolfo Goya 22
23. Precedência de operadores
Operador Associatividade
( ) Esquerda para Direita
++ -- Direita para Esquerda
+(sinal) Direita para Esquerda
-(sinal) Direita para Esquerda
! ~ Direita para Esquerda
* / % Esquerda para Direita
+ - Esquerda para Direita
>> << Esquerda para Direita
= = != Esquerda para Direita
& Esquerda para Direita
^ Esquerda para Direita
| Esquerda para Direita
&& Esquerda para Direita
|| Esquerda para Direita
= += -= *= %= /=&= |= <<= >>= Direita para Esquerda
, (vírgula) Esquerda para Direita
16.02.14
Linguagem C
Rodolfo Goya 23