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

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

кроки

  1. Delay in C Step 1
1. Нехай ваш процесор попрацює протягом деякого часу, не викликаючи помітного події.
  • Delay in C Step 2
    2. Не об`єднуйте свій пристрій інші операції під час цієї затримки, щоб створити просту тимчасову затримку.
  • Метод 1 з 2:
    Методікацікла "for-loop"
    1. Delay in C Step 3
    1. Використовуйте тіпічнийцікл "for", за яким слід порожній оператор для реалізації затримки.
  • Delay in C Step 4
    2. Напишіть наступним чином, для прикладу:
  • for (i = 1 - i<100>
  • Оператор, що йде після ";" змушує комп`ютер виконати цикл 100 раз без помітного події. Він лише створює тимчасову затримку.
  • Метод 2 з 2:
    Методика "sleep ()"
    1. Delay in C Step 5
    1. Використовуйте sleep ().Функція називаетсяsleep (int ms), оголошена в
  • Delay in C Step 6
    2. Увімкніть наступний рядок в вашу программуперед "int main ()":
  • #include
  • Delay in C Step 7
    3. Вставте там, де це необхідно, щоб ваша програма зробила затримку:
  • sleep (1000);
  • Змініть "1000" на кількість мілісекунд, які ви хочете чекати (наприклад, якщо ви хочете зробити 2-секундну затримку, заменітеего на "2000".
  • Порада: У деяких системах значення може вказуватися в секундах замість мілісекунд. Тому, іноді 1000 - не є 1 з, але, в дійсності 1000 секунд.
  • приклад коду

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

    #include #include int main () {int del- // The delay periodprintf ( "Enter the delay time (in seconds):") -scanf ( "% i", & del) -del * = 1000- // Multiply it by 1000 to convert to millisecondsDelay (del) - // Delay.printf ( "Done.") -Return 0-}


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

    #include #include  main () {int i-for (i = 10 i> = 0 i -) {printf ( "% i n", i) - // Write the current `countdown` numberDelay (1000) - // Wait a second} return 0-}

    Поради

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

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

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