\

코딩/C++ 함수모음

C++ 기다리기 함수, 타이머(1)

코딩하는 메추라기 2021. 8. 11. 18:06
반응형

목차

        1. 서론

        2. 필요한 헤더파일

        3. 함수소개

        4. 타이머 만들기

        5. 마무리

안녕하세요! 코딩하는 메추라기 케일입니다.

오늘은 제가 오랜만에 C++ 함수를 들고 왔습니다.

오늘의 함수들은 바로 시간 관련 함수들입니다.

오늘은 그 중 첫번째 시간으로 기다리기 함수를 소개해 드릴려고 해요

 

필요한 헤더파일입니다.

▶<Windows.h>

 

한개밖에 없지만 그래도 멋을 위해 해봤습니다. ㅋㅋ

 

<Windows.h>헤더파일에는 오늘 필요한 sleep()이란 함수가 포함되어 있습니다.

 

----필요한 함수----

필요한 함수입니다.

▶Sleep()

 

역시 한개밖에 없지만 그래도 멋을 위해 해봤습니다.

 

한글로 해석하면 자다 라는 뜻을 가지고 있는데요!

Sleep 함수는 괄호 안에 있는 숫자만큼 프로그램이 자게(그니까 기다리게) 해줘요.

Sleep()의 괄호안에 있는 숫자는 단위가 밀리초(ms <마이크로소프트 아님!>) 입니다.

그니까 Sleep(1000);이 1초동안 쉬게 하는 것입니다.

Sleep(1);이라고 하면 0.001초동안 쉬게 하는 것입니다.

 

그럼 이제 한번 Sleep 함수로 타이머를 만들어 보도록 하겠습니다.

 

----타이머 만들기----

대충 타이머를 구현을 하면

사용자가 타이머 초로 맞출 수를 입력하면 그 수만큼 시간이 흘러가고 시간이 다 지나면 시간이 끝났다고 출력이 되면 되겠죠?

 

그럼 구현을 한번 해 보겠습니다.

 

일단 필요한 변수

double current_second = 0;
int input_second = 0;

으로 필요한 변수들을 선언해 줍시다.

current_second는 말 그대로 실시간으로 타이머를 시작시킨 후 지나간 시간을 담는 변수입니다.

current_second가 시간이 지나 input_second가 될 때 타이머가 정지되면서 사용자에게 알려줍니다.

 

그러면 이제 입력을 받도록 하겠습니다.

 

cin>>input_second;

이렇게 해주십니다.

이제 타이머로 맞출 초를 입력했습니다.

 

그 다음에는 입력한 수에 다다를때까지 기다려야겠죠.

저는 그냥 기다리면 심심하니까 0.1초마다 몇 초가 남았는지 출력이 되게 만들었습니다.

 

current_second가 input_second가 될때까지 기다린 후 input_second가 된다면 "끄읕!" 이라고 치게 할 거니까

current_second가 0.1초마다 0.1씩 증가해서 input_second가 되면 반복문이 끝나게 해 보았습니다.

 

for (current_second; current_second < input_second; current_second+=0.1) {
    cout << input_second - current_second << "초 남음\n";
    Sleep(100);
}

이렇게 하면 current_second가 0 에서 0.1씩 올라갑니다.

반복문이 한번 실행되면

input_second - current_second + "초 남음" 이 출력되고

0.1이 기다려집니다.

 

이게 input_second가 되면 멈추고 "끄읕!"이 출력되니

 

for (current_second; current_second < input_second; current_second+=0.1) {
    cout << input_second - current_second << "초 남음\n";
    Sleep(100);
}

cout << "끄읕!";

 

이렇게 되면 맨 마지막에 "끄읕!" 이라고 출력되는 걸 보실 수 있습니다.

 

<Windows.h> 헤더파일이 온라인으로 c++ 코드를 컴파일(실행)시켜주는 웹사이트에 없더라고요.

그래서 저는 visual studio 2019에서 실행을 시켜보았습니다.(사실 visual studio 2019가 있었는데 제 컴이 안 좋아서 visual studio에서 하면 렉이 많이 걸리드라고요. 그래서 웹사이트로 c++을 컴파일(실행)시켜주는 곳에서 실행을 해 보았는데 거기에 <Windows.h>헤더파일이 없어서 그냥 visual studio 2019로 하기로 했습니다.)

 

전체 코드입니다.

 

이제 한번 실행시켜 보도록 하겠습니다.

 

생각했던 대로 "수를 입력해 주세요: " 라는 화면이 맨 처음에 뜨는 걸 보실 수 있습니다.

 

저는 한번 10초를 입력해 볼게요.

 

이렇게 잘 되다가

이렇게 맨 마지막에 "끄읕!" 이란 것 까지 나오는 걸 보실 수 있습니다.

 

근데 1.95299e-14초 남음 이 약간 거슬리시다면

반복을 한 번 덜 해주시면 되시겠죠?

 

#include <iostream>
#include <Windows.h>

using namespace std;

int main() {
	int input_second = 0;
    double current_second = 0;

    cout << "수를 입력해 주세요: ";

    cin >> input_second;
    
    for (current_second; current_second < input_second - 0.1; current_second+=0.1) {
        cout << input_second - current_second << "초 남음\n";
        Sleep(100);
    }

    Sleep(100);
    cout << "끄읕!";
    
    return 0;
}

위의 코드처럼 for 반복문을 한번 덜 반복하게 만들어 주시면 됩니다.

 

오늘은 여기까지 입니다!

다음에는 C++에서 현재 시간을 받아 올 수 있는 방법에 대해 알려드리겠습니다.