Comando FOR: A flexibilidade na sua mão

Introdução

O comando FOR já foi abordado nos artigos sobre  comando de repetição e sub-rotina. Esses artigos mostraram o comando FOR de uma forma genérica, pois as sintaxes e os exemplos apresentados abordaram cinco linguagens diferentes (PASCALDELPHIC/C++JAVA e PHP). Este artigo irá mostrado a flexibilidade do comando FOR na linguagem de programação C/C++, mas os exemplos apresentados podem ser utilizados na linguagens JAVA e PHP com as devidas modificações, quando necessário.

Definição

O comando de repetição FOR permite aos desenvolvedores de programas determinar a quantidade de vezes que uma ação deve ser repetida.

Observando a sintaxe do comando FOR na linguagem de programação C/C++ é possível dividir o mesmo em 3 (três) seções mais o bloco de comandos.

Sintaxe do Comando FOR

for (VARIAVEL_CONTROLE = VALOR_INICIAL; CONDICAO_PARADA; PROCESSAMENTO)  {
    // bloco de comandos
}

Nessa sintaxe, tanto as seções quanto o bloco de comandos são bastantes flexíveis, pois embora VARIAVEL_CONTROLECONDICAO_PARADA e PROCESSAMENTO façam referencia a uma única variável de controle, é possível utilizar mais de uma variável de controle nesse processo.

Também é possível omitir qualquer uma das seções ou o bloco de comandos. Com todos esses opcionais e podendo ser utilizados de diversas maneiras, o comando de repetição FOR da linguagem C/C++ pode ser considerado um canivete suíço, se comparado ao comando de repetição com mesmo homónimo em outras linguagens.

Os desenvolvedores da linguagem de programação C/C++ devem conhecer o comando FOR detalhadamente para poder utiliza-lo como apenas um verdadeiro NINJA o faria.

Exemplo

Todos os códigos apresentados neste artigos, com exceção do último,  resolvem o mesmo problema:

- Calcular o fatorial de um número natural.

Por que resolver o mesmo problema? Porque dessa maneira ficará mais clara a flexibilidade do canivete suíço da linguagem C/C++.

Código #1

    int i, num, fat;    
    num = 5;
    fat = 1;    
    for (i = 1; i <= num; i++) {
        fat *= i;
    }
    printf("%d", fat);

Esse primeiro código mostra a maneira mais comum de se utilizar o comando FOR. Nele percebemos claramente as 3 (três) seções e o bloco de comandos.

Código #2

    int i, num, fat;    
    num = 5;
    fat = 1;    
    i = 1;
    for ( ; i <= num; i++) {
        fat *= i;
    }
    printf("%d", fat);

Nesse código a inicialização da variável de controle foi omitida do comando FOR, embora ela tenha sido inicializada na linha 4 (quatro).

Código #3

    int i, num, fat;    
    num = 5;
    fat = 1;    
    for (i = 1; ; i++) {
        if (i > num) {
            break;
        }
        fat *= i;
    }    
    printf("%d", fat);

Nesse código a condição de parada foi omitida do comando FOR. A parada é controlada pelo comando comando IF, onde será acionado o comando BREAK. O comando BREAK força a saída dos comandos de repetição.

Código #4

    int i, num, fat;    
    num = 5;
    fat = 1;    
    for (i = 1; ; i++) {
        fat *= i;
        if (i == num) {
            break;
        }
    }    
    printf("%d", fat);

Esse código é uma variação do anterior, mas o resultado final será o mesmo.

Código #5

    int i, num, fat;    
    num = 5;
    fat = 1;    
    for (i = 1; i <= num; ) {
        fat *= i;
        i++;
    }    
    printf("%d", fat);

Nesse código o processamento da variável de controle não foi informado no comando FOR, esse processamento acontece dentro do bloco de comandos na linha 6 (seis).

Código #6

    int i, num, fat;    
    num = 5;
    fat = 1;    
    i = 1;
    for ( ; ; ) {
        fat *= i;
        if (i == num) {
            break;
        }
        i++;
    }    
    printf("%d", fat);

Nesse código nenhuma das 3 (três) seções foram informadas no comando FOR, mas é fácil perceber que a variável de controle foi inicializada na linha 4 (quatro), a condição de parada ficou com o comando comando IF da linha 7 (sete) e o processamento é feito na linha 10 (dez).

Código #7

    int i, num, fat;    
    num = 5;
    fat = 1;    
    i = 1;
    for (i = 1; i <= num; fat *= i, i++);
    printf("%d", fat);

Esse código é quase perfeito para calcular o fatorial com o comando FOR na linguagem C/C++. Todas as seções estão presentes, mas na seção de processamento temos 2 (dois) procedimentos:

1º - O valor atual de fatorial é calculado; 2º - O valor da variável de controle é incrementado.

Código #8

    int i, num, fat;    
    num = 5;
    fat = 1;    
    i = 1;
    for (i = 1; i <= num; fat *= i++);
    printf("%d", fat);

Aqui temos um código NINJA, ele é a evolução do código anterior, pois na ultima seção os dois procedimentos são apresentados como um só, embora os dois procedimentos continuem existindo.

Último código (Não calcula o fatorial)

    int i, j;
    for (i = 1, j = 10; i < j && j < 14;i += 2, j++) {
        printf("i: %d >>> j: %d\n", i, j);
    }

Explicando o código:

Esse código não resolve nenhum problema em particular, ele foi apresentado apenas para que o iniciante na linguagem C/C++ conheça mais uma característica do comando FOR. Na primeira seção do comando foram iniciadas duas variáveis de controle, i = 1 e j = 10. Na segunda seção foram incluídas duas condições lógicas unidas pelo Operador Lógico E, representado nesse exemplo pelo E Comercial duplo (&&). Na última seção existe o processamento das duas variáveis de controle.

A saída do exemplo será semelhante ao apresentado abaixo:

i: 1 >>> j: 10
i: 3 >>> j: 11
i: 5 >>> j: 12
i: 7 >>> j: 13

Conclusão

O comando FOR faz parte dos comandos de repetição comum nas linguagens de programação, mas a linguagem C/C++, e outras que utilizam a sintaxe baseada nesta, tornam esse comando de repetição uma ferramenta multi-funcional e flexível. Esse artigo apresentou alguns exemplos para que o iniciante na linguagem C/C++ entenda o quanto o comando FOR é robusto.

Até o próximo artigo.