Comando de Repetição: Iterar e reduzir

Introdução

Os comandos de repetição permitem ao desenvolvedor fazer iterações em uma determinada parte do código, a finalização da iteração vai depender da expressão condicional definida pelo desenvolvedor. Este artigo irá fazer uma abordagem inicial sobre os comandos de repetição FOR e WHILE, além de apresentar a sintaxe e utilização do mesmo nas linguagens de programação PASCALDELPHIC/C++JAVA e PHP.

Obs.: A palavra iteração tem como um dos sinônimos repetição; diferentemente de interação que tem como sinônimos comunicação, diálogo.

Rápida explicação

Neste artigo serão utilizadas as linguagens de programação PASCALDELPHIC/C++JAVA e PHP por um motivo simples, mostrar para o iniciante em programação que a maioria das ideias e conceitos vistos no decorrer da aprendizagem existem em diversas linguagens de programação, sendo mais importante aprender a lógica de programação que apenas a sintaxe da linguagem escolhida, pois a sintaxe pode mudar de uma linguagem para outra, mas para ser um bom desenvolvedor é necessário entender a semântica, independente da linguagem.

Mas o leitor pode sentir-se a vontade para se concentrar apenas na linguagem que mais lhe agrade, pois o artigo foi escrito de uma maneira que permita esse olhar direcionado a apenas uma das linguagens

Definição

Os comandos de repetição permitem que o desenvolvedor de programas determine que uma ação seja repetidas diversas vezes. A ação será repetida com base na expressão condicional lógica, em outras palavras, ele permite ao desenvolvedor repetir determinada parte do código enquanto a condição testada for verdadeira.


Os comandos de repetição também são conhecidos como (i) instruções de repetição, (ii) estruturas de repetição, (iii) laços de repetição, (iv) malhas de repetição ou simplesmente (v) loopings.

Comando FOR

O comando de repetição FOR é usado geralmente quando o desenvolvedor conhece o número de vezes que um determinado bloco de comandos vai ser repetido. Desse modo, se o bloco de comandos precisar ser executado mais uma vez e é conhecido de antemão a quantidade de vezes, o comando de repetição FOR será a escolha da maioria dos desenvolvedores.

Exemplo #1

Nesse exemplo serão mostrados todos os números entre 1(um) e 10(dez).

Sintaxe em PASCAL e DELPHI

for VARIAVEL_CONTROLE := VALOR_INICIAL to VALOR_FINAL do
  begin
    // bloco de comandos
  end;

Utilização em PASCAL:

writeln('Comandos anteriores');
for i := 1 to 10 do
  begin
    writeln(i);
  end;
writeln('Comandos posteriores');

Utilização em DELPHI:

ShowMessage('Comandos anteriores');
for i := 1 to 10 do
  begin
    ShowMessage( IntToStr(i) );  // A função IntToStr() converte um valor inteiro numa string 
  end;
ShowMessage('Comandos posteriores');

Sintaxe em C/C++, JAVA e PHP

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

Utilização em C/C++:

printf("Comandos anteriores");
for (i = 1; i <= 10; i++) {
    printf("%d\n", i);  // A máscara %d informa a função printf() que irá receber um valor inteiro
}
printf("Comandos posteriores");

Utilização em JAVA:

System.out.println("Comandos anteriores");
for (i = 1; i <= 10; i++) {
    System.out.println(i);
}
System.out.println("Comandos posteriores");

Utilização em PHP:

print "Comandos anteriores"; // ou echo "Comandos anteriores";
for ($i = 1; $i <= 10; $i++) {
    print $i; // ou echo $i;
}
print "Comandos posteriores"; // ou echo "Comandos posteriores";

Explicando o código

Esse exemplo do comando de repetição FOR pode ser explicado em três passos:

1º - A variável de controle i recebe o valor 1(um) e entra no comando de repetição; 2º - A variável de controle i é mostrada na tela e volta para a linha 2; 3º - A variável de controle i é incrementada em 1(um), e verificado se ainda atende a condição; caso atenda, volta ao 2º passo; caso contrário, abandona o comando de repetição.

Comandos anteriores
1
2
3
4
5
6
7
8
9
10
Comandos posteriores

Peculiaridades das linguagens

