Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

52
Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez

Transcript of Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Page 1: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos e Estruturas de Dados I - Introdução

Profa. Mercedes Gonzales Márquez

Page 2: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Conceitos Básicos

Computadores – máquinas capazes de solucionar problemas, mas que só agem quando recebem instruções nos mínimos detalhes.

A tarefa principal dos computadores é o processamento de dados, ou seja, receber dados (entrada), realizar operações (processamento propriamente dito) e gerar uma resposta (saída).

Page 3: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Conceitos Básicos

MEMÓRIA

UNIDADE DE

ENTRADA

UNIDADEDE

SAIDA

UNIDADE DE

CONTROLE

UNIDADELÓGICA E

ARITMÉTICA

Unidade Central de Processamento (UCP)

Estrutura de um computador

Page 4: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Conceitos básicos

Unidade de entrada – Traduz informação de um dispositivo de entrada em um código que a UCP entende (padrões de pulsos elétricos compreensíveis ao computador).

Unidade de saída – converte os dados processados, de pulsos elétricos em palavras ou números que podem ser escritos em vídeos ou outros dispositivos de saída.

Exemplos ue:– Teclado – drive de CD / DVD-ROM, pen drive.

Page 5: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Conceitos básicos

– joystick, – câmera filmadora, – câmera digital, – tela sensível ao toque, – mesa gráfica,– caneta ótica, etc.

Exemplos de us• Vídeo • Impressora • drive de CD/DVD-ROM, pen drive• caixa de som, etc.

Page 6: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Conceitos básicos

Memória – armazena os dados e o próprio programa. Número finito de localizações que são identificadas por meio de um único endereço.

1000

1003

1004

1005

1006

1007

1008

1009

1010

1001

1002Read/Write

CPU

Endereço

Dados

Escrita – CPU envia endereço da posição de memória a ser escrita e dados a escrever.

Leitura – CPU envia endereço da posição de memória a ser lida e recebe dados.

Page 7: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Conceitos básicos

Unidade lógica e aritmética – São executadas operações matemáticas de adição, multiplicação e divisão e operações lógicas como conjunção, disjunção, ou exclusivo e outras.

Unidade de controle – Responsável pelo “tráfico” de dados. Controla a transferência de dados da memória para a unidade lógica e aritmética, da entrada para a memória e da memória para a saída.

Page 8: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Conceito

Sequência de passos que visa atingir um objetivo bem definido.

Um algoritmo é um conjunto finito de regras que fornece uma sequencia precisa de operações para resolver um problema específico.

Descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.

Page 9: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Características

Finitude: algoritmos devem terminar após um número finito de passos;

Definição: cada passo deve ser precisamente definido

Entradas: devem ter zero ou mais entradas Saídas: devem ter uma ou mais saídas; Efetividade: todas as operações devem ser

simples de modo que possam ser executadas em um tempo limitado.

Page 10: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – exemplos da vida quotidiana

Instruções que um professor passa aos seus alunos em uma academia de ginástica

Uma receita para preparo de um bolo O guia de preenchimento da declaração de imposto de

renda. A regra para determinação de máximos e mínimos de

funções por derivadas sucessivas. A maneira como as contas de água, luz e telefone são

calculadas mensalmente.

Page 11: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Problemas mais complexos solucionados por algoritmos

- A internet permite que pessoas espalhadas por todo o mundo acessem e obtenham com rapidez grandes quantidades de informações. Para isso, são empregados algoritmos inteligentes com a finalidade de gerenciar e manipular esse grande volume de dados. Os exemplos de problemas que devem ser resolvidos incluem a localização de boas rotas pelas quais os dados viajarão e o uso de um mecanismo de pesquisa para encontrar com rapidez páginas em que residem informações específicas.

Page 12: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Problemas mais complexos solucionados por algoritmos

- O comercio eletrônico permite que mercadorias e serviços sejam negociados e trocados eletronicamente. A capacidade de manter privativas informações como números de cartão de crédito, senhas e extratos bancários é essencial para a ampla utilização do comercio eletrônico. A criptografia de chave pública e as assinaturas digitais estão entre as tecnologias centrais utilizadas e se baseiam em algoritmos numéricos e na teoria dos números.

Page 13: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - exemplo 1

Algoritmo – instruções que um professor passa aos seus alunos em uma academia de ginástica para fortalecer braços e pernas.

1) Repetir 10 vezes os quatro passos abaixo:

1.1.Levantar e abaixar braço direito;

