반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

LearningNote

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

오토핫키

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

LN 2020. 7. 8. 23:29
반응형

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

 

조건문을 사용할 때,

초보자들이 가장 많이 헷갈려하는 부분에 대해

설명해드릴게요.

 

if ~ if 와 if ~ else if

의 차이에 대해 알아보려고 합니다.

 

다음의 코드를 작성하고

각각 실행해보세요.

 

!5::
a := 10

if (a > 1)
{
	MsgBox, a 는 1 보다 큽니다.
}
else if (a > 5)
{
	MsgBox, a 는 5 보다 큽니다.
}
return


!6::
b := 10

if (b > 1)
{
	MsgBox, b 는 1 보다 큽니다.
}
if (b > 5)
{
	MsgBox, b 는 5 보다 큽니다.
}
return

 

차이점을 아시겠나요?

 

첫 번째 예제를 먼저 분석해보시죠.

 

if 와 else if 는 크게 보면 하나의 묶음입니다.

if 조건부가 참이라면 그다음의 조건인 else if 조건부는 건너뜁니다.

따라서 메시지 박스는 첫 번째 것만 출력되죠.

 

이제 두 번째 예제입니다.

 

if ~ else if ~ else 는 모두 하나의 묶음입니다.

이 중에 if 는 반드시 사용해야 하지만,

else if 와 else 는 사용하지 않아도 됩니다.

모두 사용하려면 전 시간에 알려드렸던 것처럼 순서를 지키셔야 합니다.

 

바로 이 두 번째 예제는,

if ~ else if ~ else 중 if 만 사용한 예제입니다.

if 를 두 번 사용한 것이죠.

 

그 말은, 첫 번째 묶음을 끝냈더라도

두 번째 묶음에도 진입한다는 뜻입니다.

따라서, 메시지 박스는 두 번 모두 출력됩니다.

 

매우 자주 헷갈려하시는 부분이고,

경우에 따라 논리적으로 커다란 오류가 될 수도 있는 부분이기 때문에

잘 숙지하시기 바랍니다.

 

이번에는 중첩 조건문을 살펴보겠습니다.

if 문 안에 또 if 문이 있는 경우입니다.

 

지난 시간에 했던 숫자 맞히기 게임을 다른 형태로 만들어볼게요.

 

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

if (answer < 0)
{
	MsgBox, 음수는 입력하지 마세요.
}
else if (answer < 10)
{
	if (answer == correctAnswer)
	{
		MsgBox, 정답입니다.
	}
	else
	{
		MsgBox, 틀렸습니다.
	}
}
else
{
	MsgBox, %answer% 를 입력하셨군요.
}

return

 

첫 번째 조건부(if) 에서는 사용자 입력값이 0 보다 작으면

음수를 입력하지 말라는 메시지를 띄웁니다.

평범하네요.

 

두 번째 조건부(else if) 입니다.

여기까지의 조건을 풀어쓰면 이렇습니다.

answer 값은 0 보다 작지 않고 (0 보다 크거나 같고),

10 보다는 작은 경우입니다.

 

이 조건에 해당하는 경우에는 또 한 묶음의 조건문을 만납니다.

정답과 입력값이 같은지를 비교하는 거죠.

이렇게 중첩된 조건문이 사용될 수 있습니다.

 

세 번째 조건부(else) 입니다.

위의 두 가지 조건에 해당하지 않는 값이 입력되었을 때에 해당합니다.

 

조건을 모두 풀어쓰면 이렇습니다.

answer 값은 0 보다 작지 않고, 10 보다 작지 않은 경우입니다.

이 때는 입력값을 그대로 보여주도록 해보았습니다.

 

실제로 실행해보지 않으셨다면,

각각의 조건에 맞도록 입력해보세요.

 

1. 음수 값 입력

2. 정답(5) 입력

3. 1~10 사이의 숫자 중 정답(5)이 아닌 숫자 입력

4. 숫자 이외의 값 입력

 

조건문

 

이 예제에서의 중첩 조건문은 else if 에만 사용하였지만,

if 든, else if 든, else 든 어디에든 중첩할 수 있습니다.

2중, 3중, 다중으로도 중첩할 수 있습니다.

 

하지만 너무 많은 중첩을 하게 되면,

프로그램의 흐름을 파악하기 어려우므로

최대한 간략하게 작성할 수 있도록 연습하시기 바랍니다.

 

전체 예제 코드를 보고

복습하는 시간을 가져보세요.

 

#SingleInstance, Force


F4::
ExitApp


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


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


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


!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


!5::
a := 10

if (a > 1)
{
	MsgBox, a 는 1 보다 큽니다.
}
else if (a > 5)
{
	MsgBox, a 는 5 보다 큽니다.
}
return


!6::
b := 10

if (b > 1)
{
	MsgBox, b 는 1 보다 큽니다.
}
if (b > 5)
{
	MsgBox, b 는 5 보다 큽니다.
}
return


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

if (answer < 0)
{
	MsgBox, 음수는 입력하지 마세요.
}
else if (answer < 10)
{
	if (answer == correctAnswer)
	{
		MsgBox, 정답입니다.
	}
	else
	{
		MsgBox, 틀렸습니다.
	}
}
else
{
	MsgBox, %answer% 를 입력하셨군요.
}

return
반응형

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

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