Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Comando for
  2. Comando while
  3. Comando do-while
  4. Loop infinito

A linguagem de programação C fornece os comandos de repetição for, while e do-while. Nesta parte do tutorial vamos aprender esses comandos.

O funcionamento dos comandos de decisão já foram discutidos em Portugol: Comandos de Repetição sendo a leitura recomendada.

Os comandos de decisão são utilizando em conjunto com os operadores lógicos e relacionais vistos em C Operadores: Relacionais e C Operadores: Lógicos.

Para executarmos um bloco de código uma quantidade de vezes, a linguagem C fornece o comando for que possui o fluxograma e sintaxe abaixo:

Fig. 1: Fluxograma do Comando for
Sintaxe
for(atribuição ; condição ; atualização)
{
  //bloco de código
}
Onde
atribuição: bloco para iniciar variável
condição: condição para que a repetição seja executada
atualização: atualização de valores iniciados em atribuição
Exemplo 1
#include <stdio.h>

int main()
{
    int i;
    for(i = 0; i < 3; i++)
    {
        printf("%d \n",i);
    }
}
Saída
0
1
2

Tanto a atribuição quanto condição e atualização vistos acima, podem podem conter mais de uma declaração ou condição em seu bloco.

Exemplo 2
#include <stdio.h>

int main()
{
    int i,j;
    for(i = 0,j=0; i < 10 || j <10 ; i++,j++)
    {
        printf("%d-%d \n",i,j);
    }
}
Saída
0-0 
1-1 
2-2

O comando while é utilizado quando precisamos executar um bloco de código e não sabemos quantas vezes serão com exatidão aguardando um determinada condição verdadeira ou falsa. Esse comando também pode ser utilizado como comando for.

Fig. 2: Fluxograma do Comando while
Sintaxe
while(condicao)
{
  //bloco de código
}
Exemplo 3
#include <stdio.h>
void main()
{
    int flag = -1;
    int opcao = -1;
    
    while (flag == -1 )
    {
        scanf("%d",&opcao); //entrada de dado
    
        if(opcao == -1) //validação
        {
            flag = 0;
            printf("fim do programa");
        }
        else
        {
            printf("opcao:%d\n",opcao);
        }
    }    
}
Saída
1
2
-1
            

Como mencionado acima, o comando while pode ser utilizado como comando for como mostrado no exemplo abaixo:

Exemplo 4
#include <stdio.h>
 
int main () 
{
   int a = 3;
   while( a < 3 ) {
      printf("%d\n", a);
      a++;
   }
 }
Saída
0
1
2

Diferente do comando while, o comando do-while executa o trecho de código que está contido em seu corpo e posteriormente verifica a condição, então decide se deve ou não continuar a próxima repetição:

Fig. 3: Comando do-while
Sintaxe
do
{
   //bloco de código
}
while(condicao);
Exemplo 5
#include <stdio.h>
void main()
{
    int flag = -1;
    int opcao = -1;
    
    do
    {
        scanf("%d",&opcao);
    
        if(opcao == -1)
        {
            flag = 0;
            printf("fim do programa");
        }
        else
        {
            printf("opcao:%d\n",opcao);
        }
    }
    while (flag == -1 );
}
Entrada
1
2
-1
Saída
1
opcao:1
2
opcao:2
-1
fim do programa

O comando for de C nos permite declarar um loop infinito sem utilizar seus campos de iniciação, comparação e incremento. Isso é mostra na sintaxe abaixo:

Sintaxe
for(; ; )
{
    //código
}
Exemplo 6
#include <stdio.h>

void main ()
{

 int cont = 0;
 printf("inicio_loop\n");
 for(; ;)
 {
    //código
    //...
    //sair do loop
    if (cont >= 5)
        break;
    printf("loop %02d\n", cont + 1);
    cont++;
}
 printf("fim_loop\n");
}
Saída
inicio_loop
loop 01
loop 02
loop 03
loop 04
loop 05
fim_loop

Fazendo uso do comando goto, o for acima pode ser rescrito escrita como no exemplo abaixo:

Exemplo 7
#include <stdio.h>

void main ()
{

 int cont = 0;
 printf("inicio_loop\n");
 inicio_loop:
    //código
    //...
    //sair do loop
    if (cont >= 5)
        goto fim_loop;
    printf("loop %02d\n", cont + 1);
    cont++;
 goto inicio_loop;
 
 fim_loop:
 printf("fim_loop\n");
}
Saída
inicio_loop
loop 01
loop 02
loop 03
loop 04
loop 05
fim_loop

Os loops infinitos podem também ser feitos como os comandos while e do-while. Esses comandos não permitem que o campo em que a uma expressão de validação fique vazia, assim tem que utilizar um valor numérico 0 ou 1, por exemplo:

Exemplo 7
#include <stdio.h>

void main ()
{

 int cont = 0;
 printf("inicio_loop\n");
 do
 {
    //código
    //...
    //sair do loop
    if (cont >= 5)
        break;
    printf("loop %02d\n", cont + 1);
    cont++;
}while(1);
 printf("fim_loop\n");
}
Saída
inicio_loop
loop 01
loop 02
loop 03
loop 04
loop 05
fim_loop
Exemplo 8
#include <stdio.h>

void main ()
{

 int cont = 0;
 printf("inicio_loop\n");
 while(1)
 {
    //código
    //...
    //sair do loop
    if (cont >= 5)
        break;
    printf("loop %02d\n", cont + 1);
    cont++;
 }
 printf("fim_loop\n");
}
Saída
inicio_loop
loop 01
loop 02
loop 03
loop 04
loop 05
fim_loop
  1. 21/10/2025 - revisão 6 - Adição: loop infinito usando for, goto, while e do-while
  2. 03/09/2025 - revisão 5 - Ajustes: pontuais, sintaxes/fluxogramas e objetivos
  3. 11/03/2025 - revisão 4 - Ajustes com descrição do while
  4. 08/10/2024 - revisão 3 - Ajustes pontuais
  5. 30/08/2024 - revisão 2 - Correção em links for,while e dowhile
  6. 28/09/2023 - revisão 1 - Correção em erros gramaticais, sintaxe, layout, exemplos while/do-while, adição de fluxogramas
  7. 19/05/2023 - versão inicial