1.2.Levantar e abaixar braço esquerdo;

1.3.Levantar e abaixar perna esquerda;

1.4.Levantar e abaixar perna direita.

Page 14: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - exemplo 2

Algoritmo – Fazer um bolo 1) Bater duas claras ; 2) Adicionar duas gemas; 3) Adicionar um xícara de açúcar; 4) Adicionar duas colheres de manteiga; 5) Adicionar uma xícara de leite de coco; 6) Adicionar farinha e fermento; 7) Colocar numa forma e levar ao forno em lume

brando

Page 15: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - exemplo 3

Problema – Dispomos de duas vasilhas com capacidades de 9 e 4 litros respectivamente. As vasilhas não tem nenhum tipo de marcação, de modo que não é possível ter medidas como metade ou um terço. Faça um algoritmo que usando as vasilhas de 9 e 4 litros encha uma terceira vasilha de medida desconhecida com seis litros de água.

Uma possível solução é: (1) Encha a vasilha de 9 litros;

Page 16: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - exemplo 3

(2) Usando a vasilha de 9 litros, encha a vasilha de 4 litros; (3) Despeje o que sobrou na vasilha de 9 litros (5 litros) na terceira vasilha. Observe que falta um litro para completar os seis litros; (4) Esvazie a vasilha de 4 litros; (5) Torne a encher a vasilha de 9 litros; (6) Usando a vasilha de 9 litros encha a vasilha de 4 litros; (7) Esvazie a de 4 litros; (8) Usando o que restou na vasilha de 9 litros (5 litros), encha novamente a vasilha de quatro litros; (9) Despeje o que sobrou na vasilha de 9 litros (1 litro) na terceira vasilha, que agora tem 6 litros.

Page 17: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - exemplo 4

Problema – Considere cinco rãs estão posicionadas em seis casas da seguinte maneira:

Faça um algoritmo que mostre como as rãs podem chegar a seguinte posição final:

rã 5 rã 4 rã 3 rã 2 rã 1

rã 1 rã 2 rã 3 rã 4 rã 5

Page 18: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - exemplo 4

As rãs foram treinadas para trocar de casas, mas sempre obedecendo as seguintes regras:

- elas podem pular para a casa vizinha (frente ou trás), se ela estiver vazia;

- elas podem pular sobre a rã vizinha para uma casa livre (frente ou trás).

Page 19: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - exemplo 4

Page 20: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - exemplo 5

Algoritmo – um algoritmo que inclua decisões, como o que fazer em um domingo. Um possível algoritmo poderia ser o seguinte:

(1) Acordar. (2) Tomar o café. (3) Se estiver sol vou à praia senão leio o jornal e assisto

TV(4) Almoçar. (5) Ir ao cinema. (6) Fazer uma refeição e comer(7) Ir dormir.

Page 21: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Método de Construção entender o problema; definir os dados de entrada; definir o processamento; definir os dados de saída; construir o algoritmo usando descrição

narrativa, fluxograma ou pseudocódigo; realizar testes.

Page 22: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Dificuldades

Difícil para iniciantes saber o que o computador pode ou não fazer

Criação de algoritmos é um processo não automático e tem muito de arte

Pode haver mais de uma solução para um problema.

Page 23: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – exemplo 1

Calcular a área de um retângulo. Dados de entrada

base e altura

Processamento (cálculo) Área do retângulo = base x altura

Dados de saída Área do retângulo

Page 24: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – exemplo 2

Calcular a média ponderada de um aluno e verificar a sua aprovação em relação a uma média pré-definida para aprovação. n notas e n pesos devem ser considerados. Dados de entrada

notas e pesos correspondentes, média para aprovação Processamento (cálculo)

Média do aluno = [(N1 x P1) + (N2 x P2) + ... + (Nn x Pn)] / (P1 + P2 + ... + Pn)

Se média do aluno for maior ou igual à média para aprovação, aluno aprovado. Caso contrário, aluno reprovado.

Dados de saída Média do aluno, aprovação

Page 25: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – exemplo 3

Encontre o MDC de dois números A e B. Dados de entrada

Os números A e B Processamento (cálculo)dividendo = a; divisor = benquanto resto(dividendo/divisor) ≠ 0 c = resto(dividendo/divisor) dividendo = divisor divisor = c Dados de saída

divisor.

Page 26: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – exemplo 4

Escreva os termos da sequência de Fibonacci inferiores a L. Dados de entrada

O número L Processamento (cálculo)

