반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

LearningNote

[오토핫키] 조건문(1) 본문

오토핫키

[오토핫키] 조건문(1)

LN 2020. 7. 7. 22:23
반응형

[오토핫키] 조건문(1)

 

조건문은 프로그램을 매우 다채롭게(?) 해줍니다.

이런 상황에서는 이런 명령을 하고,

저런 상황에서는 저런 명령을 할 수 있게 해 주기 때문입니다.

 

조건문이 없다면 딱 정해진 상황에 대해서만

프로그램을 작동시킬 수 있을 것입니다.

 

조건문은 if 라는 명령어를 사용합니다.

우리말로 풀이한다면 '만약에'라는 뜻이죠.

 

먼저, 간단 도움말을 확인하기 위해,

SciTE4AutoHotkey 에디터를 열고

if 를 입력한 후 한 칸 띄고 여는 괄호(()를 입력해보세요.

 

if (Expression) {
	commands
} else {
	commands
}

 

if 다음의 괄호 안에는 Expression 형태로 조건을 넣을 수 있으며,

그 연산 결과가 참이면 해당 블록의 명령을 실행합니다.

 

else 블록에는 위에서의 결과가 참이 아닌

그 밖의 결과값을 가진다면 실행하는 명령어를 넣을 수 있습니다.

 

예제 하나를 실행해보겠습니다.

 

#SingleInstance, Force


F4::
ExitApp


!1::
if (10 > 1) {
	MsgBox, 참입니다.
} else {
	MsgBox, 거짓입니다.
}
return


!2::
if (10 < 1) {
	MsgBox, 참입니다.
} else {
	MsgBox, 거짓입니다.
}
return

 

오토핫키를 실행하고,

Alt + 1 키를 눌러보세요.

 

10 은 1 보다 크므로 Expression 결과는 참이 됩니다.

그렇기 때문에 첫 번째 블록의 명령을 실행하며,

"참입니다." 라는 메시지 박스가 출력됩니다.

 

Alt + 2 키를 누르면 어떤가요?

10 은 1 보다 작으므로 Expression 결과는 거짓이 됩니다.

따라서 첫 번째 블록을 실행하지 않고

다음의 else 블록으로 넘어가기 때문에,

"거짓입니다." 라는 메시지 박스가 출력됩니다.

 

조건을 여러 개 설정하는 방법도 있습니다.

if 와 else 외에 else if 라는 구문을 추가해주면 됩니다.

 

주의하실 점은,

if 는 항상 맨 처음에 위치하며

else 는 항상 맨 나중에 위치합니다.

그 중간에는 여러 개의 else if 블록을 넣으셔도 상관없습니다.

 

if (Expression) {
	commands
} else if (Expression) {
	commands
} else {
	commands
}

 

이 문법을 사용하여

숫자 맞히기 Up & Down 게임을 만들어보겠습니다.

갑자기요? 네!

 

이 게임만 능숙하게 만들 수 있다면

조건문은 거의 다 이해했다고 생각하셔도 됩니다.

그러니 처음에는 잘 이해가 안 되더라도

반복 학습하실 것을 권해드립니다.

 

만들어볼 게임은 이렇습니다.

1. 1부터 10까지의 숫자 중 하나를 정답으로 선정합니다.
2. 사용자가 숫자를 입력합니다.
3. 입력한 숫자가 1에서 10까지의 범위를 벗어나면, 오류 메시지 박스를 출력합니다.
4. 입력한 숫자가 정답보다 크면, 정답보다 큰 수라고 메시지 박스를 출력합니다.
5. 입력한 숫자가 정답보다 작으면, 정답보다 작은 수라고 메시지 박스를 출력합니다.
6. 입력한 숫자가 정답과 일치하면, 정답이라고 메시지 박스를 출력합니다.

 

사용자로부터 숫자를 입력받기 위해

잠시 다루어볼 명령어가 있습니다.

 

InputBox 라는 명령어입니다.

MsgBox 는 메시지를 출력하는 상자라면,

InputBox 는 메시지를 입력하는 상자입니다.

 

간단 도움말을 보면 이렇습니다.

 

InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]

 

