LearningNote
[오토핫키] 조건문(2) 본문
[오토핫키] 조건문(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 |