Atribua 1 ao primeiro termo. Se 1 for menor que L escreva-o. Atribua 1 ao segundo termo. Se 1 for for menor que L escreva-o. Some primeiro e segundo termo e escreva. enquanto a soma for menor que L, atualize o primeiro e segundo

termo e repita o último passo

Dados de saída Todos os termos inferiores a L.

Page 27: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação

Linguagem natural ou descrição narrativa: Algoritmos expressos diretamente em linguagem natural como as receitas.

Fluxograma: representação gráfica Pseudo-código (pseudo-linguagem):

linguagem intermediária entre linguagem natural e linguagem de programação.

Page 28: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação

Descrição narrativa Escrever, usando linguagem natural, os passos a serem

seguidos para a solução. Vantagens – a linguagem natural já é bastante conhecida.

Não é necessário aprender nenhum conceito novo. Desvantagens – possibilidades de várias interpretações,

gerando dificuldade na codificação.

Page 29: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação

Exemplo 1 – Descrição narrativa

Passo 1 – Ingressar largura do retângulo

Passo 2 – Ingressar altura do retângulo

Passo 3 – Multiplicar a largura pela altura

Passo 4 – Mostrar o resultado da multiplicação

Page 30: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação

Exemplo 2 – Descrição narrativa

Passo 1 – Ingressar pesos Pi e notas Ni

Passo 2 – Ingressar media referência MF

Passo 3 – Calcular a média ponderada usando

MA =

[(N1 x P1) + (N2 x P2) + ... + (Nn x Pn)] / (P1 + P2 + ... + Pn)

� Passo 4 – Se MA>=MF COND=Aprovado senão

COND=Reprovado

Passo 5 – Mostrar MA e COND

Page 31: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação

Fluxograma Descrição dos passos para a resolução do problema

utilizando símbolos gráficos definidos previamente. Vantagens – entendimento mais fácil do que a leitura de

textos. Desvantagens – necessidade de aprender a simbologia.

Poucos detalhes, dificultando a codificação.

Page 32: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação

Fluxograma – símbolos utilizados

Início e fim do algoritmo

Sentido do fluxo de dados

Cálculos e atribuição de valores

Entrada de dados

Saída de dados

Tomada de decisão

Page 33: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação

Exemplo 1 – Fluxograma

Início

Fim

b, h

A = b * h

A

Page 34: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação

Exemplo 2 – Fluxograma

Início

Fim

n,pi,Ni,MR

MA = [(N1 x P1) + (N2 x P2) + ... + (Nn x Pn)] / (P1 + P2 + ... + Pn)

AMA>=MR Cond=ACond=R

VF

MA, Cond

Page 35: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação Exemplo 2 – Fluxograma – Maior detalhe

Início

Fim

P(cont),N(cont)

