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

Автор: Joan Hall
Дата Створення: 28 Лютий 2021
Дата Оновлення: 1 Липня 2024
Anonim
Работа с файлами с++. Запись в файл. c++ ofstream. Изучение С++ для начинающих. Урок #115
Відеоролик: Работа с файлами с++. Запись в файл. c++ ofstream. Изучение С++ для начинающих. Урок #115

Зміст

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

кроки

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

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

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

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

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

приклад коду

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



#include stdio.h> #include dos.h> int main () {int del; // The delay period printf ( "Enter the delay time (in seconds):"); scanf ( "% i", & del); del * = 1000; // Multiply it by 1000 to convert to milliseconds Delay (del); // Delay. printf ( "Done."); return 0; }


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


#include STDIO.H> #include TIME.H> int main () {int i; for (i = 10; i> = 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 ().