이 강좌는 "http://cafe.naver.com/usboffice"의
[클로임]님의 글을 필요한 부분만 발췌 했습니다.
조건문(Conditional Statements)이 뭐에요?
네이버씨에게 물어보니 '루틴 내에서 주어진 어떤 조건이 만족되었을 때만 수행되는 문장' 이라고 나오네요.
간단하게 말하자면 '조건을 걸어서 그 조건이 만족되었는지 아닌지의 여부에 따라 다른 행동을 하게 해주는 것' 이라고 생각하시면
될것 같습니다. 프로그래밍을 하다보면 이러한 조건문을 얼마나 많이 쓰게 되는지 아시는 분은 아실껍니다 ^^
제 생각에는 조건문과 반복문만 마스터 해도 프로그래밍은 반 이상 한것과 다름없는것 같아요 ㅋ
(아직 실력이 미천해서 그렇겠지만 :D 반복문은 곧 다룰께요 ㅎㅎ)
그렇다면 조건문은 어떻게 생겼을까요?
먼저 AutoIt 에서 사용되는 조건문의 종류에 대해서 알아봐야 겠네요. 대부분 가장 대표적인 조건문 하나만 알면 많은 조건문제가
해결될수 있긴 하지만 각각의 상황에 따라서 효율적으로 조건문을 사용하기 위해서는 각각의 특징과 쓰임새를 알아두는게 좋습니다 :D
If... Then ... Else
Select ... Case
Switch ... Case
If... Then ... Else
영문법 같죠? 사실 If 문법을 저는 이 조건문으로 배웠답니다 ;; '만일... 이면 ... 아니면' ㅋ
위에서 말씀드린 조건문 중 가장 대표적인 놈이 바로 이 놈입니다. 어떻게 쓰는지 알아볼까요?
01 Dim $a
02 $a = 1
03 If $a = 1 Then
04 MsgBox(0,"Conditional Statements","a is 1")
05 else
06 MsgBox(0,"Conditional Statements","a isn't 1")
07 endIf
이정도만 보시면 뭐... 감이 팍 오실거라 생각됩니다. 간단히 소스설명 들어갑니다 :D
1~2 줄에서 변수 a 에 1 이라는 숫자를 집어넣습니다.
3 줄에서 a 라는 변수가 1 인지 (만일 a 가 1 이면) 조건을 검사하구요. (이때 a 와 1 을 비교하는데에는 수많은 연산자들이 쓰일수 있습니다. 사용되는 연산자들은 온라인문서 를 참고하시기 바랍니다)
4 줄에서 조건이 참일 경우 수행할 액션이 나옵니다. 여기서는 'a is 1' 이라는 메세지박스를 띄우구요.
만일 조건이 참일 경우만 생각한다면 코드는 5 줄에서 끝날수도 있습니다. 5 줄에 else 대신 7줄의 endIf 를 쓰면 되지요.
else 부분(5~6 줄)은 조건이 만족되지 못했을때 수행되는 액션으로 Optional 입니다. 없더라도 If 문이 에러가 나거나 하진 않는 답니다 :D 암튼, 5 줄에서 else (조건이 만족되지 않았으면) 로 인해 6 줄을 수행합니다.
조건의 참, 거짓 여부에 따라 다음과 같은 순서로 동작이 이루어지지요.
참 : 1-2-3-4-7 거짓 : 1-2-3-5-6-7
Select ... Case
학교에서 시험 성적에 따라 학점을 매긴다고 가정해봅시다. 60 점이하는 F, 60~70 은 D, 70~80 은 C, 80~90 은 B, 90 이상은 A.
이러한 경우를 If~Then 문으로 작성한다면 학생의 점수를 변수 $score 로 봤을때 $score 하나를 엄청나게 비교해야 겠죠;
이런때를 위해서 Select ... Case 문이 존재하게 됩니다. 역시 어떻게 쓰는지 알아보겠습니다.
01 Dim $score
02 $score = 97
03 Select
04 Case $score <= 60
05 MsgBox(0,"Your grade","Bad! Your grade is F")
06 Case $score > 60 AND $score <= 70
07 MsgBox(0,"Your grade","Sorry! Your grade is D")
08 Case $score > 70 AND $score <= 80
09 MsgBox(0,"Your grade","Cheer up! Your grade is C")
10 Case $score > 80 AND $score <= 90
11 MsgBox(0,"Your grade","Try some more! Your grade is B")
12 Case $score > 90
13 MsgBox(0,"Your grade","Excellent! Your grade is A")
14 EndSelect
무언가 다닥다닥 쓰여있지만 알고보면 정말 간단한겁니다 :D
1~2 줄에서 score 변수에 점수를 넣어두고요.
3 줄에서 Select 문의 시작을 알립니다.
4~5 줄은 점수가 60 이하 일 경우 F 라는 메세지를 띄우는 부분,
6~7 줄은 점수가 60 초과, 70 이하 일 경우 D 라는 메세지를 띄우는 부분,
8~9 줄은 점수가 70 초과, 80 이하 일 경우 C 라는 메세지를 띄우는 부분,
10~11 줄은 점수가 80 초과, 90 이하 일 경우 B 라는 메세지를 띄우는 부분,
12~13 줄은 점수가 90 이상 일 경우 A 라는 메세지를 띄우는 부분이지요.
만일 하나 이상의 조건에 참이 될 경우 제일 먼저 기재된 조건의 액션만 실행됩니다.
딱 보면 아시겠죠? 그런데 여기보니 새로운게 보입니다. 바로 'AND 연산자' 이죠.
AND 는 조건과 조건을 연결시켜줍니다. 하나의 조건문에서 여러가지 조건을 걸어야 할경우 AND 나 OR 연산자가 쓰이죠.
A AND B 는 A 와 B 조건 모두를 만족시켜야 하는 것으로 어느 하나라도 조건이 만족하지 못하면 결과는 거짓이 됩니다.
A OR B 는 A 와 B 조건 둘 중 하나만 만족시키면 결과가 참이 되는 거죠. (정말이지 영어공부 잘 됩니다 ㅋ)
마찬가지로 연산자 부분의 온라인 문서를 보면 아주 잘 나와 있습니다 :D
Switch ... Case
Switch ... Case 는 Select ... Case 문과 거의 동일하다고 보시면 됩니다. 일단 코드를 본 뒤 차이점을 알아볼까요?
01 Dim $score
02 $score = 97
03 Switch Int($score)
04 Case 0 To 60
05 MsgBox(0,"Your grade","Bad! Your grade is F")
06 Case 61 To 70
07 MsgBox(0,"Your grade","Sorry! Your grade is D")
08 Case 71 To 80
09 MsgBox(0,"Your grade","Cheer up! Your grade is C")
10 Case 81 To 90
11 MsgBox(0,"Your grade","Try some more! Your grade is B")
12 Case Else
13 MsgBox(0,"Your grade","Excellent! Your grade is A")
14 EndSwitch
새로운걸 찾아볼까요? 일단은 3번 줄에서 비교할 대상이 Switch 문 바로 옆에 한번 왔고,
각각의 Case 에서 점수의 범위를 AND 연산자를 이용한 다중 조건이 아닌 말 그대로 범위로 지정했군요,
마지막으로 12 줄의 Case Else 와 같이 위의 Case 중 어디에도 걸리지 않으면 이라는 If 성격의 조건이 있구요.
만약 아무 조건에도 만족되지 않았고 Case Else 문도 없다면 Switch 문 안의 어느 액션도 실행되지 않습니다.
'▣중-고급자 활용 > AutoIt 특강' 카테고리의 다른 글
AutoIt (7) (0) | 2008.07.28 |
---|---|
AutoIt (6) (0) | 2008.07.28 |
AutoIt (4) (0) | 2008.07.28 |
AutoIt (3) (0) | 2008.07.28 |
AutoIt (2) (0) | 2008.07.28 |