"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
Laços de repetição para cálculo de médias e resolução de problemas
1. Algoritmos e lógica de programação
Estruturas de Repetição
por
Carlos Emilio Padilla Severo
2. Cronograma
Introdução
Conceito sobre laços de repetição
Condição de parada
Condição de parada no início
Condição de parada no fim
Considerações sobre condições de parada
Contagem de repetições
Contador x acumulador
Repetição indeterminada
Repetição com variável de controle
Apresentação do trabalho de avaliação
3. Introdução...
Contexto:
Considere o problema de cálculo da média aritmética de um aluno. No
problema em questão devemos obter as notas das avaliações para
podermos calcular a média, vejamos o algoritmo.
variaveis
numerico n1, n2, me
Inicio
ler n1
ler n2
me := (n1 + n2) / 2
escrever me
fim
4. Introdução
Note que o algoritmo anterior calcula a média somente para um
único aluno. Devemos reescrever o algoritmo se desejarmos
calcular a média de um novo aluno, vejamos:
variaveis
numerico n1, n2, me1, me2
inicio A solução é simples, mas
ler n1 inviável quando o grupo de
ler n2 alunos cresce (imagine 50
me1 := (n1 + n2) / 2
escrever me1
alunos!!!)
ler n1
ler n2
me2 := (n1 + n2) / 2
escrever me2
fim
5. Ufa !!! Pode ser melhor.
Muitas vezes necessitamos repetir uma instrução, ou
sequência de instruções (bloco) em um algoritmo.
Evitando a reescrita de uma porção do código diversas vezes no
algoritmo.
Viabilizando a execução de instruções que são repetidas
múltiplas vezes.
Exemplo: desejamos calcular a média aritmética de um grupo
de alunos de uma única vez, mas como ???
A solução é a utilização de um controle de repetição.
6. Conceito sobre laço de repetição...
As estruturas algorítmicas de repetição, também
chamadas de laços de repetição, permitem o controle do
número de vezes que uma ou um bloco de instruções
será executado.
Em inglês são denominadas de loop ou looping, visto
que controlam a execução finita de instruções em
círculos, que ao término segue seu curso normal.
O número de repetições pode ser indeterminado, porém
é sempre finito.
7. Condição de parada
Todo laço de repetição necessita de uma condição de
parada, a qual interrompe a repetição determinando o
prosseguimento do fluxo de execução do algoritmo até
seu final.
A condição de parada pode ser colocada:
no início do laço de repetição;
ou no final do laço de repetição.
8. Condição de parada no início
Consiste em uma estrutura de controle de fluxo de execução que
permite repetir diversas vezes um mesmo trecho do algoritmo,
porém, verificando antes se é possível a repetição.
variaveis
numerico contador, n1, n2, me
inicio
faca enquanto(contador <= 50)
ler n1
Início do laço
ler n2 Fluxo
Repetição
me := (n1 + n2) / 2 de
escrever me Fim do laço execução
contador := contador + 1
fim_faca
fim
9. Condição de parada no fim
Formada por uma estrutura de controle de fluxo de execução que
permite repetir diversas vezes um mesmo trecho do algoritmo até
que uma determinada condição seja verdadeira.
variaveis
numerico contador, n1, n2, me
inicio
contador := 1
repetir Fluxo
Início do laço
ler n1 de
ler n2 Repetição
execução
me := (n1 + n2) / 2
escrever me Fim do laço
contador := contador + 1
ate(contador > 50)
fim
OBS: no Ambap (ILA) essa
estrutura não foi implementada.
10. Considerações
Condições de parada no início podem determinar que
um bloco de instruções não seja executado.
Já condições de parada no final determinam a execução
do bloco de instruções pelo menos uma vez.
A condição de parada no início é a negação da condição
de parada no final e vice-versa.
faca enquanto(contador <=50) repita
... ...
fim_faca ate(contador > 50)
11. Contagem de repetições
O processo de contagem do número de repetições ocorre na linha de
incremento da variável contador. Quando o bloco de instruções é repetido,
o valor da variável vai aumentando em uma unidade, simulando uma
contagem de execuções, surge daí a denominação contador.
variaveis
numerico contador, n1, n2, me
inicio
contador := 1;
faca enquanto(contador <= 50)
ler n1
ler n2
me := (n1 + n2) / 2
escrever me
contador := contador + 1
fim_faca
fim
12. Contador x acumulador
Realizando uma alteração no algoritmo de cálculo da média dos alunos,
poderíamos acrescentar o cálculo da média geral do grupo, acumulando a
média de cada aluno em um acumulador de controle.
variaveis
numerico contador, n1, n2, me, mg, acumulador
inicio
contador := 1
acumulador := 0
faca enquanto(contador <= 50)
ler n1
ler n2
me := (n1 + n2) / 2
escrever me
contador := contador + 1
NOTA
acumulador := acumulador + me
fim_faca O contador e o acumulador são
mg := acumulador / 50 semelhantes, a diferença está
escrever mg no valor somado que para o
fim contador é constante e para o
acumulador é variável.
13. Repetição indeterminada
Neste tipo de estrutura de repetição não sabemos previamente o número
de repetições que irão ocorrer no laço.
variaveis
numerico numero, chute, tentativa
inicio
tentativa := 0
ler numero
faca enquanto(chute<>numero)
ler chute
se(chute > numero)
escrever “Chutou alto.”
senao
se(chute < numero)
escrever “Chutou baixo.”
fim_se
fim_se
tentativa := tentativa + 1
fim_faca
escrever tentativa
fim
14. Variável de controle
Como vimos através do algoritmo anterior, ocorrem
casos em que se torna difícil determinar o número de
vezes que o bloco será executado.
Sabemos somente que será executado enquanto uma
condição for satisfeita, ou até que uma condição seja
satisfeita.
Já a estrutura para sempre executa um bloco um
número pré-determinado de vezes, pois possui limites
fixos de execução.
15. Variável de controle (exemplo)
variaveis
numerico contador, n1, n2, me, mg, acumulador
inicio
acumulador := 0
para contador de 1 ate 50 passo 1
ler n1
ler n2
me := (n1 + n2) / 2
escrever me
acumulador := acumulador + me
proximo
mg := acumulador / 50
escrever mg
fim
16. Trabalho de avaliação
Um rei requisitou os serviços de um sábio e disse-lhe
que pagaria qualquer preço. O sábio necessitando de
alimentos perguntou ao rei se poderia receber em
grãos de trigo dispostos em um tabuleiro de xadrez, de
tal forma que o primeiro quadro deveria conter apenas
um grão e os próximos o dobro do anterior. O rei achou
o trabalho barato e mandou o sábio fazer o serviço,
sem verificar que seria impossível o pagamento. Crie
uma algoritmo para apresentar a solução para o
problema.
17. Referências bibliográficas
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de
Programação. 2ª Edição, São Paulo: Pearson, 2000.
GUIMARÃES, A. M.; LAGES, N. A. C. Algoritmos e
Estruturas de Dados. Rio de Janeiro: LTC, 1994.
PINTO, Wilson Silva – Introdução ao Desenvolvimento de
Algoritmos e Estruturas de Dados. São Paulo: Érica,
1990.
FARRER, H. et. al. Algoritmos Estruturados. Rio de
Janeiro: LTC, 1999.