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
A técnica da instrução "for"
-
Use uma instrução de repetição "for" normal seguida de uma instrução nula para implementar um delay.
-
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()"
-
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.
-
Inclua a seguinte linha no seu programa antes de "int main()":
- #include TIME.H
-
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.
ТОП
Статьи
28-09-2016, 22:35
5-12-2016, 09:06
12-11-2016, 11:36
28-09-2016, 08:25
26-09-2016, 18:55
26-09-2016, 18:35