Estruturas Repeticao 1-Comando Enquanto

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 48

Estruturas de Repetição 1:

Comando ENQUANTO
Introdução à Programação
Romero Medeiros
[email protected]
Estruturas de repetição
• Diferente do ser humano, o computador não se cansa de realizar operações
repetitivas.

• Diante disto, podemos incluir nos algoritmos as estruturas de repetição.

• O que é uma repetição?


• É uma instrução que permite a execução de um trecho de algoritmo várias vezes seguidas.
• Também chamada a laço ou loop;

• Tipos de estrutura de repetição:


• Repetição com teste no início (enquanto);
• Repetição com teste no final (repita);
• Repetição com variável de controle (para).
Comando ENQUANTO
• Indica que os comandos seguintes serão executados, desde que uma expressão lógica seja
verdadeira.

• Esta estrutura é chamada de repetição com teste no início


• A decisão entre repetir e parar o laço é feita no início do comando.
• Se o teste for falso desde o início, o laço não será executado.

• Ao encontrar o fim dos comandos, o computador volta para a 1ª linha do laço e avalia
novamente a expressão lógica:
• Se verdadeira, o computador fará uma nova execução do trecho;
• Se falsa, o computador pára a execução e continua no próximo comando após o trecho repetido.

enquanto <expressão_lógica> faça


<comandos>;
Exemplo de comando ENQUANTO
• Fazer um algoritmo para ler diversos números informados pelo
usuário, e após cada leitura exibir se o número é par ou ímpar.
Considere que ao fornecer um valor negativo o usuário deseja
encerrar e entrada de dados.
Exemplo de comando ENQUANTO

Variáveis
num : inteiro;
Início
enquanto num >= 0 faça
escrever “Digite um número (negativo para sair): “;
ler num;

se num % 2 == 0 então
escrever “O número é par”
senão
escrever “O número é ímpar”;
Fim
Exemplo de comando ENQUANTO
Mas, qual o
valor de
Variáveis num na 1ª
num : inteiro; execução?
Início
enquanto num >= 0 faça
escrever “Digite um número (negativo caso queira sair): “;
ler num;

se num % 2 == 0 então
escrever “O número é par”
senão
escrever “O número é ímpar”;
Fim
Exemplo de comando ENQUANTO
• Como podemos contornar este problema?
• Retirando a leitura da variável de dentro do laço:
• Será gerado um laço infinito, pois “num” será lida apenas uma vez, e se for >= 0, o laço
nunca terminará.

• Colocar uma leitura antes do laço, e uma segunda leitura como últimos
comandos dentro do laço.
Exemplo de comando ENQUANTO
Variáveis
num : inteiro;
Início
escrever “Digite um número (negativo caso queira sair): “;
ler num;

enquanto num >= 0 faça


se num % 2 = 0 então
escrever “O número é par”
senão
escrever “O número é ímpar”;

escrever “Digite um número (negativo caso queira sair): “;


ler num;
Fim
Exemplo de comando ENQUANTO

num = get_integer("Digite um número (negativo para sair): ","");

while (num >= 0)


{
if num mod 2 = 0
show_message("O número é par");
else
show_message("O número é impar");
num = get_integer("Digite um número (negativo para sair): ","");
}
Variáveis contadoras
• Uma variável é chamada de contadora quando armazena um número referente a
uma quantidade de elementos ou iterações.

• Este tipo de variável é muito comum em estruturas de repetição, dada as suas


diversas aplicações em problemas que envolvem contagens de valores.
Exemplo de variáveis contadoras
Imprimir todos os números inteiros de 1 a 100.
Exemplo de variáveis contadoras
Imprimir todos os números inteiros de 1 a 100.

Variáveis
valor : inteiro;
Início
valor <- 1;

enquanto valor <= 100 faça


escrever valor;
valor <- valor + 1;
Fim
Exemplo de variáveis contadoras
Imprimir todos os números inteiros de 1 a 100 (GML).

valor = 1;

while (valor <= 100)


{
show_message(string(valor));
valor = valor + 1;
}
Variáveis acumuladoras
• Uma variável é chamada de acumuladora quando tem por
característica armazenar o resultado acumulado de uma série de
valores.

• Quando armazenamos a soma de uma quantidade pequena de


números, a atribuição é direta. Numa repetição devemos armazenar
a soma de diversos números sucessivos, e para isto utilizamos uma
variável acumuladora.
Exemplo de variáveis acumuladoras
Calcular a soma de diversos números reais informados pelo usuário. A
entrada de dados termina com o número -999.
Exemplo de variáveis acumuladoras
Variáveis
num: inteiro;
soma : inteiro;
Início
soma <- 0;

escrever “Digite um número número (ou -999 para sair): “;


ler num;

enquanto num != -999 faça


soma <- soma + num;

escrever “Digite um número número (ou -999 para sair): “;


ler num;

escrever “A soma é: ”, soma;


