Linguagem C (Parte 1)
-
Upload
daniel-barao -
Category
Engineering
-
view
164 -
download
0
Transcript of Linguagem C (Parte 1)
![Page 1: Linguagem C (Parte 1)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/1.jpg)
Introdução à Programação em Linguagem C
Rodolfo Riyoei Goya
http://rgoya.sites.uol.com.br
![Page 2: Linguagem C (Parte 1)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/2.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/3.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/4.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/5.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/6.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/7.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/8.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/9.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/10.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/11.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/12.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/13.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/14.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/15.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/16.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/17.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/18.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/19.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/20.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/21.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/22.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/23.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/24.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/25.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/26.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/27.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/28.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/29.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/30.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/31.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/32.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/33.jpg)
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)](https://reader033.fdocumentos.com/reader033/viewer/2022051122/58ac9af11a28ab93348b5557/html5/thumbnails/34.jpg)
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.