Laços de repetição

  

Laços de repetição

Os laços de repetição garantem a repetição de um ou mais comandos em uma estrutura de controle, onde devemos sempre usar uma variável para controle do laço e garantir que o laço tenha uma condição de finalização, evitando a criação de laços infinitos quando estes não forem desejados.

Os principais comandos de repetição são: For, while e do-while.

O Laço for é um laço de repetição onde sabemos, ou temos como saber em tempo de execução do programa quantas vezes teremos a repetição um ou vários comandos que estarão presos no laço. Além dessa característica, o laço for consegue realizar o auto- incremento da variável de controle do laço.

O laço while trabalha uma condição lógica, que deverá ser verdadeira para a entrada no laço e permanecerá neste até que a condição seja alterada para falsa. O controle da condição lógica deverá ser dentro do bloco de repetição para que o mesmo tenha um fim.

O laço do-while é um laço em que um ou vários comandos de dentro do laço são executados pelo menos uma vez, pois o teste lógico será realizado ao final do comando, tendo que prever a condição lógica de saída do laço, assim como no laço while.

 

Abaixo descreveremos as principais características de cada um dos comandos de repetição.

 

Laço for

 

O laço for é um laço em que podemos controlar a quantidade de repetições, tendo como principal vantagem

o de ser auto-incrementado. A sintaxe do laço é:

for(inicialização; condição; incremento) Instrução;

Como exemplo, podemos citar o seguinte código:

for(aux=1; aux<100; aux++) printf(“%d”, aux);

No trecho acima, temos o laço de repetição que inicia com valor 1 e finaliza com o valor 99, escrevendo na tela o valor de X. Após a impressão do valor de X, X é incrementado com o valor dele adicionado ao valor da variável aux (X=X+aux). O exemplo ilustra o uso do laço for com um bloco de comandos a serem executados a cada uma das repetições, no caso 99 vezes.

Vejamos um exemplo onde queremos definir em tempo de execução do programa a quantidade de

repetições de um laço:

#include <stdio.h>

int main(void){

int X=0, aux, num;

printf("Digite um numero para repetir o laco"); scanf("%d", &num);

for(aux=0; aux<=num; aux++) printf("%d, ", aux);

}

 

No exemplo acima, o programa pede um número e ao ser digitado, esse número é usado como condição de teste no laço de repetição. Como resultado, temos que o laço será repetido quantas vezes o usuário do programa desejar e a cada repetição será impresso o número da variável que estamos usando na repetição. Também é possível executar o laço for com decremento, ou seja ao invés de incrementar um valor, este pode ser decrementado. Segue um exemplo:

#include <stdio.h> int main(void){

int X=0, aux, num;

printf("Digite um numero para repetir o laco"); scanf("%d", &num);

for(aux=num; aux!=0; aux--) printf("%d, ", aux);

}

 

O programa acima também recebe um número para controlar as repetições do laço, porém o número é

 

colocado como o valor inicial da variável aux, que é decrementada em -1 a cada execução do laço for. O laço for pode ser usado para criar um laço infinito, como por exemplo:

 

for ( ; ;)

 

printf(“esse laço e infinito...”);

 

Observe que o programa fica preso ao laço for por não ter nenhuma condição. Neste caso, para sair do laço infinito, podemos usar o comando break. Vejamos o exemplo abaixo:

 

#include <conio.h> #include <stdio.h>

 

int main(void){

for( ; ; ){

printf("laco infinito, tecle A para sair..."); if(getchar()=='A')

break;

}

}

Apesar de estranho o fato de que o programa não tenha nenhuma variável e conter um laço infinito, este programa está correto! Sua condição de saída do laço se dá através da inserção da tecla ‘A’ (que deve ser maiúscula!).

Laço while

O comando while é um laço de repetição onde devemos ter uma variável para entrada no laço, onde esta deve ser uma expressão lógica verdadeira. As repetições serão realizadas até que a condição do laço seja falsa.

 

A sintaxe do laço while é:

while(condição) Comando1;

Com o uso das chaves, o comando while consegue repetir uma sequência de instruções, que fica presa ao

laço, conforme podemos ver na sintaxe abaixo: while(condição){

Comando1; Comando2; ComandoN;

}

Como exemplo de aplicação, vejamos um programa que entra em um laço while e imprime na tela a quantidade de vezes em que o laço será executado até que o usuário digite o caractere ‘s’.

#include <stdio.h> int main(void){

int x=1;

char sair='n';

printf("entrando dentro de um laco \n\n"); while(sair!='s') {

printf("o laco foi executado a %d vez \n\n", x);

x++;

scanf("%c", &sair);

}

}

Outro exemplo do laço while, vejamos:

#include <conio.h> #include <stdio.h> int main(void){

int x=1;

char sair='n';

printf("entrando dentro de um laco \n\n");

while(1) {

printf("o laco foi executado a %d vez \n\n", x); printf("tecle s para sair do laco \n");

scanf(" %c", &sair); if (sair=='s')

break; x=x+1;

}

}

Neste exemplo, o laço while é executado de forma infinita, pois não temos uma comparação lógica a fazer e sim um valor pronto, ao qual será entendida como uma condição verdade. Assim, para sairmos do laço while infinito, podemos usar o comando break.

 

Laço do - While

O laço do-while é um laço em que o teste da condição é realizado no final do bloco de comandos. Isso faz com que o código do bloco de comandos seja repetido, pelo menos uma vez, antes da condição lógica ser testada ao final. A sintaxe do comando é:

Do{

comando1; comando2; comando;

}

while(condição);

Vejamos um exemplo em que o usuário entra no laço e para sair deve digitar o caractere ‘s’: #include <conio.h>

#include <stdio.h>

int main(void){

int x=1; char ch;

 

printf("entrando dentro de um laco de while \n\n"

do{

 

printf("o laco foi executado a %d vez \n\n", x); x++;

printf("tecle s para sair do laco \n"); ch=getche();

 

} while (ch!='s');

}

Notemos que não é preciso inicializar a variável de controle do laço “ch”, pois a mesma só receberá valores antes da condição ser testada.

Assim como no while, o do-while também executa laços infinitos, podendo usar o comando break para a

saída do laço em questão. Segue um exemplo:

 

#include <conio.h> #include <stdio.h>

 

int main(void){

int x=1;

printf("entrando dentro de um laco do while \n\n"); do{

printf("o laco foi executado a %d vez \n\n", x); x++;

printf("tecle s para sair do laco \n"); if(getche()=='s')

break;

} while (1);

}

Fonte: Linguagem da programação I, UFERSA, Macedo, Luiz