Nas linguagens PASCAL e DELPHI, o comando de repetição FOR têm o incremento da variável de controle obrigatoriamente de 1(um) em 1(um). Nas linguagens C/C++JAVA e PHP esse incremento pode ter qualquer valor.

Para utilizar o comando de repetição FOR com decremento, nas linguagens C/C++JAVA e PHP basta informa isso na declaração (Exemplo: Trocar i++ por i--). No caso das linguagens PASCAL e DELPHI, deve-se utilizar o downto no lugar do to, como mostrado na próxima sintaxe, mas em todos os casos o valor inicial deve obrigatoriamente ser maior que o valor final.

for VARIAVEL_CONTROLE := VALOR_INICIAL downto VALOR_FINAL do
  begin
    // bloco de comandos
  end;

Comando WHILE

comando de repetição WHILE é usado geralmente quando o desenvolvedor NÃO conhece o número de vezes que um determinado bloco de comandos vai ser repetido. Desse modo, se o bloco de comandos precisar ser executado mais uma vez e NÃO é conhecido de antemão a quantidade de vezes, o comando de repetição WHILE será a escolha da maioria dos desenvolvedores.

Exemplo #2

Nesse exemplo será mostrado o valor de uma variável do tipo inteira, enquanto ela tiver o valor menor que de uma segunda variável inteira.

Sintaxe em PASCAL e DELPHI

while CONDICAO do
  begin
    // bloco de comandos
  end;

Utilização em PASCAL:

writeln('Comandos anteriores');
while (num1 < num2) do
  begin
    num1 := num1 + 2;
    num2 := num2 + 1;
    writeln(num1);
  end;
writeln('Comandos posteriores');

Utilização em DELPHI:

ShowMessage('Comandos anteriores');
while (num1 < num2) do
  begin
    num1 := num1 + 2;
    num2 := num2 + 1;
    ShowMessage( IntToStr(num1) );  // A função IntToStr() converte um valor inteiro numa string 
  end;
ShowMessage('Comandos posteriores');

Sintaxe em C/C++, JAVA e PHP

while CONDICAO  {
    // bloco de comandos
}

Utilização em C/C++:

printf("Comandos anteriores");
while (num1 < num2) {
    num1 = num1 + 2;
    num2 = num2 + 1;
    printf("%d\n", num1);  // A máscara %d informa a função printf() que irá receber um valor inteiro
}
printf("Comandos posteriores");

Utilização em JAVA:

System.out.println("Comandos anteriores");
while (num1 < num2) {
    num1 = num1 + 2;
    num2 = num2 + 1;
    System.out.println(num1);
}
System.out.println("Comandos posteriores");

Utilização em PHP:

print "Comandos anteriores"; // ou echo "Comandos anteriores";
while ($num1 < $num2) {
    $num1 = $num1 + 2;
    $num2 = $num2 + 1;
    print $num1; // ou echo $num1;
}
print "Comandos posteriores"; // ou echo "Comandos posteriores";

Explicando o código

Nesse exemplo o bloco de comandos executado pelo comando de repetição WHILE , vai continuar repetindo enquanto a variável NUM1 for menor que a variável NUM2. Perceba que não temos como saber de antemão quantas vezes o bloco de comandos será repetido, uma vez que a variável NUM1 cresce com um incremento de 2(dois), enquanto a variável NUM2 cresce com um incremento de 1(um). Dessa maneira a quantidade de repetição vai mudar de acordo com os valores atribuídos a essas variáveis.

Para ficar mais claro, abaixo é mostrada a saída do código quando a variáveis NUM1 e NUM2 recebem os valores 1 e 5, respectivamente:

Comandos anteriores
3
5
7
9
Comandos posteriores

Conclusão

Os comandos de repetição são bastante úteis quando o desenvolvedor tem a necessidade de repetir uma parte do código. Essa quantidade pode ou não ser conhecida antecipadamente. O comando de repetição FOR é mais comumente utilizado quando a quantidade de repetição é conhecida, mas quando essa quantidade não é conhecida, o comando de repetição WHILE é mais adequado. Esse artigo abordou de forma sucinta esses dois comandos de repetição. Em artigos futuros serão apresentados exemplos mais complexos.

Até o próximo artigo.