aula 8 - lógica de programação - variáveis, tipos de dados e operadores

31
Aula 8 – Variáveis e Tipos de Dados Prof. André Constantino da Silva LOGT1 – Lógica Noturno 04 de maio de 2012

Upload: andre-constantino-da-silva

Post on 01-Jul-2015

6.101 views

Category:

Technology


0 download

TRANSCRIPT

Aula 8 – Variáveis e Tipos de

Dados

Prof. André Constantino da Silva

LOGT1 – Lógica

Noturno

04 de maio de 2012

Na aula anterior...

• VisualG

• Comando de Decisão- Simples (se-entao)- Dupla (se-entao-senao)

Na aula de hoje...

• Variáveis

• Tipos de Dados

• Operadores

Variável

• Aprendemos a usar variáveis e a declará-las

Mas o que é uma variável?

Variável

• É um objeto ou entidade situado na memória que representa um valor ou expressão

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

00 01 02 03

04 05 06 07

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

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

Operadores

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