linguagem c (parte 3)

23
Introdução à Programação em Linguagem C Rodolfo Riyoei Goya http://rgoya.sites.uol.com.br [email protected]

Upload: daniel-barao

Post on 22-Feb-2017

242 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Linguagem C (Parte 3)

Introdução à Programação em Linguagem C

Rodolfo Riyoei Goya

http://rgoya.sites.uol.com.br

[email protected]

Page 2: Linguagem C (Parte 3)

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

Page 3: Linguagem C (Parte 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.14Linguagem CRodolfo Goya 3

Page 4: Linguagem C (Parte 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

Page 5: Linguagem C (Parte 3)

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

Page 6: Linguagem C (Parte 3)

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

Page 7: Linguagem C (Parte 3)

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

Page 8: Linguagem C (Parte 3)

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

Page 9: Linguagem C (Parte 3)

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

Page 10: Linguagem C (Parte 3)

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.

Page 11: Linguagem C (Parte 3)

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

Page 12: Linguagem C (Parte 3)

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

Page 13: Linguagem C (Parte 3)

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

Page 14: Linguagem C (Parte 3)

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

Page 15: Linguagem C (Parte 3)

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

Page 16: Linguagem C (Parte 3)

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

Page 17: Linguagem C (Parte 3)

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

Page 18: Linguagem C (Parte 3)

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

Page 19: Linguagem C (Parte 3)

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

Page 20: Linguagem C (Parte 3)

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

Page 21: Linguagem C (Parte 3)

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

Page 22: Linguagem C (Parte 3)

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

Page 23: Linguagem C (Parte 3)

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