Algoritmos e
Estruturas de Dados I
Algoritmos com RepetiçãoProfa. Márcia Cristina Moraes
Profa. Milene Selbach Silveira
Prof. Iara C. de Almeida
Material para estudo:
Forbellone, A. e Eberspächer, H. (2005)
capítulo 3 (estrutura de repetição)
a sintaxe utilizada em nossos algoritmos será diferenciada
em alguns poucos detalhes, mas a lógica é a mesma
Calcular média das notas de aluno
Algoritmo Média
inteiro: num
real: n1, n2, n3, m
Início
escreva(“Informe seu número de matrícula e suas três notas”)
leia(num, n1, n2, n3)
m ←(n1 + n2 + n3)/3
escreva(“Média = ”, m)
Fim
Como calcular a média das notas de 30 alunos ?
Solução simplista: executar 30 vezes este algoritmo
Solução correta: trabalhar com algoritmo de repetição!
Algoritmos com Repetição
Algoritmos que repetem uma ou mais
instruções.
Todo o algoritmo que tem a execução de um
ou mais de seus passos repetido duas ou
mais vezes é denominado de algoritmo de
repetição (Orth, 2001).
Algoritmo com Repetição -
Enquanto
Sempre que quisermos realizar uma
instrução ou uma sequência de instruções
mais de uma vez, necessitamos de uma
instrução de repetição.
Sequência de Instruções:
1 ou mais instruções quaisquer
Enquanto <condição> faça
Início
<sequencia de instruções>
Fim
Também é preciso uma variável que conte
quantas vezes é executada a “sequência de
passos” que se pretende repetir
Esta variável contador deve
receber um valor inicial,
ser incrementada sempre que “a sequência de
passos foi repetida”, e
ser comparada ao valor final
Algoritmo com Repetição
Variável Contador
Também é preciso uma variável que conte
quantas vezes é executada a “sequência de
passos” que se pretende repetir
Esta variável contador deve
receber um valor inicial permite iniciar a contagem
ser incrementada sempre que “a sequência de
passos foi repetida” permite contar n vezes
ser comparada ao valor final permite finalizar a
contagem
Algoritmo com Repetição
Variável Contador
Exemplo
Algoritmo Média
inteiro: num, cont
real: n1, n2, n3, m
Início
cont 0 {inicialização do contador}
enquanto (cont < 30) faça
Início
escreva (“Informe seu número de matrícula e suas três notas”)
leia(num, n1, n2, n3)
m (n1 + n2 + n3)/3
escreva(“Média = ”, m)
cont cont + 1 {incremento do contador}
Fim
Fim
Exercício 1
Faça um algoritmo que leia 20 pares de
valores a e b, e para cada par de valores
lido escreve qual é o maior valor.
SUGESTÃO
(1) especificar um algoritmo para determinar o maior de
um par de valores
… e, só depois,
(2) verificar o que é preciso para repetir 20 vezes os
passos definidos em (1)
Exercício 2
Escreva um algoritmo que lê um número
inteiro n. Calcule e escreva a tabuada (de
1 a 10) deste número
No exemplo anterior, caso se queira saber ao final a
média geral desta turma, deve-se se utilizar o conceito
de variável acumulador.
Variável acumulador é qualquer variável que recebe
um valor inicial constante e é incrementada em algum
outro ponto do algoritmo de um valor variável.
soma 0
....
...
soma soma + valor
Exemplo:
Inicialização da variável acumulador
Incremento da variável acumulador de
um valor variável
Algoritmo com Repetição
Variável Acumulador
Exemplo
Algoritmo MédiaGeral
inteiro: num, cont
real: n1, n2, n3, m, mg, soma
Início
cont 0 {inicialização do contador}
soma 0 {inicialização do acumulador}
enquanto (cont < 30) faça
Início
escreva(“Informe seu número de matrícula e suas três notas”)
leia(num, n1, n2, n3)
m (n1 + n2 + n3)/3
escreva(“Média = “, m)
soma soma + m {incremento do acumulador}
cont cont + 1 {incremento do contador}
Fim
mg soma/30 {calcula média DEPOIS do laço}
escreva(“Media Geral = “, mg)
Fim
Exercício 3
Escrever um algoritmo que lê o código e o
valor de 25 produtos e calcula e apresenta o
valor total a ser pago por eles.
Exercício 4
Escrever um algoritmo que lê um número n e
calcula o somatório de n. Por exemplo:
S = 1 + 2 + 3 + 4 + ... + n.
Ao final do cálculo, escrever o valor do
somatório calculado.
Algoritmo com Repetição –
Enquanto com número desconhecido
de repetições
No exemplo anterior sabíamos exatamente o
número de vezes que o laço de repetição
deveria ocorrer, mas existem casos em que o
número de repetição pode estar
condicionado a um valor de entrada.
Por exemplo: ler um conjunto não
determinado de números de alunos. O
algoritmo deve parar quando o número do
aluno for um número negativo.
Algoritmo MédiaGeralCondicional
inteiro: num, cont
real: n1, n2, n3, m, mg, soma
Início
soma 0 {inicialização do acumulador}
cont 0 {inicialização do contador}
escreva(“Informe seu número de matrícula”)
leia(num) {leitura da matrícula do aluno ANTES}
enquanto (num > 0) faça {número de aluno válido? Continua!}
Início
escreva(“Informe suas três notas”)
leia(n1,n2,n3)
m (n1 + n2 + n3)/3
escreva(“Média = “, m)
soma soma + m {incremento do acumulador}
cont cont + 1 {incremento do contador}
escreva(“Informe seu número de matrícula”)
leia(num) {novo aluno}
Fim
mg soma/cont
escreva(“Media Geral = “, mg)
Fim
Exemplo
Comparação dos Algoritmos
Enquanto Contado Enquanto Condicional
Algoritmo MédiaGeralCONTADA
inteiro: num, cont
real: n1, n2, n3, m, mg, soma
Início
cont 0
soma 0
enquanto (cont < 30) faça
Início
escreva(“Informe....”)
leia(num, n1, n2, n3)
m (n1 + n2 + n3)/3
escreva(“Média = “, m)
soma soma + m
cont cont + 1
Fim
mg soma/30
escreva(“Media Geral = “, mg)
Fim
Algoritmo MédiaGeralCONDICIONAL
inteiro: num, cont
real: n1, n2, n3, m, mg, soma
Início
soma 0
cont 0
escreva(“Informe seu número...”)
leia(num)
enquanto (num > 0) faça
Início
escreva(“Informe... notas”)
leia(n1,n2,n3)
m (n1 + n2 + n3)/3
escreva(“Média = “, m)
soma soma + m
cont cont + 1
escreva(“Informe seu número...”)
leia(num)
Fim
mg soma/cont
escreva(“Media Geral = “, mg)
Fim
Exercício 5
Faça um algoritmo que lê uma quantidade
não determinada de valores e verifica qual o
maior e qual o menor valor digitados. O
algoritmo pára quando for digitado o valor 0
(zero).
Algoritmo com Repetição -
Para
Outra forma de repetição…
Para variável de Exp1 até Exp2 [passo Exp3]
Início
<instruções>
Fim
Variável: variável de controle
Exp1, Exp2, Exp3 são constantes ou expressões aritméticas
Exp1 representa o valor inicial
Exp2 representa o valor final
Exp3 representa o valor a ser incrementado a cada iteração. Se não for especificado
este item, assume-se o valor 1
Algoritmo com Repetição -
Para
Na instrução “Para” ocorrem 3 passos:
1) inicialização da variável de controle com o valor inicial igual a Exp1
2) um teste que verifica se o valor da variável de controle já ultrapassou o seu valor final indicado em Exp2
3) a cada nova repetição ocorrerá um incremento da variável de controle de um valor igual ao que esta estabelecido em Exp3 ou de 1 caso não tenha esta especificação
Exemplos
Para i de 1 até 5
Início
Instruções
Fim
A cada repetição ocorre o incremento de 1 na
variável i
Para x de a até b passo 2
Início
Instruções
Fim
Para i de n até 1 passo -1
Início
Instruções
Fim
Quando o incremento é negativo o
teste é sempre se o valor da
variável é menor do que o valor
final especificado
A cada repetição ocorre o incremento
de 2 na variável x
Exemplo
Algoritmo MédiaGeralPARA
inteiro: num, cont
real: n1, n2, n3, m, mg, soma
Início
soma 0
Para cont de 1 até 30
Início
escreva(“Informe...”)
leia(num, n1, n2, n3)
m (n1 + n2 + n3)/3
escreva(“Média = “, m)
soma soma + m
Fim
mg soma/30
escrever(“Media Geral = “, mg)
Fim
Qual o valor de cont
após o laço de
repetição?
Exercício
Modifique os exercícios 1, 2 e 3 para que
eles sejam realizados com a instrução Para.
Algoritmo com Repetição -
Repita
Além do “Enquanto” e do “Para” podemos
ainda usar o “Repita”
Repita
Inicio
<instruções>
Fim
até <condição>
Exemplo
Algoritmo MédiaGeralPARA
inteiro: num, cont
real: n1, n2, n3, m, mg, soma
Início
cont 0
soma 0
Repita
Inicio
escreva(“Informe...”)
leia(num, n1, n2, n3)
m (n1 + n2 + n3)/3
escreva(“Média = “, m)
soma soma + m
cont cont + 1
Fim
Até cont == 30
mg soma/30
escrever(“Media Geral = “, mg)
Fim
Enquanto Contado
Algoritmo MédiaGeralCONTADA
inteiro: num, cont
real: n1, n2, n3, m, mg, soma
Início
cont 0
soma 0
Enquanto (cont < 30) faça
Início
escreva(“Informe....”)
leia(num, n1, n2, n3)
m (n1 + n2 + n3)/3
escreva(“Média = “, m)
soma soma + m
cont cont + 1
Fim
mg soma/30
escreva(“Media Geral = “, mg)
Fim
Repita
Bibliografia
Orth, Afonso Inácio. Algoritmos e
Programação. Editora AIO. 2001.
Forbellone, A. e Eberspacher, H. Lógica
de Programação: A Construção de
Algoritmos e Estruturas de Dados.
Makron Books, São Paulo, 3ª edição.
2005.