Fim
Exemplo de variáveis acumuladoras
Variáveis
num: inteiro;
soma : inteiro;
A variável é iniciada
Início como 0 pois, caso o usuário
soma <- 0; forneça -999 na primeira
execução, o valor total da
soma é 0.
escrever “Digite um número número (ou -999 para sair): “;
ler num;

enquanto num != -999 faça


soma <- soma + num;

escrever “Digite um número número (ou -999 para sair): “;


ler num;

escrever “A soma é: ”, soma;


Fim
Exemplo de variáveis acumuladoras

soma = 0;

num = get_integer("Digite um número (ou -999 para sair): ","");

while (num != -999)


{
soma = soma + num;
num = get_integer("Digite um número (ou -999 para sair): ","");
}
show_message("A soma é: " + string(soma));
Laços infinitos
• Ao trabalhar com repetições, é preciso tomar cuidado para não criar
um laço infinito, ou seja, um laço que não termina.

• Neste tipo de situação a máquina permaneceria executando o laço


indefinidamente, até que ocorra uma intervenção externa.
Exemplo de laço infinitos
Imprimir os quadrados dos números inteiros de 1 a 10.
Exemplo de laço infinitos

Variáveis
valor: real;
Início
valor <- 1;
enquanto valor <= 10 faça
escrever QUAD(valor);
valor <- valor - 1;
Fim
Exemplode laço infinitos

Variáveis
valor: real;
Este decremento
Início provoca
valor <- 1; um loop infinito.
enquanto valor <= 10 faça
escrever QUAD(valor);
valor <- valor - 1;
Fim
Repetições aninhadas
• Da mesma forma que é permitido o encadeamento de estruturas de
decisão, também é possível encadear estruturas de repetição.

• Um encadeamento de repetições ocorre quando há necessidade de


efetuar um laço dentro de outro.

• Neste tipo de situação, o algoritmo possui repetições controladas por


um teste interno e outro externo.
Repetições aninhadas
Imprimir as tabuadas de multiplicação dos números 3, 4, 5 e 6.
Exemplo de repetições aninhadas
Variáveis
num: inteiro;
mult: inteiro;
cont : inteiro;
Início
num <- 3;

enquanto num <= 6 faça


escrever “Tabuada de ”, num;
cont <- 1;

enquanto cont <= 10 faça


mult <- num * cont;
escrever num, “x”, cont, “=“, mult;
cont <- cont + 1;

num <- num + 1;


Fim
Exemplo de repetições aninhadas

num = 3;

while (num <= 6)


{
show_message("Tabuada de: " + string(num));
cont = 1;

while (cont <= 10)


{
mult = cont * num;
show_message(string(num) + " X " + string(cont) + " = " + string(mult));
cont = cont + 1;
}
num = num + 1;
}
EXEMPLOS
Exemplo 1
Faça um algoritmo que leia diversos números positivos e imprima a
metade do valor de cada um deles. Um número negativo sinaliza o fim
da leitura de números.
Exemplo 1 – Estruturando solução
• Entradas
• Números positivos

• Saídas
• A metade do valor dos números

• Detalhes
• Usar o comando ENQUANTO repetir a leitura de números até que seja digitado um valor
negativo.
• Fazer a primeira leitura fora do comando ENQUANTO para tratar o caso do usuário digitar o
primeiro valor negativo.
Exemplo 1 - Algoritmo
Variáveis
numero : real;
metade : real;
Início
escrever “Digite um número (negativo caso deseje sair): ”;
ler numero ;

enquanto numero >= 0 faça


metade <- numero / 2;
escrever “Metade de ”, numero, “é: ”, metade;

escrever “Digite um número (negativo caso deseje sair): ”;


ler numero ;

Fim
Exemplo 1 - Algoritmo

numero = get_integer("Digite um número (negativo caso deseje sair): ","");

while (numero >= 0)


{
metade = (numero / 2);
show_message("Metade do valor de " + string(numero) + " é " +
string(metade));
numero = get_integer("Digite um número (negativo caso deseje sair): ","");
}
Exemplo 1 – Execuções do algoritmo
Digite um número (negativo caso deseje sair): 10
Metade de 10 é: 5
Digite um número (negativo caso deseje sair): 2,5
Metade de 2,5 é: 1,25
Digite um número (negativo caso deseje sair): 5000
Metade de 5000 é: 2500
Digite um número (negativo caso deseje sair): -1

Digite um número (negativo caso deseje sair): -1


Exemplo 2
Ler 10 números inteiros fornecidos pelo usuário, e exibir quantos
números ímpares foram informados.
Exemplo 2 – Estruturando solução
• Entradas
• 10 números inteiros

• Saídas
• Quantidade de números ímpares

• Detalhes
• Serão necessárias 10 leituras. Podemos criar uma variável contadora para controlar este laço.
• Precisaremos de uma outra variável para contar a quantidade de números ímpares.
• Não podemos deixar para contar após a repetição, pois cada número fornecido apaga o anterior.
Logo precisamos ir contando após cada entrada, incrementando uma nova variável contadora.
• Esta nova variável contadora só é incrementada se o número informado for ímpar.
Exemplo 2 - Algoritmo
Variáveis
contador : inteiro;
numero : inteiro;
contador_impar : inteiro;
Início
contador <- 1;
contador_impar <- 0;

