Italo Info


Comandos de repetição (Loops)

Muitas vezes, quando desenvolvemos software, surge a necessidade de executar um conjunto de instruções várias vezes. Para isso, existem os comandos de repetição, também conhecidos como loops.

Comando for

A instrução for tem três partes mais bloco de código. Veja abaixo a sintaxe do comando for:

for( INICIALIZAÇÃO ; CONDIÇÃO ; INCREMENTO ) {
    BLOCO DE CÓDIGO
}    

Na primeira parte do for, fica a inicialização de uma ou mais variáveis que, geralmente, serão utilizadas como contador. Logo depois, vem a condição que, quando assume o valor falso, o for é terminado e, por ultimo, o incremento de uma ou mais variáveis utilizadas como contador. Veja o exemplo abaixo:

#include <stdio.h> int main() { int i; for( i=1; i<=10; i++ ) printf( "%d ", i ); return 0; }

No exemplo acima é utilizada uma a variável contador i que, inicialmente, recebe o valor 1. A condição é i<=10, isto é, repete enquanto o valor da variável i for menor ou igual a 10 e, no incremento, é utilizado o i++ que é o mesmo que i=i+1. A inicialização da variável contador é executada apenas uma vez, mas, a condição de parada é verificada a cada iteração do for, isto é, antes da de cada execução do bloco de código. O incremento da variável contador é executada depois de cada execução do bloco de código. Em resumo, o programa acima imprime os números de 1 a 10.

Abaixo, um programa que imprime os números impares entre 1 e 10. Lembrando que dentro do bloco de código do for tem apenas uma instrução, o if e, dentro do bloco de código do if, também, tem apenas uma instrução. Por isso, as chaves são opcionais. Obs: o operador de igualdade é == e o operador de diferente é !=.

#include <stdio.h> int main() { int i; for( i=1; i<=10; i++ ) if ( i % 2 != 0 ) printf( "%d ", i ); return 0; }

Exercícios

1) Altere o exemplo anterior para que sejam impressos os valores entre -5 e 5.

2) Altere o exemplo anterior para que sejam impressos apenas os valores divisiveis por 3 entre 0 e 20.

3) Altere o exemplo anterior para que sejam impressos apenas os valores pares entre 1 e 10.


Comando While

A instruçãoo while tem um condição e bloco de código. Abaixo a sintaxe do comando while:

while( CONDIÇÃO ) {
    BLOCO DE CÓDIGO
}

O comando while executa do seguinte modo: while (enquanto), enquanto a condição for verdadeira execute o bloco de código. Abaixo, um programa que imprime os números pares de 1 a 10 através da instrução while:

#include <stdio.h> int main() { int i = 1; while( i<=10 ) { if ( i % 2 == 0 ) printf( "%d ", i ); i++; } return 0; }

No programa acima, a condição é i<=10, a variável i recebe, inicialmente, o valor 1 e tem seu valor incrementado em 1 com a execução do comando i++. Observe o mesmo programa feito com for:

#include <stdio.h> int main() { int i; for( i = 1; i <= 10; i++ ) if ( i % 2 == 0 ) printf( "%d ", i ); return 0; }

Comando do/while

A instrução do/while tem uma condição e bloco de código. Abaixo a sintaxe do comando do/while:

do {
    BLOCO DE CÓDIGO
} while( CONDIÇÃO );

O comando do/while funciona do seguinte modo: execute o bloco de código enquanto a condição for verdadeira.

O comando do/while é semelhante ao while, excerto que o bloco de código da instrução é executado pelo menos uma vez, porque, a verificação da condição de parada é feita depois da execução de cada bloco de código e, não, antes como acontece no comando while.

Abaixo o programa que imprime todos os números pares entre 1 e 10 feito com comando do/while:

#include <stdio.h> int main() { int i = 0; do { i++; if ( i % 2 == 0 ) printf( "%d ", i ); } while ( i < 10 ); return 0; }

Loop infinito

Cuidado com os comandos de repetição. Uma condição de parada é necessária para que o comando de repetição não gere um loop infinito que cause o travamento do programa, isso porque, quando acontece um loop infinito, o bloco de código do comando de repetição é executado indefinidamente. Abaixo um exemplo de loop infinito:

#include <stdio.h> int main() { int i = 0; while( i < 10 ) { printf( "%d", i ); } return 0; }

No exemplo acima a variável (i) nunca chega a ter como valor um número maior ou igual a 10, a condição desse exemplo nunca é falsa. Ou seja, (i) sempre é menor que 10 pois tem como valor inicial 0. Abaixo o exemplo acima que não trava:

#include <stdio.h> int main() { int i = 0; while( i < 10 ) { printf( "%d", i ); i++; } return 0; }

Perceba que a variável (i) é incrementada em 1 a cada iteração do comando for, o que significa que, em 10 repetições a variável i alcança o valor 10 e o comando while é finalizado. Se o comando executa enquanto i < 10 significa que para de executar quando essa condição for falsa, isto é, i >= 10.

Chegamos ao final dessa aula, passe para a próxima!