sábado, 2 de fevereiro de 2013

Linguagem C: Parte 4 [Laços]

     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.

Até a próxima! ^^


► Menu da Linguagem C

2 comentários: