Buscar

Algoritmos 03 - Variaveis e tipos de dados

Prévia do material em texto

N575 - Algoritmos e 
Programação de Computadores 
 
Modelo Algorítmico –Variáveis, Tipos de dados e Identificadores 
 
 
Prof. Raphael Torres Santos Carvalho 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
1 
Roteiro 
 Objetivo 
 Variável 
 Identificadores 
 Tipos de Dados 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
2 
Objetivo 
 Identificar os conceitos básicos para a construção de 
algoritmos. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
3 
Relembrando ... 
 Já vimos em aula anterior que, conceitualmente, o computador 
pode ser representado como a figura abaixo 
 
 
 
 
 
 
 Sendo que: 
 O processador é responsável pelo processamento e execução de 
programas armazenados na memória principal 
 A memória principal armazena todos os programas em execução, 
bem como os dados que estão sendo processados 
o A memória é organizada em células endereçáveis de tamanho fixo 
(geralmente de 1 byte) 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
4 
Conceito de variável 
 Assim, podemos dizer que nada “entra ou sai” do computador 
sem passar pela memória principal 
 Vimos que algoritmos manipulam dados, sejam eles de 
entrada, parte do processamento ou dados de saída 
 Esses dados são armazenados na memória principal 
 Para acessarmos os dados na memória fazemos uso do 
conceito de variável 
 Uma VARIÁVEL é um espaço em memória 
 Possui um NOME e um TIPO 
 Seu CONTEÚDO pode variar ao longo do tempo (execução do 
programa) 
o Embora seu valor possa mudar ao longo do tempo, ela só pode 
armazenar um valor a cada instante 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
5 
Conceito de variável 
 Variável: nome, tipo e conteúdo 
 O NOME ou IDENTIFICADOR uma abstração do endereço => é 
mais fácil usarmos um nome para nos referirmos a uma variável 
do que seu endereço (numérico) 
 O TIPO informa ao tradutor da linguagem quanto de espaço deve 
ser alocado para a variável e também possibilita a verificação da 
validade de certas operações => por ex., só faz sentido somar 
duas variáveis se elas forem numéricas 
 O CONTEÚDO é o valor de dado armazenado => pode ser 
alterado (lido ou escrito) durante o processamento N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
6 
Variável 
 O conteúdo de uma variável pode ser alterado através de um 
comando de atribuição, (=) ou seja, após uma atribuição a 
variável muda de valor sobrescrevendo o valor anterior. 
 Não há uma inicialização implícita na declaração, mas a 
variável pode ser inicializada na declaração. 
 Todas as variáveis devem ser declaradas antes de serem 
usadas. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
7 
Variável 
 Sintaxe: 
tipo lista_de_variáveis; 
onde: 
 tipo deve ser um dos tipos válidos em C; 
 lista_de_variáveis pode consistir de um ou mais nomes 
(identificadores) separados por vírgula. 
 
 Exemplos: 
 char ch, letra; 
 int count; 
 float pi; 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
8 
Conteúdo da variável 
 Quando o conteúdo da variável não pode mudar ao longo do 
tempo, ela é chamada de CONSTANTE 
 Uma CONSTANTE NOMEADA é um tipo especial de variável 
que nunca terá seu conteúdo alterado 
 Assim como a variável, podemos usar o nome da constante para 
nos referenciarmos ao seu valor armazenado em memória 
 São identificadores que não podem ter seus valores alterados 
durante a execução do programa. 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
9 
Constante 
 Constantes em C podem ser de qualquer um dos 5 tipos 
básicos de dados, entretanto a maneira como cada constante 
é representada no código fonte depende do seu tipo. 
 Caracteres são envolvidas por aspas simples. Ex.: ´a´; 
 strings (cadeia de caracteres) são delimitadas com aspas 
duplas. Ex.: “Algoritmos e Programação de Computadores” ; 
 Inteiros na base decimal são representados sem componentes 
fracionários. Ex.: 10; 
 Inteiros na base hexadecimal são representados antecedidos 
de 0x. Ex.: 0xA13D; 
 Ponto flutuante requerem o ponto decimal seguido da 
componente fracionária. Ex.: 11.98; 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
10 
Constante 
 Constantes – declaração. 
 Para criar uma constante (simbólica), existe uma diretiva de 
compi-lação #define que, em geral, é colocada no início do código 
fonte. 
 Sintaxe: #define identificador_da_constante valor 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
