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 (PASCAL, DELPHI, C/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_CONTROLE, CONDICAO_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.