Post on 01-Jul-2015
Aula 8 – Variáveis e Tipos de
Dados
Prof. André Constantino da Silva
LOGT1 – Lógica
Noturno
04 de maio de 2012
Memória
• São dispositivos utilizados para guardar dados
• A unidade básica da memória é o dígito binário (bit)
• Atualmente, cada byte da memória possui um endereço
Memória
000
001
010
Mas o computador trabalha com bits! Os endereços então são binários:
011
100
101
110
111
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1
Memória
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1
Memória0000 0001
00100011
0100 01010110
0111
1000 10011010
1011
1100 11011110
1111
Memória• Imagina manipularmos endereços de memória
em nossos algoritmos?
Ex (hipotético):algoritmo “teste”var
0x010: inteiroinicio
0x010 <- 50escreva(0x010)
fim
• E se o endereço estiver sendo usado por outro programa?
Variável• Espaço na memória
• Possui um nome (identificador)
• Armazena um dado(conteúdo)
• Só existe em tempo deexecução
• Possui um tipo
Ex.: var fator: inteiro
Inteiro
Tipos de Dados
• Combinação de valores e de operações que uma variável pode executar
- Também conhecido como tipo de variável
• Exemplo:inteiroValores: ... , -2, -1, 0, 1, 2, .... , 100, ...Operações: + , - , *, /
Tipo de Dados
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1
0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0
Tipo de Dados
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0
O que esses 0 e 1 representam?
0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0
Tipo de Dados - Inteiro
• Se o sistema utiliza 32 bits para representar um inteiro, temos:
- A primeira sequência de 32 bits é 254- A segunda sequência de 32 bits é 1.221- A terceira sequência de 32 bits é 2.147.483.647
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Tipo de Dados - Real
• Se o sistema utiliza 32 bits para representar um real (ponto flutuante), adotando a norma IEEE 754 formato simples:
- Primeiro bit: indica o sinal (0 positivo, 1 negativo)- Os próximos 23 bits: mantissa (número em binário)- 8 bits restantes: expoente (variando de -126 a +127)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Tipo de Dados - Real
• Se o sistema utiliza 32 bits para representar um real, adotando a norma IEEE 754 formato simples:
- Primeiro bit: indica o sinal (0 positivo, 1 negativo)- Os próximos 8 bits: expoente (variando de -126 a +127)- 23 bits restantes: mantissa (número em binário)
representa 356 x e-43
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
Tipo de Dados - Caractere
• Se o sistema utiliza 8 bits para representar um caractere, adotando a tabela ASC II:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
Nulo NuloNulo
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1
Nulo EOTNulo
†
▀
Tabela ASC II
• Convenção para representarletras, números, símbolos através de código binário.
• Exemplos:
A 0100 0001 B 0100 0010C 0100 0011...a 0110 0001b 0110 0010c 0110 0011
Tipo de Dados - Caractere
• Se o sistema utiliza 8 bits para representar um caractere, adotando a tabela ASC II:
I SF P
0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1
0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Tipo de Dados - Lógico
• Valores possíveis: verdadeiro, falso• Se o sistema utiliza 1 bit para representar um
tipo lógico (booleano), adotamos por convençãobit 0 é falsobit 1 é verdadeiro
0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1
0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
FalsoVerdadeiroFalso
Tipo de Dados - Lógico
• Em Portugol, para atribuir verdadeiro ou falso, fazemos:
algoritmo “verdadeiro_falso"var
ligado: logicoinicio
ligado <- verdadeiroligado <- falsoescreva(ligado)
Fimalgoritmo
Válido para o comando leia(), qualquer coisa que o usuário digitar que não for igual a palavra reservada verdadeiro será considerado como falso
Tipo de Dados
• Determina o conteúdo de uma variável• Determina a quantidade de memória que
será utilizada para armazenar o conteúdo• Escolha o tipo de dados mais adequado
ao que deseja representarPara não usar mais memória do que é necessário
• As operações que poderá realizar estão relacionadas ao tipo de dados
Operador de Atribuição
• Atribui um valor a uma variável• Símbolo: <- (lê-se recebe)
• Cuidado: a variável só pode receber valores do seu tipo
Operador de Atribuição
algoritmo "erro de atribuicao"var numero1, numero2: inteiro
numero3, numero4: realletra: caractereligado: logico
inicionumero1 <- "teste"numero2 <- falsoletra <- 20ligado <- "sim"escreva(numero1, numero2, letra, ligado)
fimalgoritmo
Operadores Matemáticos
Símbolo Ação Exemplo
+ Soma Soma <- 5 + 2
- Subtração Sub <- 5 – 2
* Multiplicação M <- 5 * 2
/ Divisão(resultado sempre real)
Divisao <- 5 / 2
\ Divisão Inteira Quociente <- 5 \ 2
MOD Resto da divisão inteira Resto <- 5 mod 2
^ Potenciação(resultando sempre real)
Potencia <- 5 ^ 2
Operadores Matemáticos
• O resultado pode ser um inteiro ou real• Operados +, - e * o resultado dependerá dos
operandos- Se os operandos forem inteiros, resultado
será inteiro- Se houver algum operando real, resultado
será real- mesmo se o resultado for um número inteiro.
Ex: 1.5 + 1.5 = 3.0
Observação: Se o resultado for inteiro, ele pode ser atribuído a uma variável do tipo real
Exercícios1. Escreva um algoritmo que leia um número inteiro do usuário e calcule y, sendo que y é calculado pela fórmula
y = 2x
2. Escrever um algoritmo que leia um número inteiro digitado pelo usuário e informe ao usuário se ele é par ou ímpar
3. Escrever um algoritmo que leia o nome de um aluno e as notas das três provas que ele obteve no semestre. No final informar o nome do aluno e a sua média (aritmética) , a sua média (aritmética) e se o aluno passou na disciplina (média maior ou igual a 6.0).