linguagem c (parte 1)

34
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

163 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Linguagem C (Parte 1)

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

Rodolfo Riyoei Goya

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

[email protected]

Page 2: Linguagem C (Parte 1)

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

� Linguagem de programação de uso mais popularizado no mundo

� Linguagem estruturada e de especificação muito bem definida

� Desenvolvida por profissionais para uso profissional

� Linguagem de desenvolvimento do sistema operacional UNIX

� Compiladores disponíveis em um grande número de plataformas

� Linguagem de uso comum para divulgação em publicações técnicas

� Base para a especificação de linguagens como C++, Java e Go

16.02.14Linguagem CRodolfo Goya 2

Page 3: Linguagem C (Parte 1)

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 3

Page 4: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos - Inteiros

16 8 4 2 1

17 9 5 3 3

18 10 6 6 5

19 11 7 7 7

20 12 12 10 9

21 13 13 11 11

22 14 14 14 13

23 15 15 15 15

24 24 20 18 17

25 25 21 19 19

26 26 22 22 21

27 27 23 23 23

28 28 28 26 25

29 29 29 27 27

30 30 30 30 29

31 31 31 31 31

� Escolha um número entre 0 e 31.

� Identifique em que colunas o número está.

Page 5: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos - Inteiros

� Dados em computadores são representados em codificação binária usando-se bits que podem valer ‘0’ ou ‘1’.

� Com 1 bit, 2 valores de codificação são possíveis:� 0 codificando 0.

� 1 codificando 1.

16.02.14Linguagem CRodolfo Goya 5

Page 6: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos - Inteiros

� Dados em computadores são representados em codificação binária usando-se bits que podem valer ‘0’ ou ‘1’.

� Com 2 bits, 4 valores de codificação são possíveis:� 00 codificando 0.

� 01 codificando 1.

� 10 codificando 2.

� 11 codificando 3.

16.02.14Linguagem CRodolfo Goya 6

Page 7: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos - Inteiros

� Dados em computadores são representados em codificação binária usando-se bits que podem valer ‘0’ ou ‘1’.

� Com 3 bits, 8 valores de codificação são possíveis:� 000 codificando 0.

� 001 codificando 1.

� 010 codificando 2.

� 011 codificando 3.

� 100 codificando 4.

� 101 codificando 5.

� 110 codificando 6.

� 111 codificando 7.

16.02.14Linguagem CRodolfo Goya 7

Page 8: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos - Inteiros

� Dados em computadores são representados em codificação binária usando-se bits que podem valer ‘0’ ou ‘1’.

� Com 5 bits, 32 valores de codificação são possíveis:� 00000 codificando 0.

� 00001 codificando 1.

� 00010 codificando 2.

� 00011 codificando 3.

...

� 11101 codificando 29.

� 11110 codificando 30.

� 11111 codificando 31.

16.02.14Linguagem CRodolfo Goya 8

Page 9: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos - Inteiros

� Dados em computadores são representados em codificação binária usando-se bits que podem valer ‘0’ ou ‘1’.

� Com n bits, 2n valores de codificação são possíveis:� 0...0000 codificando 0.

� 0...0001 codificando 1.

� 0...0010 codificando 2.

� 0...0011 codificando 3.

...

� 1...1101 codificando 2n-3.

� 1...1110 codificando 2n-2.

� 1...1111 codificando 2n-1.

16.02.14Linguagem CRodolfo Goya 9

Page 10: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Inteiros com Sinal

� Números negativos são codificados com o acréscimo de um bit com ‘0’ indicando valor positivo e ‘1’ indicando valor negativo.

� Com 2 bits, 4 valores de codificação são possíveis:� 00 codificando 0.

� 01 codificando 1.

� 10 codificando 2.

� 11 codificando 3.

16.02.14Linguagem CRodolfo Goya 10

Page 11: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Inteiros com Sinal

� Números negativos são codificados com o acréscimo de um bit com ‘0’ indicando valor positivo e ‘1’ indicando valor negativo.

� Com 2 bits, 4 valores de codificação são possíveis:� 00

� 01

� 10

� 11

� 00 codificando 0.

� 01 codificando 1.

� 10 codificando 2.

� 11 codificando 3.

