동작하는 컴퓨터 만들기: 첫 번째 프로시저 작성
업데이트: 2007년 11월
이 단원에서는 다른 코드 블록에서 실행될 수 있는 독립적인 코드 블록인 프로시저를 만드는 방법과 프로시저의 매개 변수를 만드는 방법을 배웁니다.
프로시저는 프로그램에 특정 작업을 수행하도록 지시하는 코드 블록입니다. 설명은 없었지만 이전 단원에서 이미 프로시저를 사용했습니다. 예를 들어, MsgBox 함수에는 대화 상자를 표시하는 동작을 수행하는 기본 제공 프로시저가 있습니다.
Visual Basic에는 일반적인 동작을 수행하는 여러 기본 제공 프로시저가 있지만 기본 제공 프로시저로 처리할 수 없는 동작을 프로그램에서 수행하도록 해야 하는 경우가 있습니다. 예를 들어 MsgBox 함수는 그림이 있는 대화 상자를 표시할 수 없습니다. 따라서 이 작업을 수행하는 프로시저를 직접 작성해야 합니다.
프로시저의 정의
프로시저는 다른 코드 블록에서 실행할 수 있는 독립적인 코드 블록입니다. 일반적으로 각 프로시저에는 한 가지 작업을 수행하는 데 필요한 코드가 포함되어 있습니다. 예를 들어, PlaySound라는 프로시저에는 웨이브 파일을 재생하는 데 필요한 코드가 포함되어 있을 수 있습니다. 동일한 코드를 작성하여 프로그램에서 소리를 내야 할 때마다 소리를 재생하도록 할 수도 있지만 프로그램의 어느 위치에서나 호출할 수 있는 단일 프로시저를 만드는 것이 더 좋은 방법입니다.
프로시저는 코드에서 호출하여 실행합니다. 예를 들어, PlaySound 프로시저를 실행하려면 다음과 같이 프로시저 이름이 있는 코드 줄을 추가하면 됩니다.
PlaySound()
아주 간단합니다. 프로그램이 해당 코드 줄에 도달하면 PlaySound 프로시저로 이동하여 여기에 포함된 코드를 실행합니다. 그런 다음 프로그램은 다음 줄로 돌아가 PlaySound를 호출합니다.
프로시저는 원하는 만큼 호출할 수 있으며 호출 순서대로 실행됩니다. 예를 들어, DisplayResults라는 프로시저가 호출되는 경우 PlaySounds 프로시저를 실행한 후 이를 실행하려면 다음과 같이 프로시저를 호출합니다.
PlaySounds()
DisplayResults()
함수 및 sub
프로시저에는 함수와 서브루틴(sub라고도 함)의 두 종류가 있습니다. 함수는 호출한 프로시저로 값을 반환하지만 sub는 코드를 실행하기만 합니다. 다음 예제에서처럼 sub의 이름이 포함된 코드 줄을 프로그램에 추가하면 sub가 호출됩니다.
DisplayResults
함수는 코드를 실행할 뿐만 아니라 값을 반환한다는 점에서 sub와 다릅니다. 예를 들어 요일을 나타내는 Integer를 반환하는 GetDayOfWeek라는 함수가 있다고 가정합니다. 이 함수를 호출하려면 다음과 같이 먼저 변수를 선언하여 반환 값을 저장한 다음 나중에 사용할 수 있도록 반환된 값을 변수에 할당합니다.
Dim Today As Integer
Today = GetDayOfWeek
이 예제에서는 함수에 의해 반환되는 값이 Today라는 변수에 복사되고 나중에 사용할 수 있도록 저장됩니다.
프로시저 작성
메서드를 작성하려면 먼저 프로시저 선언을 작성합니다. 프로시저 선언에서는 여러 가지 작업을 수행합니다. 즉, 프로시저가 함수인지 sub인지를 나타내고, 프로시저의 이름을 지정하고, 프로시저에서 사용할 수 있는 매개 변수를 자세히 설명합니다. 매개 변수에 대해서는 이 단원의 뒷부분에서 자세히 설명합니다. 다음은 간단한 프로시저 선언을 나타내는 예제입니다.
Sub MyFirstSub()
End Sub
Sub 키워드는 이 프로시저가 sub이며 값을 반환하지 않음을 프로그램에 알립니다. sub의 이름(MyFirstSub)이 다음에 오고 빈 괄호는 이 프로시저에 매개 변수가 없음을 나타냅니다. 마지막으로 End Sub 키워드는 서브루틴의 끝을 나타냅니다. 이 sub에 의해 실행되는 모든 코드는 이 두 줄 사이에 놓입니다.
함수 선언도 이와 비슷하지만 추가적인 단계를 수행하여 반환 형식(예: Integer, String 등)을 지정해야 합니다. 예를 들어 Integer를 반환하는 함수는 다음과 같습니다.
Function MyFirstFunction() As Integer
End Function
As Integer 키워드는 이 함수가 Integer 값을 반환한다는 것을 나타냅니다. 함수에서 값을 반환하려면 다음 예제에서처럼 Return 키워드를 사용합니다.
Function GetTheNumberOne() As Integer
Return 1
End Function
이 프로시저는 숫자 1을 반환합니다.
실습
프로시저를 만들려면
파일 메뉴에서 새 프로젝트를 클릭합니다.
새 프로젝트 대화 상자의 템플릿 창에서 Windows 응용 프로그램을 클릭합니다.
이름 상자에 MyFirstProcedure를 입력한 다음 확인을 클릭합니다.
새 Windows Forms 프로젝트가 열립니다.
폼을 두 번 클릭하여 코드 편집기를 엽니다.
코드 편집기에서 End Class라는 줄을 찾습니다. 이 줄은 폼을 구성하는 코드 섹션의 끝입니다. 이 줄 바로 앞에 다음 프로시저를 추가합니다.
Function GetTime() As String Return CStr(Now) End Function
이 함수는 기본 제공 프로시저인 Now를 사용하여 현재 시간을 받은 다음 CStr 함수를 사용하여 Now에 의해 반환된 값을 사람이 읽을 수 있는 String으로 변환합니다. 마지막으로 String 값이 함수의 결과로 반환됩니다.
이전 단계에서 추가한 함수 위에 다음 Sub를 추가합니다.
Sub DisplayTime() MsgBox(GetTime) End Sub
이 sub는 GetTime 함수를 호출하고 이를 통해 반환되는 결과를 메시지 상자에 표시합니다.
마지막으로 Form1_Load 이벤트 처리기에 다음과 같이 DisplayTime sub를 호출하는 줄을 추가합니다.
DisplayTime()
F5 키를 눌러 프로그램을 실행합니다.
프로그램이 시작되면 Form1_Load 이벤트 프로시저가 실행됩니다. 이 프로시저는 DisplayTime sub를 호출하므로 프로그램 실행이 DisplayTime sub 프로시저로 이동합니다. 또한 이 sub는 GetTime 함수를 호출하므로 프로그램 실행이 GetTime 함수로 이동합니다. 이 함수가 시간을 나타내는 String을 DisplayTime sub 프로시저로 반환하면 메시지 상자에 이 문자열이 표시됩니다. sub의 실행을 마친 후에도 프로그램은 계속 실행되어 폼을 표시합니다.
함수 및 sub의 매개 변수
프로시저에 추가 정보를 제공해야 하는 경우가 있습니다. 예를 들어, PlaySound 프로시저에서 다양한 소리 중 하나를 재생하려 할 수 있습니다. 이때 매개 변수를 사용하여 재생할 소리에 대한 정보를 제공할 수 있습니다.
매개 변수는 변수와 매우 비슷합니다. 매개 변수에는 형식과 이름이 있고 변수처럼 정보를 저장합니다. 또한 매개 변수도 프로시저에서 변수처럼 사용될 수 있습니다. 매개 변수와 변수의 두 가지 주요 차이점은 다음과 같습니다.
매개 변수는 개별 코드 줄이 아닌 프로시저 선언에서 선언됩니다.
매개 변수는 해당 매개 변수가 선언된 프로시저에서만 사용할 수 있습니다.
매개 변수는 프로시저 이름 다음에 오는 괄호 안의 프로시저 선언에서 선언됩니다. As 키워드는 형식을 선언하는 데 사용되며 각 매개 변수 앞에는 일반적으로 ByVal 키워드가 옵니다. 이 키워드는 추가하지 않아도 Visual Basic에 의해 자동으로 추가되며 고급 함수를 포함합니다. 이 함수는 이 단원의 범위에서 벗어나므로 설명하지 않습니다.
매개 변수가 있는 sub의 예제는 다음과 같습니다.
Sub PlaySound(ByVal SoundFile As String, ByVal Volume As Integer)
My.Computer.Audio.Play(SoundFile, Volume)
End Sub
그런 다음 아래와 같이 매개 변수 값이 있는 sub를 호출합니다.
PlaySound("Startup.wav", 1)
함수의 매개 변수도 sub와 동일한 방식으로 선언할 수 있습니다.
실습
매개 변수가 있는 함수를 만들려면
파일 메뉴에서 새 프로젝트를 클릭합니다.
새 프로젝트 대화 상자의 템플릿 창에서 Windows 응용 프로그램을 클릭합니다.
이름 상자에 parameters를 입력한 다음 확인을 클릭합니다.
새 Windows Forms 프로젝트가 열립니다.
도구 상자에서 Textbox 컨트롤 두 개를 폼으로 끌어 옵니다.
도구 상자에서 Button 컨트롤을 폼으로 끌어 옵니다.
Button을 두 번 클릭하여 코드 편집기를 엽니다.
Button1_Click 이벤트 처리기의 End Sub 줄 바로 다음에 다음 프로시저를 추가합니다.
Function AddTwoNumbers(ByVal N1 As Integer, ByVal N2 As Integer) _ As Integer Return N1 + N2 End Function
Button1_Click 프로시저에 다음 코드를 추가합니다.
Dim aNumber As Integer = CInt(Textbox1.Text) Dim bNumber As Integer = CInt(Textbox2.Text) MsgBox(AddTwoNumbers(aNumber, bNumber))
이 코드는 두 개의 정수를 선언하고 두 텍스트 상자의 텍스트를 정수 값으로 변환합니다. 그런 다음 변환된 값을 AddTwoNumbers 함수로 전달하면 반환된 값이 메시지 상자에 표시됩니다.
F5 키를 눌러 프로그램을 실행합니다.
각 텍스트 상자에 숫자 값을 입력하고 단추를 클릭합니다. 두 숫자를 더한 결과가 메시지 상자에 표시됩니다.
다음 단계
이 단원에서는 함수와 sub의 차이를 비롯하여 이 두 프로시저를 만드는 방법을 배웠습니다. 또한 프로시저를 호출하는 방법과 매개 변수가 있는 프로시저를 만드는 방법도 배웠습니다.
다음 단원에서는 For...Next 문을 사용하여 동작을 반복하는 방법을 배웁니다.
다음 단원: 프로그램이 동작을 반복하도록 설정: For...Next 루프를 사용하여 반복