Algoritmos e Estruturas de Dados I
- Introdução
Profa. Mercedes
Gonzales Márquez
Algoritmos - Conceito

Descrição ordenada de um conjunto de comandos que,
obedecidos, resultam numa sucessão finita de ações.
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.
Problemas mais complexos
solucionados por algoritmos
• A internet permite que o mundo acesse e obtenha com
rapidez grandes quantidades de informações.
• Algoritmos inteligentes são necessários para gerenciar e
manipular esse grande volume de dados.
• Exemplos de problemas
1. localização de boas rotas pelas quais os dados viajarão
2. uso de um mecanismo de pesquisa para encontrar com rapidez
páginas em que residem informações específicas.
3. A capacidade de manter privativas informações como números de
cartão de crédito, senhas e extratos bancários é essencial no
comercio eletrônico.A criptografia de chave pública e as assinaturas
digitais são tecnologias centrais utilizadas baseadas em algoritmos
numéricos e na teoria dos números.
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.
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
Algoritmos - exemplo 3

Problema – Dispomos de duas vasilhas com
capacidades de 9 e 4 litros. 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;
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.
Algoritmos - exemplo 4

Problema - Era uma vez um fazendeiro que foi ao
mercado e comprou um lobo, um carneiro, e uma
alface. No caminho para casa, o fazendeiro chegou à
margem de um rio e arrendou um barco. Mas, na
travessia do rio por barco, o agricultor poderia levar
apenas a si mesmo e uma única de suas compras - o
lobo, o carneiro, ou a alface. Se fossem deixados
sozinhos em uma mesma margem, o lobo comeria o
carneiro, e o carneiro comeria a alface. O desafio do
fazendeiro é atravessar a si mesmo e as suas compras
para a margem oposta do rio, deixando cada compra
intacta. Como ele fará isso?
Algoritmos - exemplo 4
1. Atravesse o carneiro.
2. Retorne sozinho.
3. Atravesse o lobo.
4. Retorne com o carneiro.
5. Atravesse o alface.
6. Retorne sozinho.
7. Atravesse o carneiro.
Algoritmos - exemplo 5

Problema - Você tem três moedas, e sabe que uma
delas é mais leve do que as demais. As outras duas
têm o mesmo peso. Determine a moeda mais leve com
uma pesagem em uma balança de dois pratos.
Algoritmos - exemplo 5
1. Escolha duas moedas.
2. Coloque cada uma das moedas escolhidas num dos
pratos da balança.
3. Se a balança ficar equilibrada, forneça como resposta a
moeda não escolhida; caso contrário, forneça como
resposta a moeda do prato que está num nível mais
baixo.
Algoritmos - exemplo 6

Problema - Você tem nove moedas, e sabe que uma
delas é mais leve do que as demais. As outras oito têm
o mesmo peso. Determine a moeda mais leve com
duas pesagens em uma balança de dois pratos..
Algoritmos - exemplo 6
1. Divida as moedas em três grupos de três moedas cada.
2. Escolha dois grupos.
3. Coloque cada grupo num dos pratos da balança.
4. Se a balança ficar equilibrada, fique com o grupo não
escolhido; caso contrário, fique com o grupo do prato
que está num nível mais baixo (grupo mais leve).
5. Escolha duas moedas.
6. Coloque cada uma das moedas escolhidas num dos
pratos da balança.
7. Se a balança ficar equilibrada, forneça como resposta a
moeda não escolhida; caso contrário, forneça como
resposta a moeda do prato que está num nível mais
Algoritmos - exemplo 7

Um algoritmo que inclua decisões, como o que fazer
em um domingo 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.
Processador de Algoritmos




Um algoritmo deve ser executado por algum agente ou
também chamado processador de algoritmos.
Este agente pode ser uma pessoa munida de certos
equipamentos e utensílios ou uma máquina projetada
para executar automaticamente algumas instruções
básicas.
O algoritmo para a travessia do fazendeiro seria executado
pelo tal senhor, que estava para tal munido do barco e de
remos.
O computador não entenderia a instrução Bater duas
claras nem Tomar o café.
Processador de Algoritmos

Consideremos um algoritmo para extrair o algarismo da
casa das unidades de um inteiro dado. Vejamos como o
algoritmo para resolver esta questão depende do
processador que vai executá-lo.
1. Se o processador for um ser humano que saiba o que
é número inteiro, algarismo e casa das unidades, o
algoritmo teria uma única instrução: Escreva o
algarismo da casa das unidades do inteiro dado.
2. Se o processador for um ser humano que saiba o que
é número inteiro, algarismo e tenha a noção de "mais à
direita", mas não saiba o que é casa das unidades, o
algoritmo não poderia ser mais esse. Escreva o
algarismo "mais à direita" do número dado.
Processador de Algoritmos
3. E se o processador é uma máquina e não sabe o que é
algarismo, casa das unidades, "mais à direita", etc.?
Neste caso, quem está elaborando o algoritmo deveria
conhecer que instruções o processador é capaz de
executar para poder escrever o seu algoritmo. Por
exemplo, se a máquina é capaz de determinar o resto
de uma divisão inteira, o algoritmo poderia ser:
1. Chame de n o inteiro dado;
2. Calcule o resto da divisão de n por 10;
3. Forneça este resto como o algarismo pedido.
Processador de Algoritmos


