0
 35   4   1
  View Articles

Name  
   손병목  (2002-02-10 11:36:50, Hit : 22799, Vote : 1525)
Homepage  
   http://www.itmembers.net
Subject  
   예제로 익히는 비베 기초(8)-Function함수
지난 시간에 이어 이번에도 함수를 다뤄봅니다.
지난 시간에 다뤘던 함수가 Sub 함수였다면 이번 시간에는 Function 함수에 대해 다뤄봅니다. 그리고 Select Case 문을 사용하여 조건 처리를 하는 방법을 실습해 보도록 합니다.

지난 시간에 잠깐 언급을 했었던가요? Sub 함수와 Function 함수의 차이는 리턴값이 없느냐 있느냐의 차이라고.

Sub 함수를 호출할 때는 다음과 같이 호출합니다.
  • Call 함수명(매개변수)
    Call을 사용하면 반드시 괄호로 매개변수를 포함합니다.
    또는
  • 함수명 매개변수
    그냥 함수명만 사용하면 매개변수는 괄호 없이 사용합니다.


반면 Function 함수를 호출할 때는 다음과 같이 호출합니다.
  • 리턴값 = 함수명(매개변수)
    리턴값을 사용하지 않고 그냥 함수명 매개변수와 같은 식으로 사용할 수도 있으나 Sub함수와 Function 함수의 차이인 리턴값 여부를 설명하기 위해 생략하였습니다.


즉 Function 함수를 호출할 때는 Sub 함수와는 달리 함수의 실행 결과로 어떤 값을 돌려 받을 수 있다는 뜻이 됩니다. 이 차이는 매우 큽니다. 어떤 기능을 수행하고 난 다음 반드시 결과값을 돌려받을 필요가 있을 때는 Function 함수를 써야한다는 뜻이니까요. 반면 단순히 기능만 수행하고 마칠 경우에는 Sub 함수를 사용하는 것이 낫다는 뜻이 됩니다.

혹시 다음 코드가 기억나나요? 바로 지난 시간에 실습한 구구단을 계산하는 함수였습니다. 함수를 잘 살펴보면 함수 이름(GuguCal) 앞에 Sub라고 씌어있습니다. 이것이 바로 Sub 함수입니다.

Private Sub GuguCal(value1 As Integer)
   Dim strGugu As String
   Dim intTemp As Integer
   Dim intGuguResult As Integer
   lblGuguResult.Caption = ""
   For intTemp = 1 To 9
      intGuguResult = value1 * intTemp
      strGugu = CStr(value1) & " * " & CStr(intTemp) & " = " & CStr(intGuguResult) & Chr$(10) & Chr$(13)
      lblGuguResult.Caption = lblGuguResult.Caption + strGugu
   Next
End Sub

위의 함수에서 lblGuguResult.Caption = lblGuguResult.Caption + strGugu라는 부분을 잘 살펴보면 lblGuguResult 레이블의 캡션값을 직접 수정하고 있습니다. 그리고 끝납니다. 이 함수를 실행하고 난 뒤 어떤 값을 돌려 줄 필요가 없으니까요.

반면 오늘 실습할 내용은 그 결과값을 돌려주는 Function 함수입니다.

좀 복잡하게 보일지 모르지만 이것만 이해하면 Sub 함수와 Function 함수의 차이를 알 수 있습니다.

천천히 따라해 볼까요?



  1. 비베를 실행하여 '메뉴.vbp' 프로젝트 파일을 엽니다.

  2. [프로젝트] 메뉴의 [폼 추가]를 선택하여 빈 폼을 하나 만듭니다.

  3. 아래와 같은 폼을 만듭니다.


    • 폼의 속성을 다음과 같이 변경합니다.



    • 폼을 저장합니다. 파일 이름을 함수연습이라고 저장합시다.


  4. [보기] 메뉴의 [코드]를 실행한 다음 다음과 같이 코드를 입력합니다.


    • Cont plus = 1는 plus를 상수 1과 선언한다는 뜻입니다. 즉 앞으로 이 프로그램에서 1 대신 plus 라고 써도 된다는 뜻입니다. 마찬가지로 minus 라고 쓰면 이것은 2를 나타낸다고 보면 됩니다.
    • Public Function Calculator(value1 As Integer, value2 As Integer, method As Integer) As Integer
      앞의 Public은 크게 신경 안써도 됩니다. 실제로 쓰지 않아도 됩니다.
      • Function
        이 함수는 Sub 함수가 아닌 리턴값이 있는 Function 함수입니다.
      • Calculator(…) As Integer
        함수의 이름이기도 하고 변수이기도 합니다. 즉 이 함수는 실행하고 난 다음 Calculator라는 정수형 변수의 값을 리턴한다는 뜻입니다.(??? 조금 어렵죠?)
      • (value1 As Integer, …)
        매개 변수입니다.
      • Select Case method
        method 값이 얼마냐에 따라 다음 행의 조건문을 수행하라는 Secect Case 문의 시작입니다.
      • Case plus | Calculator = valule 1 + value2
        만약 method값이 plus이면, Calculator의 값은 매개변수 value1과 value2를 합한 결과라는 뜻입니다.
      • End Seclect
        Seclect Case 문의 끝입니다.
      • End Funtion
        Function 함수는 이렇게 끝납니다.


  5. [더하기] 커맨드 버튼을 더블클릭해서 아래와 같이 코드를 입력합니다.
    • txtResult.Text = CStr(Calculator(CInt(txtValue1), CInt(txtValue2), plus))
    • 마찬가지로 [빼기],[곱하기],[나누기]도 다음과 같이 입력합니다.



  6. 이제 메뉴에 추가를 해야죠. 프로젝트 창에서 frmMenu 폼을 더블클릭하여 활성화한 다음 [도구]-[메뉴 편집기]에서 아래와 같이 메뉴를 추가합니다.


  7. frmMenu 폼의 [비베입문]-[함수연습]을 클릭하여 다음과 같은 코드를 입력합니다.


  8. 자, 이제 다 끝났습니다. 실행해 보세요. 아래와 같이 실행되나요?


실행이 된다고 그냥 끝내면 안됩니다. 이해를 해야죠. 위의 코드를 정확하게 이해하는 것이 관건입니다. 물론 잘 이해가 안된다고 안하는 것보다야 이렇게 실행이라도 되게 하고 계속 다음 실습을 하는 것이 낫지요. 그러다보면 어느새 자기도 모르는 것을 터득하게 될테니까요.

소스 받아가세요...


이상 설 연휴 첫날 동주 아빠 손병목이었습니다.

Prev
   예제로 익히는 ActiveX컨트롤(1)-파일시스템

손병목
Next
   예제로 익히는 비베 기초(7)-함수

손병목


Copyright 1999-2021 Zeroboard / skin by Zetyx