Uploaded by clemilton.ufam

07 - Repetição Condicional

advertisement
Estruturas de
Repetição:
Repetição
Condicional
Estruturas de Programação
• Qualquer programa de computador pode ser escrito combinando-se
os três tipos básicos de estruturas de programação:
Estruturas de Repetição
• Permitem que o programa execute um bloco de comandos mais de
uma vez
• O número de repetições (ou iterações) deve ser conhecido e sempre
finito
• Caso contrário, programa travará
Estruturas de Repetição
• Permitem que o programa execute um bloco de comandos mais de
uma vez
• O número de repetições (ou iterações) deve ser conhecido e sempre
finito
• Caso contrário, programa travará
enquanto, while e
do-while
para , for
Motivação – Estruturas de Repetição
Motivação – Estruturas de Repetição
print(‘Eu serei um bom menino’)
print(‘Eu serei um bom menino’)
print(‘Eu serei um bom menino’)
print(‘Eu serei um bom menino’)
print(‘Eu serei um bom menino’)
print(‘Eu serei um bom menino’)
print(‘Eu serei um bom menino’)
print(‘Eu serei um bom menino’)
.....
Motivação – Estruturas de Repetição
Implemente um programa que recebe as notas do semestre de 3 alunos e escreve a média
parcial de cada um deles.
3 notas parciais
3 alunos
Quantas variáveis?
Motivação – Estruturas de Repetição
Motivação – Estruturas de Repetição
leia(media1)
leia(media2)
leia(media3)
mediaTurma = (media1+media2+media3)/3
escreva(mediaTurma)
4 Variáveis
Motivação – Estruturas de Repetição
Implemente um programa que recebe as notas de 100 alunos e escreve a
média parcial de cada um deles.
•E para 1000 alunos? 10000 alunos?
•E se eu não souber previamente quantos alunos são?
Estrutura de Repetição - ENQUANTO
A estrutura de repetição ENQUANTO é utilizada da seguinte maneira:
ENQUANTO (<EXPRESSÃO LÓGICA >)
comando 1
comando 2
.........
comando n
FIMENQUANTO
Antes de entrar na estrutura de repetição, a expressão lógica é avaliada:
• Caso VERDADEIRO : Os comandos dentro da estrutura serão executados e ao final volta-se a avaliar a expressão lógica
novamente
• Caso FALSO: O algoritmo sai da estrutura de repetição
Estrutura de Repetição - ENQUANTO
Fluxograma ENQUANTO
Avaliar
condição
(repetir)
falso
verdadeiro
Executar
comandos
prosseguir
Observe que há a possibilidade de nunca se executar os comandos, caso a primeira
avaliação da condição já resulte em falso
Estrutura de Repetição - ENQUANTO
A estrutura de repetição ENQUANTO é utilizada da seguinte maneira:
ENQUANTO (<EXPRESSÃO LÓGICA >)
comando 1
comando 2
.........
comando n
FIMENQUANTO
Avaliar
condição
(repetir)
falso
verdadeiro
Executar
comandos
Atenção: Algo dentro do laço deve ser capaz de modificar o resultado da expressão booleana, caso contrário o
laço nunca terminará, e o programa entrará em loop infinito
Contador de Laço
• Uma das maneiras de controlar uma estrutura ENQUANTO é o
contador de laço
• Todo contador de laço é configurado em 3 passos:
1
atribuição (valor inicial)
2
condição (valor final)
3
passo (ou incremento)
Contador de Laço - Fluxograma
• Todo contador de laço é configurado em 3 passos:
1
Inicialização
2
Avaliar
condição
verdadeiro
Executar
comandos
3
incremento
prosseguir
falso
1
atribuição (valor inicial)
2
condição (valor final)
3
passo (ou incremento)
Exemplo 01 - Fluxograma
Escreva um algoritmo para contar de 1 até 5
Exemplo 01 - Fluxograma
Escreva um algoritmo para contar de 1 até 5
1º Iteração
contador
1
Saída
1
Exemplo 01 - Fluxograma
Escreva um algoritmo para contar de 1 até 5
2º Iteração
contador
1
2
Saída
1
2
Exemplo 01 - Fluxograma
Escreva um algoritmo para contar de 1 até 5
3º Iteração
contador
1
2
3
Saída
1
2
3
Exemplo 01 - Fluxograma
Escreva um algoritmo para contar de 1 até 5
Término do Loop
contador
1
2
3
4
5
Saída
1
2
3
4
5
6
Exemplo 01 – Pseudo-Código
Escreva um algoritmo para contar de 1 até 5
contador = 1 1 atribuição (valor inicial)
ENQUANTO ( contador<=5 ) 2 condição (valor final)
IMPRIME(contador)
contador = contador + 1
FIMENQUANTO
3 passo (ou incremento)
A representação em Fluxograma e Pseudocódigo são equivalentes. Elas nos ajudam a nos focar na lógica do
problema, sem se preocupar com sintaxe da linguagem
Note que a estrutura de repetição é executada 5 VEZES.
O contador começa com valor 1, e temina com valor 6
Contador de Laço
atribuição
● Deve ser ajustado fora do laço
condição (valor final)
● Ajustar condição do laço. Uma condição mal elaborada pode
fazer com que o laço seja executado infinita vezes (loop
infinito)
passo (ou incremento)
● Determina a taxa de crescimento ou decrescimento do
contador, desde o valor inicial até o valor final
Exercicio – Pseudo-Código
Faça um fluxograma ou um pseudo-código para exibir números entre:
• 1 a 100
• 50 a 100
• 10 a 1 (Contagem regressiva)
• 2,4,6, ..., 20 ( De 2 até 20, com incremento 2)
Entregar no Classroom
Perguntas?
OBRIGADO!
Loop Infinito
Um loop ou laço infinito ocorre quando cometemos algum erro
• Ao especificar a condição lógica que controla a repetição;
• Esquecer de algum comando dentro da iteração
Loop Infinito
Condição mal formulada
Esqueceu comando
cont
cont
Saída
Saída
Loop Infinito
Condição mal formulada
Esqueceu comando
cont = 4
ENQUANTO ( cont < 5)
cont = cont – 1
IMPRIMA(x)
FIMENQUANTO
cont
Saída
4
cont = 4
ENQUANTO ( cont < 5)
IMPRIMA(cont)
FIMENQUANTO
3
2
-1
-2
...
cont
4
3
2
-1
-2
...
Saída
4
4
4
4
4
...
Variável Acumuladora
• Vamos ver alguns exemplos de problemas que são resolvidos
utilizando laços
• Existem alguns problemas “bases” que podem ser utilizados em
diversos problemas
Exemplo
Leia 05 números e apresente a soma deles
Exemplo – Variável Acumuladora
Leia 5 números e apresente a soma deles
Exemplo de entrada: 5 4 8 2 10
Saída: 29
Exemplo – Variável Acumuladora
Leia 05 números e apresente a soma deles
Como fazer?
• Precisamos de um laço de repetição que REPITA 05 VEZES
• Como fazê-lo ( há várias formas)
Exemplo – Pseudo Código
Leia 05 números e apresente a soma deles
Exemplo – Pseudo Código
Leia 05 números e apresente a soma deles
soma = 0
## este passo é muito importante
cont = 1
ENQUANTO (cont <=5 )
LEIA(num)
soma = soma + num ## variável acumuladora
cont = cont+1
FIMENQUANTO
IMPRIMA(soma)
soma = 0
## este passo é muito importante
cont = 0
ENQUANTO (cont < 5 )
LEIA(num)
soma = soma + num ## variável acumuladora
cont = cont+1
FIMENQUANTO
IMPRIMA(soma)
cont varia de 1 até 6 (5 vezes)
cont varia de 0 até 5 (5 vezes)
Exemplo – Pseudo Código
Leia 05 números e apresente a soma deles
soma = 0
## este passo é muito importante
cont = 1
ENQUANTO (cont <=5 )
LEIA(num)
soma = soma + num ## variável acumuladora
cont = cont+1
FIMENQUANTO
IMPRIMA(soma)
soma = 0
## este passo é muito importante
cont = 0
ENQUANTO (cont < 5 )
LEIA(num)
soma = soma + num ## variável acumuladora
cont = cont+1
FIMENQUANTO
IMPRIMA(soma)
cont
cont
soma
soma
num
num
Exemplo – Pseudo Código
Leia 05 números e apresente a soma deles
soma = 0
## este passo é muito importante
cont = 1
ENQUANTO (cont <=5 )
LEIA(num)
soma = soma + num ## variável acumuladora
cont = cont+1
FIMENQUANTO
IMPRIMA(soma)
soma = 0
## este passo é muito importante
cont = 0
ENQUANTO (cont < 5 )
LEIA(num)
soma = soma + num ## variável acumuladora
cont = cont+1
FIMENQUANTO
IMPRIMA(soma)
cont
1
2
3
4
5
6
cont
0
1
2
3
4
5
soma
0
10
15
21
30
34
soma
0
10
15
21
30
34
num
10
5
6
9
4
num
10
5
6
9
4
Exemplo – Pseudo Código
Leia 05 números e apresente a soma deles
soma = 0
## este passo é muito importante
cont = 1
ENQUANTO (cont <5 )
LEIA(num)
soma = soma + num ## variável acumuladora
cont = cont+1
FIMENQUANTO
IMPRIMA(soma)
Muita atenção ao montar as condições. Neste caso, o loop repete 4 vezes (1 até 5)
Exemplo – Pseudo Código
Leia 05 números e apresente a soma deles
soma = 0
## este passo é muito importante
cont = 0
ENQUANTO (cont <=5 )
LEIA(num)
soma = soma + num ## variável acumuladora
cont = cont+1
FIMENQUANTO
IMPRIMA(soma)
Muita atenção ao montar as condições. Neste caso, o loop repete 6 vezes (0 até 6)
Exemplo – Pseudo Código e Python
Leia 05 números e apresente a soma deles
soma = 0
cont = 1
ENQUANTO (cont <=5 )
LEIA(num)
soma = soma + num
cont = cont+1
FIMENQUANTO
IMPRIMA(soma)
soma = 0
## este passo é muito importante
cont = 1
while (cont <=5 ):
num = int(input(‘Digite um numero: ’))
soma = soma + num ## variável acumuladora
cont = cont+1
print( ‘A soma dos números é: ’ ,soma)
Problemas comuns ao construir laços de repetição
1
Escolha incorreta do valor inicial do contador
2
Escolha incorreta da condição do laço
3
Esquecer de incrementar o contador
4
Deixar de atualizar a variável acumuladora conforme pede o
problema
5
Deixar de identificar corretamente quais e quantas são as variáveis
contadoras e acumuladoras
Exemplo 02
Faça um programa que leia 10 números e apresente:
•
Quantidade de pares
•
Quantidade de impares
•
Soma de pares
•
Soma dos impares
Exemplo 02
Faça um programa que leia 10 números e apresente:
•
Quantidade de pares
•
Quantidade de impares
•
Média dos pares
•
Média dos ímpares
Neste exemplo, devemos ter um loop que repete 10 vezes
Exemplo 02
O pseudo código abaixo, lê 10 números.
cont = 1
ENQUANTO (cont <= 10 )
LEIA(num)
cont = cont+1
Versão 01
Note que a cada iteração, o valor do número se perde, pois a variável assume um novo valor. Para
resolvermos isso, devemos ter uma variável que consiga armazenar diversos valores( vetores, listas,
etc... )
Exemplo 02
Vamos incrementar o nosso algoritmo para encontrar a quantidade de pares e de
ímpares. Antes disso, vamos ver um algoritmo já “visto”
• O pseudo-código abaixo mostra como verificar se um número é par, ou impar
LEIA(NUM)
SE (num%2==0 )
IMPRIMA(‘é par’)
SENAO
IMPRIMA(‘é impar’)
Ou seja, para cada número lido, vamos verificar se ele é par ou impar.
• Caso seja par, vamos incrementar o valor de uma variável contadora de pares
• Senão, vamos incrementar o valor de uma variável contadora de impares
Exemplo – Pseudocódigo
Versão 02
Exemplo – Pseudocódigo
cont = 1
contPar = 0
## contador dos pares
contImpar = 0 ## contador dos impares
ENQUANTO (cont <= 10 )
LEIA(num)
SE ( num%2 == 0)
contPar = contPar+1 ## caso seja par, incrementa
SENAO
contImpar = contImpar + 1
cont = cont+1
## Observe que o contador do laço fica fora das condições
IMPRIMA(‘Quantidade de pares: ’, contPar)
IMPRIMA(‘Quantidade de impares: ‘,contImpar)
Versão 02
Exemplo 02
Como calcular a media dos pares e impares?
Exemplo 02
Como calcular a media dos pares e impares?
1. Calcular a soma dos pares e impares (variável acumuladora)
2. Dividir a soma final dos pares e impares pela quantidade deles .

