Таймер зворотного відліку на Сі

Міні-проєкт для практики програмування на мові Сі

Напишемо дуже просту програму, яка буде при запуску відраховувати від 10 до 1, при досягненні 0 програма завершиться. Для цього створимо новий проєкт в Visual Studio (як створити проєкт дивись тут) і назвемо його, наприклад, CountdownTimer. В файлі з кодом напишемо "каркас" програми:

#include <stdio.h>

int main() { //початок тіла програми
  system("chcp 65001 > nul"); //команда для підтримки виводу тексту українською

    return 0;
}

Тепер, в основному тілі програми ми почергово запишемо команду printf() з текстом, який вказує скільки залишилось до кінця відліку:

#include <stdio.h>

int main() {
    system("chcp 65001 > nul");

printf("До вибуху залишилось...\n");
  printf("10 секунд\n");
  printf("9 секунд\n");
  printf("8 секунд\n");
  printf("7 секунд\n");
  printf("6 секунд\n");
  printf("5 секунд\n");
  printf("4 секунди\n");
  printf("3 секунди\n");
  printf("2 секунди\n");
  printf("1 секунда\n");
  printf("БУУУУММММ!!!!");

    return 0;
}

Зверніть увагу! В кінці кожного виведеного тексту прописано знак переносу рядка - \n. Без нього весь текст виведеться одним рядком.

Скомпілюйте і запустіть код. Що не так? Весь текст одразу ж виводиться і програма завершує виконання, а це не зовсім те, що нам необхідно, авжеж? Нам необхідно зробити щоб після виведення в консоль кожного рядка була пауза в одну секунду. Виправимо код:

#include <stdio.h>
#include <windows.h>    //додамо такий рядок

int main() {
    system("chcp 65001 > nul");

    printf("До вибуху залишилось...\n");
    printf("10 секунд\n");
    Sleep(1000); // Затримка 1 секунду
    printf("9 секунд\n");
    Sleep(1000);
    printf("8 секунд\n");
    Sleep(1000);
    printf("7 секунд\n");
    Sleep(1000);
    printf("6 секунд\n");
    Sleep(1000);
    printf("5 секунд\n");
    Sleep(1000);
    printf("4 секунди\n");
    Sleep(1000);
    printf("3 секунди\n");
    Sleep(1000);        
    printf("2 секунди\n");
    Sleep(1000);
    printf("1 секунда\n");
    Sleep(1000);
    printf("БУУУУММММ!!!!");

    return 0;
}

Чудово, тепер все в порядку. Але що ми зробили? Сама по собі, мова програмування Сі не вміє робити паузи, тому ми підключили команди операційної системи (в цьому випадку Windows) - #include <windows.h>. Далі ми викликали команду Віндовса Sleep(1000). Ця команда робить паузу, вказану в дужках - 1000 мілісекунд (рівно 1 сек).

Наша програма дуже проста, хоча код вийшов доволі довгим. Але не переймайтеся через це — мова Сі має спеціальні конструкції, які допомагають скорочувати та впорядковувати код у подібних випадках. Просто продовжуйте навчання, і незабаром ви навчитеся писати більш складні, а головне — корисні програми. Вдачі! ;-)