1. Introdução à Programação em
Linguagem C
Rodolfo Riyoei Goya
http://rgoya.sites.uol.com.br
rgoya@uol.com.br
2. 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.14
Linguagem C
Rodolfo Goya 2
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.14
Linguagem C
Rodolfo Goya 3
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 1 bit, 2 valores de codificação são possíveis:
0 codificando 0.
1 codificando 1.
16.02.14
Linguagem C
Rodolfo Goya 5
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 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.14
Linguagem C
Rodolfo Goya 6
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 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.14
Linguagem C
Rodolfo Goya 7
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 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.14
Linguagem C
Rodolfo Goya 8
9. 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.14
Linguagem C
Rodolfo Goya 9
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 codificando 0.
01 codificando 1.
10 codificando 2.
11 codificando 3.
16.02.14
Linguagem C
Rodolfo Goya 10
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 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.14
Linguagem C
Rodolfo Goya 11
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 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.14
Linguagem C
Rodolfo Goya 12
13. 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.14
Linguagem C
Rodolfo Goya 13
14. 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.14
Linguagem C
Rodolfo Goya 14
15. 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.14
Linguagem C
Rodolfo Goya 15
16. 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.
17. 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.14
Linguagem C
Rodolfo Goya 17
27. 16.02.14 27
Linguagem C
Rodolfo 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
28. 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.14
Linguagem C
Rodolfo Goya 28
29. 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.14
Linguagem C
Rodolfo Goya 29
30. 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.14
Linguagem C
Rodolfo Goya 30
31. 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.14
Linguagem C
Rodolfo Goya 31
32. 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.14
Linguagem C
Rodolfo Goya 32
33. 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.14
Linguagem C
Rodolfo Goya 33
34. 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.