Buscar

05.Comandos.Repeticao

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

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

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ê viu 3, do total de 186 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

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

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ê viu 6, do total de 186 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

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

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ê viu 9, do total de 186 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

Prévia do material em texto

1
Estruturas de Controle 
Parte III – Repetição
DCC 119 – Algoritmos
2
Repetição
Todo aluno de Algoritmos sabe que precisa fazer o 
teste de mesa para saber se seu programa está 
correto. No entanto, em todas as aulas, os 
professores precisam lembrar os alunos deste 
requisito importante na resolução dos exercícios.
Para alunos atentos, é suficiente lembrar uma vez; 
alunos desatentos precisam ser lembrados 2 ou 3 
vezes; mas, às vezes, é necessário repetir até 5 
vezes a mesma frase, para que os alunos mais 
preguiçosos resolvam fazer o teste de mesa.
3
Repetição
Para que essa tarefa fique mais fácil para o 
professor, esta aula começa com o seguinte 
problema:
Elaborar um programa que pergunte ao professor 
quantas vezes a frase 
“Faça o teste de mesa de cada exercício.”
precisa ser impressa. O programa deve imprimir a 
frase conforme a indicação do professor. 
4
#include <stdio.h>
int main()
{
int numVezes;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numVezes);
if( numVezes == 1 )
printf("Faca o teste de mesa de cada exercicio\n");
else 
if( numVezes == 2 ){
printf("Faca o teste de mesa de cada exercicio\n");
printf("Faca o teste de mesa de cada exercicio\n");
}
else 
if( numVezes == 3 ){
printf("Faca o teste de mesa de cada exercicio\n");
printf("Faca o teste de mesa de cada exercicio\n");
printf("Faca o teste de mesa de cada exercicio\n");
}
else 
if( numVezes == 5 ){
printf("Faca o teste de mesa de cada exercicio\n");
printf("Faca o teste de mesa de cada exercicio\n");
printf("Faca o teste de mesa de cada exercicio\n");
printf("Faca o teste de mesa de cada exercicio\n");
printf("Faca o teste de mesa de cada exercicio\n");
}
return 0;
}
5
Repetição
Até a semana passada, este programa funcionava 
muito bem para os professores. Mas, todo 
professor sabe que, à medida que os exercícios 
ficam mais complexos, maior é a importância do 
teste de mesa e maior é a preguiça dos alunos.
O professor prevê que será necessário repetir a 
frase até 20 vezes nas próximas aulas... 
... mas escrever um programa com uma sequência 
de tantos if/else é desanimador!
6
Repetição
Nesta aula, vamos aprender a repetir comandos. 
Em nosso programa:
- que comando precisamos repetir?
- quantas vezes precisamos repetir?
7
Repetição
Nesta aula, vamos aprender a repetir comandos. 
Em nosso programa:
- que comando precisamos repetir?
A impressão da frase.
- quantas vezes precisamos repetir?
O número de vezes indicado pelo usuário.
Enquanto o número de impressões já realizadas 
for menor que o número de impressões 
desejado, é necessário continuar imprimindo.
8
Repetição com Teste no Início
• Enquanto a condição for VERDADEIRA, a
seqüência de comandos será repetida.
• Quando a condição fornecer resultado FALSO,
o controle sai da estrutura passando para o
comando seguinte ao final do bloco.
while ( condicao )
{
BlocoDeComandos1;
} 
BlocoDeComandos2;
9
Repetição com Teste no Início
Enquanto o número de impressões já realizadas 
for menor que o número de impressões 
desejado, é necessário continuar imprimindo.
while ( condicao )
{
BlocoDeComandos1;
} 
BlocoDeComandos2;
10
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
11
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
12
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
4 ? ? ---
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
13
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita?
4 ? ? ---
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
14
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
4 ? ? ---
7 3 ? ---
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
15
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
4 ? ? ---
7 3 ? ---
9 3 0 ---
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
16
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18Quantas vezes a impressao deve ser feita? 3
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
17
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
18
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
19
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
11 3 1 V
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
20
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
11 3 1 V
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
21
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
11 3 1 V
14 3 2 ---
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
22
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes)
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
11 3 1 V
14 3 2 ---
11 3 2 V
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
23
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
11 3 1 V
14 3 2 ---
11 3 2 V
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
24
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
11 3 1 V
14 3 2 ---
11 3 2 V
14 3 3 ---
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
25
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes)
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
11 3 1 V
14 3 2 ---
113 2 V
14 3 3 ---
11 3 3 F
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
26
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
11 3 1 V
14 3 2 ---
11 3 2 V
14 3 3 ---
11 3 3 F
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
27
Repetição
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Quantas vezes a impressao deve ser feita? 3
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
Faca o teste de mesa dos exercicios
4 ? ? ---
7 3 ? ---
9 3 0 ---
11 3 0 V
14 3 1 ---
11 3 1 V
14 3 2 ---
11 3 2 V
14 3 3 ---
11 3 3 F
L
in
h
a
n
u
m
Im
p
re
s
s
o
e
s
im
p
J
a
R
e
a
liz
a
d
a
s
te
s
te
 d
