Muitas vezes enquanto estamos programando, vamos precisar repetir determinadas instruções diversas vezes, enquanto não for estabilizada a condição correta. Para isso utilizaremos os laços while, do while e for, que auxiliados de alguns operadores, se tornam fundamentais para nossos programas.
► While
Esse laço sempre executara a instrução enquanto uma certa condição for verdadeira. Primeiro ele avalia a condição. A instrução sendo verdadeira, a instrução é repetida novamente, sendo assim, ficara repetindo até a condição se tornar falsa. Se for falso (ZERO), ele simplesmente encerra o laço e partirá para próxima instrução.
Aqui esta um pequeno exemplo, onde eu quero mostrar na tela todos os números menores que 9, partindo de 1.
Ex1:
#include<stdio.h>
/*
* O laço executa enquanto num for menor que 9.
* Se eu quisesse que ele chegasse a 9, precisaria colocar apenas " <= " ao invés de " < ". :)
*/
main()
{
int num = 1; // carga inicial
while(num<9) // condição a verificar
{
printf("E aeee %d\n",num);
num++; // pós instrução
}
}
Ex2:
#include<stdio.h>
main()
{
int num = 2;
while(num<90)
{
printf("3 * %d = %d\n",num, 3*num);
num = num + 1;
}
}
► For
Esse laço reúne carga inicial, condição e pós-instrução, tudo em apenas uma linha. É utilizada para executar uma determinada instrução dentro de um bloco, sendo a condição feita no inicio do corpo do laço, até o limite estipulado.
Ele executa a carga inicial, avalia a condição, e se for falsa termina e passa para próxima instrução. No caso de ser verdadeira, a instrução (ou bloco de instruções) é executada. Depois de executada é feita a pós-instrução, onde é realizado o incremento ou o decremento dos valores. Voltando depois a verificação da condição, até se tornar falsa.
Ex:
#include<stdio.h>
main()
{
int num;
printf("Carregando...\n");
for(num = 1; num <= 100; num++)
{
printf("...%d%%\n",num);
}
printf("Concluído!");
}
Poderia também adicionar um numero para interagir.
Ex2:
#include<stdio.h>
main()
{
int num;
int z;
scanf("%d ",&z);
printf("Carregando...\n");
for(num = 0; num <= 100; num++)
{
printf("...%d\n",num);
}
}
► do While
A instrução do.. while diferencia-se de for e while, pois a condição é testada no fim do laço. Ele executa a condição avaliando logo em seguida. Se o resultado for positivo, volta a executar e avaliar, até o resultado ser negativo. Sendo negativo, o laço é terminado e a próxima instrução é executada.
Ex:
#include<stdio.h>
/*
* Criei aqui um humilde programa, que faz o usuário escolher uma fruta.
*/
main()
{
char op;
do
{
printf("\t\nEscolha uma fruta \n");
printf("\tL = Limão \n");
printf("\tB = Banana \n");
printf("\tT = Tomate\n\n");
scanf("%c", &op);
fflush(stdin); // Limpa o Buffer do teclado
switch(op)
{
case 'l':
case 'L': printf("Limão!");
break;
case 'b':
case 'B': printf("Banana!");
break;
case 't':
case 'T': printf("Tomate!");
break;
default: printf("Erro");
}
} while (op!= 's' && op != 'S'); // Enquanto não for digitado 's' ou 'S', o programa continuara.
}
LEMBRANDO QUE PODEMOS UTILIZAR TODOS ESSES LAÇOS DE FORMA ENCADEADA. VOU EXPLICAR MAIS TARDE!
Também é possível criar laços infinitos, bastando colocar uma condição que seja sempre verdadeira.
Ex:
#include<stdio.h>
main()
{
int z = 2;
while(z>1)
{
printf("...%d \n",z);
z++;
}
}
► Os Operadores unários ++ e --
São operadores utilizados para incrementar ou decrementar as variáveis. Foram utilizados nos exemplos anteriores.
► Operador " ++ " ► Incremento de 1. Ex: a++, ++z
► Operador " -- " ► Decremento de 1. Ex: b--, --f
► Diferença de ++z e z++
Quando o operador vier antes da variável (++z), a variável é incrementada primeiro, para depois ser utilizada. No caso de ser incrementa depois (z++), ela é utilizada primeiro, para depois ser incrementada. Isto vale o mesmo para decremento. E depende é claro, se ela estiver isolada.