Anda di halaman 1dari 10

Créditos

O material a seguir é composto de adaptações


Introdução à Ciência da dos slides gentilmente cedidos por:
Computação  Prof. André de Carvalho

 Slides baseados nos originais das professoras Rosely Sanches,


Sandra Aluísio, Solange Rezende, Renata Fortes e José Carlos
Maldonado

Algoritmos
Prof. Ricardo J. G. B. Campello

Aula de hoje Algoritmos

 Algoritmos  Procedimento passo a passo para


resolver um dado problema
– Fluxograma
 Computador não tem senso próprio
– Pseudo-código
 deve receber instruções explícitas
– Estruturas de Fluxo
 um algoritmo é um conjunto de instruções
• Sequencial
• Condicional
• Repetição

3 4
Representação de Algoritmos
Algoritmos
 Existem basicamente 2 abordagens:
 Um algoritmo correto deve possuir  Abordagem Gráfica
três propriedades mínimas:  Facilita visualização do fluxo de execução das
instruções do algoritmo
1. Cada passo deve corresponder a uma  mas pode não ser apropriada para algoritmos grandes
instrução que possa ser realizada  Técnica mais comum é o Fluxograma
2. A ordem dos passos deve ser  Pseudo-Código
precisamente determinada  Linguagem estruturada, intermediária entre a
linguagem natural e as linguagens de programação
3. O algoritmo deve ter fim
 Mais fácil de interpretar que um programa
 Mais fácil de traduzir para uma linguagem de
programação (qualquer) que um texto livre
5 6

Estruturas de Algoritmos Estruturas de Algoritmos


ALGORITMO PARA TROCAR PNEU DE UM CARRO ALGORITMO PARA TROCAR PNEU DE UM CARRO

Fluxograma
Fluxograma
7 8
Estruturas de Algoritmos Estruturas de Algoritmos
ALGORITMO PARA TROCAR PNEU DE UM CARRO
ALGORITMO PARA TROCAR PNEU DE UM CARRO

Fluxograma 9 Fluxograma 10

Estruturas de Algoritmos Estruturas de Algoritmos

ALGORITMO PARA TROCAR PNEU DE UM CARRO


 Vejamos agora o mesmo algoritmo
representado por um Pseudo-Código
baseado na língua Portuguesa Início
 Conjunto restrito de regras que impõe trocar pneu
uma estrutura ao texto Fim
 elimina ambiguidades da linguagem livre

 Também conhecido como Português


E se o estepe estiver vazio?
Estruturado ou “Portugol” Isto traz necessidade de uma decisão
entre duas opções
11 12
Estrutura Sequencial
Estrutura Condicional
Início
se <o estepe está vazio> então
Início chamar borracheiro
A atividade de
se <o estepe está vazio> então senão desparafusar
levantar o carro
chamar borracheiro a roda pode ser
desparafusar a roda
mais detalhada
senão remover a roda
trocar o pneu colocar o estepe A atividade de
parafusar a roda parafusar a roda
fim se A atividade de trocar abaixar o carro pode ser mais
Fim o pneu pode ser mais fim se detalhada
detalhada 13 Fim 14

Estrutura Sequencial Estrutura de Repetição


Início Início
se <o estepe está vazio> então
se <o estepe está vazio> então
chamar borracheiro
chamar borracheiro
senão
levantar o carro senão
desparafusar o 1o parafuso levantar o carro
desparafusar o 2o parafuso
A repetição é inconveniente enquanto <houver parafuso para desapertar> faça
desparafusar o 3o parafuso desparafusar a roda
desparafusar o 4o parafuso
remover a roda
fim enquanto
colocar o estepe remover a roda
parafusar o 1o parafuso colocar o estepe
parafusar o 2o parafuso
A repetição é inconveniente enquanto <houver parafuso para apertar> faça
parafusar o 3o parafuso
parafusar a roda
parafusar o 4o parafuso
abaixar o carro fim enquanto
fim se abaixar o carro
Fim fim se
15 Fim 16
Estruturas de Algoritmos Estruturas de Algoritmos

ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO


ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Início
remova a lâmpada queimada
Início coloque a nova lâmpada
remova a lâmpada queimada Fim
coloque a nova lâmpada
Fim O que é necessário para remover a
lâmpada queimada?
17 18

