Você está na página 1de 7

Como Fazer um Delay em C: 7 Passos (com Imagens) http://pt.wikihow.

com/Fazer-um-Delay-em-C

Como Fazer um Delay em C


2 Métodos: A técnica da instrução "for" A técnica da função "sleep()"

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".

1 de 7 14/01/2016 00:33
Como Fazer um Delay em C: 7 Passos (com Imagens) http://pt.wikihow.com/Fazer-um-Delay-em-C

Passos

Faça com que a CPU funcione por um tempo sem produzir um evento
perceptível.

Não faça nenhuma outra operação durante esse tempo para conseguir criar
um delay simples.

Método 1 de 2: 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

2 de 7 14/01/2016 00:33
Como Fazer um Delay em C: 7 Passos (com Imagens) http://pt.wikihow.com/Fazer-um-Delay-em-C

"atraso/retardamento" de tempo, comumente chamado de "delay".

Método 2 de 2: 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").

3 de 7 14/01/2016 00:33
Como Fazer um Delay em C: 7 Passos (com Imagens) http://pt.wikihow.com/Fazer-um-Delay-em-C

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.

Exemplos de códigos

Um programa que espera um determinado período em segundos:

#include <stdio.h>
#include <dos.h>

int main()
{
int del; // A duração do delay
printf("Digite o tempo de delay (em segundos): ");
scanf("%i",&del);
del *= 1000; // Multiplique por 1000 para converter o tempo em milissegundos
Delay(del); // Delay.
printf("Pronto.");
return 0;
}

Um programa que conta, de forma decrescente, de 10 a 0:

4 de 7 14/01/2016 00:33
Como Fazer um Delay em C: 7 Passos (com Imagens) http://pt.wikihow.com/Fazer-um-Delay-em-C

#include <STDIO.H>
#include <TIME.H>

int main()
{
int i;
for(i = 10; i >= 0; i--)
{
printf("%i\n",i); // Escreve na tela o número atual da 'contagem'
Delay(1000); // Espera 1 segundo
}
return 0;
}

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.

5 de 7 14/01/2016 00:33
Como Fazer um Delay em C: 7 Passos (com Imagens) http://pt.wikihow.com/Fazer-um-Delay-em-C

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().

6 de 7 14/01/2016 00:33
Como Fazer um Delay em C: 7 Passos (com Imagens) http://pt.wikihow.com/Fazer-um-Delay-em-C

Sobre o Artigo

Categorias: Artigos em Destaque | Programação

Noutras línguas: Artigo


em
Destaque
English: Delay in C, Español: programar un retardo en C, Italiano: Inserire dei Ritardi
(o Delay) in un Programma C, Русский: организовать задержку выполнения
программы в C

Esta página foi acessada 8 415 vezes.

7 de 7 14/01/2016 00:33