quinta-feira, 21 de julho de 2011

Looping Infinito: Uma Definição

Você sabe o que o que é um laço de repetição infinito?

Muitos programadores por aí conhecem o conceito e costumam acreditar que este tipo de estrutura é simples. No entanto, um laço de repetição infinito pode ser mais complexo e não ser percebido devido à várias interações na aplicação. É como andar em círculos.

Para quem não conhece o conceito, trata-se de uma terminologia assim nomeada por estudiosos de informática para definir uma confusão criada e que não possui uma explicação concreta para solução do problema.


A Wikipédia diz o seguinte:

Um laço infinito (ou looping infinito) é uma sequência de instruções de um programa de computador que repete infinitamente, ou porque não há condição de parada ou porque a condição existe mas nunca é atingida. Em antigos sistemas operacionais com multitarefa cooperativa, laços infinitos normalmente bloqueavam todo o sistema.

Ainda que a maioria dos laços infinitos possam ser encontrados numa revisão detalhada do código, não há método genérico para determinar se um dado programa terminará ou será executado infinitamente, fruto da inabilidade de decisão do problema da parada.

Um simples exemplo em C:


while(1) {
  printf("Looping Infinito!\n");
}


Tentarei explicar em poucas palavras essa terminologia. Diz-se que um programa "entrou em looping infinito" quando acontece algo como...



Have you heard about the new Cray super computer? It’s so fast, it executes an infinite loop in 6 seconds.

O diretor chama sua secretária e diz:
Senhorita Vanessa!
Tenho um seminário na Argentina por uma semana.
Quero que você me acompanhe.
Por favor, faça os preparativos da viagem...


A secretária liga para seu marido:
Alô, João!
Vou viajar para o exterior com o diretor por uma semana.
Cuide-se meu querido!


O marido liga para sua amante:
Eleonor, meu amor.
A bruxa vai viajar para o exterior por uma semana.
Minha Princesa, vamos passar toda semana juntos!


No momento seguinte, a amante liga para o menino para quem dá aulas particulares:
Joãozinho, estou com muito trabalho esta semana.
Não poderei dar aulas.


A criança liga para seu avô:
Vovô, esta semana minha professora estará muito ocupada.
Não terei aulas!
Vamos passar a semana juntos?


O avô - que é o Diretor do primeiro diálogo acima nesta história chama imediatamente a secretária:
Senhorita Vanessa venha rápido, suspenda a viagem!
Vou passar a semana com meu netinho, que não vejo há um ano.
Não vamos participar do seminário.
Cancele a viagem e o hotel.


A secretária liga para seu marido:
Ai amorzinho!
O babaca do Diretor mudou de idéia.
Acabou de cancelar a viagem.


O marido liga para sua amante:
Coração, desculpe!
Não podemos mais passar a semana juntinhos!
A viagem da mocréia da minha mulher foi cancelada.


A amante liga para o menino a quem dá aulas particulares:
Joãozinho, houve alteração nos planos!
Esta semana teremos aulas como de costume.


A criança liga para o avô:
Puta merda vovô!
A véia da minha professora me disse que terei aulas.
Desculpe, não poderemos ficar juntos esta semana.


Seu avô chama a Secretária:
Senhorita Vanessa!
Meu neto acabou de me ligar.
Não poderá mais ficar comigo essa semana, porque terá aulas.
Portanto, dê prosseguimento à viagem para o Seminário.


Conclusão


Entendeu agora o que é um looping infinito?