▣중-고급자 활용/AutoIt 특강

AutoIt (8)

횡재수 2008. 7. 28. 04:14

이 강좌는 "http://cafe.naver.com/usboffice"의 

[클로임]님의 글을 필요한 부분만 발췌 했습니다.

 

 

 

 

함수
일전에도 설명드린 바와 같이 AutoIt 뿐만 아니라 대부분의 프로그래밍 언어에서는 두가지 종류의 함수가 있습니다.
고유함수(built-in function) 와 사용자정의함수(User define function) 가 그것이죠.
어찌보면 고유함수도 Autoit 을 개발한 사람들이 만들어낸 넓은 의미에서의 사용자정의함수라고도 할수 있습니다.
이러한 고유함수는 온라인 도움말을 통해서 사용법을 익힌 뒤 사용하시면 됩니다 :D

Autoit 에서 함수의 일반적인 모습은 다음과 같습니다.

    Func 함수명([파라미터1, 파라미터2..., 파라미터 n])
       처리 내용

       [return 리턴값]

    EndFunc


함수명은 여러분이 정하시기 나름이며 파라미터와 리턴값은 필요에 따라 쓰셔도 되고 안쓰셔도 상관없습니다.

함수명을 만드는게 코더의 맘대로라고는 하지만 일반적으로 함수명을 만드는데는 규칙 아닌 규칙이 있습니다.
그것들을 일일이 설명하기는 힘들구요, 많은 고유함수들이나 다른 분들의 코딩을 보시면서 감을 익히시면 될듯 하네요.
한가지 잊지 말아야할 대전제는 읽기 쉽고 무슨 동작을 하는 함수인지 예측하기 편해야 한다는 것 입니다.
쉬운 예로 사용자정보를 가져오는 함수를 만든다 치면 함수명이 getUserInfo() 인게 myFunc1() 보다는 보기도 쓰기도 좋다는 거지요 :D

파라미터를 설명하는건 함수의 동작 자체를 예를 들어서 설명하기로 하겠습니다.
어느날 철수가 샌드위치가 먹고 싶어졌습니다. 철수는 평소에 말 잘듣는 영수라는 함수를 호출합니다. - getSandwich()
철수는 영수에게 샌드위치 재료를 사기위한 돈을 줍니다. - 파라미터 돈
영수는 마트에가서 재료를 사온 뒤 열심히 샌드위치를 만듭니다. - 처리 내용
영수가 철수에게 샌드위치를 줍니다. - 리턴값

설명이 충분했나요? (혹시 영수가 너무 불쌍하다고 여기신다면 -_-;;;;;;;;;;;;;;;;;;;;;;;;;; 영수한테 감정은 없습니다)
파라미터란 위의 예에서와 같이 함수가 일을 처리하기 위해서 필요한 값들입니다.
만일 함수가 하는 일이 어떤 값을 받아서 처리하는 것이 아니라면 파라미터는 필요가 없겠죠 :D

처리내용은 실제로 함수가 처리하는 내용들이 있는 곳입니다. 여기에는 고유함수가 올수도 있고 또 다른 사용자정의함수가 올수도 있고 반복문, 조건문 등 로직이 올수도 있고 등등... 여러분들이 만들기 나름입니다 :D

리턴값은 함수가 처리된 뒤 반환해야 하는 값이 있을 경우에 사용합니다. 위 예에서의 샌드위치 처럼 말이죠 :D

그렇다면 이렇게 만들어낸 함수는 어떻게 사용하느냐!
MsgBox() 함수를 보시면 아시겠지만 그냥 '함수명([파라미터])' 와 같이 쓰시면 됩니다. ;;
만일 리턴값이 있는 함수일 경우에는 먼저 리턴값을 받을 변수를 생성한 뒤 '변수명 = 함수명([파라미터])' 와 같이 쓰면 되구요.

이제 간단한 함수를 한번 만들어 보도록 할까요 :D

#1

MsgBox(0, "", getSum(6, 5))


01   Func getSum($value1, $value2)
02      $value3 = $value1 + $value2

03      return $value3

04   EndFunc


#2

Dim $val1 = 3

Dim $val2 = 4


01   Func getSum2()

02      MsgBox (0, "", $val1 + $val2)

03   EndFunc


getSum2()



#1 과 #2 는 각각 다른 예제 입니다. 한꺼번에 실행하시면 안되요~ :D

#1 예제 먼저 살펴볼까요?
MsgBox 함수에서 getSum 함수를 처리한 값을 메세지상자로 띄우게 되면,
1번 줄의 getSum() 함수가 호출됩니다. 이름만 봐도 합계를 구하는 함수같죠? 해당 함수는 파라미터를 두개 갖고 있네요.
2번 줄에서 파라미터로 받은 $value1 과 $value2 에 해당하는 값 6, 5 의 합을 $value3 에 할당합니다.
3번 줄에서 구해진 합 $value3 을 반환하구요.
4번 줄에서 함수가 끝났네요.
화면에는 6과 5의 합인 11이 메세지 상자에 표시되어 나타날껍니다.

#2 의 예제는 어떨까요?
$val1 과 $val2 변수에 각각 3과 4의 값을 할당하고 getSum2 라는 함수를 호출했네요. 위에서 보시다시피 Func ~ EndFunc 로 묶여있는 부분은 해당 함수가 호출되지 않으면 그냥 건너뜁니다. 즉, 함수는 특별한 경우를 제외하곤 프로그램의 어느부분에 있어도 상관없다는 거죠. 코드의 마지막에서 getSum2 함수를 부르면,
1번 줄에서 getSum2 함수가 호출됩니다. 파라미터는 없구요 :D
2번 줄에서 기존에 정의된 변수(전역변수, Global Variable)들의 합을 MsgBox 함수로 표시하구요.
3번 줄에서 함수가 종료됩니다.

#2 예제와 같이 굳이 파라미터가 아니더라도 전역변수를 이용해 값을 받고 전역변수를 변화시켜 리턴과 비슷한 효과를 내는 경우도 있습니다. 다만 이것은 전역변수에 대한 충분한 이해가 필요하겠죠. 잘못하면 코딩상에는 문제가 없는거 같은데 당췌 원하지 않는 결과값이 나와서 애를 먹을수도 있어요 :D

'▣중-고급자 활용 > AutoIt 특강' 카테고리의 다른 글

AutoIt (7)  (0) 2008.07.28
AutoIt (6)  (0) 2008.07.28
AutoIt (5)  (0) 2008.07.28
AutoIt (4)  (0) 2008.07.28
AutoIt (3)  (0) 2008.07.28