Upload
daniel-macario
View
216
Download
0
Embed Size (px)
Citation preview
8/16/2019 006 Repeticao Loops
1/28
Algoritmos
Prof. Carlos Alves
8/16/2019 006 Repeticao Loops
2/28
Estrutura de Repetição
• Até o momento vimos estruturas seqüenciais, alguns
problemas pode requisitar que uma operação seja
executada um certa quantidade de vezes.
• Exemplo: Entre com o salário de 100 funcionários e
calcule a média dos salário.
• Solução Seqüencial: Você teria que criar 100 linhascom a função leia (cin) para armazenar os valores.
8/16/2019 006 Repeticao Loops
3/28
Estrutura de Repetição
• Para resolver estes tipos de problemas, onde um certo
conjunto de operações deve ser executado mais de
uma vez, vamos introduzir novas estruturas de controle,
chamadas estruturas de repetição.
• As estruturas de repetição podem ser utilizadas para
vários tipos de problemas como, por exemplo, teste de
senha, contagem e soma de valores, recebimento deuma certa quantidade de dados de entrada, percorrer
estruturas de dados (vetores).
8/16/2019 006 Repeticao Loops
4/28
Repetição com Variável de Controle
• A estrutura de repetição com variável de controle serve
para se executar um trecho de código n vezes, onde n
é um número conhecido previamente.
• O número de repetições executado por esta estrutura é
controlado por uma variável, chamada variável de
controle. Esta variável começa com um valor inicial
estabelecido pelo programador e, a cada repetição
(iteração ou loop), o valor é incrementado ou
decrementado, até alcançar o valor final, também
definido pelo programador.
8/16/2019 006 Repeticao Loops
5/28
Repetição com Variável de Controle
• Vejamos como ficaria o programa para ler o salário de
100 funcionários e calcular a média dos salários.
• Portugolinício
inteiro: SALARIO, SAL_TOTAL;
para CONTADOR de 1 até 100 faça
leia (SALARIO);
SAL_TOTAL = SAL_TOTAL + SALARIOfimpara;
ESCREVA(SAL_TOTAL/100);
fim.
8/16/2019 006 Repeticao Loops
6/28
Repetição com Variável de Controle
• C++
#include
using namespace std;
int main(int argc, char *argv[]) {
int salario, sal_total=0;
for (int i = 0; i < 100; i++) {
cout
8/16/2019 006 Repeticao Loops
7/28
Repetição com Variável de Controle
• Em C++, a estrutura de repetição com variável de
controle é representada pelo comando for , que é dividido
em três partes, separadas por ponto e vírgula (;). Aprimeira parte inicializa a variável de controle com o valor
inicial (zero, no caso do exemplo). A segunda parte é o
critério de parada (contador < 100). A terceira parte é o
incremento ou decremento da variável de controle.
8/16/2019 006 Repeticao Loops
8/28
Repetição com Teste no Início
• A estrutura de repetição com teste no início é uma
estrutura na qual o teste para se verificar se o loop
executará a próxima vez ou não é realizado no início daestrutura, antes de qualquer outro comando. Dessa
forma, se o teste der falso logo na primeira vez, os
comandos dentro da estrutura não serão executados
nenhuma única vez
8/16/2019 006 Repeticao Loops
9/28
8/16/2019 006 Repeticao Loops
10/28
Repetição com Teste no Início
• No início da execução, a condição lógica é avaliada. Se
ela for verdadeira, os comando dentro da estrutura de
repetição são executados. Quando o programa chega nainstrução fimenquanto, ele volta novamente ao início e
avalia a condição novamente. Esse processo continua
enquanto a condição for verdadeira.
8/16/2019 006 Repeticao Loops
11/28
Repetição com Teste no Início
• Portugolinício
inteiro: IDADE, CONTADOR;
caracter: NOME;CONTADOR 30
então imprima (NOME);fimse;
CONTADOR
8/16/2019 006 Repeticao Loops
12/28
Repetição com Teste no Início
• O comando da estrutura de repetição com teste no início
em C++ é o while, e sua sintaxe é a seguinte:
while (condição_lógica) {
comando_1;
comando_2;
...comando_n;
}
8/16/2019 006 Repeticao Loops
13/28
Repetição com Teste no Início
• C++#include
using namespace std;
int main(int argc, char *argv[]) {
int idade, cont =0; string nome;
while ( cont < 5){
cout>idade;
if (idade > 30){
cout
8/16/2019 006 Repeticao Loops
14/28
Uso de Condição de Parada (Flag)
• Nos exemplos vistos até o momento, as estruturas de
repetição são executadas um número fixo de vezes (n
vezes), que foi definido pelo programador no momento da
construção do programa.
• No entanto, na grande maioria das vezes o programador
não saberá quantas vezes a estrutura deverá ser
executada, pois esta é uma decisão que geralmente cabe
ao usuário do programa
8/16/2019 006 Repeticao Loops
15/28
Uso de Condição de Parada (Flag)
• Neste caso, precisamos criar uma condição de parada
(também chamada de flag).
• Exemplo: Execute enquanto a idade informada for > 0.
Quando o usuário digitar 0 (zero) o programa será
finalizado
8/16/2019 006 Repeticao Loops
16/28
Uso de Condição de Parada (Flag)
• Portugol
início
inteiro: IDADE;
caracter: NOME;
leia (IDADE);
enquanto IDADE > 0 faça
leia (NOME);
se IDADE > 30
então imprima (NOME);fimse;
leia (IDADE);
fimenquanto;
fim.
8/16/2019 006 Repeticao Loops
17/28
Uso de Condição de Parada (Flag)
• Este programa funciona da seguinte maneira. Primeiro é
lida uma idade fora da estrutura de repetição. Se ela for
menor ou igual a 0 (zero), o programa não entra na
estrutura, pois o usuário informou justamente um valor quesatisfaz o critério de parada e, portanto, não quer informar
nenhum dado.
8/16/2019 006 Repeticao Loops
18/28
Uso de Condição de Parada (Flag)
• C++#include
using namespace std;
int main(int argc, char *argv[]) {
int idade;
string nome;
cout idade;
while (idade > 0){
cout nome;
if (idade > 30){
cout
8/16/2019 006 Repeticao Loops
19/28
Repetição com Teste no Final
• A estrutura de repetição com teste no final possui um
funcionamento semelhante ao da estrutura de repetição
com teste no início. A principal diferença entre elas é que
no teste no final os comandos que estão dentro daestrutura de repetição serão obrigatoriamente executados
pelo menos uma vez.
8/16/2019 006 Repeticao Loops
20/28
Repetição com Teste no Final
• Em Portugol, o comando para a estrutura de repetição
com teste no final é o repita...até.
início
inteiro: IDADE;caracter: NOME;
repita
leia (NOME, IDADE);
se IDADE > 30então imprima (NOME);
fimse;
até IDADE
8/16/2019 006 Repeticao Loops
21/28
Repetição com Teste no Final
• C++
do {
comando_1;
comando_2;
...
comando_n;
} while (condição_lógica);
8/16/2019 006 Repeticao Loops
22/28
Repetição com Teste no Final
• C++int main(int argc, char *argv[])
{
int idade; string nome;
do {
cout nome;
cout idade;
if (idade > 30) {
cout
8/16/2019 006 Repeticao Loops
23/28
Repetição com Teste no Final
• Portugol
Repita
leia (ALTURA);até ALTURA > 0 e ALTURA < 3;
C++
do{cin >> altura;
} while (altura = 3)
8/16/2019 006 Repeticao Loops
24/28
Repetição - Exemplos
• For
//Imprimir 100 números na tela.
int main(int argc, char *argv[])
{
cout
8/16/2019 006 Repeticao Loops
25/28
Repetição - Exemplos
• For //Ler 10 numero do teclado e imprimir a média.
int main(int argc, char *argv[])
{
int num, total=0;for (int i=0; i < 10; i++)
{
cout
8/16/2019 006 Repeticao Loops
26/28
Repetição - Exemplos
• while//Ler 10 numero do teclado e imprimir a média.
int main(int argc, char *argv[]) {
int cont, num, total;
cont = num = total = 0;while ( cont < 10){
cout
8/16/2019 006 Repeticao Loops
27/28
Repetição - Exemplos
• Do//Ler 10 numero do teclado e imprimir a média.
int main(int argc, char *argv[]) {
int cont, num, total;
cont = num = 0;do {
cout
8/16/2019 006 Repeticao Loops
28/28