11 
#define LARGURA_MAXIMA 50 
#define NRO_DE_DIAS_DA_SEMANA 7 
#define NRO_DE_HORAS DO DIA 24 
#define FALSO 0 
#define VERDADEIRO 1 
#define UNIVERSIDADE “Universidade Federal do Ceará” 
#define TERMINO ‘\’ 
#define VALOR_DE_PI 3.1415 
/* Obs.: Não se coloca ponto-e-vírgula após o valor nos #define */ 
 
int main(void) { 
 int TotalDeHoras; 
 
 TotalDeHoras = 10 * NRO_DE_DIAS_DA_SEMANA * NRO_DE_HORAS_DO_DIA; 
 printf(“Local: %s\n”, UNIVERSIDADE); 
 /* ... */ 
 return 0; 
} 
Identificadores 
 Identificadores são nomes que o programador usa para 
representar variáveis, constantes, tipos, funções e rótulos no 
seu código fonte. 
 Criamos um identificador especificando-o na declaração de 
uma variável, constante, tipo, função ou rótulo. 
 Podemos depois usar o identificador em instruções 
posteriores do código fonte para referir-nos ao item 
associado. 
 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
12 
Identificadores 
 Um identificador (também chamado de nome) pode ser “qualquer 
palavra”, desde que siga algumas regras de formação: 
 Identificadores podem conter de 1 a vários caracteres ASCII. 
 Os caracteres ASCII válidos são: ‘a’ a ‘z’, ‘A’ a ‘Z’, ‘0’ a ‘9’ e ‘_’ 
(underscore). 
 Um identificador deve inicializar por uma letra ou por um ‘_’. 
 A partir do segundo caractere, pode conter letras, números e/ou ‘_’. 
 Deve-se usar identificadores significativos no contexto do programa. 
 Lembrar que o C é uma linguagem case-sensitive, isto é, maiúsculas 
são diferentes de minúsculas. 
o SOMA ≠ soma ≠ SoMa ≠ sOmA 
 Deve ser diferente dos comandos da linguagem (palavras 
reservadas). 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
13 
Identificadores 
 Exemplos de nomes válidos 
 A, a, nota, NOTA, x5, A32, Nota1, matricula, MenorIdade, nota_1, 
dia_mes 
 Exemplos de nomes inválidos 
 5b, e 12, x-y, 2aPROVA,escreva, leia, nota(1), salario% 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
14 
Identificadores 
 Palavras-chave 
 Palavras-chave são identificadores pré-definidos que têm 
significados especiais para o compilador C. 
 Você pode usá-las apenas como foram definidas. Lembre-se; o 
nome de um identificador não pode ser igual a nenhuma palavra-
chave da linguagem C. 
 Não podemos redefinir palavras-chave. No entanto, podemos 
especificar algum texto para ser substituído por palavras-chave 
antes da compilação, usando diretivas do pré-processador C. 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
15 
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while
Tipos de dados 
Uma das principais funcionalidades de um computador é 
a manipulação de informações 
Por isso, é necessário que haja formas de se trabalhar 
com diferentes tipos de dados em um programa. 
Podemos definir um tipo de dados como um conjunto 
de objetos que tem em comum o mesmo 
comportamento diante de um conjunto definido de 
operações 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
16 
Tipos de dados 
 Infelizmente as linguagens de programação são limitadas 
e não podem manipular todos os tipos de dados 
existentes no mundo real. 
Por isso, a construção de algoritmos para computador 
deve lidar exclusivamente com os tipos definidos nas 
linguagens de programação 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
17 
Tipos de dados 
 Os tipos básicos de dados são 
 Numéricos 
 Literais ou caracteres 
 Lógicos 
 Tipos estruturados que veremos mais adiante na disciplina 
o Cadeia de caracteres => armazena uma cadeia de símbolos (uma 
palavra, uma frase, etc) 
o Vetor/matriz => armazena uma sequencia unidimensional (vetor) ou 
multidimensional (matriz) de valores de qualquer tipo 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
18 
Tipos de dados - Numéricos 
 Os dados númericos são divididos em dois grupos: 
 Inteiros 
 Reais 
 Os inteiros podem ser positivos ou negativos e não tem a 
parte fracionária. Exemplo: -5, 16, 0, -13, 2 
 Os reais podem ser positivos ou negativos e tem a parte 
fracionária. Exemplo: -5.3, 1.12, 0.9, -1.3, 2.0 
 Notação da lingua inglesa: casa decimal separada por ponto 
 
Tipos de dados - Caracteres 
 São dados formados por um caractere ou por um cadeia de 
caracteres 
 Caracteres podem ser as letras maiúsculas, minúsculas, os 
