Algoritmos Tipos básicos. Conjunto básico de tipos pré- existentes –Inteiros –Reais...

Preview:

Citation preview

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)

Recommended