Upload
daniel-barao
View
241
Download
1
Embed Size (px)
Citation preview
Introdução à Programação em Linguagem C
Rodolfo Riyoei Goya
http://rgoya.sites.uol.com.br
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.14Linguagem CRodolfo Goya 2
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.14Linguagem CRodolfo Goya 3
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.14Linguagem CRodolfo Goya 4
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.14Linguagem CRodolfo Goya 5
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.14Linguagem CRodolfo Goya 6
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.14Linguagem CRodolfo Goya 7
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.14Linguagem CRodolfo Goya 8
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.14Linguagem CRodolfo Goya 9
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.
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.14Linguagem CRodolfo Goya 11
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.14Linguagem CRodolfo 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
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.14Linguagem CRodolfo 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
Comandos de Expressões –Operações Booleanos
� Booleanos� Resultam em 0 se falso.
� Resultam em 1 se verdadeiro.
&& AND
|| OR
! NOT
16.02.14Linguagem CRodolfo Goya 14
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.14Linguagem CRodolfo Goya 15
A !A
Falso Verdadeiro
Verdadeiro Falso
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.14Linguagem CRodolfo Goya 16
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.14Linguagem CRodolfo Goya 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 >> 2 x << 2
00111100 >> 2 00111100 << 2
00001111 (15) 11110000 (240)
16.02.14Linguagem CRodolfo Goya 18
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.14Linguagem CRodolfo Goya 19
Comandos de Atribuição
� O lado esquerdo da atribuição é sempre uma variável:� Variável = Constante
i = 10;
� Variável = Variávelx = y;
� Variável = Expressãoz = 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.14Linguagem CRodolfo Goya 20
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.14Linguagem CRodolfo Goya 21
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.14Linguagem CRodolfo Goya 22
Precedência de operadoresOperador 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.14Linguagem CRodolfo Goya 23