Como Fazer um Delay em C

Alguma vez você já quis fazer com que um programa em C esperasse um determinado tempo? É possível usar uma técnica que permite que o tempo passe, por exemplo: ao mostrar uma página inicial (uma notícia ou dica) de um jogo. Este artigo mostrará algumas maneiras de fazer um programa "ficar parado".

Passos

  1. Faça com que a CPU funcione por um tempo sem produzir um evento perceptível.
  2. Não faça nenhuma outra operação durante esse tempo para conseguir criar um delay simples.

A técnica da instrução "for"

  1. Use uma instrução de repetição "for" normal seguida de uma instrução nula para implementar um delay.
  2. Escreva o seguinte exemplo:
    • for (i=1 ; i<100 ; i++) ;
    • A instrução seguida de ";" faz com que o computador execute um ciclo 100 vezes sem nenhum evento perceptível. Ela simplesmente cria um "atraso/retardamento" de tempo, comumente chamado de "delay".

A técnica da função "sleep()"

  1. Use sleep(). A função chamada sleep(int ms), declarada no arquivo "TIME.H", faz com que o programa espere pelo tempo especificado em milissegundos.
  2. Inclua a seguinte linha no seu programa antes de "int main()":
    • #include TIME.H
  3. No local em que você precisa que o programa faça um delay, insira a instrução:
    • sleep(1000);
    • Mude o valor "1000" para o número, em milissegundos, que deseja que o programa espere (por exemplo, se quiser criar um delay de 2 segundos, digite "2000").
    • Dica: Em alguns sistemas, o valor pode ser usado em segundos ao invés de milissegundos. Portanto, há casos em que 1000 não equivale a 1 segundo, e sim à 1000 segundos.

Dicas

  • A lógica acima pode ser implementada usando qualquer estrutura de repetição seguida por uma instrução nula e ";". É possível usar os comandos "while" ou "do-while".
  • Um milissegundo equivale a 1/1000 de um segundo.

Avisos

  • Essa técnica normalmente é inútil para qualquer aplicação, exceto em um programa trivial. No geral, prefira o uso de temporizadores ou eventos controlados com tempos aproximados para implementar delays. Caso contrário, o programa ficará trancado durante o tempo de duração do delay, o que não é bom. Além do mais, fazer com que um ciclo se repita N vezes, dependendo da instrução utilizada, pode ter resultados inesperados. Aparentemente, o autor original nunca ouviu falar de otimização de compiladores, que podem apagar um ciclo de repetição inteiro caso ele não faça nada!
  • Note que, ao usar a técnica do comando "for", você pode precisar de um valor muito alto para a variável "i", pois uma instrução nula é executada muito rapidamente. Nesses casos, números muito grandes podem não caber em uma variável do tipo inteiro.
  • Se usar o comando for, o compilador pode acabar otimizando o código e, uma vez que essa instrução não faz nada, ela será removida. Isso não acontece ao usar a função Delay().
Information
Users of Guests are not allowed to comment this publication.