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