algoritmo - João Medeiros

Propaganda
Estruturas de
Repetição
João Medeiros
FATERN 2010.2
sábado, 21 de agosto de 2010
Quais seriam os passos
do algoritmo?
1. colocar café solúvel na xícara
2. colocar água quente
3. Colocar açucar na xícara
4. mexer
5. mexer
6. mexer
7. mexer
8. mexer
9. tomar o café
2
sábado, 21 de agosto de 2010
Quais seriam os passos
do algoritmo?
1. colocar café solúvel na xícara
1. colocar café solúvel na xícara
2. colocar água quente
2. colocar água quente
3. Colocar açucar na xícara
4. mexer
3. Colocar açucar na xícara
5. mexer
4. Repita 5 vezes
6. mexer
7. mexer
mexer
8. mexer
5. tomar o café
9. tomar o café
2
sábado, 21 de agosto de 2010
Estruturas de
Repetição
• Nos algoritmos e programas existem situações que o
processamento de um valor uma única vez não é suficiente
para resolver o problema. por exemplo, a folha de
pagamento de uma empresa não roda para apenas um
funcionário, mas para todos os funcionários da empresa os
mesmos cálculos).
sábado, 21 de agosto de 2010
Estruturas de
Repetição
• Conhecidas como laços ou loops
• Dois tipos
• Condicional – elas repetem um ou mais comandos até satisfazer a
condição de repetição. São usadas quando não se sabe previamente
quantas vezes deve-se executar as instruções do bloco de repetição. Esse
tipo de estrutura de repetição condicional podem executar o teste da
condição no início (ENQUANTO/FAÇA) ou no final (REPITA/ATÉ).
• Condicional – elas repetem um ou mais comandos até satisfazer a
condição de repetição. São usadas quando não se sabe previamente
quantas vezes deve-se executar as instruções do bloco de repetição. Esse
tipo de estrutura de repetição condicional podem executar o teste da
condição no início (ENQUANTO/FAÇA) ou no final (REPITA/ATÉ).
sábado, 21 de agosto de 2010
Estrutura de repetição
ENQUANTO/FAÇA
Introdução à Programação
• Laço que verifica antes de cada
execução, se é “permitido”
executar o trecho do algoritmo.
• Ele se mantém repetindo o bloco
de instruções enquanto uma
dada condição permanecer
verdadeira.
• Essa estrutura é utilizada quando
não sabemos o número de
9DPRVGDUXPH[HPSORGHXWLOL]DomRGRHQTXDQWRIDoD6XSRQKD
repetições e quando possuímosum algoritmo para ler vários números positivos ou negativos. Esse
uma expressão que deve ser DOJRULWPRGHYHOHUXPDTXDQWLGDGHQmRGH¿QLGDGHQ~PHURSDUDQGR
apenas quando for digitado o valor zero. Para cada número lido o
avaliada para que os comandos
algoritmo deve avaliar e escrever na tela se o número é positivo ou
da estrutura sejam executados
negativo.
algoritmo([HPSOR(QTXDQWR)DoD
sábado, 21 de agosto de 2010
var[LQWHLUR
Estrutura de repetição
ENQUANTO/FAÇA
• Exemplo: Suponha um
algoritmo para ler vários
números positivos ou
negativos. Esse algoritmo
deve ler uma quantidade
não definida de número,
parando apenas quando
for digitado o valor zero.
Para cada número lido o
algoritmo deve avaliar e
escrever na tela se o
número é positivo ou
negativo.
sábado, 21 de agosto de 2010
9DPRVGDUXPH[HPSORGHXWLOL]DomRGRHQTXDQWRIDoD6XSRQ
um algoritmo para ler vários números positivos ou negativos. E
DOJRULWPRGHYHOHUXPDTXDQWLGDGHQmRGH¿QLGDGHQ~PHURSDUDQ
Estrutura de repetição
ENQUANTO/FAÇA
apenas quando for digitado o valor zero. Para cada número lid
algoritmo deve avaliar e escrever na tela se o número é positivo
negativo.
• Exemplo: Suponha um
algoritmo para ler vários
números positivos ou
negativos. Esse algoritmo
deve ler uma quantidade
não definida de número,
parando apenas quando
for digitado o valor zero.
Para cada número lido o
algoritmo deve avaliar e
escrever na tela se o
número é positivo ou
negativo.
sábado, 21 de agosto de 2010
algoritmo([HPSOR(QTXDQWR)DoD
var[LQWHLUR
inicio
escreva³'LJLWHXPYDORU´
leia[
enquanto[!faça
se[!então
senão
¿PVH
escreva³'LJLWHXPYDORU´
leia[
¿PHQTXDQWR
escreva³2Q~PHURpSRVLWLYR´
escreva³2Q~PHURpQHJDWLYR´
¿PDOJRULWPR
1RDOJRULWPRDFLPDDOLQKDGH¿QHRDOJRULWPRHRQRPHGHOH
linha 2 é feita a declaração da variável x que é do tipo inteiro. As linh
HGHOLPLWDPRLQtFLRH¿PGRDOJRULWPR1DVOLQKDVHpIH
Estrutura de
Repetição REPITA/ATE
• Funcionamento parecido ao
da estrutura enquanto.
• Porém os comandos
contidos no interior do laço
serão executados pelo menos
uma vez, já que a condição
de continuidade no laço só é
testada no final do bloco de
comandos.
sábado, 21 de agosto de 2010
2 UHSLWDDWp p XWLOL]DGR TXDQGR QmR VDEHPRV R Q~PHUR GH
UHSHWLo}HVHTXDQGRRVFRPDQGRVGHYHPVHUH[HFXWDGRVSHORPHQRV
uma vez, antes da expressão ser avaliada. Ou seja, não se sabe de
antemão quantas vezes o bloco de repetição será executado. Todavia
Estrutura de
Repetição REPITA/ATE
é garantido que ele será executado pelo menos uma vez. O bloco de
comandos é repetido toda vez que a condição for F. A execução do
EORFRp¿QDOL]DGDTXDQGRDFRQGLomRIRU92IRUPDWRGHVVHFRPDQGR
HVWiHVSHFL¿FDGRDVHJXLU
• Funcionamento parecido ao
da estrutura enquanto.
• Porém os comandos
contidos no interior do laço
serão executados pelo menos
uma vez, já que a condição
de continuidade no laço só é
testada no final do bloco de
comandos.
sábado, 21 de agosto de 2010
43
Estrutura de
Repetição REPITA/ATE
Introdução à Programação
Vamos supor o mesmo problema do exemplo
HQTXDQWRIDoD'HFKHFDUVHRQ~PHURpSRVLWLYRRXQH
¿FDULDDTXHOHSUREOHPDXVDQGRDHVWUXWXUDUHSLWDDWp"
algoritmo([HPSOR5HSLWD$WH
var[LQWHLUR
inicio
UHSLWD
• Mesmo algoritmo para o
exemplo anterior
escreva³'LJLWHXPYDORU´
leia[
se[!então
senão
¿PVH
até[ escreva³2Q~PHURpSRVLWLYR´
escreva³2Q~PHURpQHJDWLYR´
¿PDOJRULWPR
sábado, 21 de agosto de 2010
9HMD TXH DJRUD R WHVWH GD FRQGLomR TXH GH¿QH VH
FRQWLQXDUi H[HFXWDQGR p IHLWR QR ¿QDO GR EORFR GH FRP
12). Dessa forma, as linhas de 5 a 11 serão executad
Estrutura de
Repetição PARA/FAÇA
Introdução à Programação
• Útil quando se conhece previamente
o número de vezes que se deseja
executar um determinado conjunto
de comandos.
• Repete a execução dos comandos
enquanto a variável contadora não
atingir o valor final.
• A variável contadora é previamente
inicializada (recebe um valor inicial) e
é incrementada em uma unidade,
automaticamente, a cada final de
execução do bloco de comandos
3DUD H[HPSOL¿FDU VXSRQKD TXH JRVWDUtDPRV GH FRQVWUXLU XP
dentro do laço
algoritmo para ler 20 números e avaliar se esses números são
sábado, 21 de agosto de 2010
positivos ou negativos, escrevendo na tela a mensagem apropriada.
Considere que zero entrará na parte dos números positivos, para efeito
GHVLPSOL¿FDURDOJRULWPR9HMDQHVWHDOJRULWPRMipGLWRTXHVHTXHU
ler e avaliar 20 números. Então você já sabe o trecho do algoritmo
TXHSUHFLVDVHUH[HFXWDGRYH]HV(QWmRHVWHWUHFKR¿FDUiGHQWUR
Estrutura de
Repetição PARA/FAÇA
• suponha que gostaríamos de
construir um algoritmo para
ler 20 números e avaliar se
esses números são positivos
ou negativos, escrevendo na
tela a mensagem
apropriada.
sábado, 21 de agosto de 2010
3DUD H[HPSOL¿FDU VXSRQKD TXH JRVWDUtDPRV GH FRQ
algoritmo para ler 20 números e avaliar se esses núm
positivos ou negativos, escrevendo na tela a mensagem a
Estrutura de
Repetição PARA/FAÇA
Considere que zero entrará na parte dos números positivos, p
GHVLPSOL¿FDURDOJRULWPR9HMDQHVWHDOJRULWPRMipGLWRTX
ler e avaliar 20 números. Então você já sabe o trecho do
TXHSUHFLVDVHUH[HFXWDGRYH]HV(QWmRHVWHWUHFKR¿F
do laço para.
algoritmoH[HPSOR3DUD)DFD
• suponha que gostaríamos de
construir um algoritmoAtenção
para
ler 20 números e avaliar
se
O problema pediu
ler e avaliar
esses números sãopara
positivos
20 números. Logo
o laço para vai de
ou negativos, escrevendo
na
1 até 20
tela a mensagem
apropriada.
varQXPFRQWDGRULQWHLUR
inicio
para contador de 1 atéfaça
escreva³'LJLWHXPYDORU´
leiaQXP
seQXP! então
senão
¿PVH
¿PSDUD
escreva³2Q~PHURpSRVLWLYR´
escreva³2Q~PHURpQHJDWLYR´
¿PDOJRULWPR
A variável contadora, neste algoritmo chamada de
FRPHoDFRPRYDORULQLFLDOHYDLDWpRYDORU¿QDOHVS
sábado, 21 de agosto de 2010
Comparação entre as
estruturas de repetição
ntrodução à Programação
Enquanto/Faça
Repita/Até
Para/Faça
Tipo da
Estrutura
Condicional
Condicional
Contada
Ocorrência do
Teste
No início
No Final
No início
Quantidade de
5HSHWLo}HV
Zero ou mais
vezes (pode não
ser executada
nenhuma vez)
8PDRXPDLVYDL
ser executada,
no mínimo, uma
vez)
Vai ser executada
do valor inicial ao
YDORU¿QDORXVHMD
terá um número
GHH[HFXo}HVSUp
GH¿QLGR
Condição para
Repetir
Repete
enquanto
verdadeiro
Repete enquanto
falso, ou seja,
até que a
condição se torne
verdadeira.
Repete enquanto
a Variável
Contadora for
maior ou igual
ao valor inicial e
menor ou igual ao
valor Final
sábado, 21 de agosto de 2010
Tabela 7 - Comparação entre as estruturas de repetição
Estruturas de Repetição
Aninhadas ou Encadeadas
• Semelhante às estruturas de
decisão composta, as
estruturas de repetição
também podem ser
encadeadas/aninhadas.
• É usada quando há a
necessidade de se usar laços
dentro de laços
sábado, 21 de agosto de 2010
Estruturas de Repetição
Aninhadas ou Encadeadas
Introdução à Prog
GHXPDGH]9DPRVYHUFRPR¿FDULDHVVHDOJRULWPRHYDPRVGHSRLV
explicar mais detalhes.
• Suponha que você precise
fazer um algoritmo para
gerar a tabuada da
multiplicação de 1 a 10.
1x1 = 1
1x2 = 2
1x3 = 3
1x4 = 4
1x5 = 5
1x6 = 6
1x7 = 7
1x8 = 8
1x9 = 9
1x10 = 10
2x1 = 2
2x2 = 4
2x3 = 6
2x4 = 8
2x5 = 10
2x6 = 12
2x7 = 14
2x8 = 16
2x9 = 18
2x10 = 20
3x1 = 3
3x2 = 6
3x3 = 9
3x4 = 12
3x5 = 15
3x6 = 18
3x7 = 21
3x8 = 24
3x9 = 27
3x10 = 30
4x1 = 4
4x2 = 8
4x3 = 12
4x4 = 16
4x5 = 20
4x6 = 24
4x7 = 28
4x8 = 32
4x9 = 36
4x10 = 40
5x1 = 5
5x2 = 10
5x3 = 15
5x4 = 20
5x5 = 25
5x6 = 30
5x7 = 35
5x8 = 40
5x9 = 45
5x10 = 50
6x1 = 6
6x2 = 12
6x3 = 18
6x4 = 24
6x5 = 30
6x6 = 36
6x7 = 42
6x8 = 48
6x9 = 54
6x10 = 60
7x1 = 7
7x2 = 14
7x3 = 21
7x4 = 28
7x5 = 35
7x6 = 42
7x7 = 49
7x8 = 56
7x9 = 63
7x10 = 70
8x1 = 8
8x2 = 16
8x3 = 24
8x4 = 32
8x5 = 40
8x6 = 48
8x7 = 56
8x8 = 64
8x9 = 72
8x10 = 80
9x1 = 9
9x2 = 18
9x3 = 27
9x4 = 36
9x5 = 45
9x6 = 54
9x7 = 63
9x8 = 72
9x9 = 81
9x10 = 90
10x1 = 10
10x2 = 20
10x3 = 30
10x4 = 40
10x5 = 50
10x6 = 60
10x7 = 70
10x8 = 80
10x9 = 90
10x10 = 100
A tabuada nossa de cada dia
Figura 27- A nossa tabuada de cada dia
algoritmoWDEXDGD
varFROXQDFROXQDUHVXOWDGRLQWHLUR
inicio
sábado, 21 de agosto de 2010
paraFROXQDde 1 atéfaça
paraFROXQDde 1 atéIDoD
UHVXOWDGRFROXQDFROXQD
Con
da
col
6x7 = 42
6x8 = 48
6x9 = 54
6x10 = 60
7x7 = 49
7x8 = 56
7x9 = 63
7x10 = 70
8x7 = 56
8x8 = 64
8x9 = 72
8x10 = 80
9x7 = 63
9x8 = 72
9x9 = 81
9x10 = 90
10x7 = 70
10x8 = 80
10x9 = 90
10x10 = 100
Estruturas de Repetição
Aninhadas ou Encadeadas
Figura 27- A nossa tabuada de cada dia
algoritmoWDEXDGD
varFROXQDFROXQDUHVXOWDGRLQWHLUR
inicio
• Algoritmo da
tabuada
paraFROXQDde 1 atéfaça
paraFROXQDde 1 atéIDoD
UHVXOWDGRFROXQDFROXQD
¿PSDUD
¿PSDUD
escrevalFROXQD³[´FROXQD³ ³UHVXOWDGR
¿PDOJRULWPR
Neste algoritmo, quando o primeiro laço começa (linha 4), o valor
GDFROXQD¿FD¿[RDWpTXHVHYROWHSDUDH[HFXWDUHVVHODoRGHQRYR
Porém, isso só vai ocorrer, quando laço mais interno (da linha 5 a
linha 8) terminar. Esse laço mais interno é o encarregado de gerar os
sábado, 21 de agosto de 2010
Dicas para Escrever
Bons Algoritmos
• Procure não escrever mais do que um comando por linha.
• Depois de ler o enunciado do problema, tente identificar sempre as três fases:
ENTRADA, PROCESSAMENTO e SAÍDA. Isso lhe ajuda a esquematizar o algoritmo.
• Para lembrar, posteriormente, de trechos de programas mais complicados que você pode
esquecer como implementou, escreva comentários claros e objetivos no momento em
que estiver escrevendo o algoritmo. Isto também facilita o entendimento do algoritmo.
• Use comentários no início do algoritmo. Estes podem ter, entre outras informações, a
descrição do que o algoritmo faz, o nome do autor do algoritmo, a data de
implementação, etc
• Escolha nomes de variáveis que sejam significativos. Ex: precoProduto, lucro, nome,
idade.
• Procure alinhar os comandos de acordo com o nível a que pertençam. Isto é, destaque a
estrutura na qual estão contidos. Este alinhamento é chamado de identação.
sábado, 21 de agosto de 2010
Dicas para Escrever
Bons Algoritmos
Introdução à Programação
algoritmo([HPSOR(QTXDQWR)DoD
algoritmo([HPSOR(QTXDQWR)DoD
var[LQWHLUR
var[LQWHLUR
inicio
inicio
escreva³'LJLWHXPYDORU´
escreva³'LJLWHXPYDORU´
leia[
leia[
enquanto[!IDoD
enquanto[!faça
se[!então
se[!então
escreva³2Q~PHURpSRVLWLYR´
escreva³2Q~PHURpSRVLWLYR´
senão
senão
escreva³2Q~PHURpQHJDWLYR´
escreva³2Q~PHURpQHJDWLYR´
¿PVH
¿PVH
escreva³'LJLWHXPYDORU´
escreva³'LJLWHXPYDORU´
leia[
leia[
¿PHQTXDQWR
¿PHQTXDQWR
¿PDOJRULWPR
¿PDOJRULWPR
Exemplo de identação
sábado, 21 de agosto de 2010
Aprenda Praticando
Problema 1: a
resolver em sala
• Construa um algoritmo para ler o nome, número de horas trabalhadas e
número de dependentes de cada um dos 20 funcionários de uma
empresa. Após a leitura, para cada funcionário, calcule e imprima na
tela: o nome do funcionário, seu salário bruto, o total de descontos que
ele sofrerá e seu salário líquido. Considere que:
• A empresa paga R$10 por hora trabalhada e tem um adicional de
R$40 por dependente que o funcionário tenha.
• O salário bruto é o valor total dos ganhos do funcionário
• Sobre o salário bruto são descontados 8 % de INSS e 5% de IR
(imposto de renda).
• O salário líquido é o valor do salário bruto, menos os descontos.
sábado, 21 de agosto de 2010
Problema 2: a
resolver em sala
Faça um algoritmo para ler uma quantidade
indefinida de bois (código do boi e peso do boi),
parando quando for digitado o código zero.
Depois, calcule e imprima o código e o peso do boi
mais gordo da fazenda. Considere, para simplificar,
que não há dois pesos iguais. Neste problema
temos: ENTRADA: o código e o peso do boi.
sábado, 21 de agosto de 2010
Exercícios
1. Leia o nome e a idade de várias pessoas até que uma idade igual a ZERO seja digitada. E, ao final, informe o
nome da pessoa mais velha e o nome da pessoa mais nova, entre todos os nomes lidos. Para simplificar,
considere que não existem idades iguais.
2. Escreva um algoritmo para calcular e imprimir a soma dos números inteiros e pares de 1 a 50.
3. Escreva um programa que apresente a série de Fibonacci até o décimo quinto termo. A série de Fibonacci é
formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21,34, ... etc. Consegue ver a lógica de criação da mesma? Pense um
pouquinho, não é tão difícil assim!
4. Uma empresa de compras através da Internet decidiu realizar uma pesquisa entre os seus clientes para
determinar o perfil dos mesmos. Considerando uma amostra de 200 clientes, faça um algoritmo que leia o
nome, a idade de seus clientes e se eles têm acesso à Internet e forneça como resultado:
•
A média de idade dos clientes;
•
A quantidade de mulheres;
•
Quantas pessoas têm acesso a Internet.
•
O nome e a idade do homem mais velho que tem acesso a Internet
•
O nome e a idade da mulher mais nova.
sábado, 21 de agosto de 2010
Download