Estruturas de Algoritmos Estruturas de Algoritmos


ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
 Para remover a lâmpada queimada:
1. posicione a escada debaixo da lâmpada Início
2. suba na escada até que a lâmpada remova a lâmpada queimada
possa ser alcançada coloque a nova lâmpada
3. gire a lâmpada no sentido anti-horário, Fim
até que ela se solte
4. retire a lâmpada O que é necessário para colocar a
lâmpada nova?
19 20
Estruturas de Algoritmos Estruturas de Algoritmos
ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO

 Para colocar uma lâmpada nova: Início


posicione a escada debaixo da lâmpada
1. escolha uma lâmpada da mesma
suba na escada até que a lâmpada possa ser alcançada
potência da queimada
gire a lâmpada no sentido anti-horário, até que ela se solte
2. posicione a nova lâmpada no soquete retire a lâmpada queimada

3. gire a lâmpada no sentido horário até escolha uma lâmpada da mesma potência da queimada

que ela se firme posicione a nova lâmpada no soquete


gire a lâmpada no sentido horário até que ela se firme
4. desça a escada
desça a escada
Fim
21 22

Estruturas de Algoritmos Estruturas de Algoritmos


ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
 Diversos passos deste algoritmo Início
implicam operações mais elaboradas posicione a escada debaixo da lâmpada
suba na escada até que a lâmpada possa ser alcançada
– Estas operações devem ser expressas gire a lâmpada no sentido anti-horário, até que ela se solte
explicitamente retire a lâmpada queimada
escolha uma lâmpada da mesma potência da queimada
posicione a nova lâmpada no soquete
gire a lâmpada no sentido horário até que ela se firme
desça a escada
Fim
23 24
Estruturas de Algoritmos Estruturas de Algoritmos
ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
 Suba na escada até que a lâmpada Início
possa ser alcançada posicione a escada debaixo da lâmpada
suba na escada até que a lâmpada possa ser alcançada
enquanto <não alcançar a lâmpada> faça gire a lâmpada no sentido anti-horário, até que ela se solte
suba um degrau da escada retire a lâmpada queimada
fim enquanto escolha uma lâmpada da mesma potência da queimada
posicione a nova lâmpada no soquete
gire a lâmpada no sentido horário até que ela se firme
desça a escada
Fim
25 26

Estruturas de Algoritmos Estruturas de Algoritmos


ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO

 Gire a lâmpada queimada no sentido Início


anti-horário até que se solte posicione a escada debaixo da lâmpada
suba na escada até que a lâmpada possa ser alcançada
enquanto <a lâmpada não soltar> faça gire a lâmpada no sentido anti-horário, até que ela se solte
gire a lâmpada no sentido anti-horário retire a lâmpada queimada

fim enquanto escolha uma lâmpada da mesma potência da queimada


posicione a nova lâmpada no soquete
gire a lâmpada no sentido horário, até que ela se firme
desça a escada
Fim
27 28
Estruturas de Algoritmos Estruturas de Algoritmos

se <tiver lâmpada da mesma potência> então se <tiver lâmpada da mesma potência> então
selecione a lâmpada selecione a lâmpada
posicione a nova lâmpada no soquete posicione a nova lâmpada no soquete
gire a lâmpada no sentido horário, até que se firme gire a lâmpada no sentido horário até que se firme
desça a escada desça a escada
senão desça a escada senão desça a escada
fim se fim se

enquanto <a lâmpada não prender> faça


gire a lâmpada no sentido horário
fim enquanto
29 30