números (não podem ser usados para cálculo) e os caracteres 
especiais (!,@,#,?,+, ...) 
 Um caractere é representado entre apóstrofos 
 Uma cadeia de caractere é representado entre aspas. 
 Exemplo: ‘a’, ‘b’, “raphael”, “@gmail.com” 
Tipos de dados - Lógicos 
 São também chamados de booleanos 
 São oriundos da lógica matemática ou lógica de Boole* 
 Pode assumir os valores: 
 Verdadeiro (V) 
 Falso (F) 
 
 
*George Boole - Matemático considerado um dos formuladores da lógica 
matemática. 
Tipos de dados em C 
 Na linguagem de programação C, os tipos básicos de dados 
existentes são: 
 Números inteiros 
 Números reais 
 Caracteres 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
22 
Tipos de dados – Números inteiros 
 Na linguagem C, o tipo int é o tipo básico para armazenar 
números inteiros com e sem sinal. 
 O tipo int é representado por 32 bits ou 4 bytes. 
 Além do tipo básico int, a linguagem suporta a utilização dos 
modificadores de tipo short e long aplicados ao tipo básico 
int., gerando os tipos short int e long int. Eles em geral são 
abreviados simplesmente como short e long. 
 Como a linguagem C está muito ligada ao hardware, a 
quantidade de bits para representar os tipos short, int e long 
dependem da plataforma em questão. No entanto, uma 
variável do tipo short não será maior do que uma do tipo long. 
 
 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
23 
Tipos de dados – Números inteiros 
 Em uma plataforma de 64 bits, o tipo short utiliza 16 bits (2 
bytes), o tipo int utiliza 32 bits (4 bytes) e o tipo long utiliza 64 
bits (8 bytes). Porém, em uma plataforma de 32 bits, o tipo int 
utiliza 32 bits (4 bytes) e o tipo long também utiliza 32 bits (4 
bytes). 
 Estes três tipo podem representar valores negativos, através 
do modificador de tipo signed (com sinal). A ausência deste 
modificador de tipo indica que o tipo é signed por default 
(padrão). 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
24 
Tipos de dados – Números inteiros 
• Signed (com sinal) 
– 4 bytes 
– -231 até 231-1 ou 
– -2.147.483.648 até 2.147.483.647 
• Unsigned (sem sinal) 
– 4 bytes 
– 0 até 232-1 ou 
– 0 até 4.294.967.295 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
25 
Tipos de dados – Números inteiros 
 Cuidado com os limites! 
 
2.147.483.647 + 1 = 0 ? 
 11111111111111111111111111111111+ 
 00000000000000000000000000000001= 
100000000000000000000000000000000 
 
OVERFLOW! 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
26 
Tipos de dados - Caracteres 
 Na linguagem C, o tipo char é o tipo básico para armazenar 
caracteres (letra/simbolo/número). 
 O tipo int é representado por 8 bits ou 1 byte 
 Signed 
 1 byte 
 -27 até 27-1 ou 
 -128 até 127 
 Unsigned 
 1 byte 
 0 até 28-1 
 0 até 255 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
27 
Tipos de dados – Números reais 
 Na linguagem C, os números reais ou também chamados em 
ponto flutuante podem ser representados por três tipos: 
 Float 
 Double 
 Long double. 
 São representados por valores numéricos com um ponto 
decimal. Também podem ser representados em notação 
científica. 
 Exemplos: 0.0, -1.00, 234.3, 1e-3 (0.001), etc N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
28 
Tipos de dados – Números reais 
Representação de um número em ponto flutuante 
 
 Exemplo: 
 
15 em ponto flutuante = 01000001 01110000 00000000 00000000 
 
• sinal = 0 ≡ +1 
• expoente = 10000010 ≡ 130. 
• Portanto expoente = 130 - 127 = 3. 
• mantissa = 1110000 00000000 00000000. 
• Portanto 1.111 = 1 + 2-1 + 2-2 + 2-3 = 1 + ½ + ¼ + 1/8 = 
15/8 
• v = +1 × 23 × 15/8 = 8 × 
15/8 = 15. 
 
E para precisão dupla: 
 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
29 
Tipos de dados – Números reais 
Tipo TamanhoPrecisão Faixa de valores 
float 4 bytes 7 dígitos 
de -3.4e38 a 3.4e38 
double 8 bytes 15 dígitos 
de -1.7e308 a 1.7e308 
long double 10 bytes 19 dígitos 
de -1.2e4932 a 1.2e4932 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
30 
Dúvidas? 
N
5
7
5
 -
 A
lg
o
ri
tm
o
s 
e 
P
ro
gr
am
aç
ão
 d
e 
C
o
m
p
u
ta
d
o
re
s 
31

Continue navegando