2. ALGORITMOS
Unesp – Campus de Guaratinguetá
Curso de Programação Computadores
Prof. Aníbal Tavares
Profa. Cassilda Ribeiro
Unesp-Campus de Guaratinguetá
2 - Algoritmo
2.1: Introdução
Antes de se utilizar uma linguagem de
computador, é necessário organizar as
ações a serem tomadas pela máquina de
forma organizada e lógica, sem se
preocupar com as regras rígidas da sintaxe
de uma linguagem.
Para isto utiliza-se uma forma de escrever
tais ações, conhecida como algoritmo, ou
pseudo-código.
Algoritmos
2
Unesp-Campus de Guaratinguetá
2 - Algoritmo
2.2 - Definição
Um algoritmo é um Procedimento passo a
passo para resolver um Problema.
Pessoas tem inteligência e habilidade racional
fazem perguntas para se esclarecer.
Computador não tem senso próprio deve
receber instruções explícitas (algoritmos)
Algoritmos
3
Unesp-Campus de Guaratinguetá
2- Algoritmos
Um algoritmo correto deve possuir 3 qualidades:
1- Cada passo do algoritmo deve ser uma instrução
que possa ser realizada.
2- A ordem dos passos deve ser precisamente
determinada.
3- O algoritmo deve ter fim.
Algoritmos
4
Unesp-Campus de Guaratinguetá
2- Algoritmos
Instruções
Possíveis
Escapando de um labirinto
Problema
Robô
E
F
I
S
Solução
Encontrar uma seqüência de instruções acerca dos
movimentos do Robô tal que o mesmo seja capaz de
entrar e sair do labirinto.
Algoritmos
5
Unesp-Campus de Guaratinguetá
2 - Algoritmos
Algoritmo
Conjunto finito de instruções que permitem a
realização de uma tarefa.
Solução/Algoritmo do Labirinto
I
F
Leitor
E
S
Algoritmos
6
Unesp-Campus de Guaratinguetá
2 - Algoritmo
2.3 - Fluxo de Execução
Para o algoritmo ser funcional, deve existir
uma relação lógica na execução das ações.
Essa relação lógica determina a ordem em
que os passos do algoritmo é executado
Essa ordem é chamada de Fluxo de
Execução.
Todo algoritmo possui um
Fluxo de Execução e;
Estruturas de Controle do Fluxo de Execução
Algoritmos
7
Unesp-Campus de Guaratinguetá
2.3 - Fluxo de Execução
As Estruturas de controle do Fluxo de Execução
do algoritmo podem ser de três tipos:
I.
Estrutura elementar ou seqüencial;
Nesta estrutura, o conjunto de ações elementares
é executado de modo linear; de cima para baixo e
da esquerda para a direita.
As ações são seguidas por ponto-e vírgula (;) ou
ponto (.) com o objetivo de separar as ações.
Algoritmos
8
Unesp-Campus de Guaratinguetá
2.3 - Fluxo de Execução
II. Estrutura de seleção (decisão) ou
condicional;
Permitem escolher um conjunto de ações (bloco) a
serem realizadas.
A escolha depende de uma condição ser ou não
satisfeita. A condição é representada por expressões
lógicas ou relacionais.
Essas estruturas podem ser de:
Seleção simples.
Seleção composta.
Seleção encadeada.
Algoritmos
9
Unesp-Campus de Guaratinguetá
2.3 - Fluxo de Execução
III. Estrutura de repetição.
São estruturas de controle de fluxo que permitem
repetir uma seqüência de comandos.
Os trechos repetidos são chamados de:
LAÇOS DE REPETIÇÃO.
Algoritmos
10
Unesp-Campus de Guaratinguetá
2 - Algoritmo
2.4 - Pseudo código
Características dos Algoritmos:
Utiliza certas palavras-chave, que indicam a
natureza da operação a ser realizada;
Utiliza tabulação no começo de cada
passo, para
algoritmo
ressaltar
a
estrutura
Algoritmos
do
11
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
Os algoritmos terão a seguinte estrutura:
ALGORITMO <Nome do algoritmo>
<definições>
INÍCIO
<Comandos>
FIM
Algoritmos
12
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
Exemplo de algoritmo
Algoritmo: Soma_dois_números
Início
Pegar primeiro número
Pegar segundo número
Somar o primeiro com o
segundo número
Mostrar o resultado
Fim
Algoritmos
13
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
2.4.1 Apresentação das Estruturas de Algoritmos
EX1: ALGORITMO PARA TROCAR PNEU DE UM CARRO
Início
Trocar Pneu
Fim
E se o estepe estiver vazio?
Isto traz a necessidade de uma decisão
entre dois cursos Algoritmos
14
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
ESTRUTURA CONDICIONAL
Início
se <o estepe está vazio> então
Chamar borracheiro
senão
Trocar o pneu
fim se
Fim
A atividade de Trocar o pneu pode ser
mais detalhada
Algoritmos
15
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
ESTRUTURA SEQUENCIAL
Início
se <o estepe está vazio> então
Chamar borracheiro
senão
desparafusar a roda
levantar o carro
remover a roda
colocar o estepe
abaixar o carro
parafusar a roda
fim se
Fim
Algoritmos
16
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
ESTRUTURA SEQUENCIAL
Início
se <o estepe está vazio> então
Chamar borracheiro
senão
roda
Adesparafusar
atividade dea desparafusar
a roda pode
ser
maisodetalhada
levantar
carro
remover a roda
colocar o estepe
o carro
Aabaixar
atividade
de parafusar a roda pode ser
parafusar
a roda
mais
detalhada
fim se
Fim
Algoritmos
17
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
ESTRUTURA SEQUENCIAL
Início
se <o estepe está vazio> então
chamar borracheiro
senão
desparafusar o 1o parafuso
desparafusar o 2o parafuso Esta repetição é
desparafusar o 3o parafuso inconveniente
desparafusar o 4o parafuso
levantar o carro
remover a roda
colocar o estepe
abaixar o carro
parafusar o 1o parafuso
Esta repetição é
parafusar o 2o parafuso
parafusar o 3o parafuso
inconveniente
o
parafusar o 4 parafuso
fim se
Algoritmos
Fim
18
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
ESTRUTURA DE REPETIÇÃO
Início
se <o estepe está vazio>
então
chamar borracheiro
senão
enquanto houver parafuso para desapertar faça
desparafusar a roda
fim enquanto
levantar o carro
remover a roda
colocar o estepe
abaixar o carro
enquanto houver parafuso para apertar faça
parafusar a roda
fim do enquanto
fim se
Fim
Algoritmos
19
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX 2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Início
pegue a lâmpada nova
remova a lâmpada queimada
coloque a lâmpada nova
Fim
Algoritmos
20
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX 2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Início
pegue a lâmpada nova
remova a lâmpada queimada
coloque a lâmpada nova
Fim
E se não tiver lâmpada nova?
Algoritmos
21
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX 2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Início
se <tiver lâmpada nova da mesma
potência>
então
– pegue a lâmpada nova
– remova a lâmpada queimada
– coloque a lâmpada nova
senão <anotar na agenda para comprar
lâmpada>
Fim
Algoritmos
2522
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX 2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Início
se <tiver lâmpada nova da mesma
potência>
então
– pegue a lâmpada nova
O
que é necessário
para
remover a lâmpada
– remova
a lâmpada
queimada
queimada?
– coloque a lâmpada nova
senão <anotar na agenda para comprar
lâmpada>
Fim
Algoritmos
2623
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX 2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
– posicione a escada debaixo da
lâmpada queimada
– suba na escada até que a lâmpada
possa ser alcançada
– gire a lâmpada queimada no
sentido anti-horário até que se solte
Algoritmos
24
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX 2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Início
se <tiver lâmpada nova da mesma
potência>
então
– pegue a lâmpada nova
– remova a lâmpada queimada
– coloque a lâmpada nova
senão <anotar na agenda para comprar
lâmpada>
Fim
Algoritmos
2825
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX 2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Início
se <tiver lâmpada nova da mesma
potência>
então
que éanecessário
para colocar a
–Opegue
lâmpada nova
lâmpada nova?
– remova a lâmpada queimada
– coloque a lâmpada nova
senão <anotar na agenda para comprar
lâmpada>
Fim
Algoritmos
2926
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX 2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
– posicione a nova lâmpada no soquete
– gire a lâmpada no sentido horário até
que ela se firme
– desça a escada
Algoritmos
27
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Inicio
se <tiver lâmpada da mesma potência>
então
– pegue a lâmpada
– posicione a escada debaixo da lâmpada queimada
– suba na escada até que a lâmpada possa ser alcançada
– gire a lâmpada queimada no sentido anti-horário até que se
solte
– remova a lâmpada 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 então
senão <anotar na agenda para comprar lâmpada>
Algoritmos
3128
Fim
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Inicio
se <tiver lâmpada da mesma potência>
então
– pegue a lâmpada
– posicione a escada debaixo da lâmpada queimada
– suba na escada até que a lâmpada possa ser alcançada
deste
–Diversos
gire a lâmpadapassos
queimada no
sentido algoritmo
anti-horário até que se
solte
implicam
em operações mais
– remova a lâmpada queimada
elaboradas que devem ser
– posicione a nova lâmpada no soquete
–expressas
gire a lâmpada explicitamente
no sentido horário até que ela se firme
– desça a escada
fim então
senão <anotar na agenda para comprar lâmpada>
Algoritmos
3229
Fim
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Inicio
se <tiver lâmpada da mesma potência>
então
– pegue a lâmpada
– posicione a escada debaixo da lâmpada queimada
– suba na escada até que a lâmpada possa ser alcançada
– gire a lâmpada queimada no sentido anti-horário até que se
solte <não alcançar a lâmpada> faça
enquanto
– remova a lâmpada queimada
suba um
degrau
dano
escada
– posicione
a nova
lâmpada
soquete
– gire a lâmpada no sentido horário até que ela se firme
fim enquanto
– desça a escada
fim então
senão <anotar na agenda para comprar lâmpada>
Algoritmos
3330
Fim
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Inicio
se <tiver lâmpada da mesma potência>
então
– pegue a lâmpada
– posicione a escada debaixo da lâmpada queimada
– suba na escada até que a lâmpada possa ser alcançada
– gire a lâmpada
queimadanão
no sentido
anti-horário
até que se
enquanto
<a lâmpada
soltar>
faça
solte
–
remova
a lâmpada
gire
a lâmpada
noqueimada
sentido anti-horário
– posicione a nova lâmpada no soquete
fim
enquanto
– gire
a lâmpada no sentido horário até que ela se firme
– desça a escada
fim então
senão <anotar na agenda para comprar lâmpada>
Algoritmos
3431
Fim
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
EX2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
Inicio
se <tiver lâmpada da mesma potência>
então
– pegue a lâmpada
– posicione a escada debaixo da lâmpada queimada
– suba na escada até que a lâmpada possa ser alcançada
– gire a lâmpada queimada no sentido anti-horário até que se
solte <a lâmpada não prender> faça
enquanto
– remova a lâmpada queimada
gire
a lâmpada
nolâmpada
sentido
– posicione
a nova
no horário
soquete
– gire a lâmpada no sentido horário até que ela se firme
fim enquanto
– desça a escada
fim então
senão <anotar na agenda para comprar lâmpada>
Algoritmos
3532
Fim
Unesp-Campus de Guaratinguetá
2.4 - Pseudo código
Inicio
se <tiver lâmpada da mesma potência>
então
selecione a lâmpada
posicione a escada debaixo da lâmpada queimada
enquanto <não alcançar a lâmpada> faça
suba um degrau da escada
fim enquanto
enquanto <a lâmpada não soltar> faça
gire a lâmpada no sentido anti-horário
fim enquanto
remova a lâmpada queimada
posicione a nova lâmpada no soquete
enquanto <a lâmpada não prender> faça
gire a lâmpada no sentido horário
fim enquanto
desça da escada
fim então
senão <anotar na agenda para comprar lâmpada>
Algoritmos
Fim
Algoritmo para Trocar uma Lâmpada
EX2. ALGORITMO PARA TROCAR UMA LÂMPADA NO TETO
3633
Unesp-Campus de Guaratinguetá
2 - Algoritmo
2.5 - Desenvolvimento do Algoritmo
Começamos com uma afirmação genérica da
solução do problema e prosseguimos até
o algoritmo final, aumentando sistematicamente
o nível de detalhamento.
Como saber se já temos um nível suficiente
de detalhes no algoritmo?
Algoritmos
34
Unesp-Campus de Guaratinguetá
2.5 - Desenvolvimento do Algoritmo
Isso depende do agente que irá executar o
algoritmo
Os computadores têm um conjunto muito
limitado de instruções e o algoritmo deve ser
expresso nos termos dessas instruções.
Algoritmos
35
Unesp-Campus de Guaratinguetá
2.5.1 – Metodologia de Desenvolvimento de
Algoritmos
Como o cliente explicou
Como o desenhista
desenhou
Como o chefe do projeto entendeu
Algoritmos fez
Como o programador
Como o vendedor o
descreveu
36
Unesp-Campus de Guaratinguetá
2.5.1 – Metodologia de Desenvolvimento de
Algoritmos
Como o projeto foi
documentado
Como foi dado suporte
Como as operações foram
feitas
Pelo o que o cliente pagou
Algoritmos
O que o cliente realmente precisava
37
Unesp-Campus de Guaratinguetá
2.5 - Desenvolvimento do Algoritmo
2.5.1 Metodologia de Desenvolvimento
de Algoritmos
Passo 1:ler
1: cuidadosamente a especificação do
problema até o final.
Passo 2: se depois de ler várias vezes, ainda não
entender o problema, pergunte ao
professor até entender.
Passo 3: levantar e analisar todas as saídas
exigidas na especificação do problema.
Passo 4: levantar e analisar todas as entradas
citadas na especificação do problema.
Algoritmos
38
Unesp-Campus de Guaratinguetá
2.5 - Desenvolvimento do Algoritmo
Passo 5: verificar se é necessário gerar valores
internamente ao algoritmo e levantar as
variáveis necessárias e os valores iniciais
de cada uma.
Passo 6: levantar e analisar todas as
transformações necessárias para, dadas as
entradas e valores gerados internamente,
produzir as saídas especificadas.
Algoritmos
39
Unesp-Campus de Guaratinguetá
2.5 - Desenvolvimento do Algoritmo
Passo 7: testar cada passo do algoritmo, verificando
se as transformações intermediárias
executadas estão conduzindo aos objetivos
desejados.
Utilizar, sempre que possível, valores de
teste que permitam prever os resultados.
Passo 8: fazer uma reavaliação geral, elaborando o
algoritmo através da integração das
partes.
Algoritmos
40
Unesp-Campus de Guaratinguetá
2.6 - Algoritmos Numéricos
Agora, vamos considerar problemas envolvendo cálculos
numéricos
EX 1: Dados vários cartões numerados escolha o que tem maior
número.
Algoritmo: maior_numero
1- pegue um cartão e guarde.
2 - Repita
pegue um cartão
se o número deste for > que o do cartão guardado
então guarde este cartão e descarte o anterior
senão descarte esse e conserve o anterior
Até que se acabem os cartões.
3 - Mostre o cartão guardado
4 - fim
Algoritmos
41
Unesp-Campus de Guaratinguetá
2.6 – Algoritmos Numéricos
Ex2: Verificar se um número N1 é divisível por N2
Algoritmo: Divisível
Inicio {algoritmo}
1 – pegue os números N1 e N2
2 – Se N1 < N2
então escreva “não é divisível”
senão Inicio
2.1- divida N1 por N2 e pegue a parte
inteira da divisão { INT (N1/N2)}
2.2 – Faça RestoN1 – ( N2*INT(N1/N2))
2.3 – Se Resto ≠ 0
então escreva “não é divisível”
senão escreva “é divisível”
fim senão
Algoritmos
Fim {algoritmo}
42
Unesp-Campus de Guaratinguetá
2. ALGORITMOS
FIM
Aula 2
Algoritmos
43
Download

Aula 2 Algoritmos