====== Sub / Function ====== CUBLOC2에서 서브루틴(Sub)과 함수(Function)는 코드를 구조화하는 핵심 요소입니다. 두 방식의 가장 큰 차이점은 반환값(Return Value)의 유무입니다. ==== 1. Sub (서브루틴) ==== * 특정 작업을 수행하지만, 호출한 곳으로 값을 돌려주지 않습니다. * 주로 상태 변경, 출력, 하드웨어 제어 등 '동작' 자체에 목적이 있을 때 사용합니다. ' Sub 정의 (인자가 있는 경우) Sub PrintStatus(Value As Integer) Debug "현재 상태: ", Dec Value End Sub ' Sub 정의 (인자가 없는 경우) Sub SayHello() Debug "안녕하세요!" End Sub ' Sub 호출 PrintStatus(100) SayHello() ' 인자가 없어도 괄호를 붙여 호출합니다. ==== 2. Function (함수) ==== * 특정 계산이나 처리를 수행한 후 그 결과를 호출한 곳으로 반환합니다. * 반환할 데이터 타입을 선언해야 하며, 함수 이름에 값을 대입하여 반환값을 지정합니다. ' Function 정의 (정수형 반환) Function Add(A As Integer, B As Integer) As Integer Add = A + B ' 함수 이름에 값을 대입하여 반환 End Function ' Function 정의 (인자 없이 값만 반환하는 경우) Function GetVersion() As Single GetVersion = 1.0 End Function ' Function 호출 Dim Result As Integer Result = Add(10, 20) Debug "버전: ", Fp GetVersion() ==== 3. 루틴 종료 (Exit Sub / Exit Function) ==== * 루틴을 끝까지 실행하지 않고, 특정 조건에서 즉시 종료하고 빠져나올 때 사용합니다. Sub CheckLimit(Value As Integer) If Value > 100 Then Debug "범위 초과로 중단합니다." Exit Sub End If Debug "정상 범위입니다: ", Dec Value End Sub ===== 인자(Argument)에 대하여 ===== ==== 1. 인자란? ==== * 서브루틴이나 함수를 실행할 때 넘겨주는 데이터를 인자라고 합니다. * 예: PrintStatus(100)에서 100이 바로 인자입니다. ==== 2. 값 복사 방식 ==== * 모든 인자는 값을 그대로 복사해서 전달합니다. * 루틴 내부에서 값을 변경해도 원본 변수에는 영향을 주지 않습니다. ==== 3. 원본 데이터를 수정하려면 ==== * 기본적으로 원본 변수 직접 수정은 지원하지 않습니다. * 다음 방법을 사용합니다. * 1차원 배열 활용 * 전역 변수 활용 ==== 사용 예시 ==== Dim A As Integer = 10 Test(A) Do Loop Sub Test(Value As Integer) Value = 20 ' 원본 A는 변하지 않음 End Sub [[..:index|← CUBLOC2 목차로 돌아가기]]