Buscar

Comandos de Repetição - for

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Comandos de Repetição
Comandos de Repetição
for
while
do-while
9 
Estruturas de Controle de repetição permitem controlar o fluxo de execução de 
uma instrução, ou um conjunto de instruções/comandos, repetidas vezes. 
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comandos de Repetição - for
Comando for: É adequado para ser utilizado quando conhecemos “a priori”, a partir 
do enunciado do problema, exatamente o número de vezes (iterações) que o loop
(laço) será executado, ou, quando sabemos o número máximo de vezes que uma 
instrução ou grupo de instruções será executada. 
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Exemplos de problemas: 
¾ Obter a soma dos n primeiros números pares ou ímpares; 
¾ Obter o fatorial de n, (n≥0);
¾ Obter a soma dos n primeiros números naturais;
¾ Obter os divisores de um número inteiro positivo p (p>0);
¾ Verificar se um número inteiro positivo p é primo;
¾ Verificar se um número inteiro positivo p é perfeito
for (expressão1; expressão2; expressão3){
}
próxima_instrução;
Bloco de 
instruções no 
interior do 
comando
for
Onde: comandos e próxima_instrução são quaisquer instruções válidas da 
linguagem C, inclusive o próprio comando for.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
comandos;;
Forma geral Æ
Comandos de Repetição - for
ondeonde
expressão1: Expressão que inicializa a variável de controle do 
loop (laço). É executada uma única vez.
expressão2: Expressão associada a condição de terminação do 
comando de repetição. É executada antes do início de cada 
iteração. Se o seu valor for verdadeiro, então as instruções no 
interior do bloco serão executadas, senão, a próxima_instrução
após o comando for, será executada.
expressão3 : Expressão que incrementa ou decrementa a 
variável de controle, após o término de cada iteração É executada 
automaticamente após a ultima instrução no interior do grupo de 
instruções internas ao bloco associado ao comando for. Em geral 
faz o papel de um contador.
Observação: 
Lembre-se que na linguagem C, toda expressão diferente de 0 (zero) é verdadeira.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comandos de Repetição - for
...
for( i=1; i <= MAX; i++ )
printf(“ Linha <%d> \n”,i);
próxima_instrução;
...
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
expressão1
expressão2
expressão3
expressão1:Æ inicialização da variável de controle;
expressão2:Æ condição de terminação da laço;
expressão3:Æ incremento ou decremento da vc;
Comandos de Repetição - for
Exemplos de trechos de códigos
...
for(i=1; i <= MAX; i++)
if (i%2 == 0)
sp = sp + i;
else si = si + i;
próxima_instrução;
...
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comandos de Repetição - for
...
#define MAX 100
...
for(i=1; i <= MAX; i = i+2)
printf(“ Linha %d \n”,i);
próxima_instrução;
...
...
for(i=MAX; i >= 0; i--)
printf(“ Linha %d \n”,i);
próxima_instrução;
...
...
#define MAX 100
...
for(i=1; i <= MAX; i++) {
printf(“Próximo termo da seqüência >>: ”);
scanf(“%d”,&num);
if (num%2 == 0){
sp = sp + num; // sp += num;
qp = qp + 1; // qp++
}
else {
si = si + num; // si += num
qi = qi + 1; // qi++
}
} // for
...
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
ExemplosExemplos de de trechostrechos de de ccóódigosdigos
Comandos de Repetição - for
Múltiplos Comandos for
Há muitas situações no exercício cotidiano de programação onde uma ou mais 
instruções no interior de um comando for é um outro comando for. Esta 
construção lógica é referenciada por for´s aninhados ou encadeados.
Quantas vezes 
esta instrução 
será executada?
Para cada iteração (valor de i) no for mais externo, o for mais interno será
executado m vezes. Como o for mais externo é executado n vezes, então, o 
comando printf(.) será executado n*m vezes.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Exemplo:
...
for (i=1; i<=n; i++) // for mais externo
for (j=1; j<=m; j++) // for mais interno
printf(“%d \n”, i*j);
Simule os códigos abaixo e verifique quais serão as respectivas saídas.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Múltiplos Comandos for
...
for(i=1;i<3;i++)
for (j=2; j <=3; j++)
for (k=1; k<j; k++)
printf(“(%d %d %d) \n”,i,j,k);
próxima_instrução;
...
...
for(i=1;i<5;i=i+2)
for (j=2; j<=4; j++)
for (k=1; k<j; k++)
for (l=3; l>=i; l--)
printf(“(%d %d %d %d)\n”,i,j,k, l);
próxima_instrução;
...
Comando break
O comando break quando executado no interior de um Comando de Repetição 
provoca a saída incondicional do loop (laço) associado, mesmo que a condição de 
terminação ainda seja válida.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Logo, você poderá utilizar o break para interromper a execução do comando for
quando já tiver a informação desejada, mesmo que ainda falte muitas iterações a 
serem realizadas.
Exemplos de trechos de códigos com o uso do break
... 
#define MAX 5000
...
for(i=1; i <= MAX; i++)
if ( i%10 == 0) break;
else printf(“%d \n ”,i);
...
Qual o resultado
da execução
de ambos os trechos
de código?
...
a=0;
for(i=1; i <= MAX; i++) {
a = a+i;
if ( i == 3) break;
printf(“ %d \n”,a);
}
...
ComandoComando breakbreak
Um bom exemplo é quando estamos verificando a primalidade de um número inteiro 
positivo muito grande. Se já descobrimos que o número não é primo (encontramos 
um divisor), não há necessidade de continuar a tentando encontrar um divisor.
1 2 3 ......
p
2 ≤≤ variável i ≤≤ pp--11
Descobrimos que há um divisor. Por quê continuar? 
Já temos a informação desejada. Com o uso do 
break poupamos esforço computacional. Olhar o 
código do programa que irá em anexo.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando continue
O comando continue deve ser usado somente no interior de um 
comando de repetição.
O comando continue ao ser executado no interior de um comando de repetição, 
como por exemplo o comando for, causa a terminação da iteração atual 
(ignorando todas as instruções a seguir no interior do bloco de instruções do 
comando for), passando o controle do fluxo de execução imediatamente para a 
próxima iteração.
Qual a diferença entre os comandos break e continue?
O uso do comando continue pode ser perigoso, já que provoca a interrupção 
normal da seqüência de instruções no interior do loop. Ambas as instruções break
e continue são usadas para alterar a execução normal do fluxo de controle.
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
Comando continue
... 
#define MAX 5000
#define IMPAR(x) ( (x%2 != 0) ? 1: 0)
...
for(i=1; i <= MAX; i++)
if ( i == 100) break;
else {
if ( IMPAR(i) ) continue;
printf(“%d \n ”,i);
}
...
Qual o resultado da 
execução deste 
trecho de código?
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C ExemploExemplo::
Exercícios
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
01) Reescreva em C, todos os exemplos desenvolvidos em pseudocódigo;
02) 02) Elabore programas em C associados aos exercícios (problemas) da
Lista 01;
Desafios Adicionais
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C
2 2 2.a b c+ =
¾Encontre o primeiro valor de n (n = 0,1,2,3,4,...), para o qual:
- n2 - n + 41 não seja primo;
- n2 -79n+1601 não seja primo.
Encontre todas as ternas de valores 1 ≤ (a,b,c) ≤ 100 (números de Pitágoras) que 
satisfazem à relação acima.
inteira que satisfaz 0 < a ≤ b ≤ c ≤ d ≤ e < f ≤ 75. Encontre-a. 
55 5 5 5 5a b c d e f+ + + + =¾A equação possui exatamente uma solução
¾Um triângulo retângulo pode ter lados a, b e c, que sejam todos inteiros. O 
conjunto de valores inteiros associados aos lados desse triângulo é denominado 
número de Pitágoras. Sabemos a mais de 2000 anos que num triângulo 
retângulo vale a relação 
Escreva programas em C para resolver cada um dos problemas abaixo.
Desafios Adicionais
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C ¾ Imprima uma tabela de valores resultantes das funções trigonométricas seno 
(sin(x)), cosseno (cos(x)) e tangente (tan(x)) no intervalo de [0º,360º), com variação 
de 1 grau. Lembre-se que os argumentos das funções trigonométricas da biblioteca 
padrão <math.h> devem estar em radianos. 
Observações:
Æ A saída deve estar formatada em colunas devidamente alinhadas;
Æ Cada uma das linhas deve conter os seguintes valores: grau, radianos, 
sin(x), cos(x), tan(x);
Æ Para alguns valores, a função tangente não está definida. Cuidado!
Desafios Adicionais
P
r
o
f
.
 
P
i
t
e
r
i
 
-
4
ª
A
u
l
a
–
L
i
n
g
u
a
g
e
m
C ¾ Elabore um programa em C para obter uma aproximação do número π com 15 
casas decimais usando 100 termos de cada uma das relações abaixo. O valor de π
com 10000 dígitos pode ser observado no site: 
http://www.educ.fc.ul.pt/icm/icm2001/icm34/digitosdopi.htm
"−+−+−=
9
1
7
1
5
1
3
11
4
π
"+++++= 2222
2
5
1
4
1
3
1
2
11
6
π
"−+−+−= 3333 9
1
7
1
5
1
3
11S
onde 3 32*S=π
. (relação 1)
(relação 2)
(relação 3)

Outros materiais