Як організувати затримку виконання програми в C

Ви коли-небудь хотіли створити програму на C, яка вичікує певний час? Ви можете налаштувати спосіб, щоб дати часу «пролетіти", наприклад: при показі спливаючої сторінки (повідомлення або підказка) для гри. . ОК, ось кілька способів створення Програми виду" stand still " (стояти на місці), читайте далі ...

Кроки

  1. Нехай ваш процесор працює протягом деякого часу, не викликаючи помітної події.
  2. Не виконуйте інші операції під час цієї затримки, щоб створити просту тимчасову затримку.

Метод1 З 2:
Методика циклу "for-loop"

  1. Використовуйте Типовий цикл "for", за яким слідує порожній оператор для реалізації затримки.
  2. Напишіть наступним чином, для прикладу:
    • For (i=1 ; i&#lt;100 ; i++) ;
    • Оператор, що йде після"; " змушує комп'ютер виконати цикл 100 разів без помітної події. Він лише створює тимчасову затримку.

Метод2 З 2:
Методика "sleep ()"

  1. Використовуйте sleep (). функція називається sleep (int ms), оголошена в &#Lt;TIME.H&#gt;, яка змушує програму чекати протягом зазначеного часу в мілісекундах.
  2. Увімкніть наступний рядок у вашу програму перед " int main ()":
    • #include &#lt;TIME.H&#gt;
  3. Вставте там, де це необхідно, щоб ваша програма зробила затримку:
    • Sleep(1000);
    • Змініть "1000"на кількість мілісекунд, які ви хочете чекати (наприклад, якщо ви хочете зробити 2-секундну затримку, замініть його на "2000".
    • Порада: у деяких системах значення може вказуватися в секундах замість мілісекунд. Тому, іноді 1000-не є 1 с, але, в дійсності, 1000 секунд.

Приклад коду

Програма, яка очікує певну кількість секунд:


#include &#lt;stdio.h&#gt;
#include &#lt;dos.h&#gt;

Int Main()
{
Int Del; // The delay period
Printf("Enter the delay time (in seconds): ");
Scanf("%i",&#amp;Del); 
Del *= 1000; // Multiply it by 1000 to convert to milliseconds
Delay(Del); // Delay.
Printf("Done.");
Return 0;
}


Програма, яка виконує зворотний відлік від 10 to 0:


#include &#lt;STDIO.H&#gt;
#include &#lt;TIME.H&#gt;

Int Main()
{
Int I;
For(I = 10; I &#gt;= 0; I--)
{
Printf("%i\n",I); // Write the current 'countdown' number
Delay(1000); // Wait a second
}
Return 0;
}

Поради

  • Мілісекунда - це 1/1000 секунди.
  • Алгоритм, зазначений вище, може бути реалізований за допомогою будь-якої циклічної структури з наступним нульовим оператором -"; як використовуючи цикли while або do-while.

Попередження

  • Цей метод, як правило, марний в чому-небудь, крім тривіальної програми. Загалом, використовуйте таймери або подієво-орієнтований підхід, щоб це здійснити. В іншому випадку, програма стане не відповідати протягом часу затримки і це не завжди добре. Крім того, вибір N в циклі, якщо це залежить від виконання команд, може мати несподівані результати. Очевидно, оригінальний автор ніколи не чув про оптимізуючий компілятор ... він може оптимізувати весь цикл, якщо він насправді нічого не робить !
  • Зверніть увагу, що при використанні методу " for-loop "(циклу "for"), можливо, буде потрібно дуже великий інтервал для i, так як порожній оператор виконується дуже швидко. Такі великі цифри можуть не поміститися в тип integer.
  • Якщо ви використовуєте» for-loop", компілятор може оптимізувати код, і, оскільки цикл не робить нічого, видаліть його. Цього не відбувається при використанні Delay ().

Ще почитати: