Laços de Repetição

Padrão

Olha eu aqui denovo. Apesar dos sumiços periódicos, até que o blog está caminhando bem… E estou gostando também que, mesmo tendo um nível bem baixo de atualizações, o blog está com uma média de 15 a 20 visitas por dia. Saber que o blog está sendo útil para algumas pessoas me deixa muito contente. Ah, gostaria também pedir desculpas por não estar respondendo os e-mails nas últimas semanas… é que estou muito sem tempo mesmo… iniciação científica, projeto da FAITEC (a feira tecnológica da minha faculdade), seminários, palestras, e agora ainda tem a Maratona de Programação, além também de uns problemas pessoais aqui. Mas de boa, podem mandar as dúvidas que eu responderei na medida do possível. Bem, então vamos ao que interessa!

Hoje iremos tratar de um tema de suma importância na programação: Os Laços de Repetição. Em nossos programas já estamos lendo dados do usuário. Imagine o seguinte: vamos fazer uma soma de números. Lemos dois números e realizamos a soma. E se quiséssemos fazer uma soma de, por exemplo, 100 números, ou mesmo uma quantidade X definida pelo usuário? No caso da soma de 100 números, teríamos 100 vezes o comando Leia()? E como faríamos pra ler uma quantidade X de vezes? Sem as estruturas de repetição, sem dúvida, seria bem complicado. Além disso, teríamos um código extremamente grande e repetitivo, com comandos iguais pra fazer as mesmas coisas. Os Laços de Repetição foram criados para solucionar estes problemas, deixando os códigos mais compactos, mais legíveis e mais rápidos de serem desenvolvidos.

Os Laços de Repetição que iremos tratar aqui são o Enquanto, Faça e o Para. Descrevendo-os resumidamente, temos o seguinte:

  • Enquanto: testa a condição antes de executar o bloco de código
  • Faça: executa o bloco de código e depois verifica a condição
  • Para: executa um bloco de código um determinado número de vezes

Vamos começar, então, falando do Enquanto. O enquanto possui um funcionamento bem simples, porém é de grande utilidade. Ele compara uma sentença e executa o bloco de código se a condição for verdadeira. Da mesma forma que, por exemplo, no Se, você pode colocar diversas condições, com o uso dos operadores lógicos e e ou, além do não. A seguir temos o exemplo da sintaxe em algoritmo…

enquanto (nota &gt; 70) faça<br />
   comandos...<br />
fim-enquanto

… e em Pascal…

while (Nota &gt; 70) do<br />
begin<br />
   comandos...<br />
end;

Dessa forma, utilizamos o Enquanto quando vamos executar uma repetição sem sabermos necessariamente o número de vezes que ele será executado. O looping pode, ainda, não ser executado nenhuma vez, caso a condição não seja satisfeita, ou seja, no Enquanto, testa-se a condição antes de executar o bloco de código.

Outra estrutura de repetição importante é o Repita. Ela possui praticamente o mesmo funcionamento que o Enquanto, porém a condição é testada após a execução do bloco de código. Abaixo, temos a sua sintaxe algoritmica…

repita<br />
   comandos...<br />
enquanto(nota &lt;= 70) e (nota &gt;= 30)

… e em Pascal…

repeat<br />
   comandos...<br />
until(nota &lt;= 70) and (nota &gt;= 30);

Neste exemplo acima, utilizei o operador lógico e para condicionar a repetição. Dessa forma, o looping será executado somente enquanto a variável Nota estiver na faixa entre 30 e 70 (para mais detalhes sobre os operadores lógicos, dê uma olhada no post sobre eles).

Por último, mas não menos importante, temos o Para. Esta estrutura de repetição se diferencia das outras por executar a repetição um determinado número de vezes. Como assim? A execução do Para é executada através da verificação e incremento de uma variável inteira, ou seja, determinamos a quantidade de vezes que a repetição será executada através de um limite para o valor da variável. Meio confuso? Calma, nos exemplos abaixo vai ficar mais claro. Primeiro na forma algoritmica…

para i = 1 até 50 faça<br />
   comandos...<br />
fim-para

… e em Pascal…

for i := 1 to 50 do<br />
begin<br />
   comandos...<br />
end;

No exemplo acima, temos a variável I funcionando como o contador de execução do looping, sendo incrementado automaticamente a cada execução do bloco de código. Dessa forma, o nosso looping será executado 50 vezes, ou seja, enquanto a variável I for menor ou igual o valor 50. Podemos, em vez do valor 50 colocar outra variável ou uma constante pra controlar a quantidade de vezes que o Para será executado.

O Para também possui uma particularidade interessante, podendo realizar decrementos a cada execução do looping. Dessa forma, podemos, por exemplo, criar contadores decrescentes, ou ainda exibir vetores invertidos (para mais informações sobre vetores, consulte o próximo post). A seguir temos a sintaxe do Para com decremento tanto em algoritmo quanto em Pascal:

para i = 50 até 1 passo -1<br />
   Comandos...<br />
fim-para

for i := 50 downto 1 do<br />
begin<br />
   Comandos...<br />
end;

Bem, pessoal, acho que é isso. Com o tempo vocês verão que a utilização das estruturas de repetição está sempre presente no dia-a-dia de um programador e tem papel fundamental na construção de um código otimizado. Fiquem atentos, pois no próximo post iremos falar de vetores e matrizes. Até lá e bons estudos!