a
 c
o
n
d
iç
ã
o
28
Exercício
#include <stdio.h>
int main()
{
int numImpressoes, impressoesJaRealizadas;
printf("Quantas vezes a impressao deve ser feita?");
scanf("%d", &numImpressoes);
impressoesJaRealizadas = 0;
while( impressoesJaRealizadas < numImpressoes) 
{
printf("Faca o teste de mesa dos exercicios\n");
impressoesJaRealizadas++; //soma 1 à variável
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Faça o teste de mesa com entrada 2 e com entrada -1. 
29
• Chamadas de estruturas iterativas, iterações, 
laços ou loops;
• Permitem repetir a execução de uma ação 
várias vezes;
• Podem ser:
1. Repetição com Teste no Início
2. Repetição com Teste no Fim
3. Repetição com Variável de Controle
Repetição
30
Repetição com Teste no Início
• Enquanto a condição for VERDADEIRA, a
seqüência de comandos será repetida.
• Quando a condição fornecer resultado FALSO,
o controle sai da estrutura passando para o
comando seguinte ao final do bloco.
while ( condicao )
{
BlocoDeComandos1;
} 
BlocoDeComandos2;
31
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros, calculando e imprimindo o quadrado de
cada número lido. A sequência deve terminar quando o
número 0 (zero) for lido.
Exemplo 1: Valor específico encerra repetições
32
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros, calculando e imprimindo o quadrado de
cada número lido. A sequência deve terminar quando o
número 0 (zero) for lido.
ZERO → indica o final da sequência de valores.
→ encerra as repetições.
→ não deve ser processado (o quadrado 
de zero não deve ser impresso).
Exemplo 1: Valor específico encerra repetições
33
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros, calculando e imprimindo o quadrado de
cada número lido. A sequência deve terminar quando o
número 0 (zero) for lido.
Lê o primeiro número
Enquanto o número lido não for zero
{
Calcula e imprime o quadrado do número
Lê o próximo número
}
Exemplo 1: Valor específico encerra repetições
34
Repetição com Teste no Início
#include <stdio.h>
int main()
{
int num, quad; 
// imprime uma msg e le o 1o. inteiro 
printf("Digite um numero inteiro: ");
scanf("%d", &num);
while( num != 0 )
{
quad = num * num;
printf("\nQuadrado de %d: %d",num,quad);
printf("\nDigite um numero inteiro: ");
scanf("%d", &num);
}
return 0;
}
Exemplo 1: Valor específico encerra repetições
35
1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
linha num quad teste
4 ? ? ---
TESTE DE MESA
Exemplo 1: Valor específico encerra repetições
36
1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
linha num quad teste
4 ? ? ---
TESTE DE MESA
Exemplo 1: Valor específico encerra repetições
37
linha num quad teste
4 ? ? ---
8 5 ? ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Exemplo 1: Valor específico encerra repetições
38
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Exemplo 1: Valor específico encerra repetições
39
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Exemplo 1: Valor específico encerra repetições
40
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d",&num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Exemplo 1: Valor específico encerra repetições
41
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Exemplo 1: Valor específico encerra repetições
42
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
16 2 25 ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Quadrado de 5: 25
Digite um numero inteiro: 2
Exemplo 1: Valor específico encerra repetições
43
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
16 2 25 ---
10 2 25 V
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Quadrado de 5: 25
Digite um numero inteiro: 2
Exemplo 1: Valor específico encerra repetições
44
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
16 2 25 ---
10 2 25 V
12 2 4 ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Quadrado de 5: 25
Digite um numero inteiro: 2
Exemplo 1: Valor específico encerra repetições
45
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
16 2 25 ---
10 2 25 V
12 2 4 ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Quadrado de 5: 25
Digite um numero inteiro: 2
Exemplo 1: Valor específico encerra repetições
46
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
16 2 25 ---
10 2 25 V
12 2 4 ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Quadrado de 5: 25
Digite um numero inteiro: 2
Exemplo 1: Valor específico encerra repetições
47
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
16 2 25 ---
10 2 25 V
12 2 4 ---
16 0 4 ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Quadrado de 5: 25
Digite um numero inteiro: 2
Quadrado de 2: 4
Digite um numero inteiro: 0
Exemplo 1: Valor específico encerra repetições
48
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
16 2 25 ---
10 2 25 V
12 2 4 ---
16 0 4 ---
10 0 4 F
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Quadrado de 5: 25
Digite um numero inteiro: 2
Quadrado de 2: 4
Digite um numero inteiro: 0
Exemplo 1: Valor específico encerra repetições
49
Exemplo 1: Valor específico encerra repetições
linha num quad teste
4 ? ? ---
8 5 ? ---
10 5 ? V
12 5 25 ---
16 2 25 ---
10 2 25 V
12 2 4 ---
16 0 4 ---
10 0 4 F
18 0 4 ---
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
Digite um numero inteiro: 5
Quadrado de 5: 25
Digite um numero inteiro: 2
Quadrado de 2: 4
Digite um numero inteiro: 0
50
Repetição com Teste no Início
Quesitos importantes em repetições
1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
51
Repetição com Teste no Início
Quesitos importantes em repetições
Condição
Teste normalmente 
envolve ao menos uma 
variável.
1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
52
Repetição com Teste no Início
Quesitos importantes em repetições
Condição
Teste normalmente 
envolve ao menos uma 
variável.
Inicialização
Toda variável da 
condição precisaser 
inicializada antes do 
laço, através de 
atribuição ou leitura.
1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
53
Repetição com Teste no Início
Quesitos importantes em repetições
Condição
Teste normalmente 
envolve ao menos uma 
variável.
Inicialização
Toda variável da 
condição precisa ser 
inicializada antes do 
laço, através de 
atribuição ou leitura.
Atualização
Ao menos uma variável 
da condição precisa 
ser atualizada no 
interior do laço.
1 #include <stdio.h>
2 int main()
3 {
4 int num, quad;
5
6 // imprime uma msg e le o 1o. Inteiro
7 printf("Digite um numero inteiro: ");
8 scanf("%d", &num);
9
10 while( num != 0 )
11 {
12 quad = num * num;
13 printf("\nQuadrado de %d: %d",num,quad);
14 
15 printf("\nDigite um numero inteiro: ");
16 scanf("%d", &num);
17 }
18 return 0;
19 }
54
Repetição com Teste no Início
Exemplo 1: Valor específico encerra repetições
• Um valor específico (chamado de FLAG) indica o fim
dos dados de entrada.
• Quando este valor é lido, não deve ser tratado como
parte da sequência de entrada. Isto é, não deve ser
processado no interior do laço como os outros dados
da sequência.
• A leitura do FLAG informa ao programa que os dados
de entrada terminaram e que ele deve partir para a
execução da finalização de seu processamento
(cálculos finais, impressões finais etc.).
55
Repetição com Teste no Início
Exemplo 1: Valor específico encerra repetições
Imagine um programa de um caixa eletrônico com as
seguintes opções de menu:
1 – imprime o saldo da conta
2 – imprime o extrato da conta
3 – efetua pagamento de boleto
4 – efetua um saque
5 – sai do programa
Imagine que o usuário pode executar mais de uma
operação, ou ainda, repetir operações.
O usuário poderá repetir as operações enquanto a
opção selecionada não for a opção 5 – sai do programa.
56
#include <stdio.h>
void imprimeOpcoesMenu();
void imprimeSaldo();
void imprimeExtrato();
void pagaBoleto();
void fazSaque();
int main()
{
int opcaoSelecionada;
imprimeOpcoesMenu();
scanf("%d", &opcaoSelecionada);
while( opcaoSelecionada != 5 ) {
switch( opcaoSelecionada ) { 
case 1: imprimeSaldo(); break;
case 2: imprimeExtrato(); break;
case 3: pagaBoleto(); break;
case 4: fazSaque(); break;
//case 5 nunca seria executado, pois laço termina antes
default: printf("Opcao invalida!"); break;
}
imprimeOpcoesMenu();
scanf("%d", &opcaoSelecionada);
}
printf("Programa encerrado");
return 0;
}
57
1. Escreva um programa que leia uma sequência de
notas de alunos cujos valores variam entre 0 e 100. O
programa deve escrever “REPROVADO” se a nota for
inferior a 60 e escrever “APROVADO”, caso contrário.
A quantidade de notas lidas é desconhecida. O
programa deve ser encerrado se for lido um valor
inválido (fora do intervalo entre 0 e 100).
Teste seu programa com a sequência:
87 69 94 108
Exercício
58
Repetição com Teste no Início
Exemplo 2: Uso de acumulador
• Acumulador é uma variável utilizada para armazenar a
soma (ou o produto) de uma sequência de valores.
• A variável usada como acumulador recebe um
acréscimo a cada iteração, isto é, seu valor anterior é
usado em sua atualização ao longo das iterações.
• A variável usada como acumulador precisa ser
inicializada antes do laço.
soma = soma + novo_valor;
soma = 0;
produto = 1;
59
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros, calcule e imprima a soma dos valores
lidos. A sequência deve terminar quando o número 0 (zero)
for lido.
Exemplo 2: Uso de acumulador
60
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros, calcule e imprima a soma dos valores
lidos. A sequência deve terminar quando o número 0 (zero)
for lido.
Exemplo 2: Uso de acumulador
soma → o valor da variável começa com zero 
(elemento neutro da adição) ;
→ a cada iteração, conserva o valor anterior
com acréscimo de um novo valor;
→ ao final de cada iteração, o valor da variável 
contém a soma parcial dos elementos ;
→ ao final do laço, o valor da variável 
contém a soma dos elementos.
61
Repetição com Teste no Início
Exemplo 2: Uso de acumulador
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
62
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
63
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
64
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
65
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
66
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
67
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
68
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
69
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
70
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
13 -2 9
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
Soma parcial: 9
Digite um numero inteiro: -2
71
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
13 -2 9
8 -2 9 V
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
Soma parcial: 9
Digite um numero inteiro: -2
72
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
13 -2 9
8 -2 9 V
10 -2 7
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
Soma parcial: 9
Digite um numero inteiro: -2
73
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
13 -2 9
8 -2 9 V
10 -2 7
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
Soma parcial: 9
Digite um numero inteiro: -2
74
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
13 -2 9
8 -2 9 V
10 -2 7
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
Soma parcial: 9
Digite um numero inteiro: -2
75
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
13 -2 9
8 -2 9 V
10 -2 7
13 0 7
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
Soma parcial: 9
Digite um numero inteiro: -2
Soma parcial: 7
Digite um numero inteiro: 0
76
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
13 -2 9
8 -2 9 V
10 -2 7
13 0 7
8 0 7 F
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
Soma parcial: 9
Digite um numero inteiro: -2
Soma parcial: 7
Digite um numero inteiro: 0
77
Exemplo 2: Uso de acumulador
linha num soma teste
4 ? ?
5 ? 0
7 9 0
8 9 0 V
10 9 9
13 -2 9
8 -2 9 V
10 -2 7
13 0 7
8 0 7 F
15 0 7
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
Digite um numero inteiro: 9
Soma parcial: 9
Digite um numero inteiro: -2
Soma parcial: 7
Digite um numero inteiro: 0
Soma total: 7
78
Repetição com Teste noInício
Os quesitos para o uso de laços são mantidos:
Condição
Teste normalmente 
envolve ao menos uma 
variável.
Inicialização
Toda variável da 
condição precisa ser 
inicializada antes do 
laço, através de 
atribuição ou leitura.
Atualização
Ao menos uma variável 
da condição precisa 
ser atualizada no 
interior do laço.
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
79
Repetição com Teste no Início
Acumuladores precisam de: 
Inicialização
Variável precisa 
ser inicializada 
(normalmente 
com elemento 
neutro).
Atualização
Variável precisa 
conservar o valor 
acumulado e 
acrescentar novo 
valor.
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
80
Repetição com Teste no Início
Impressão de acumuladores: 
Valor parcial
Impressão da 
variável é feita no 
laço, após sua 
atualização.
Valor total
Impressão da 
variável é feita 
após o laço.
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 soma = soma + num; //atualiza acumulador
11 printf("\nSoma parcial: %d",soma);
12 printf("\nDigite um numero inteiro: ");
13 scanf("%d", &num);
14 }
15 printf("\nSoma total: %d",soma);
16 return 0;
17 }
81
2. Escreva uma função que retorne o valor total a ser
pago em uma compra de supermercado. A função deve
ler a quantidade e o preço unitário de cada produto,
atualizando o subtotal a cada iteração do laço.
Considere que a compra será encerrada quando for
digitado um valor menor ou igual a zero para a
quantidade de um produto.
Faça um programa para chamar e imprimir o resultado
sua função.
Teste seu programa com a sequência:
1 4.02 3 7.56 1 5.3 -4
ou, dependendo de sua implementação,
1 4.02 3 7.56 1 5.3 -4 2.0
Exercício
82
Repetição com Teste no Início
Exemplo 3: Uso de contador
• Contador é uma variável utilizada para contar o número
de ocorrências de determinado evento.
• A variável usada como contador recebe um acréscimo
de uma unidade a cada iteração, isto é, é incrementada
de 1 em 1.
• A variável usada como acumulador precisa ser
inicializada antes do laço.
contador = contador + 1;
contador++; 
contador = 0; 
83
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros e imprima a quantidade de valores lidos. A
sequência deve terminar quando o número 0 (zero) for lido.
Exemplo 3: Uso de contador
84
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros e imprima a quantidade de valores lidos. A
sequência deve terminar quando o número 0 (zero) for lido.
Exemplo 3: Uso de contador
contador → o valor da variável começa com zero;
→ após ler e testar cada novo valor da 
sequência, a variável é incrementada 
(aumenta em uma unidade);
→ ao final do laço, o valor da variável 
contém o número de elementos.
85
Repetição com Teste no Início
Exemplo 3: Uso de contador
1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
86
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
87
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
88
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
89
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
90
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
91
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
10 22 1
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
92
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
10 22 1
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
93
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
10 22 1
12 13 1
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
Digite um numero inteiro: 13
94
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
10 22 1
12 13 1
8 13 1 V
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
Digite um numero inteiro: 13
95
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
10 22 1
12 13 1
8 13 1 V
10 13 2
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
Digite um numero inteiro: 13
96
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
10 22 1
12 13 1
8 13 1 V
10 13 2
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
Digite um numero inteiro: 13
97
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
10 22 1
12 13 1
8 13 1 V
10 13 2
12 0 2
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
Digite um numero inteiro: 13
Digite um numero inteiro: 0
98
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
10 22 1
12 13 1
8 13 1 V
10 13 2
12 0 2
8 0 2 F
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
Digite um numero inteiro: 13
Digite um numero inteiro: 0
99
Exemplo 3: Uso de contador
linha num cont teste
4 ? ?
5 ? 0
7 22 0
8 22 0 V
10 22 1
12 13 1
8 13 1 V
10 13 2
12 0 2
8 0 2 F
14 0 2
TESTE DE MESA1 #include <stdio.h>
2 int main()
3 {
4 int num, cont;
5 cont = 0; // inicializa contador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 cont++; //atualiza contador
11 printf("\nDigite um numero inteiro: ");
12 scanf("%d", &num);
13 }
14 printf("\nNumero de elementos: %d",cont);
15 return 0;
16 }
Digite um numero inteiro: 22
Digite um numero inteiro: 13
Digite um numero inteiro: 0
Numero de elementos: 2
100
3. Modifique a função que calcula o valor da compra de
supermercado para que esta imprima a quantidade de
itens distintos adquiridos.
Teste seu programa com a sequência:
1 4.02 3 7.56 1 5.3 -4
ou, dependendo de sua implementação,
1 4.02 3 7.56 1 5.3 -4 2.0
Exercício
101
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros e imprima a media aritmética dos valores
lidos. A sequência deve terminar quando o número 0 (zero)
for lido.
Exemplo 4: Cálculo de média
102
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros e imprima a media aritmética dos valores
lidos. A sequência deve terminar quando o número 0 (zero)
for lido.
Exemplo 4: Cálculo de média
media → a média aritmética corresponde à soma dos
valores dividida pelo número de valores;
→ um acumulador e um contador serão 
necessários neste cálculo;
→ o resultado da divisão deve ser um valor real, 
mesmo se os valores envolvidos são inteiros;
→ a divisão deve ser realizada após o fim do laço, 
quando os valores do contador e do acumulador
já não sofrerão alterações.
103
Repetição com Teste no Início
Desenvolva um algoritmo que leia uma sequência de
números inteiros e imprima a media aritmética dos valores
lidos. A sequência deve terminar quando o número 0 (zero)
for lido.
Exemplo 4: Cálculo de média
media → a média aritmética corresponde à soma dos
valores dividida pelo número de valores;
→ um acumulador e um contador serão 
necessários neste cálculo;
→ o resultado da divisão deve ser um valor real, 
mesmo se os valores envolvidos são inteiros;
→ a divisão deve ser realizada após o fim do laço, 
quando os valores do contador e do acumulador
já não sofrerão alterações.
104
Repetição com Teste no Início
Exemplo 4: Cálculo de média
1 #include <stdio.h>
2 int main()
3 {
4 int num, soma, cont;
5 float media;
6 soma = 0; // inicializa acumulador
7 cont = 0; // inicializa contador
8 printf("Digite um numero inteiro: ");
9 scanf("%d", &num);
10 while( num != 0 )
11 {
12 soma = soma + num; //atualiza acumulador
13 cont++; //atualiza contador
14 printf("\nDigite um numero inteiro: ");
15 scanf("%d", &num);
16 }
17 media = soma / (float) cont; //conversao para divisao real
18 printf("\nMedia dos elementos: %f",media);
19 return 0;
20 }
105
Repetição com Teste no Início
Desenvolva um algoritmo que leia um número inteiro
positivo e imprima a soma de seus dígitos.
Exemplo 5: Soma dos dígitos de um número
106
Repetição com Teste no Início
Desenvolva um algoritmo que leia um número inteiro
positivo e imprima a soma de seus dígitos.
Exemplo 5: Soma dos dígitos de um número
→ a separação dos dígitos de um número pode ser feita 
através das seguintes operações:
• o resto da divisão por 10 permite que o dígito 
menos significativo seja obtido:
530479% 10 → 9 
• a divisão inteira por 10 permite que o dígito menos 
significativo seja descartado e o dígito seguinte 
assuma esta posição:
530479 / 10 → 53047 
107
Repetição com Teste no Início
Desenvolva um algoritmo que leia um número inteiro
positivo e imprima a soma de seus dígitos.
Exemplo 5: Soma dos dígitos de um número
→ a separação dos dígitos de um número pode ser feita 
através das seguintes operações:
530479 % 10 → 9
530479 / 10 → 53047 
53047 % 10 → 7
53047 / 10 → 5304
5304 % 10 → 4
5304 / 10 → 530
530 % 10 → 0
530 / 10 → 53 
53 % 10 → 3
53 / 10 → 5
5 % 10 → 5
5 / 10 → 0
108
Repetição com Teste no Início
Desenvolva um algoritmo que leia um número inteiro
positivo e imprima a soma de seus dígitos.
Exemplo 5: Soma dos dígitos de um número
→ a separação dos dígitos de um número pode ser feita 
através das seguintes operações:
530479 % 10 → 9
530479 / 10 → 53047 
53047 % 10 → 7
53047 / 10 → 5304
5304 % 10 → 4
5304 / 10 → 530
...
digito = num % 10; 
num = num / 10;
digito = num % 10; 
num = num / 10;
digito = num % 10; 
num = num / 10;
...
109
Repetição com Teste no Início
Exemplo 5: Soma dos dígitos de um número
1 #include <stdio.h>
2 int main()
3 {
4 int num, digito, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 digito = num % 10; // obtem digito menos significativo
11 soma = soma + digito; // acrescenta o valor do digito a soma
12 num = num / 10; // descarta o digito armazenado
13 }
14 printf("\nSoma dos digitos: %d",soma);
15 return 0;
16 }
110
Repetição com Teste no Início
Exemplo 5: Soma dos dígitos de um número
Atualização da variável da condição
1 #include <stdio.h>
2 int main()
3 {
4 int num, digito, soma;
5 soma = 0; // inicializa acumulador
6 printf("Digite um numero inteiro: ");
7 scanf("%d", &num);
8 while( num != 0 )
9 {
10 digito = num % 10; // obtem digito menos significativo
11 soma = soma + digito; // acrescenta o valor do digito a soma
12 num = num / 10; // descarta o digito armazenado
13 }
14 printf("\nSoma dos digitos: %d",soma);
15 return 0;
16 }
111
Repetição com variável de controle
O uso do comando for é
muito similar ao do
comando while.
for ( inicializacao; condicao; atualizacao )
{
blocoDeComandos1;
}
blocoDeComandos2;
112
Repetição com variável de controle
for ( inicializacao; condicao; atualizacao )
{
blocoDeComandos1;
}
blocoDeComandos2;
inicializacao;
while ( condicao )
{
blocoDeComandos1;
atualizacao;
}
blocoDeComandos2;
Funcionalmente, for e while
são idênticos, apenas a 
sintaxe dos comandos muda.
113
Repetição com variável de controle
O for concentra os 
comandos de inicialização, 
condição e atualização entre 
parênteses, separados por 
ponto e vírgula.
for ( inicializacao; condicao; atualizacao )
{
blocoDeComandos1;
}
blocoDeComandos2;
inicializacao;
while ( condicao )
{
blocoDeComandos1;
atualizacao;
}
blocoDeComandos2;
114
Repetição com variável de controle
for ( inicializacao; condicao; atualizacao )
{
blocoDeComandos1;
}
blocoDeComandos2;
inicializacao;
while ( condicao )
{
blocoDeComandos1;
atualizacao;
}
blocoDeComandos2;
inicialização
O comando de inicialização 
do for é realizado uma 
única vez, antes de sua 
primeira execução.
115
Repetição com variável de controle
for ( inicializacao; condicao; atualizacao )
{
blocoDeComandos1;
}
blocoDeComandos2;
inicializacao;
while ( condicao )
{
blocoDeComandos1;
atualizacao;
}
blocoDeComandos2;
condição
A condição do for é testada 
no início de toda iteração. O 
bloco de comandos interno 
só é executado se a 
condição for VERDADEIRA.
116
Repetição com variável de controle
for ( inicializacao; condicao; atualizacao )
{
blocoDeComandos1;
}
blocoDeComandos2;
inicializacao;
while ( condicao )
{
blocoDeComandos1;
atualizacao;
}
blocoDeComandos2;
atualização
A atualização é realizada 
após a execução do bloco de 
comandos interno e antes do 
teste da condição da iteração 
seguinte.
117
Repetição com variável de controle
for( contador=0; contador<5; contador++ )
{
blocoDeComandos1;
}
blocoDeComandos2;
contador = 0;
while ( contador < 5 )
{
blocoDeComandos1;
contador++;
}
blocoDeComandos2;
Em geral, for é mais 
usado quando há uma 
variável de controle, 
como um contador na 
condição.
118
Repetição com variável de controle
for( contador=0; contador<5; contador++ )
{
blocoDeComandos1;
}
blocoDeComandos2;
contador = 0;
while ( contador < 5 )
{
blocoDeComandos1;
contador++;
}
blocoDeComandos2;
A vantagem do for neste 
caso é concentrar 
inicialização, condição e 
atualização, evitando que 
algum destes comandos 
seja esquecido.
119
Repetição com variável de controle
for( contador=0; contador<5; contador++ )
{
blocoDeComandos1;
}
blocoDeComandos2;
contador = 0;
while ( contador < 5 )
{
blocoDeComandos1;
contador++;
}
blocoDeComandos2;
O comando while é 
mais indicado quando o 
controle do laço envolve 
FLAG ou condições 
complexas, uma vez que 
o código fica mais claro 
de ser entendido.
120
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? int i;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
121
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
122
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
123
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 
124
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
5 2 --- i++;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 
125
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
5 2 --- i++;
5 2 V i<=3;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 
126
Detalhe da ordem de execução das instruções
Repetição com variável de controlelinha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
5 2 --- i++;
5 2 V i<=3;
7 2 --- printf(" %d ",i);
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 2 
127
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
5 2 --- i++;
5 2 V i<=3;
7 2 --- printf(" %d ",i);
5 3 --- i++;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 2 
128
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
5 2 --- i++;
5 2 V i<=3;
7 2 --- printf(" %d ",i);
5 3 --- i++;
5 3 V i<=3;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 2 
129
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
5 2 --- i++;
5 2 V i<=3;
7 2 --- printf(" %d ",i);
5 3 --- i++;
5 3 V i<=3;
7 3 --- printf(" %d ",i);
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 2 3
130
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
5 2 --- i++;
5 2 V i<=3;
7 2 --- printf(" %d ",i);
5 3 --- i++;
5 3 V i<=3;
7 3 --- printf(" %d ",i);
5 4 --- i++;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 2 3
131
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
5 2 --- i++;
5 2 V i<=3;
7 2 --- printf(" %d ",i);
5 3 --- i++;
5 3 V i<=3;
7 3 --- printf(" %d ",i);
5 4 --- i++;
5 4 F i<=3;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 2 3
132
Detalhe da ordem de execução das instruções
Repetição com variável de controle
linha i teste
4 ? --- int i;
5 1 --- i=1;
5 1 V i<=3;
7 1 --- printf(" %d ",i);
5 2 --- i++;
5 2 V i<=3;
7 2 --- printf(" %d ",i);
5 3 --- i++;
5 3 V i<=3;
7 3 --- printf(" %d ",i);
5 4 --- i++;
5 4 F i<=3;
9 4 --- return 0;
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int i;
5 for( i=1; i<=3; i++ )
6 {
7 printf(" %d ",i);
8 }
9 return 0;
10 }
1 2 3
133
Desenvolva um algoritmo que imprima todos os valores
inteiros em um intervalo indicado pelo usuário.
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
134
Desenvolva um algoritmo que imprima todos os valores
inteiros em um intervalo indicado pelo usuário.
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
→ o usuário vai indicar o valor inicial e o valor final do
intervalo;
→ todos os valores do intervalo devem ser impressos, 
um a um;
→ um contador pode ser utilizado para indicar cada valor a 
ser impresso.
135
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
1 #include <stdio.h>
2 int main()
3 {
4 int cont,inicio,fim;
5 printf("Digite o menor numero: ");
6 scanf("%d", &inicio);
7 printf("Digite o maior numero: ");
8 scanf("%d", &fim);
9 printf("\nIntervalo: ");
10 for( cont=inicio; cont<=fim; cont++ )
11 {
12 printf(" %d ",cont);
13 }
14 return 0;
15 }
136
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
linha inicio fim cont teste
4 ? ? ?
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int cont,inicio,fim;
5 printf("Digite o menor numero: ");
6 scanf("%d", &inicio);
7 printf("Digite o maior numero: ");
8 scanf("%d", &fim);
9 printf("\nIntervalo: ");
10 for( cont=inicio; cont<=fim; cont++ )
11 {
12 printf(" %d ",cont);
13 }
14 return 0;
15 }
137
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
linha inicio fim cont teste
4 ? ? ?
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int cont,inicio,fim;
5 printf("Digite o menor numero: ");
6 scanf("%d", &inicio);
7 printf("Digite o maior numero: ");
8 scanf("%d", &fim);
9 printf("\nIntervalo: ");
10 for( cont=inicio; cont<=fim; cont++ )
11 {
12 printf(" %d ",cont);
13 }
14 return 0;
15 }
138
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
linha inicio fim cont teste
4 ? ? ?
6 3 ? ?
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int cont,inicio,fim;
5 printf("Digite o menor numero: ");
6 scanf("%d", &inicio);
7 printf("Digite o maior numero: ");
8 scanf("%d", &fim);
9 printf("\nIntervalo: ");
10 for( cont=inicio; cont<=fim; cont++ )
11 {
12 printf(" %d ",cont);
13 }
14 return 0;
15 }
Digite o menor numero: 3
139
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
linha inicio fim cont teste
4 ? ? ?
6 3 ? ?
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int cont,inicio,fim;
5 printf("Digite o menor numero: ");
6 scanf("%d", &inicio);
7 printf("Digite o maior numero: ");
8 scanf("%d", &fim);
9 printf("\nIntervalo: ");
10 for( cont=inicio; cont<=fim; cont++ )
11 {
12 printf(" %d ",cont);
13 }
14 return 0;
15 }
Digite o menor numero: 3
140
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
linha inicio fim cont teste
4 ? ? ?
6 3 ? ?
8 3 5 ?
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int cont,inicio,fim;
5 printf("Digite o menor numero: ");
6 scanf("%d", &inicio);
7 printf("Digite o maior numero: ");
8 scanf("%d", &fim);
9 printf("\nIntervalo: ");
10 for( cont=inicio; cont<=fim; cont++ )
11 {
12 printf(" %d ",cont);
13 }
14 return 0;
15 }
Digite o menor numero: 3
Digite o maior numero: 5
141
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
linha inicio fim cont teste
4 ? ? ?
6 3 ? ?
8 3 5 ?
TESTE DE MESA
1 #include <stdio.h>
2 int main()
3 {
4 int cont,inicio,fim;
5 printf("Digite o menor numero: ");
6 scanf("%d", &inicio);
7 printf("Digite o maior numero: ");
8 scanf("%d", &fim);
9 printf("\nIntervalo: ");
10 for( cont=inicio; cont<=fim; cont++ )
11 {
12 printf(" %d ",cont);
13 }
14 return 0;
15 }
Digite o menor numero: 3
Digite o maior numero: 5
142
Exemplo 1: Imprime valores em um intervalo
Repetição com variável de controle
linha inicio fim cont teste
4 ? ? ?
6 3 ? ?
8 3 5 ?
10 3 5 3
TESTE DE

Outros materiais