16.02.14Linguagem CRodolfo Goya 11

Page 12: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Inteiros com Sinal

� Números negativos são codificados com o acréscimo de um bit com ‘0’ indicando valor positivo e ‘1’ indicando valor negativo.

� Com 3 bits, 8 valores com sinal são possíveis:� 100 codificando -4.

� 101 codificando -3.

� 110 codificando -2.

� 111 codificando -1.

� 000 codificando 0.

� 001 codificando 1.

� 010 codificando 2.

� 011 codificando 3.

16.02.14Linguagem CRodolfo Goya 12

Page 13: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Inteiros com Sinal

� Números negativos são codificados com o acréscimo de um bit com ‘0’ indicando valor positivo e ‘1’ indicando valor negativo.

� Com n bits, 2n valores com sinal são possíveis:� 100..00 codificando -2n-1.

� 100..01 codificando -2n-1 +1.

� ...

� 111..11 codificando -1.

� 000..00 codificando 0.

� 000..01 codificando 1.

� ...

� 011..11 codificando 2n-1-1.

16.02.14Linguagem CRodolfo Goya 13

Page 14: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Inteiros

� Números, no mundo real, são limitados:� O número de átomos no universo conhecido é de cerca de 1080

� A precisão com que uma medida pode ser feita tem limites

� Um computador que precise armazenar um número com uma quantidade infinita de dígitos precisaria de uma memória com capacidade infinita

� Manipular números grandes requer grande memória e tempo para processar� Alguns processadores são de 32 ou 64 bits indicando o limite

em que podem processar números de modo eficiente

16.02.14Linguagem CRodolfo Goya 14

Page 15: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Inteiros

� Inteiros

� int 32 bits (-2.147.483.648 a +2.147.483.647)

� unsigned int 32 bits (0 a 4.294.967.265)

� short 16 bits (-32.768 a +32.767)

� unsigned short 16 bits (0 a 65.535)

� long 32 bits (-2.147.483.648 a +2.147.483.647)

� unsigned long 32 bits (0 a 4.294.967.265)

� long long 64 bits (-263 a 263-1)

16.02.14Linguagem CRodolfo Goya 15

Page 16: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Inteiros

� Números inteiros não podem começar com zero (exceto o 0).� 25 é número inteiro.

� -12 é número inteiro.

� 025 não é número inteiro.

� -012 não é número inteiro.

� 0 e -0 são números inteiros.

� Número de tipo long devem ter a letra l no final:� 1234567890l é número de tipo long.

� Número de tipo long long devem ter LL no final:� 123456789012345LL é número de tipo long long.

� Inteiros com o modificador de tipo unsigned codificam apenas valores positivos.

Page 17: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Caracteres

� Caracteres� char 8 bits (valor de -128 a +127)

� unsigned char 8 bits (valor de 0 a 255)

� Variáveis de tipo caracter permitem codificar letras minúsculas, maiúsculas, dígitos numéricos e símbolos.

� Caracteres são representados entre aspas simples: ‘a’.

� A codificação é feita obedecendo a norma ditada pelo padrão ASCII (American Standard Coding for Information Interchange).� http://pt.wikipedia.org/wiki/ASCII

16.02.14Linguagem CRodolfo Goya 17

Page 18: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Glifo

0010 0000 32

0010 0001 33 !

0010 0010 34 "

0010 0011 35 #

0010 0100 36 $

0010 0101 37 %

0010 0110 38 &

0010 0111 39 '

Binário Decimal Glifo

0010 1000 40 (

0010 1001 41 )

0010 1010 42 *

0010 1011 43 +

0010 1100 44 ,

0010 1101 45 -

0010 1110 46 .

0010 1111 47 /

16.02.14Linguagem CRodolfo Goya 18

Page 19: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Glifo

0011 0000 48 0

0011 0001 49 1

0011 0010 50 2

0011 0011 51 3

0011 0100 52 4

0011 0101 53 5

0011 0110 54 6

0011 0111 55 7

Binário Decimal Glifo

0011 1000 56 8

0011 1001 57 9

0011 1010 58 :

0011 1011 59 ;

0011 1100 60 <

0011 1101 61 =

0011 1110 62 >

0011 1111 63 ?