Início
posicione a escada debaixo da lâmpada queimada
enquanto <não alcançar a lâmpada> faça
suba um degrau da escada
Desenvolvimento do Algoritmo
fim enquanto
enquanto <a lâmpada não soltar> faça
gire a lâmpada no sentido anti-horário  Abordagem Top-Down:
fim enquanto
remova a lâmpada queimada – Começar com uma afirmação genérica
se <tiver lâmpada da mesma potência> então sobre a solução do problema
selecione a lâmpada
posicione a nova lâmpada no soquete – Prosseguir até o algoritmo final,
enquanto <a lâmpada não prender> faça aumentando sistematicamente o nível
gire a lâmpada no sentido horário de detalhamento
fim enquanto
desça a escada
senão desça a escada
fim se
31 32
Fim
Desenvolvimento do Algoritmo Metodologia de Desenvolvimento

 Como saber se já temos um nível suficiente de Passo 1: ler cuidadosamente a especificação do


detalhes no algoritmo? problema até o final
 Depende Passo 2: se depois de ler várias vezes, ainda não
– das características da tarefa a ser executada (problema)
entender o problema, pergunte a quem
especificou até entender
– como o algoritmo deverá ser implementado (linguagem)
Passo 3: levantar e analisar todas as entradas
 As linguagens têm um conjunto muito limitado de descritas na especificação do problema
instruções
Passo 4: levantar e analisar todas as saídas
– Algoritmo deve ser expresso utilizando essas instruções exigidas na especificação do problema
33 34

Metodologia de Desenvolvimento Metodologia de Desenvolvimento

Passo 5: verificar se é necessário gerar valores Passo 7: testar cada passo do algoritmo, verificando
internamente ao algoritmo e levantar as variáveis se os processamentos intermediários executados
necessárias e os valores iniciais de cada uma estão conduzindo aos objetivos desejados
Passo 6: levantar e analisar todos os processamentos Passo 8: fazer uma reavaliação geral, elaborando o
necessários para, dadas as entradas e os valores algoritmo através da integração das partes
gerados internamente, produzir as saídas que foram
especificadas. Tais processamentos podem ser
organizados em partes (rotinas ou módulos)

35 36
Exercícios Inicio

Padrões de Programação Seja o seguinte algoritmo:


1. Acordar cedo
2. Tomar café da manhã
3. Fazer a higiene
4. Vestir uma roupa
5. Pegar uma condução
 Nomes de variáveis devem ter significado 6. Descer próximo à escola
7. Caminhar até a escola
 Código estruturado Fim

Especialize o passo 4 com alguns passos mais detalhados.


 Código adequadamente tabulado Refaça ou aprimore o item anterior usando uma condicional do tipo
 Código Documentado se-então-senão para lidar com a possibilidade de estar calor ou frio.
Considerando que o ponto de ônibus fica bem ali do outro lado da
– Nome do programador, data, etc. rua, uma possível especialização do passo 5 é:
 5.a Atravessar a rua até o ponto do outro lado
– Descrição geral e das partes
 5.b Esperar a condução e acenar quando avistá-la
– Comentários Especialize o passo 5.a acima utilizando uma estrutura de repetição
enquanto-faça para lidar com a possibilidade da presença ou não de
carros transitando na rua.
37
38

Exercícios Agradecimentos
Faça um algoritmo para fazer uma ligação de um
telefone público utilizando um cartão. Apresente ao  Prof. André de Carvalho
menos 2 versões com diferentes níveis de
 Slides baseados nos originais das professoras
detalhamento. Considere a possibilidade do número
Rosely Sanches, Sandra Aluísio, Solange Rezende,
discado estar momentaneamente ocupado.
Renata Fortes e José Carlos Maldonado

Capítulo I de (Forbellone & Eberspächer, 2005):


 Treinar Raciocínio Lógico: estudar exercícios de
fixação (resolvidos no apêndice)
 Resolver ao menos o exercício proposto 4 (torre de
Hanói com 4 discos e 3 hastes)

39 40

Anda mungkin juga menyukai