Logo Passei Direto
Buscar
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Algoritmos e 
Estruturas de Dados I
Prof. André Grützmann
Aulas 19Aulas 19--2020
Estruturas de RepetiEstruturas de Repetiççãoão
(Para..)(Para..)
(Enquanto..)(Enquanto..)
(Fa(Façça..Enquanto)a..Enquanto)
• Existem situações em que pode ser 
necessário repetir um trecho do algoritmo 
ou mesmo o algoritmo inteiro
• A quantidade de repetições pode ser 
conhecida previamente (ex.: ler 50 notas) 
ou pode depender do usuário (ex.: 
quantos números deseja digitar para 
calcular a média?)
• Em ambos os casos, usamos estruturas de 
repetição
Estruturas de Repetição
para .. 
– usada quando se sabe o número de vezes que um trecho 
deve ser executado
para I Å valor_inicial ATÉ valor_final [PASSO n]
INÍCIO
COMANDO1
COMANDO2
...
COMANDO c
FIM_PARA
• Se só existir um comando a ser executado, a indicação de 
início e fim de bloco pode ser suprimida
Estruturas de Repetição
para I Å valor_inicial ATÉ valor_final PASSO n
INÍCIO
COMANDO1
COMANDO2
...
COMANDO c
FIM_PARA
• A execução irá contar de forma crescente ou decrescente 
do valor_inicial para o valor_final, definido pelo comando 
PASSO
• A contagem deve levar a condição a se tornar falsa em 
algum momento
Estruturas de Repetição
para i Å 1 ATÉ 50
escreva(i);
para i Å 1 ATÉ 50 Passo 2
escreva(i);
Estruturas de Repetição
Mostra nºs de 1 a 
50
Mostra nºs de 1 a 
49, em intervalos 
de 2. 
para i Å 1 ATÉ 50
INÍCIO
iÅi+1;
escreva(i);
FIM_PARA
Estruturas de Repetição
Mostra números de 2 a 50, 
em intervalos de 2. 
Um intervalo é devido ao 
incremento do para e 
outro é devido ao iÅi+1
for (i=valor_inicial; condição; (in/de)cremento de i)
comando;
• i = valor_inicial // atribuição de valor inicial a i
• condição // expressão relacional testada a cada 
repetição. Quando se tornar falsa, a repetição 
termina
• (in/de)cremento de i // a cada repetição, o valor 
de i é alterado de acordo com a expressão 
definida aqui
Estruturas de Repetição
for (i=1; i<50; i++)
printf(“%d\n”,i);
for (i=2; i<=100; i=i+2)
printf(“%d\n”,i);
for (i=100; i>=1; i--)
printf(“%d\n”,i);
for (i=50; i>5; i=i-5)
printf(“%d\n”,i);
Estruturas de Repetição
// Mostra os números de 1 a 49 
(ordem crescente)
// Mostra os números pares de 2 
a 100 (ordem crescente)
// Mostra os números de 100 a 1
// Mostra os múltiplos de 5 de 50 
até 10 (ordem decrescente)
Quando existe mais de um comando, é necessário 
marcar o início e fim de blocos com { } 
for (i=1; i<=50; i++)
{
printf(“Digite os cinquenta numeros”);
scanf(“%d”,&num);
soma=soma+num;
}
Estruturas de Repetição
enquanto .. 
– usada quando não se sabe o número de vezes 
que um trecho deve ser executado 
– também pode ser usada quando se conhece o nº
de repetições
– caso o trecho a ser repetido contenha mais de 
um comando, é necessário marcar o início e fim 
de bloco { }
– complementarmente, esta estrutura realiza o 
teste de uma condição
Estruturas de Repetição
enquanto .. 
– enquanto a condição for verdadeira, a repetição 
continuará acontecendo
– o teste da condição é feito no início da 
estrutura, portanto, se a condição for falsa na 
primeira comparação, o trecho de repetição não 
será executado nenhuma vez
Estruturas de Repetição
enquanto .. 
enquanto (condição)
comando;
enquanto (condição)
INÍCIO
comando1;
…
comando n;
FIM
Estruturas de Repetição
xÅ0;
enquanto (x<30)
INÍCIO
escreva(x); 
xÅx+1;
FIM
xÅ0;
enquanto (x<30)
INÍCIO
xÅx+1;
escreva(x); 
FIM
Estruturas de Repetição
Exibe os números de 0 a 29
Exibe os números de 1 a 30
while .. 
while (condição)
comando;
while (condição)
{
comando1;
comando2;
comando3;
}
Estruturas de Repetição
i=0;
while (i <= 10)
{
printf(“%d\n”,i);
i=i+2;
}
printf(“%d\n”,i+2);
• A estrutura de repetição exibe 0,2,4,6,8,10
• O comando após a estrutura exibe 14
Estruturas de Repetição
i=0;
while (i >= 10)
{
printf(“%d\n”,i);
i=i+2;
}
printf(“%d\n”,i+2);
• A estrutura de repetição não exibe nada
• O comando após a estrutura exibe 2
Estruturas de Repetição
i=0;
while (i != 10)
{
printf(“%d\n”,i);
i=i+2;
}
printf(“%d\n”,i+2);
• A estrutura de repetição exibe 0,2,4,6,8
• O comando após a estrutura exibe 12
Estruturas de Repetição
faça .. enquanto (condição)
– usada quando não se sabe o número de vezes 
que um trecho deve ser executado 
– também pode ser usada quando se conhece o nº
de repetições
– é necessário marcar o início e fim de bloco { }
– complementarmente, esta estrutura realiza o 
teste de uma condição
– independente da condição, os comandos serão 
executados pelo menos uma vez
Estruturas de Repetição
faça .. enquanto (condição)
– também é chamada de repita .. até (condição)
– a estrutura repita .. até possui uma diferença 
no teste da condição. 
– existe repetição até que a condição se torne 
verdadeira
– ela é comumente usada no Pascal
– sempre que for usar a estrutura repita .. até, 
lembre-se da diferença no teste da condição
Estruturas de Repetição
faça .. enquanto (condição)
faça
INÍCIO
comando1;
FIM
enquanto (condição);
Estruturas de Repetição
faça .. enquanto (condição)
iÅ0;
faça
INÍCIO
escreva(i);
iÅi+1;
FIM
enquanto (i<10);
• Mostra os nºs de 0 a 10
Estruturas de Repetição
faça .. enquanto (condição)
iÅ10;
faça
INÍCIO
escreva(i);
iÅi+1;
FIM
enquanto (i<10);
• Mostra apenas o nº 10
Estruturas de Repetição
faça .. enquanto (condição)
iÅ10;
faça
INÍCIO
iÅi+1;
escreva(i);
FIM
enquanto (i<10);
• Mostra o nº 11
Estruturas de Repetição
repita .. até (condição)
repita
INÍCIO
comando1;
FIM
até (condição);
Estruturas de Repetição
repita .. até (condição)
iÅ0;
repita
INÍCIO
iÅi+1;
escreva(i);
FIM
até (i=10);
• Mostra os nºs de 1 a 10 (sai da repetição quando i 
se torna igual a 10)
Estruturas de Repetição
i=0;
do
{
printf(“%d”,i);
i++;
}
while (i<=10);
• Exibe nºs de 0 a 10
i=0;
do
{
i++;
printf(“%d”,i);
}
while (i<=10);
• Exibe nºs de 1 a 11
Estruturas de Repetição
i=0;
do
{
printf(“%d”,i);
}
while (i<=10);
• Loop infinito mostrando sempre o nº 0
i=1;
do
{
i=i+2;
printf(“%d”,i);
}
while (i!=10);
• Loop infinito mostrando nºs ímpares
Estruturas de Repetição
Um funcionário de uma empresa recebe aumento 
salarial anualmente. Sabe-se que:
• Esse funcionário foi contratado em 2005, com 
salário inicial de R$1.000,00
• Em 2006, ele recebeu aumento de 1,5% sobre seu 
salário inicial
• A partir de 2007 (inclusive), os aumentos salariais 
sempre corresponderam ao dobro do percentual do 
ano anterior
• Faça um algoritmo que determine o salário 
atual deste funcionário, a partir da leitura do 
ano corrente.
Exercício 1
ALGORITMO Reajuste;
i,ano,sal,nsal,perc : NÚMERO;
INÍCIO
LEIA ano;
salÅ1000;
percÅ0.015;
nsalÅsal+perc*sal;
PARA i Å 2007 ATÉ ano FAÇA
INÍCIO
percÅperc*2;
nsalÅnsal+nsal*perc;
FIM_PARA
ESCREVA(nsal);
FIM
Exercício 1
• Faça um algoritmo que leia um valor N 
inteiro e positivo, calcule e mostre o valor 
de E, conforme a fórmula:
E = 1 + 1/1! + 1/2! + 1/3! + … + 1/N!
Exercício 2
ALGORITMO Calculo;
n,i,e,j,fat : NÚMERO;
INÍCIO
LEIA n;
eÅ1;
PARA i Å 1 ATÉ n FAÇA
INÍCIO
fatÅ1;
PARA j Å 1 ATÉ I FAÇA
INÍCIO
fatÅfat*j;
FIM_PARA
eÅe+1/fat;
FIM_PARA
ESCREVA(e);
FIM
Exercício 2
• 2)Faça um programa que leia 21 valores 
inteiros, um de cada vez, e conte quantos deles 
estão em cada um dos intervalos [0, 25], (25, 
50], (50, 75], (75, 100]. 
• Nestes intervalos, os colchetes representam 
intervalo fechado (inclui extremo) eparênteses 
intervalo aberto (exclui extremo). 
• Ao final, o programa deve mostrar a 
quantidade de valores em cada intervalo.
Exercício 4
ALGORITMO ContaInterval;
i,x,cont1,cont2,cont3,cont4 : NÚMERO;
INÍCIO
cont1Å0; cont2Å0; cont3Å0; cont4Å0;
PARA i Å 1 ATÉ 21 FAÇA
INÍCIO
LEIA x;
SE (x>=0) E (x<=25) ENTÃO cont1:=cont1 + 1;
SE (x>25) E (x<=50) ENTÃO cont2:=cont2 + 1;
SE (x>50) E (x<=75) ENTÃO cont3:=cont3 + 1;
SE (x>75) E (x<=100) ENTÃO cont4:=cont4 + 1;
FIM_PARA
ESCREVA(“Intervalo1: ”,cont1);
ESCREVA(“Intervalo2: ”,cont2);
ESCREVA(“Intervalo3: ”,cont3);
ESCREVA(“Intervalo4: ”,cont4);
FIM
Exercício 4