OBS: A divisão deve acontecer depois de somarmos todos os valores
Ex:
Entrada: 1 2 3 4 5 6 7 8 9 10
Soma dos pares: 2 + 4 + 6 +8 + 10 = 30
Soma dos impares: 1 + 3 + 5 + 7 + 9 = 25
Média dos pares: 30 / QtdPares = 30/ 5 = 6
Média dos impares: 25 / qtdImpares = 25/5 = 5
Exemplo 02 – Versão Final
Exemplo 02 – Versão Final
cont = 1
contPar = 0
## contador dos pares
contImpar = 0 ## contador dos impares
somaPar = 0
## acumulador par
somaImpar = 0 ## acumulador impar
ENQUANTO (cont <= 10 )
LEIA(num)
SE ( num%2 == 0)
contPar = contPar+1
somaPar = somaPar + num
SENAO
contImpar = contImpar + 1
somaImpar = somaImpar + num
cont = cont+1
## Observe que o contador do laço fica fora das condições
IMPRIMA(‘Quantidade de pares: ’, contPar)
IMPRIMA(‘Quantidade de impares: ‘,contImpar)
IMPRIMA(‘Media dos pares: ‘, somaPar/contPar )
IMPRIMA(‘Media dos impares’, somaImpar/contImpar)
Exercício
Traduza o algoritmo anterior para a linguagem python
Exercício
Faça um algoritmo e um programa, que leia 20 notas e diga:
• Quantidade de aprovados ( nota maior que 6)
• Quantidade de recuperação ( nota entre 4 e 6)
• Quantidade de reprovados ( nota menor que 4)
• Média da turma
Referências
Slides
prof
Edson
Burin
–
UNICAMP
https://www.ic.unicamp.br/~edson/disciplinas/mc102/2019-
1s/ef/slides/MC102-Aula04.pdf
Slides ICOMP/UFAM – Introdução a Ciencia dos Computadores
Perguntas?
OBRIGADO!
Exemplo 02
Leia 2 valores inteiros X e Y. A seguir, calcule e mostre a soma dos
números ímpares entre eles
Exemplo 02
Leia 2 valores inteiros X e Y. A seguir, calcule e mostre a soma dos
números ímpares entre eles
Ex:
6
14
Números entre 6 e 14:
- 7, 8, 9, 10, 11,12,13
Soma dos impares: 7+9+11+13 = 40
Ex:
6
-5
Números entre -5 e 6:
-4, -3, -2, -1, 0, 1, 2, 3, 4, 5
Soma dos impares: -3-1+0+1+3+5 = 5
Exemplo 02
Leia 2 valores inteiros X e Y. A seguir, calcule e mostre a soma dos
números ímpares entre eles
Ex:
6
14
Números entre 6 e 14:
- 7, 8, 9, 10, 11,12,13
Soma dos impares: 7+9+11+13 = 40
Ex:
6
-5
Números entre -5 e 6:
-4, -3, -2, -1, 0, 1, 2, 3, 4, 5
Soma dos impares: -3-1+0+1+3+5 = 5
• Ou seja, devemos percorrer entre os números, e acumular somente os impares
• A duas entradas, definem o valor inicial(inicialização) e final(condição) do problema
• Também devemos verificar qual o menor valor e maior valor
Exemplo 02 – Pseudocódigo
LEIA(X)
LEIA(Y)
SE ( X > Y )
# caso o primeiro numero seja o menor
cont = X+1
# x+1, pois queremos pegar os números ENTRE x e Y
valor_final = Y
# Y, aqui não precisa, pois iremos utilizar o sinal de menor.
SENAO
# caso o segundo numero seja o menor
cont = Y+1
valor_final = X
ENQUANTO (valor_inicial < valor_final )
SE (cont%2 == 1) #
soma = soma + cont
cont = cont +1
Download