Repetição
Aula 10
Toda vez que precisamos repetir
determinado número de vezes uma
determinada seqüência de comandos,
usamos um laço de repetição, que
corresponderia repetir o mesmo trecho um
número X de vezes sem ter de escrever o
mesmo trecho X vezes.
Imagine fazer um fluxograma para calcular a
média das notas de 50 alunos sem repetiçao!
Inicio
Escrever (‘Entre com as três notas do primeiro aluno’) Ler (A1N1,A1N2,A1N3) A1M1 = (A1N1+A1N2 + A1N3)/3 Escrever (‘ A média do primeiro aluno é’, A1M1)
1
1
Escrever (‘Entre com as três notas do segundo
aluno’)
Ler (A2N1,A2N2,A2N3)
A2M2 = (A2N1+A2N2 + A2N3)/3
Escrever (‘ A média do segundo aluno é’, A2M2)
2
O Trecho do
programa teria que
ser repetido 50
Agora o mesmo fluxo utilizando repetição
Inicio
Escrever (‘Entre com as três notas do aluno’) Ler (N1,N2,N3)
M = (N1+N2 + N3)/3
Escrever ( ‘Aluno’, C, ‘ A média é’, M) C = 0 C == 50? C = C + 1 FIM sim não
Veja que essa estrutura trabalha com a
repetição de comandos até que condições
se satisfaçam
No Exemplo anterior a condição é ter
atingido os 50 alunos e o teste está no final
do programa, após a execução do trecho de
programa.
Ou seja os comandos serão executados até
que a condição seja verdadeira.
Porém podemos colocar o teste no início do
fluxograma e fazer com que os comandos
sejam executados enquanto a condição for
verdadeira. Utilizando-se assim a lógica
Agora o mesmo fluxo com o teste no início
Inicio
Escrever (‘Entre com as três notas do aluno’) Ler (N1,N2,N3)
M = (N1+N2 + N3)/3
Escrever ( ‘Aluno’, C, ‘ A média é’, M) C = 0 C ~= 50? C = C + 1 FIM sim não
Veja que agora o teste é realizado no inicio, os comandos são executados
enquanto a condição é verdadeira.
Inicio
Escrever (‘Entre com as três notas do aluno’) Ler (N1,N2,N3) M = (N1+N2 + N3)/3 Escrever ( ‘Aluno’, C, ‘ A média é’, M) C = 0 C ~=50? C = C + 1 FIM sim não Inicio
Escrever (‘Entre com as três notas do aluno’) Ler (N1,N2,N3) M = (N1+N2 + N3)/3 Escrever ( ‘Aluno’, C, ‘ A média é’, M) C = 0 C == 50? C = C + 1 FIM sim não
TESTE NO FIM
TESTE NO INICIO
1.
Estrutura de repetição com teste no inicio
(enquanto...faz)
2.
Estrutura de repetição com teste no final
( repete...até)
Esta estrutura de repetição executa um comando, ou bloco de comandos, enquanto uma determinada condição for verdadeira. Sintaxe:
enquanto [condição] faz
[comandos]
fimenquanto
O funcionamento é o seguinte:
1. A condição é avaliada.
2. Se o resultado da condição for falso, a repetição termina e o programa continua no comando imediatamente a seguir ao enquanto.
3. Se o resultado da condição for verdadeiro, são executados os comandos associadas ao enquanto.
Inicio
Escrever (‘Entre com as três notas do aluno’) Ler (N1,N2,N3) M = (N1+N2 + N3)/3 Escrever ( ‘Aluno’, C, ‘ A média é’, M) C = 0 C ~=50? C = C + 1 FIM sim não
TESTE NO INICIO
Inicio variavel inteiro c, n1,n2,n3 variavel real m enquanto c =/= 50 fazEscrever "Entre com as tres notas do aluno " Ler n1,n2,n3
c <- c + 1
m <- (n1+n2+n3)/3
Escrever "Aluno \t", c , " a média é \t ", m Fimenquanto
Repete os comandos até que a condição seja verdadeira. Sintaxe:
repete
[comandos] ate [condição]
O funcionamento desta instrução é o seguinte:
Na instrução Repete, os [comandos] são sempre executadas pelo menos uma vez.
Só depois destes serem executados é que é validada a [condição].
Inicio
Escrever (‘Entre com as três notas do aluno’) Ler (N1,N2,N3) M = (N1+N2 + N3)/3 Escrever ( ‘Aluno’, C, ‘ A média é’, M) C = 0 C == 50? C = C + 1 FIM sim não
TESTE NO FIM
Inicio variavel inteiro c, n1,n2,n3 variavel real m repeteEscrever "Entre com as tres notas do aluno " Ler n1,n2,n3
c <- c + 1
m <- (n1+n2+n3)/3
Escrever "Aluno \t", c , " a média é \t ", m ate c = 50
Inicio
Escrever (‘Entre com as três notas do aluno’) Ler (N1,N2,N3) M = (N1+N2 + N3)/3 Escrever ( ‘Aluno’, C, ‘ A média é’, M) C = 0 C ~=50? C = C + 1 FIM sim não Inicio
Escrever (‘Entre com as três notas do aluno’) Ler (N1,N2,N3) M = (N1+N2 + N3)/3 Escrever ( ‘Aluno’, C, ‘ A média é’, M) C = 0 C ~=50? C = C + 1 FIM não sim
TESTE NO FIM
TESTE NO INICIO
Repete as instruções até que a condição seja falsa.
Nesta repetição, a instrução é executada pelo menos uma vez. Esta instrução é muito semelhante à instrução Repete.
Sintaxe: faz
[instruções] enquanto [condição]
O seu funcionamento pode ser descrito da seguinte forma:
1. A instrução ou bloco de comandos é executado.
2. A condição é avaliada;
3. Se o resultado da condição for verdade, volta-se ao ponto 1.
4. Se o resultado da condição for falso, termina a repetição e o programa continua na instrução seguinte a estrutura de repetição.
Exemplo 1:
Inicio
variavel inteiro c, n1,n2,n3 variavel real m
faz
Escrever "Entre com as tres notas do aluno " Ler n1,n2,n3 c <- c + 1 m <- (n1+n2+n3)/3 Escrever "Aluno \t", c , " a média é \t ", m Enquanto c =/= 50 fim Com Enquanto Inicio variavel inteiro c, n1,n2,n3 variavel real m enquanto c =/= 50 faz Escrever "Entre com as tres notas do aluno " Ler n1,n2,n3 c <- c + 1 m <- (n1+n2+n3)/3 Escrever "Aluno \t", c , " a média é \t ", m Fimenquanto fim
Permite a repetição dos comandos contidos
nesta estrutura seja repetida um número
específico de vezes.
Os Exemplos que vimos até agora são de
repetições automáticas. Pode ser feita com
teste no início ou no fim.
Exemplo: Imprima na tela os números de 1 a
100.
Inicializar - valor inicial
Incremento
Testo - valor final
X = 1 X == 100 ? ESCREVER (X) X = X +1 sim não INICIO FIM INICIO VARIAVEL INTEIRO X REPETE X <- X + 1 ESCREVER X, “\t” ATE X = 100 FIM
Um contador ou um acumulador é uma variável
que ocorre em ambos os lados de uma
atribuição, para que possa alterar o seu próprio
valor.
Ex: C <- C + 1 a variável C é um contador
Soma <- soma + variável.
Todo contador ou acumulador deve ser iniciado
com um valor específico, antes de ser usado pela
primeira. Como ocorreu no exemplo anterior.
A estrutura de repetição contada, serve
para executar um comando um
determinado número de vezes. Para saber
quando o total de repetições desejadas já
foi atingido, a estrutura de repetição
contada usa um contador:
◦ primeiramente, o contador é iniciado com um valor específico;
◦ depois, o contador é testado para ver se o total de repetições não foi atingido;
◦ se o total de repetições não foi atingido, a repetição continua; senão, pára;
1.
Progressiva
Elabore um algoritmo que dado
um número inteiro exiba sua
tabuada.
2.
Regressiva
Elabore um algoritmo que dado
um número n exiba a
contagem regressiva de
inicio
inteiro x <- 1, n, R escrever "Digite um número para calcular a tabuada \n" ler n Enquanto x <=10 faz R <- n * x escrever n, “ * “, x, “ = “ , R x <- x + 1 Fimenquanto fim LER (N) X <=10 ? ESCREVER (R) X = X +1 sim não X = 1 R = N * X INICIO ESCREVER (‘Entre com o número que
deseja imprimir a tabuada’)
Inicio
Varivel inteiro n
Escrever “Entre com um numero” Ler n Enquanto n >= 0 faz escrever n, “\n” n <- n – 1 Fimenquanto fim LER (N) N > =0 ? ESCREVER (N) N = N - 1 sim não INICIO ESCREVER(‘Entre com um número’) FIM
Faça um algoritmo em fluxograma e Portugol que mostre
todos os números pares até 500 (inclusive o 500). Utilizando teste no início e teste no fim.
Existem quatro tipos básicos de estruturas de repetição:
A estrutura Enquanto possibilita repetir a execução de uma ou vários comandos, enquanto uma determinada condição/expressão, do tipo lógico, tiver valor verdadeiro.
A estrutura Repete permite repetir uma ou mais instruções, até que uma determinada condição/expressão, do tipo lógico, tenha um valor verdadeiro.
A estrutura Para é utilizada para efectuar ciclos incondicionais.
A estrutura Faz repete as instruções até que a condição seja falsa.
Estruturas de Repetição
Esta instrução é utilizada em situações na qual o número de repetições é conhecido desde o início.
Esta instrução percorre os valores desde o valor inicial até ao valor final com passo no valor de separação.
Sintaxe:
para [variável] de [valor inicial] ate [valor final] passo [valor de separação]
[instruções]
proximo
Ou :
para [variável] de [valor inicial] ate [valor final] [instruções]
O funcionamento desta instrução é o seguinte:
Quando é encontrada uma estrutura para a variável utilizada como contador é inicializada com o primeiro valor da sequência (valor inicial).
Em seguida, são executados os comandos dentro da estrutura de repetição e o contador é incrementado/decrementado com o próximo valor da sequência (passo).
A execução da repetição pára com o último valor da sequência (ate).
Caso o passo não seja definido, o passo é de mais ou menos uma unidade de forma a poder percorrer o intervalo entre o valor inicial e o final de forma crescente ou decrescente.
Exemplo 1: Todos os números pares ate 500
inicio
inteiro i
para i de 0 ate 500 passo 2
escrever i , "\t"
proximo
fim
Exemplo 2: Escrever o algoritmo que escreve no
monitor os múltiplos de 4 até 100.
inicio
inteiro i
para i de 4 ate 100 passo 4
escrever i , "\t"
proximo
fim
Exemplo 3: Escrever os números entre 10 e 30.
inicio
inteiro i <-0
para i de 10 ate 30
escrever "\t" ,i
proximo
fim
//Tabuada
inicio
inteiro i
inteiro num
escrever "Digite um número para calcular a tabuada \n"
ler num
escrever "\n Tabuada do ", num, "\n"
para i de 1 até 10
escrever i, "*", num, " = ", i*num, "\n"
proximo
Fazer um algoritmo que calcule e escreva a
soma dos 30primeiros termos da série:
1.
Entender o padrão de comportamento da
Série:
Numerador diminue de cinco em cinco denominador aumenta de um em um sinal troca
2.
Tudo que varia crie uma variável
3.
Se são 30 termos é uma repetição contada,
crie um contador e escolha a estrutura de
repetição que preferir.
4.
A Soma é um acumulador soma <- soma +
Inicio
◦ Variavel inteiro c, numerador <- 480, denominador <- 10 inteiro sinal <- 1
◦ Variavel real soma
◦ Para c de 1 ate 30
Soma <- soma + numerador/denominador * sinal Numerador <- numerador – 5
Denominador <- denominador + 1 Sinal <- sinal * -1
◦ Proximo
◦ Escrever “A Soma é “, soma
Posso elaborar repetições que eu não saiba
antecipadamente o número de vezes, elas
repetem de acordo com uma determinada
condição.
Neste tipo de repetição o teste no início é
mais indicado.
Enquanto (condição verdadeira) a estrutura ira
executar os comandos contidos nela, e este se
repetirá até que a condição for falsa, somente
assim poderemos sair da estrutura de repetição.
Os comandos contidos neste tipo de estrutura
podem não ser executados nenhuma vez, já que
o mesmo testa a condição no início da
Faça um algoritmo que leia varios numeros
inteiros e calcule o somatorio dos numeros
negativos. O fim da leitura sera indicado pelo
numero 0.
inicio
variavel inteiro num , soma
Escrever "Digite um numero e digite 0 para finalizar \n" ler num
enquanto num =/= 0 faz se num < 0 entao
soma <- soma + num fimse
Escrever "Digite um numero e digite 0 para finalizar \n" ler num
fimenquanto
Escrever "A Soma dos números negativos digitados é ", soma
Exemplo 2: Pedir um número ao usuário que pertença ao
intervalo entre 10 e 20. Porém se ele digitar um número inválido vamos ficar solicitando um novo número até ele acertar! Assim podemos certificar que o usuário entre com aquilo que está
sendo pedido, evitando erros! Boa prática de Programação. inicio
inteiro num faz
escrever "introduza um numero entre 10 e 20:" ler num
enquanto num < 10 ou num > 20
escrever "\n O numero introduzido foi :" , num fim
Elaborar um algoritmo em Portugol que fique sorteando números
para um bingo (números de 0 a 100), ao apertar qualquer tecla ele sorteia outro número quanto digitado bingo, para o sorteio (Informe isso ao usuário).
inicio
real num1 texto palavra
Escrever "Digite qualquer tecla para sortear um número ou a palavra bingo para parar \n"
ler palavra
enquanto palavra =/= "bingo" faz escrever "Numero Sorteado : \t" num1 <- aleatorio ( ) * 100
escrever arred ( num1 ) , "\n"
Escrever "Digite qualquer tecla para sortear um número ou a palavra bingo para parar"
ler palavra fimenquanto fim