Escolar Documentos
Profissional Documentos
Cultura Documentos
Eletrônica
Laços de repe6ção – for, while, do-while
Prof.: Hansenclever de França Bassani (Hans)
h8@cin.ufpe.br
Site da disciplina: www.cin.ufpe.br/~h8/ce
CIn.ufpe.br
Estruturas de Repe6ção
• Imagine um programa que calcula a média de um aluno.
• Este programa é bastante simples, bastaria:
– Ler as notas do teclado;
– Calcular a média; e
– Imprimir o resultado.
CIn.ufpe.br
Estruturas de Repe6ção
• Como poderíamos fazer para calcular a média de todos os
alunos de uma turma em um mesmo programa?
• Observe que precisamos repePr os mesmos três comandos,
várias vezes, até que a média de todos os alunos tenha sido
calculada e impressa.
• As linguagens de programação oferecem mecanismos para
repePr comandos varias vezes, que são conhecidos como Laços
(em inglês: Loops).
• Em C temos três opções de estruturas de repePção:
– while
– do – while
– for
CIn.ufpe.br
Estruturas de Repe6ção - while
• Fluxograma do while:
Avaliar falso
condição
(repePr) verdadeiro
Executar
comandos
prosseguir
CIn.ufpe.br
Estruturas de Repe6ção - while
• Variações do while:
CIn.ufpe.br
Estruturas de Repe6ção - while
• Com o while, o programa anterior poderia ser alterado para
trabalhar com vários alunos:
Variável repe6r:
valor 1: o programa deve
conPnuar;
valor 0: o programa deve
terminar.
O valor de repe6r pode
mudar para zero na linha 21
caso o caractere lido não
seja ‘s’, o que finaliza o laço.
CIn.ufpe.br
Estruturas de Repe6ção - while
• Exemplos de uso do while:
CIn.ufpe.br
Estruturas de Repe6ção: do-while
• Fluxograma do do-while:
Executar
comandos
(repePr)
verdadeiro Avaliar
condição
falso
prosseguir
CIn.ufpe.br
Estruturas de Repe6ção: do-while
• A estrutura do-while possui a seguinte sintaxe:
CIn.ufpe.br
Estruturas de Repe6ção: do-while
• Variações do do-while:
CIn.ufpe.br
Estruturas de Repe6ção: do-while
• Com o do-while, o programa anterior poderia ser escrito assim:
Podemos uPlizar
expressões booleanas tão
complexas quanto se
queira dentro dos
parênteses do while.
Obs.: Zero sempre é
interpretado como falso e
qualquer outro número
como verdadeiro.
CIn.ufpe.br
Estruturas de Repe6ção - do-while
• Exemplos de uso do do-while:
CIn.ufpe.br
Estruturas de Repe6ção: Contadores
• Algumas vezes sabemos exatamente quantas vezes queremos
executar os comandos.
• Nesses casos podemos uPlizar uma variável inteira como
contador, incrementando-a a cada execução, e verificando se a
mesma aPngiu valor desejado de execuções.
• Ex.: Imprimir todos os números de 1 a 15:
Inicialização
Avaliar
condição
incremento
CIn.ufpe.br
Estruturas de Repe6ção - for
• Fluxograma do for:
Inicialização
Avaliar falso
condição
verdadeiro
Executar
comandos
incremento
prosseguir
CIn.ufpe.br
Estruturas de Repe6ção: for
• A estrutura for é especializada para estes casos.
• Sua sintaxe é a seguinte:
CIn.ufpe.br
Estruturas de Repe6ção: for
• Se soubermos de antemão quantos alunos há na turma, por
exemplo: 5 , o programa anterior poderia ser escrito assim:
CIn.ufpe.br
Estruturas de Repe6ção: for
• Outros exemplos de uso do for:
CIn.ufpe.br
Estruturas de Repe6ção: for
• Outros exemplos de uso do for:
CIn.ufpe.br
Estruturas de Repe6ção: break
• O break permite encerrar a execução de um laço no meio de sua
execução. Pode ser uPlizado com
– while, do-while, ou for
• A sintaxe é a seguinte:
CIn.ufpe.br
Estruturas de Repe6ção: con6nue
• O con6nue permite passar para a próxima iteração no meio do laço.
– Pode ser uPlizado no while, do-while, ou no for.
• A sintaxe é a seguinte:
CIn.ufpe.br
Estruturas de Repe6ção:
Laços Aninhados
• Todos os laços vistos podem ser aninhados, uns dentro dos
outros. Exemplos:
CIn.ufpe.br
Estruturas de Repe6ção:
Laços Aninhados
• Exemplo:
CIn.ufpe.br
Estruturas de Repe6ção: resumo
• Como escolher entre as estruturas de repePção?
if (numero de vezes é conhecido) {
usa-se o for
} else {
if (teste precisa ser feito no inicio) {
usa-se while
} else {
usa-se do-while
}
}
– Porém, na maioria dos casos, pode-se escolher mais de uma opção para
resolver cada Ppo de problema e acaba sendo uma questão de
preferência pessoal.
CIn.ufpe.br
Biblioteca <math.h>
• Em C, apenas cinco operações matemáPcas estão disponíveis
na linguagem padrão:
– Soma (+), Subtração (-), MulPplicação (*), Divisão (/) e Resto (%)
• Porém, muitas outras funções matemáPcas estão disponíveis
na biblioteca math.h. Ex.:
– Raiz quadrada: sqrt(x)
– Potenciação: pow(base, expoente)
– Logaritmo: log(x) – base e ou neperiano, log10(x) – base 10
– Módulo: abs(x) – inteiros, fabs(x) - para reais
– Seno, cosseno, tangente,...: sin(x), cos(x), tan(x),...
– Dentre muitas outras
• Veja aqui mais funções disponíveis em math.h:
– hpp://www.cplusplus.com/reference/cmath/
CIn.ufpe.br
Biblioteca <math.h>
• Exemplos de uso:
CIn.ufpe.br
A6vidade 1
1. Escreva um algoritmo que lê 50 números inteiros e em seguida
mostra a soma de todos os ímpares lidos.
– Altere o algoritmo anterior para que ele considere apenas a soma dos
ímpares que estejam entre 100 e 200.
2. Construa um algoritmo que leia um conjunto de 20 números
inteiros e mostre qual foi o maior e o menor valor fornecido.
– Altere o programa anterior para que ele não permita a entrada de
valores negaPvos.
CIn.ufpe.br
A6vidade 2
• Faça um programa para imprimir a tabuada de 1 a 9 uPlizando
laços de repePção. A saída do programa deve ser do Ppo:
1x1 = 1
1x2 = 2
...
1x9 = 9
//linha em branco
2x1 = 2
2x2 = 4
...
2x9 = 18
//linha em branco
3x1 = 3
3x2 = 6
...
...
9x1 = 9
...
9x9 = 81
CIn.ufpe.br
A6vidade 3
• Em uma disciplina com três exercícios, um professor deseja saber qual a
maior e a menor nota de cada exercício e qual a maior e a menor média
final. Faça um programa para auxiliá-lo nesta tarefa.
1. O programa deve receber como entrada três notas de cada aluno em
uma linha;
2. Deve perguntar ao usuário se deseja inserir as notas de outro aluno, e:
• Caso a resposta seja “sim” deve solicitar os dados do próximo aluno.
• Caso a resposta seja “não” deve mostrar a maior e a menor nota do
primeiro, do segundo, e do terceiro exercício e a maior e a menor média.
– Obs.: As notas devem ser impressas com duas casas decimais, de acordo com o
exemplo abaixo:
Entre com as notas do 1º aluno: 5.0 6.0 7.0
Deseja inserir as notas de outro aluno? (s/n):s
Entre com as notas do 2º aluno: 4.0 8.0 5.0
Deseja inserir as notas de outro aluno? (s/n):s
Entre com as notas do 3º aluno: 5.0 6.0 9.0
Deseja inserir as notas de outro aluno? (s/n):n
X i2 − Y
X i +1 = X i − , onde X i é a aproximação anterior e X i +1 a nova.
2Xi
– A aproximação deve conPnuar até que o valor obPdo mude pouco com o passar das
iterações (menos de e = 0.1), Ou seja:
X i +1 − X i < e, onde e = 0.1
– Compare o resultado obPdo com o resultado produzido pela função sqrt() disponível na
biblioteca <math.h>:
X n − sqrt(Y ) , onde n é o número de iterações realizadas
– Obs.: O valor absoluto | . | pode ser calculado através da função fabs(), disponível na
biblioteca <math.h>.
CIn.ufpe.br