C++에서 카운트다운 타이머 만들기

Suraj P 2023년10월12일
  1. Unix 환경에서 카운트다운 타이머 만들기
  2. Windows에서 카운트다운 타이머 만들기
  3. C++에서 계산 타이머 만들기
C++에서 카운트다운 타이머 만들기

이 기사에서는 C++에서 위/아래 카운팅 타이머를 만드는 방법을 설명합니다. 먼저 C++에서 카운트다운 타이머를 만드는 방법을 살펴보겠습니다.

작동 방식은 사용자로부터 분과 초를 입력으로 받은 다음 프로그램에서 루프를 사용하여 역순 또는 카운트다운으로 초를 인쇄하는 것입니다.

while 루프나 for 루프와 같은 루프를 사용할 수 있으며 이 루프는 숫자가 1에 도달할 때까지 카운트다운되며 이 안에 변경 사항을 확인하기 위해 1초 동안 프로그램을 일시 중지하는 메커니즘이 필요합니다.

Unix와 같은 환경과 Windows에는 프로그램을 일시 중지하거나 sleep 상태로 만드는 다른 기능(시스템 호출)이 있습니다. 그러나 동일한 기능이 있습니다.

Unix 환경에서 카운트다운 타이머 만들기

Linux 또는 Ubuntu와 같은 Unix 계열 시스템에는 프로그램을 절전 모드로 전환하는 데 마이크로초 단위의 시간이 걸리는 usleep이라는 기능이 있습니다. 1초 동안 실행을 일시 중지하려면 값을 1000000으로 전달해야 합니다.

이 방법은 unistd.h 헤더 파일에 정의되어 있습니다.

예제 코드:

#include <unistd.h>

#include <ctime>
#include <iostream>
using namespace std;

string getPresentDateTime() {
  time_t tt;
  struct tm *st;

  time(&tt);
  st = localtime(&tt);
  return asctime(st);
}

int main() {
  int seconds;
  cout << "Enter total number seconds for the counter" << endl;
  cin >> seconds;

  while (seconds >= 1) {
    cout << "Counter : " << seconds << " : " + getPresentDateTime() << endl;
    usleep(1000000);
    seconds--;
  }
}

위의 프로그램에서 getPresentDateTime() 메서드를 사용하여 시스템에서 현재 날짜와 시간을 가져옵니다.

출력: 위의 프로그램은 Ubuntu에서 실행되었습니다. Unix 계열 환경에서 실행하려면 파일을 저장하고 g++를 사용하여 컴파일한 다음 ./a.out을 입력하여 실행합니다.

g++ first.cpp   //executed in ubuntu
 ./a.out

Enter total number seconds for the counter
7
Counter : 7 : Sun Mar 13 01:31:56 2022

Counter : 6 : Sun Mar 13 01:31:57 2022

Counter : 5 : Sun Mar 13 01:31:58 2022

Counter : 4 : Sun Mar 13 01:31:59 2022

Counter : 3 : Sun Mar 13 01:32:00 2022

Counter : 2 : Sun Mar 13 01:32:01 2022

Counter : 1 : Sun Mar 13 01:32:02 2022

Windows에서 카운트다운 타이머 만들기

우리가 위에서 한 것처럼 모든 것이 남아 있습니다. 유일한 차이점은 unistd.h 대신 windows.h를 포함해야 한다는 것입니다. 그리고 usleep 대신 sleep() 메서드를 사용해야 합니다.

sleep() 메서드는 밀리초 단위로 시간이 걸립니다.

예제 코드:

#include <Windows.h>

#include <ctime>
#include <iostream>
using namespace std;

string getPresentDateTime() {
  time_t tt;
  struct tm *st;

  time(&tt);
  st = localtime(&tt);
  return asctime(st);
}

int main() {
  int seconds;
  cout << "Enter total number seconds for the counter" << endl;
  cin >> seconds;

  while (seconds >= 1) {
    cout << "Counter : " << seconds << " : " + getPresentDateTime() << endl;
    Sleep(1000);
    seconds--;
  }
}

출력: 위의 프로그램은 Windows에 있는 IDE에서 실행되었습니다.

Enter total number seconds for the counter
10
Counter : 10 : Sun Mar 13 01:42:13 2022

Counter : 9 : Sun Mar 13 01:42:14 2022

Counter : 8 : Sun Mar 13 01:42:15 2022

Counter : 7 : Sun Mar 13 01:42:16 2022

Counter : 6 : Sun Mar 13 01:42:17 2022

Counter : 5 : Sun Mar 13 01:42:18 2022

Counter : 4 : Sun Mar 13 01:42:19 2022

Counter : 3 : Sun Mar 13 01:42:20 2022

Counter : 2 : Sun Mar 13 01:42:21 2022

Counter : 1 : Sun Mar 13 01:42:22 2022

이제 업 카운터 타이머를 살펴보겠습니다.

C++에서 계산 타이머 만들기

다운 카운터처럼 구현되며 유일한 차이점은 루프를 전달 방식으로 실행한다는 점입니다. 이는 점진적 접근 방식입니다.

예제 코드: Windows 환경의 업 카운터.

#include <Windows.h>

#include <ctime>
#include <iostream>
using namespace std;

string getPresentDateTime() {
  time_t tt;
  struct tm *st;

  time(&tt);
  st = localtime(&tt);
  return asctime(st);
}

int main() {
  int seconds;
  cout << "Enter total number seconds for the counter" << endl;
  cin >> seconds;

  int count = 0;

  while (count != 10) {
    cout << "Counter : " << seconds << " : " + getPresentDateTime() << endl;
    Sleep(1000);
    seconds++;
    count++;
  }
}

위의 코드에서 초를 10번 증가시킵니다. 그리고 이를 추적하기 위해 count 변수를 도입했으며 seconds 입력이 제공된 시간으로부터 10초가 완료되면 중지됩니다.

출력:

Enter total number seconds for the counter
5
Counter : 5 : Sun Mar 13 02:15:42 2022

Counter : 6 : Sun Mar 13 02:15:43 2022

Counter : 7 : Sun Mar 13 02:15:44 2022

Counter : 8 : Sun Mar 13 02:15:45 2022

Counter : 9 : Sun Mar 13 02:15:46 2022

Counter : 10 : Sun Mar 13 02:15:47 2022

Counter : 11 : Sun Mar 13 02:15:48 2022

Counter : 12 : Sun Mar 13 02:15:49 2022

Counter : 13 : Sun Mar 13 02:15:50 2022

Counter : 14 : Sun Mar 13 02:15:51 2022
작가: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

관련 문장 - C++ Timer