linguagem c (parte 1)

Post on 22-Feb-2017

163 Views

Category:

Engineering

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Rodolfo Riyoei Goya

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

rgoya@uol.com.br

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

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

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á.

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

top related