16.02.14Linguagem CRodolfo Goya 19

Page 20: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Glifo

0100 0000 64 @

0100 0001 65 A

0100 0010 66 B

0100 0011 67 C

0100 0100 68 D

0100 0101 69 E

0100 0110 70 F

0100 0111 71 G

Binário Decimal Glifo

0100 1000 72 H

0100 1001 73 I

0100 1010 74 J

0100 1011 75 K

0100 1100 76 L

0100 1101 77 M

0100 1110 78 N

0100 1111 79 O

16.02.14Linguagem CRodolfo Goya 20

Page 21: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Glifo

0101 0000 80 P

0101 0001 81 Q

0101 0010 82 R

0101 0011 83 S

0101 0100 84 T

0101 0101 85 U

0101 0110 86 V

0101 0111 87 W

Binário Decimal Glifo

0101 1000 88 X

0101 1001 89 Y

0101 1010 90 Z

0101 1011 91 [

0101 1100 92 \

0101 1101 93 ]

0101 1110 94 ^

0101 1111 95 _

16.02.14Linguagem CRodolfo Goya 21

Page 22: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Glifo

0110 0000 96 `

0110 0001 97 a

0110 0010 98 b

0110 0011 99 c

0110 0100 100 d

0110 0101 101 e

0110 0110 102 f

0110 0111 103 g

Binário Decimal Glifo

0110 1000 104 h

0110 1001 105 i

0110 1010 106 j

0110 1011 107 k

0110 1100 108 l

0110 1101 109 m

0110 1110 110 n

0110 1111 111 O

16.02.14Linguagem CRodolfo Goya 22

Page 23: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Glifo

0111 0000 112 p

0111 0001 113 q

0111 0010 114 r

0111 0011 115 s

0111 0100 116 t

0111 0101 117 u

0111 0110 118 v

0111 0111 119 w

Binário Decimal Glifo

0111 1000 120 x

0111 1001 121 y

0111 1010 122 z

0111 1011 123 {

0111 1100 124 |

0111 1101 125 }

0111 1110 126 ~

0111 1111 127

16.02.14Linguagem CRodolfo Goya 23

Page 24: Linguagem C (Parte 1)

16.02.14 24Linguagem CRodolfo Goya

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Controle Abreviação Descrição

0000 0000 00 ^@ NUL Null

0000 0001 01 ^A SOH Start of Header

0000 0010 02 ^B STX Start of Text

0000 0011 03 ^C ETX End of Text

0000 0100 04 ^D EOT End of Tape

0000 0101 05 ^E ENQ Enquire

0000 0110 06 ^F ACK Acknowledge

0000 0111 07 ^G BEL Bell

Page 25: Linguagem C (Parte 1)

16.02.14 25Linguagem CRodolfo Goya

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Controle Abreviação Descrição

0000 1000 08 ^H BS Back-space

0000 1001 09 ^I HT Tab (Horizontal Tabulation)

0000 1010 10 ^J LF Line-Feed - Alimenta linha

0000 1011 11 ^K VT Vertical Tabulation

0000 1100 12 ^L FF Form-Feed

0000 1101 13 ^M CR (Enter) Carriage-Return

0000 1110 14 ^N SO

0000 1111 15 ^O SI

Page 26: Linguagem C (Parte 1)

16.02.14 26Linguagem CRodolfo Goya

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Controle Abreviação Descrição

0001 0000 16 ^P DLE Data-Link Escape

0001 0001 17 ^Q DC1 Device-Control 1

0001 0010 18 ^R DC2 Device-Control 2

0001 0011 19 ^S DC3 Device-Control 3

0001 0100 20 ^T DC4 Device-Control 4

0001 0101 21 ^U NAK Neg-Acknowledge

0001 0110 22 ^V SYN Synchronous Idle

0001 0111 23 ^W ETB End-of-Transmission Block

Page 27: Linguagem C (Parte 1)

16.02.14 27Linguagem CRodolfo Goya

Tipos Abstratos de Dados Básicos – Caracteres - ASCII

Binário Decimal Controle Abreviação Descrição

0001 1000 24 ^X CAN Cancel

0001 1001 25 ^Y EM End-Of-Medium

0001 1010 26 ^Z SUB Substitute

0001 1011 27 ^[ ESC (ESC) Escape

0001 1100 28 ^\ FS File Separator

0001 1101 29 ^] GS Group Separator

0001 1110 30 ^^ RS Record Separator

0001 1111 31 ^_ US Unit Separator

Page 28: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Números em Ponto Flutuante

� Nem todos os números que se usam em aplicações são números inteiros. Alguns apresentam parte fracionária ou decimal.

� Estes números também podem ser representados em programas de computador. Neste caso, recebem a denominação de números em ponto flutuante.

� Do mesmo modo que ocorre com números inteiros, os números em ponto flutuante tem limitação tanto em magnitude, como em precisão (número de casas decimais).

16.02.14Linguagem CRodolfo Goya 28

Page 29: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Números em Ponto Flutuante

� Números com parte inteira e decimal.� 3.141592

� 1.414127

� Números inteiros, porém maiores do que podem ser expressos nos tipos inteiros:� int maior que 232 (≈109) ou long long maior que 264 (≈ 1020)

� Números expressos em notação científica.� 6.023e+23 (equivalente a 6,023 x 1023)

� -1.609e-19 (equivalente a -1,609 x 10-19)

16.02.14Linguagem CRodolfo Goya 29

Page 30: Linguagem C (Parte 1)

Tipos Abstratos de Dados Básicos – Números em Ponto Flutuante

� Números em ponto flutuante em linguagem C� float 32 bits

� 3.4x10-38 a 3.4x10+38

� 7 dígitos de precisão

� double 64 bits

� 1.7x10-308 a 1.7x10+308

� 14 dígitos de precisão

� long double 96 bits

� 1.18973e-4932 a 1.18973e+4932

� 18 dígitos de precisão

� Padrão IEEE-754 (754-1985 e 754-2008) e IEEE-854

� http://en.wikipedia.org/wiki/IEEE_754-2008

16.02.14Linguagem CRodolfo Goya 30

Page 31: Linguagem C (Parte 1)

Declaração de Variáveis

� Porções de memória reservadas para armazenar valores.

� São caracterizadas pelo seu nome, tipo, valor atual e endereço onde está localizada.

� Para definir nomes de variáveis, pode-se usar letras maiúsculas, minúsculas, dígitos e o caracter ‘_’ (apenas não se pode começar o nomes com dígitos).

� Maiúsculas e minúsculas são distintas. A variável de nome x é diferente de outra de nome X.

� Embora seja permitido, não é comum usar letras maiúsculas nos nomes em linguagem C.

16.02.14Linguagem CRodolfo Goya 31

Page 32: Linguagem C (Parte 1)

Declaração de Variáveis

� Formato: tipo lista de variáveis;

� Deve ser feita no inicio de cada função;

� Cada declaração termina sempre com ponto e vírgula;

� Por exemplo:� int contagem;

� char opcao, letra;

� unsigned dia, mes, ano;

� unsigned long populacao;

� float max, min;

� double valor, erro;

16.02.14Linguagem CRodolfo Goya 32

Page 33: Linguagem C (Parte 1)

Declaração de Variáveis

� Formato: tipo lista de variáveis;

� As variáveis usadas em uma função devem ser declaradas no inicio da função e antes de qualquer outro comando;

� Cada declaração termina sempre com ponto e vírgula;

� Pode-se inicializar variáveis na declaração:

� Por exemplo:� int contagem = 0;

� char opcao = ‘S’, letra = 97; /* 97 = ‘a’ */

� unsigned dia = 21, mes = 12, ano = 2012;

� unsigned long populacao = 100;

� float max = 10.0, min = 0.0;

� double valor = 10.0, erro = 0.0;

16.02.14Linguagem CRodolfo Goya 33

Page 34: Linguagem C (Parte 1)

Conclusões

� Valores numéricos e caracteres são armazenados em padrões de 0s e 1s (bits) na memória segundo regras de conversão (por exemplo, tabela ASCII para caracteres).

� Variáveis têm precisão finita no valor representado, assim, quando modelam valores do mundo real, são aproximações.

� Diferentes tipos de variáveis (short, int, long e long long)

podem armazenar o mesmo valor, mas ocupando espaços de memória maiores e tomando mais tempo para processamento.