[ 개요 ]
프로그래밍을 하다보면 중복해서 사용하는 기능들이 나온다.
이 부분을 복사해서 붙여놓는식으로 코드를 짜다보면 굉장히 길어지고 지저분해진다.
C#을 포함한 프로그래밍 언어에서는 ‘함수(또는 메소드)’를 통해 반복되는 기능을 묶어서 재사용할 수 있도록 모듈화 하였다.
이를 통해 중복코드의 사용을 줄이고 재활용성을 높이며 유지보수가 편해진다.
[ 개념 ]
함수는 특정기능을 수행하도록 나눠진 작업 단위이다.
혹은 하나의 목적을 구현하기 위한 명령문들의 집합이라고 말하기도 한다.
반환형 함수명(자료형1 매개변수1, 자료형2 매개변수2 ....){
//코드
return 반환값;
}
함수는 입력과 출력으로 이루어져있다.
괄호()안에 입력받은 값을 저장할 변수를 선언한다.
입력하는 값의 자료형과 입력 받을 매개변수의 자료형은 동일해야한다.
입력이 복수일 경우 선언해야하는 매개변수도 늘려줘야한다.
입력한 값을 통해 연산을 하고 이를 출력할 때, 출력하려는 값의 자료형을 함수명 앞에 반환형에 자료형을 입력해야한다.
그리고 출력하려는 값을 return을 통해 반환을 할 수 있다.
int AddFunction(int a, int b)
{
return a + b;
}
위의 예제는 두개의 int형 값을 입력받으면 둘을 더하여 출력하는 함수이다.
두개의 int형 값은 int a와 int b의 매개변수를 통해 입력받는다.
두개의 int형 값을 더하면 int형이 된다. ( ex) 1+2=3 )
따라서 출력도 자료형을 int으로 해야하므로 함수를 선언할때 함수명 앞에 int자료형을 붙였으며 return을 사용하여 입력받은 값들을 더하여 출력하였다.
[ 함수의 사용법 ]
static void Main(string[] args)
{
int num1 = 1;
int num2 = 2;
int result = AddFunction(num1, num2);
Console.WriteLine("result:" + result);
}
static int AddFunction(int a, int b)
{
return a + b;
}
Main함수에서 int형 변수 num1, num2를 선언하고 구현한 AddFunction함수에 입력으로 넣었다.
그리고 int형 변수 result를 선언하고 AddFunction()의 출력값을 대입하였다.
이를 출력하면 num1 + num2를 한 결과값이 출력됨을 확인할 수 있다.
[ Main함수 ]
놀라운 사실은 우리가 미리 함수들을 접하였다.
그동안 예제코드를 보면 Main() 함수안에 코드를 짠것을 볼 수 있다.
프로젝트를 생성하면 Main함수가 자동적으로 생성되어있을 것이다.
우리가 프로그램을 실행하면 프로그램은 자동적으로 Main함수를 찾아서 실행한다.
그리고 실행된 Main함수에서 구현한 코드들을 동작시킨다.
그렇기에 Main함수가 프로그램에서 가장 핵심적인 함수이며 프로그램에서 딱 하나만 존재해야한다.
[ 이미 명시된 함수 ]
함수는 우리가 직접 구현할 수 있지만 프로그래밍 언어에 이미 명시된 함수가 있다.
우리가 입력과 출력을 배울때 Console.WriteLine()을 본적이 있을 것이다.
WriteLine()함수는 이미 프로그래밍에 명시된 함수로써 프로그래머가 따로 선언하지 않아도 사용할 수 있는 함수이다.
그외에도 ReadLine(), Length()등 프로그래머가 자주 사용하는 기능들을 이미 프로그래밍 언어에서 이미 구현되어 있으니 구글링을 통해 잘 활용하길 바란다.
[ void 함수 ]
Console.WirteLine()함수와 같이 단순 연산 또는 출력하는 함수의 경우 굳이 어떠한 자료형으로 출력하지 않아도 되는 함수가 있다.
이럴 경우 void를 사용하면된다.
void PrintFunction(int a){
Console.WriteLine(a);
return; //생략가능
}
반환형에 void라고 쓰고 입력과 기능은 원래대로 구현하면 된다.
void 함수에 경우 출력이 없기 때문에 반환하는 값 없이 return만 입력하거나 return을 생략해도 된다.
[ 다양한 인수전달 방법 ]
static void Main(string[] args)
{
int result1 = AddFunction();
int result2 = AddFunction(5);
int result3 = AddFunction(5, 5);
Console.WriteLine("result1: " + result1);
Console.WriteLine("result2: " + result2);
Console.WriteLine("result3: " + result3);
}
static int AddFunction(int a = 1, int b = 2)
{
return a + b;
}
함수를 선언할때 입력하는 매개변수의 기본값을 저장할 수 있다.
만약 함수를 사용할때 입력에 매개변수 자리에 값을 넣지 않는다면 자동으로 기본값이 적용된다.
static void Main(string[] args)
{
PrintFunction(a: 1, b: 2);
PrintFunction(a: 2, b: 1);
}
static void PrintFunction(int a, int b)
{
Console.WriteLine("a: " + a);
Console.WriteLine("b: " + b);
Console.WriteLine();
}
함수에 입력을 넣는 순서는 중요하다.
변수의 이름 : 값
그런데 입력을 넣을때 위의 형태로 넣어주면 지정하여 값을 대입할 수 있다.
'C#문법' 카테고리의 다른 글
[C#문법] Part9-3 함수: params (0) | 2023.03.15 |
---|---|
[C#문법] Part9-2 함수: 함수호출방법(Call By Value, Call By Reference, Call By Result) (4) | 2023.03.15 |
[C#문법] Part8-5 반복문: break문, continue문 (4) | 2023.02.03 |
[C#문법] Part8-4 반복문: foreach문(배열 응용) (0) | 2023.02.03 |
[C#문법] Part8-3 반복문: for문 (1) | 2023.02.03 |