우리는 이 중에서 Prompt 인자 까지만 사용할 예정입니다.

더 자세히 알고 싶으시면 다음의 링크를 통해 공부해보세요.

 

http://autohotkeykr.sourceforge.net/docs/commands/InputBox.htm

 

!3::
InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.
MsgBox, %answer%
return

 

백문이 불여일견, 바로 실행해서 결과를 확인해보시죠.

 

InputBox

InputBox 를 통해 입력받은 메시지를 answer 이라는 변수에 넣습니다.

그리고 MsgBox 명령어를 통해 그 변수의 값을 출력하도록 하는 예제였습니다.

 

그렇다면 이제 사용자 입력을 받는 방법을 터득하셨네요.

 

본격적으로 게임을 만들어보겠습니다.

 

!4::
correctAnswer := 5
InputBox, answer, 숫자 맞히기 게임, 1에서 10까지의 숫자를 입력하세요.

if (answer < 1 or answer > 10) {
	MsgBox, 1에서 10까지의 숫자를 입력하세요.
} else if (answer < correctAnswer) {
	MsgBox, 정답은 더 큰 수입니다.
} else if (answer > correctAnswer) {
	MsgBox, 정답은 더 작은 수입니다.
} else {
	MsgBox, 정답입니다.
}
return

 

정답을 임의로 잡아 correctAnswer 이라는 변수에 넣어둡니다.

그리고 InputBox 를 통해 사용자가 응답을 할 수 있게 하는 거죠.

 

그 응답을 정답과 비교하여,

조건에 따라 적절한 메시지 박스를 출력하면 끝나는 코드입니다.

 

Expression 에는 연산자(Operator)가 들어갑니다.

연산자에는 여러 종류가 있습니다.

 

더하기(+), 빼기(-), 곱하기(*), 나누기(/) 등을 나타내는 연산자를

산술 연산자라고 합니다.

 

크다(>), 작다(<), 같다(==), 크거나 같다(>=), 작거나 같다(<=) 등을 나타내는 연산자를

비교 연산자라고 합니다.

 

그리고(and), 또는(or) 등을 나타내는 연산자를

논리 연산자라고 합니다.

 

이 밖에도 매우 다양한 연산자가 있으나,

자주 쓰는 세 가지 종류만 간단히 소개해드렸습니다.

 

다시 코드로 돌아가 봅시다.

 

if 문의 첫 번째 조건부에는,

answer 이 1보다 작거나 10보다 큰 경우에 대한 처리를 해주었습니다.

 

그게 아니라면(answer 가 1과 10 사이에 있다면),

다음 조건부로 넘어가 answer 가 correctAnswer 보다 작은 지를 확인합니다.

answer 가 correctAnswer 보다 작다면,

정답은 더 큰 수라고 알려줍니다.

하지만, 그게 아니라면 다음 조건부로 넘어갑니다.

 

answer 가 correctAnswer 보다 큰지를 확인합니다.

answer 가 더 크다면,

정답은 더 작은 수라고 알려줍니다.

하지만, 그게 아니라면 다음 조건부로 넘어갑니다.

 

이렇게 조건을 하나씩 따져가면서

아래로 아래로 내려왔습니다.

 

else 구문을 만나면,

위에서의 조건이 모두 거짓인 경우에 대한 처리를 할 수 있습니다.

이 예제에서 else 는

사실상 answer 와 correctAnswer 가 일치하는 조건이라고 할 수 있겠네요.

 

그래서 answer 와 correctAnswer 가 같다면,

정답이라는 메시지를 출력하게 됩니다.

 

조건문은 매우 중요하기 때문에,

처음에는 코드를 따라서 작성해보시고

혼자서도 작성할 수 있을 정도로 반복 학습하여

숙지해두시는 것이 좋겠습니다.

반응형

'오토핫키' 카테고리의 다른 글

[오토핫키] 반복문(1)  (0) 2020.07.10
[오토핫키] 조건문(2)  (0) 2020.07.08
[오토핫키] 메시지 박스(3)  (0) 2020.07.04
[오토핫키] 메시지 박스(2)  (0) 2020.07.04
[오토핫키] 메시지 박스(1)  (0) 2020.07.02
Comments