algoritmos tipos básicos. conjunto básico de tipos pré- existentes –inteiros –reais...
TRANSCRIPT
Algoritmos
Tipos básicos
Tipos básicos
• Conjunto básico de tipos pré-existentes– Inteiros– Reais– Literais– Lógicos– Binários– Ponteiros
Tipos básicos
• Inteiros– Valores sem parte decimal– Exemplos
10 7 –14 0 3
• Reais– Valores com parte decimal, mesmo que nula– Exemplos
1,75 3,14 -8,5 0,05 3,0
Tipos básicos
• Notação científica– Expressão com potências de 10– Exemplo
4,32105 é escrito 4,32E5
4,8877E-4 0,00048877
-3,432E-2 -0,03432
1,07E30 1,071030
1E-10 0,0000000001
-1,01E10 -10100000000
Inteiros x Reais
O valor é considerado inteiro, desde que o valor expresso em notação científica não contenha parte decimal se escrito por extenso
Real
Real
Inteiro
Real
Inteiro
Tipos básicos• Endereçamento
– Divisão da memória em unidades básicas– Cada posição possui um endereço
Memória
Posições(unidades)
e
e + 1
e + 2
e + 3
e + 4
Endereços
Tipos básicos
• Armazenamento de dados em memória– Representação da informação
• Uso dos bits, agrupados em bytes, para representar
• Uso das posições de memória para armazenar as informações representadas
Tipos básicos
Inteiro(exemplo)
•Uso de 1 byte (8 bits)•Representação binária
•8 bits = 256 combinações•Valores: 0 a 255 ou000000002 a 111111112
Bases numéricas
Tipos básicos• Memória
– A interpretação dos bits depende:• Do número de posições de memória que são
usadas para representar a informação• Da convenção usada para guardar a informação
– Exemplo: inteiros de 1 byte com sinal• Valores: -128 a 127• O primeiro bit indica se é positivo ou negativo
00000011 301111111 127
11111111 -110000000 -128
Tipos básicos
• Escolha da representação x Interpretação
Memória
e
e + 1
e + 2
e + 3
e + 4
10001111
01100111
10011101
10011011
36.711
40.347
143103157155
-16103-30-28
-258.4
48.7
96
2 bytessem sinal
1 bytesem sinal
1 bytecom sinal
4 bytescom sinal
Tipos básicos• Outros exemplos de representação
– Inteiros de 2 bytes com sinal• Intervalo: -32768 a 32767• O primeiro bit indica o sinal; os demais 15 bits
indicam o valor
– Números reais• Padrão de 4 bytes (32 bits)• Uso dos bits
– 1 bit para sinal– 8 bits para o expoente– 23 bits para a mantissa
Sinal (1)
Expoente (8)
Mantissa (23)
Sinal Mantissa 2Expoente
Tipos básicos
• Literais– Usados para representar valores textuais
• Incluem letras, dígitos e símbolos
– Notação• Uso de aspas duplas para indicar o tipo
“Joaquim Xavier”
“Digite seu nome:”
“”
“ ”
“Qualquer coisa: % $ * @ 1 2 4 6 5 , ? !”
“123,7”
“bbbbbb”/ / / / / /
O símbolo b indicaum espaço em branco
/
Tipos básicos
• Lógicos– Valores válidos
verdadeiro
falso
Tipos básicos
• Ponteiros– Tudo no algoritmo é representado por
“coisas” que são armazenadas em memória
• Cada “objeto” tem seu endereço
– Ponteiros indicam endereços
– Ponteiros são importantes para• Alocação dinâmica de memória• Estruturas avançadas
Tipos básicos
Tipos básicosmemória
Vila dos inteiros
Vila dos reais
Vila dos literais
Vila dos ponteiros
Ponteiros também estão na memória
Algoritmos
Expressões
Expressões
Todas as expressões são lineares
b
ab
aba /
c
ba c
ba cba /)(
Expressões
g
fe
dcab
gfedcba /)/)/(*(
Expressões• Aritméticas
– Manipulam valores numéricos– Operadores
( )– div mod* /+ –
+
–Precedências iguais
Avaliação da esquerda paraa direita
ParêntesesQuebra da ordem deprecedência normal
unário
binário
Expressões• Aritméticas
– Exercício: transformar a notação matemática em expressões algorítmicas
cb
a
hgf
edcba
a / (b + c)
((a + b) / (c – d) + e) / (f / g – h)
Expressões• Aritméticas
– Exercício: transformar a notação matemática em expressões algorítmicas
bc
a
dc
ba
a / b * c
a / b / (c / d)
a / (b * c)
Expressões• Aritméticas
– Exercício: transformar a notação matemática em expressões algorítmicas
cd
ba
kij
ghfe
d
abc
a * b * c / (d * (e – f) / (g * h)) + i * j – k
a * –b / (c * d)
Expressões• Aritméticas
– Exercício: transformar a notação matemática em expressões algorítmicas
ef
bcda
cba a + b * raiz(c)
(–a – b * c * d) / (e * f)
ef
cdba (–a + raiz(b – c * d)) / (e * f)
Expressões
• Funções pré-existentessen(r), cos(r), tan(r) real real Funções trigonométricas, com
parâmetros em radianos
asen(r), acos(r),atan(r)
real real Funções trigonométicas inversas, retornando o valor do arco em radianos
ln(r) real real Logaritmo neperiano (base e)
log(r) real real Logaritmo base 10
exp(r) real real e elevado à potência r
pot(v, r) real/inteiro, real/inteiro
inteiro se o resultado não
tiver parte decimal
Potência vr
sinal(v) real/inteiro inteiro Retorna 1 se o valor for positivo ou –1 se for negativo; zero se for nulo
Expressões
• Funções pré-existentesabs(v) real/inteiro tipo do primeiro
argumentoRetorna o valor absoluto (sem sinal) do argumento, mantendo o tipo especificado no parâmetro
trunca(r) ou int(r) real inteiro Retorna somente a parte inteira do argumento passado
frac(r) real real Retorna somente a parte fracionária do argumento
arred(r) real inteiro Retorna o inteiro mais próximo do varlor real passado
resto(r, i) real, inteiro inteiro Retorna o resto da divisão inteira de r por i
quoc(r, i) real, inteiro inteiro Retorna o quociente da divisão inteira de r por i
Expressões• Aritméticas
– Exercício: transformar a notação matemática em expressões algorítmicas
gf
cba
/
a + abs((b – c) / raiz(f / g))
ef
d
c
baln
cos
)sin(
sen(a + b) / cos(c) + ln(d / (e * f))
Expressões
• Operadores inteiros div e mod– div: divisão inteira– mod: resto da divisão inteira
10 div 5 2
8 div 3 2
5 div 2 2
21 div 4 5
3 * 9 div 2 ?
6 mod 3 0
7 mod 3 1
2322 mod 2 0
2327 mod 2 1
19 mod 3 ?
Expressões
• Mistura de reais e inteiros– Regra da promoção
• Inteiro op inteiro inteiro
• Inteiro op real real
• Real op inteiro real
• Real op real real
• Exceção– Inteiro / inteiro real
Expressões
• Literais– Operador único: +
• Concatenação“abc” + “def” “abcdef”
“abb” + “cd” “ab cd”
“b” + “a” “ba”
“Rua XV” + “, 221” “Rua XV, 221”
“ab” + “cd” + “ef” “abcdef”
/
Expressões• Funções pré-existentes
compr(s) literal inteiro Retorna o comprimento da cadeia de caracteres, incluindo os espaços
pos(s1, s2) literal, literal
inteiro Retorna a primeira posição onde a cadeia s1 ocorre na cadeia s2; Retorna 0 se não ocorrer nenhuma vez
sub(s, n1, n2) literal, inteiro, inteiro
literal Retorna a sub-cadeia de s, começando na posição n1 e comprimento total n2; primeira posição é 1
val(s) literal tipo equivalente ao valor numérico representado
Retorna o valor numérico de uma cadeia de caracteres que contém um número válido; o tipo resultante depende o valor representado na cadeia
cadeia(v) real/inteiro literal Resulta em uma cadeia de caracteres equivalente ao valor numérico do parâmetro; assume-se a representação sem potência de 10
Expressões• Literais
“prog” + “amação” “programação”compr(“tipos”) 5 (inteiro)sub(“algoritmos”, 4, 3) “ori”
• “Mistas”val(“443”) 443 (inteiro)val(“123,84”) 123,84 (real)val(“2e5”) 200000 (inteiro)val(“1,2345e2”) 123,45 (real)pos(“al”, “valores”) 2cadeia(10) “10”cadeia(3 * 7 + 1) “22”cadeia(7 / 2) “3,5”cadeia(1 / 3) “0,33333” (no arbitrário de casas)
Expressões
• Relacionais– Estabelecem a relação entre valores
• Os tipos devem ser compatíveis
• O resultado é um valor lógico
– Operadores
= ≠ < > ≤ ≥Precedência
Todos os operadores aritméticos têmPrecedência sobre os operadores relacionais
Expressões• Relacionais
– Exemplos
10 = 10 verdadeiro
8 = 5 + 2 falso
10 mod 2 = 1 falso
1 + 2 * 7 ≠ 21 verdadeiro
18 > 3 * 7 falso
1 + 1 < 2 falso
1 + 1 ≤ 2 verdadeiro
“variáveis” = “variáveis” verdadeiro
“tipos” + “dados” = “tipos dados” falso
“abc” > “abb” verdadeiro
“123” > “12” verdadeiro
Expressões• Lógicas
– Operam sobre valores lógicos– Resultam em um valor lógico
• Operadores
nãoeou
+
–Precedência
Todos os operadores relacionais têmprecedência sobre os operadores lógicos
Expressões• Operadores lógicos: tabelas verdade
não falso verdadeiro
não verdadeiro falso
falso ou falso falso
falso ou verdadeiro verdadeiro
verdadeiro ou falso verdadeiro
verdadeiro ou verdadeiro verdadeiro
falso e falso falso
falso e verdadeiro falso
verdadeiro e falso falso
verdadeiro e verdadeiro verdadeiro
não
ou
e
Expressões
Dê o resultado das seguintes expressões
14,09falsofalsoverdadeirofalsoverdadeiroverdadeiroverdadeirofalso
8 + 3 * 4 / 2 3 * 7 div 2 mod 10
4 / 2 / 2 > 1 “leopardo” < “guepardo”
verdadeiro ou verdadeiro e falso verdadeiro e falso ou verdadeiro e falso
verdadeiro ou falso e falso ou verdadeiro (verdadeiro ou falso) e falso ou verdadeiro
8 > 3 e 9 = 8 + 1 ou 12 mod 6 > 6 1 ≠ 1 e “zebra” < “gnu” ou 8 / 2 / 4 * 2 > 4
Expressões
• Observação sobre expressões relacionais8 < 21 ≤ 43
???
verdadeiro ≤ 43
8 < 21 e 21 ≤ 43
verdadeiro e verdadeiro
verdadeiro
Algoritmos
VariáveisEntrada e saída
Atribuição
Variáveis
• O que são– Áreas da memória que são utilizadas para
guardar valores
• Como funcionam– Possuem um nome (identificador)
• Referências ao identificador indicam referência ao valor armazenado
– Possuem um tipo associado• Os tipos são importantes para indicar como cada
variável pode ser armazenada
Formalização do algoritmo
Algoritmo nomeAlgoritmo{ Descrição do que o algoritmo faz }
{ Definições necessárias }Início { Comandos que descrevem passo a passo as etapas a serem cumpridas para resolver o problema }Fim
Formalização do algoritmo
• Exemploalgoritmo quedaLivre{ Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura } declare altura: realinício leia (altura) escreva (4,43 * raiz(altura))fim
Variáveis
• Declaraçãodeclare lista-identificadores: tipo
declare velocidade, altura: real
declare idade: inteiro
Lista-identificadores: lista de nomes,separados por vírgulas
declare nome: literal
declare salário, saldo: real nome: literal
temFilhos: lógicoidade: inteiro
Variáveis
declare salário, saldo: real nome: literal
temFilhos: lógicoidade: inteiro
Memória
salário (real)saldo (real)
nome (literal)
temFilhos (lógico)
idade (inteiro)
Entrada e saída
• Interface com o “mundo externo”leia(lista-de-identificadores)
escreva(lista-de-expressões)
• Faz a transferência entre de dados de fora do computador para as variáveis (i.e., para a memória)
• Faz a transferência entre de dados das variáveis (i.e., da memória) para fora do computador
Entrada e saída
• Comando leia– Transfere dados para dentro do computador– Origem dos dados
• Teclado, modem, mouse (coordenadas e botões), disco rígido, CD, webcam, sensores (temperatura, pressão, movimento), interface USB etc.
• Comando escreva– Transfere dados para fora do computador– Destino dos dados
• Monitor de vídeo, impressora, modem, motores (acionamento automático), CD, disco rígido, interface USB etc.
Entrada e saída
• Exemplo 1algoritmo exemploES{ Apenas um exemplo de entrada e saída }
declare nome: literal salário: real idade: inteiroinício leia(nome) escreva(nome)
leia(idade, salário) escreva(“Idade =“, idade) escreva(“Salário =“, salário)fim
nome
idade
salário
Jurandir
“Jurandir”
Jurandir
18 1200,00
18
1200,0
Idade =18
Salário =1200
Entrada e saída
• Exemplo 2
algoritmo exemploES{ Apenas um exemplo de entrada e saída }
declare idade, ano: inteiroinício leia(ano, idade) escreva(“Nascimento:”, ano – idade)
leia(idade) escreva(“Outro ano =“, ano - idade)fim
idade
ano
2006 19
Nascimento: 1987
18
19
2006
Outro ano: 1988
18
Variáveis• O que tem em uma
variável antes da leitura?
a) nadab) zeroc) alguma coisa que eu
ignorod) n.d.a.
algoritmo conteúdo{ exemplo de conteúdo de variáveis }
declare idade: inteiro nome: literalinício escreva(idade) escreva(nome) escreva(compr(nome)) { nº de caract }fim
Uma variável somente declarada:- Tem conteúdo “lixo”- Não foi iniciada
É considerado erro tal utilização
Atribuição
• Alocação explícita de valor a variáveis
Identificador expressão
Identificador é o nome de uma variável
Expressão resulta em um valor do mesmotipo que a variável em questão
Atribuição
• Exemploalgoritmo horasMinutosSegundos{ Dada uma quantidade de segundos, escreve o número de horas, minutos e segundos equivalente }
declare totalSegundos, horas, minutos, segundos: inteiroinício leia(totalSegundos)
horas totalSegundos div 3600 minutos (totalSegundos – 3600 * horas) div 60 segundos totalSegundos mod 60
escreva(horas, minutos, segundos)fim
Constantes simbólicas
algoritmo quedaLivre{ Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura }
constante aceleracao: real = 10,0 { gravidade } declare altura, velocidade: realinício leia(altura) velocidade raiz(2 * altura * aceleracao) escreva(velocidade)fim
10,0 ms-2 (Terra, arredondado)9,80 ms-2 (Terra, mais preciso)1,67 ms-2 (Lua)273,42 ms-2 (Sol)
Algoritmos
• ExercícioInformar o índice de massa corporal (IMC) de uma pessoa, sabendo-se que é calculada como a razão entre sua massa e o quadrado de sua altura;
Algoritmos
• ExercícioInformar a área de um trapézio, sabendo-se que é calculada por:
(b + B) * h / 2
Algoritmos
• ExercícioLer os coeficientes de uma equação de segundo grau e calcular o valor de y para um ponto x informado pelo usuário:
y = a.x2 + b.x + c
Algoritmos
• ExercícioSabendo-se que a relação entre vértices, arestas e faces de um objeto geométrico é dada pela fórmula:
vértices + faces = arestas + 2
calcule o número de vértices de um cubo (6 faces e 12 arestas)