MA = [(N(1) x P(1) + N(2) x P(2) + ... + (N(n) x P(n)] / (P1 + P2 + ... + Pn)

MA>=MR Cond=ACond=R VF

MA, Cond

Cont<=n

Cont=1 n, MR

Cont=cont+1

V

F

Page 36: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação Exemplo 3 – Fluxograma –

Fim

F

dividendo=a, divisor=b

a,b

c=resto(dividendo/divisor)dividendo=divisor

divisor=c

V

resto(dividendo/divisor)<>0

Início dividendo=a, divisor=b

divisor

Page 37: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação Exemplo 4 – Fluxograma –

Início

FimFib<LF

T1<LT1=1, T2=1L

Fib=T1+T2

V

F

T1,T2

Fib

T1=T2T2=Fib

V

Page 38: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação

Pseudocódigo (portugol)

Descrição dos passos a serem seguidos através de

regras definidas previamente.

Vantagens – codificação mais rápida.

Desvantagens – necessidade de aprender o

pseudocódigo.

Page 39: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação por pseudocódigo

Símbolos e palavras utilizadas (convenção nossa)

Cálculos e atribuição de valores←

Entrada de dadosleia

Saída de dadosescreva

Tomada de decisão (1 vez)

Se … então... Senão...

Tomada de decisão (repetidas vezes)

Enquanto …faça

V

F

V

Page 40: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação por pseudocódigo

Exemplo 1ALGORITMO

Inicio

escreva “Informe a largura do retângulo”

leia b

escreva “Informe a altura do retângulo”

leia h

a ← b * h escreva “Área = ”, a

Fim

Page 41: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação por pseudocódigo Exemplo 2 –

ALGORITMO

Inicio

escreva “Informe o número de notas”

leia n

escreva “Informe Média de referência”

Leia MF

Contador←1,somaproduto←0, somapesos←0Enquanto contador<=n

escreva “Informe nota(contador)”

leia n(contador)

escreva “Informe peso(contador)”

leia p(contador)

somaproduto← p(contador)*n(contador)+somaprodutosomapesos← p(contador)+somapesoscontador←contador+1

Page 42: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação por pseudocódigo

Exemplo 2 –

MA<-somaproduto/somapesos

Se MA>=MF então

Cond←“Aprovado“Senão

Cond←“Reprovado“escreva MA, Cond

Fim

Page 43: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação por pseudocódigo Exemplo 4 –ALGORITMO

Início

Leia L

T1←1, T2←1

Se (T1<L) então

escreva (T1,T2)

Fib←T1+T2

Enquanto (Fib<L) faça

escreva Fib

T1←T2

T2←Fib

Fib←T1+T2

Fim enquanto

Fim se

Fim

Page 44: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos - Representação

Exemplo 5 – Faça um algoritmo para calcular as raízes de uma equação do segundo grau da forma ax2+bx+c=0.

- As raízes podem ser calculadas pelas fórmulasx1=[-b+(b2-4ac)(1/2)]/(2a) e

x2=[-b-(b2-4ac)(1/2)]/(2a)- Não podemos somente aplicar a fórmulas.

Temos que considerar Por exemplo o que fazer se o valor do coeficiente a for igual a zero? Um possível algoritmo é o seguinte:

Page 45: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – RepresentaçãoExemplo 5. Descrição Narrativa

Passo 1. Obter os coeficientes a, b e c

Passo 2. Se o coeficiente a for igual a zero informar que esta não é uma equação do segundo grau e terminar o algoritmo.

Caso contrário calcule delta=b2-4acPasso 3. Se o valor de delta for negativo informar que a equação não tem raízes reais e terminar o algoritmo.

Caso contrário calcule a raiz quadrada de delta e guarde oresultado como raiz

Passo 4. Calcule x1=(-b + raiz)/(2a)

Passo 5.Calcule x2=(-b - raiz)/(2a)

Passo 6. Mostrar x1 e x2

Page 46: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação

Exemplo 5. Passe a solução apresentada na representação narrativa para a descrição por fluxograma e por pseudocódigo.

Page 47: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Exemplo 6: Leia três valores inteiros, determine e imprima o menor deles.

Algoritmos – RepresentaçãoExemplo 6. Descrição Narrativa

Passo 1. Obtenha os números a, b e c

Passo 2. Se a é o menor dos três, fazer menor=a

Caso contrário se b for menor que c fazer menor=b

Caso contrário menor=c

Passo 3. Mostrar menor

Page 48: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação

Exemplo 6. Passe a solução apresentada na representação narrativa para a descrição por fluxograma e por pseudocódigo.

Page 49: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – RepresentaçãoExemplo 6. Descrição Pseudo-código

Leia A,B,C

Se A<B e A<C então

Menor ← A

Senão

Se B<C então

Menor ← B

Senão

Menor ← C

Fim se

Fim se

Escreva Menor

Page 50: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação

Exemplo 7. Considere o seguinte problema. Um escritório de previsão do tempo armazena diariamente a temperatura de uma determinada região. A tarefa é descobrir qual é a menor temperatura registrada nos arquivos do escritório durante um mês de 30 dias. Lembrar que temperaturas podem ser negativas ou positivas.

Um possível algoritmo seria o seguinte:

Page 51: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – RepresentaçãoExemplo 7. Descrição Narrativa

Passo 1. Pegue a primeira temperatura registrada.

Passo 2. Anote esta temperatura como a menor de todas as temperaturas.

Passo 3. Enquanto ainda não ler as 30 temperaturas, execute repetidamente e em ordem todas as instruções numeradas abaixo:

Passo 4. Pegue a próxima temperatura.

Passo 5. Se esta temperatura for menor que àquela registrada no momento como a menor então jogue fora a anteriormente registrada e anote a nova temperatura como a menor de todas.

Passo 6. Pegue a temperatura que está anotada como a menor. Esta é a temperatura que estávamos procurando.

Page 52: Algoritmos e Estruturas de Dados I - Introdução Profa. Mercedes Gonzales Márquez.

Algoritmos – Representação

Exemplo 7. Passe a solução apresentada na representação narrativa para a descrição por fluxograma e por pseudocódigo.