Já que o processador de nossos algoritmos será o
computador, precisamos entender seu funcionamento
básico.
Conheçamos a seguir alguns conceitos básicos sobre
computador.
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).
Conceitos Básicos
Estrutura de um computador
MEMÓRIA
UNIDADE
DE
ENTRADA
UNIDADE
DE
CONTROLE
UNIDADE
LÓGICA E
ARITMÉTICA
Unidade Central de Processamento (UCP)
UNIDADE
DE
SAIDA
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.
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.
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.
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.
Endereço
Read/Write
CPU
Dados
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
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.
Base de uma linguagem de
programação ou de um pseudo-código
(1) comandos que manipulam os dados em memória e
a interação com o usuário (entrada e saída de dados).
(2) as expressões que permitem a realização de
cálculos aritméticos e lógicos.
(3) comandos que modificam o fluxo de execução do
algoritmo.
(1) o comando de atribuição define ou re-define um
valor armazenado no local de armazenamento
indicado por um nome. Usa-se o símbolo ←
Instruções Básicas
Os comandos de entrada e saída são usados para
determinar o momento da entrada de dados para o
algoritmo e a saída dos resultados obtidos para o
usuário. Os comandos são leia e escreva,
respectivamente.
Variáveis – Operadores aritméticoséticos
Símbolo
+
*
/
**
MOD
DIV
Função
Tipos disponíveis
Adição
Inteiro,real
subtração
”
”
”
”
Multiplicação
Divisão real
Exponenciação
Resto da divisão inteira
Inteiro
Quociente da divisão inteira Inteiro
Operadores relacionais
Função
Símbolo
=
<>
>=
<=
Tipos disponíveis
Igual
Todos
Diferente
Todos
Maior ou igual que
Todos
Menor ou igual que
Todos
O resultado obtido de uma relação é sempre um valor lógico.
Exemplos:
(a) A<>B (b) nome=“Maria” (c) B**2-4*A*C<0
Operadores lógicos
Símbolo
Função
e
Conjunção
Tipos
disponíveis
Lógico
Ou
Disjunção
Lógico
Não
Negação
Lógico
Operadores lógicos - e
A conjunção de duas proposições p e q representa-se
por: p e q e é verdadeira se e somente se ambas as
proposições são verdadeiras.
p
V
V
F
F
q
V
F
V
F
peq
V
F
F
F
Operadores lógicos - e
Sejam as seguintes proposições
p: ok, onde ok é uma variável lógica cujo conteúdo é
verdadeiro
q: A=0, onde o valor de A é 3.
r: teste, onde teste é uma variável lógica cujo conteúdo é
falso.
s: B<>1, onde o conteúdo de B é 2
Qual é o valor lógico das conjunções
(a) p e s (b) p e r (c) q e s (d) q e r
Operadores lógicos - ou
A disjunção de duas proposições p e q representa-se por:
p ou q e é verdadeira se e somente se, pelo menos, uma
delas for verdadeira.
p
V
V
F
F
q p ou q
V
V
F
V
V
V
F
F
Operadores lógicos - ou
Para as quatro proposições do exemplo anterior qual
será o valor lógico das disjunções:
(a) p ou s
(b) p ou r
(c) q ou s
(d) q ou r
Operadores lógicos - não
O operador negação (não) atribui o valor lógico falso a
uma proposição com valor verdade, e o valor lógico
verdade a uma proposição com valor falso. Assim
p
não
(p)
V F
F V
Estruturas de Controle de Fluxo de
execução do algoritmo
Estas estruturas de controle de fluxo são:
Sequencial, Condicional e de Repetição.

Estruturas de controle de fluxo
Estrutura Sequencial: Execução dos comandos
em uma sequência linear (na mesma ordem em
que foram escritas). Exemplo*:
escreva (“Informe seu nome:”)
leia (nome)
escreva (“Informe sua idade:”)
leia (idade)
escreva (“Você se chama”, nome, “e possui”,
idade, “anos!”)
Estruturas de controle de fluxo
Estrutura Condicional : É utilizada quando há uma
condição lógica que desviará o fluxo do algoritmo
para um diferente bloco de comandos,
dependendo da condição ser verdadeira ou falsa.
Exemplo:
se (A > B) então
escreva “A é maior”
senão
escreva “O B é maior ou são iguais”
Estruturas de controle de fluxo
Estrutura de Repetição: Execução de uma
sequência de comandos repetidas vezes. O
computador abandona o fluxo natural da
execução (de cima para baixo) e volta a executar
a sequência de ações desejada. Exemplo:
M← 1
enquanto (M < 10) faça
M←M+1
Fim enquanto
escreva M
Algoritmos - Representação



Já que um algoritmo é uma linha de raciocínio,
pode ser descrito de diversas maneiras, de
forma gráfica ou textual.
Até agora foi usada a representação textual,
usando um português coloquial.
A forma gráfica substitui um grande número de
palavras por convenções de desenhos..
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
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 pois as regras
intencionalmente se aproximam da maneira pela
qual o fazem as linguagens de programação.
Algoritmos – Representação por pseudocódigo

Símbolos e palavras utilizadas (convenção nossa)
←
Cálculos e atribuição de valores
leia
Entrada de dados
escreva
Saída de dados
Se … então...
Senão...
F
V
V
Tomada de decisão (1 vez)
Enquanto …
Tomada de decisão (repetidas faça
vezes)
Algoritmos - Representação


Exemplo – Calcular a área de um retângulo.
Representação Gráfica (Fluxograma)
Início
b, h
A=b*h
A
Fim
Algoritmos – Representação por pseudocódigo

Exemplo - Calcular a área de um retângulo.
ALGORITMO
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
Download

AEDI-introdução