enquanto contador <= 10 faça


escrever “Digite um número inteiro: ”;
ler numero ;

contador <- contador + 1;

se (numero % 2) != 0 então
contador_impar <- contador_impar + 1;

escrever “O total de ímpares é: “, contador_impar ;


Fim
Exemplo 2 - Algoritmo

contador = 1;
contador_impar = 0;

while (contador <= 10)


{
numero = get_integer("Digite um número inteiro: ","");
contador = contador + 1

if (numero mod 2) != 0
contador_impar = contador_impar + 1;
}

show_message("O total de impares é " + string(contador_impar));


Exemplo 2 – Execuções do algoritmo

Digite um número inteiro: 10


Digite um número inteiro: 70
Digite um número inteiro: 13
Digite um número inteiro: 93
Digite um número inteiro: 125
Digite um número inteiro: 3
Digite um número inteiro: 16
Digite um número inteiro: 54
Digite um número inteiro: 86
Digite um número inteiro: 29
O total de ímpares é: 5
Exemplo 3
Ler diversos números e exibir qual é o maior de todos. O código -1
sinaliza o fim da leitura.
Exemplo 3 – Estruturando solução
• Entradas
• Números

• Saídas
• Maior número dentre os informados

• Detalhes
• Para guardar o maior número criaremos uma variável. A cada entrada é preciso saber se o
número lido deve ser guardado como o maior de todos.
Exemplo 3 - Algoritmo
Variáveis
numero: real;
maior_numero : real;
Início
escrever “Digite um número (ou -1 para sair): “;
ler numero;

maior_numero <- numero;

enquanto numero != -1 faça


se numero > maior_numero então
maior_numero <- numero ;

escrever “Digite um número (ou -1 para sair): “;


ler numero;

se maior_numero != -1 então
escrever “O maior número é: ”, maior_numero;
senão
escrever “Nenhum número válido foi informado.”;
Fim
Exemplo 3 - Algoritmo

numero = get_integer("Digite um número (ou -1 para sair): ","");

maior_numero = numero;

while (numero != -1)


{
if numero > maior_numero
maior_numero = numero;

numero = get_integer("Digite um número (ou -1 para sair): ","");


}
if maior_numero != -1
show_message("O maior número é " + string(maior_numero));
else
show_message("Nenhum número válido foi informado ");
Exemplo 3 – Execuções do algoritmo
Digite um número (ou -1 para sair): 10
Digite um número (ou -1 para sair): 3
Digite um número (ou -1 para sair): 3267
Digite um número (ou -1 para sair): 65
Digite um número (ou -1 para sair): -1
O maior número é: 3267

Digite um número (ou -1 para sair): -1


Nenhum número válido foi informado.
Exemplo 4
Uma fábrica de automóveis produz uma determinada quantidade de
automóveis por dia. Faça um algoritmo para ler do usuário a
quantidade produzida diariamente ao longo de um ano e depois
informe:
• A quantidade produzida no ano todo
• A menor produção diária

• Considere que -1 indica o fim da digitação.


Exemplo 4 – Estruturando solução
• Entradas
• Veículos produzidos diariamente

• Saídas
• A quantidade produzida no ano todo
• A menor produção diária

• Detalhes
• Precisamos de uma variável acumuladora para o total produzido e outra para a menor
produção
• Precisamos fazer uma leitura fora do comando ENQUANTO para caso a primeira entrada seja
-1
Exemplo 4 - Algoritmo
Variáveis
producao: inteiro;
total_produzido: inteiro;
menor_producao: inteiro;
Início
escrever “Digite a produção do dia: ”;
ler producao;

total_produzido <- 0;
menor_producao <- producao;

enquanto producao != -1 faça


total_produzido <- total_produzido + producao;

se producao < menor_producao então


menor_producao <- producao ;

escrever “Digite a produção do dia: ”;


ler producao;

escrever “Total produzido: ”, total_produzido;


escrever “Menor produção: ”, menor_producao;
Fim
Exemplo 4 - Algoritmo
producao = get_integer("Digite a produção do dia: ","");

total_produzido = 0;
menor_producao = producao;

while (producao != -1)


{
total_produzido = total_produzido + producao;

if producao < menor_producao


menor_producao = producao;

producao = get_integer("Digite a produção do dia: ","");

}
show_message("total produzido: " + string(total_produzido));
show_message("menor produção: " + string(menor_producao));
Exemplo 4 – Execuções do algoritmo
Digite a produção do dia: 1
Digite a produção do dia: 2
Digite a produção do dia: 3
Digite a produção do dia: 4
Digite a produção do dia: 5
Digite a produção do dia: -1
Produção total: 15
Menor produção: 1
Referências da aula
• Adaptado da aula Introdução à Programação do Prof. Ricardo Araújo
do curso de Ciência da Computação da FBV.

• Gilvan Vilarim. Algoritmos: Programação para Iniciantes. Editora


Ciência Moderna, 2004.

Você também pode gostar