함수는 쉽게 설명하자면 특정 인풋이 들어가면 내부 처리 후 특정 아웃풋을 내주는 것을 말한다.

    프로그래밍을 하다 보면 반복적으로 사용해야 하는 과정이 있는데 이걸 처리하기 위한 방법 중 하나로 함수를 사용할 수 있다.

     

    함수 생성

    C#에서 함수를 생성할 때 함수 이름의 첫 글자는 대문자로 한다.

    일종의 약속이다.

    void SumSalary() 
    {
    
    }

    함수를 생성하기 위한 방법은 여러 가지인데 리턴 값이 없는 함수일 경우 void를 쓰고 뒤에 함수명을 써주면 된다.

    파이썬에서 함수를 정의하기 위해 def 함수명() 이라고 선언하는 것과 같다.

     

    함수 호출
    void Start() {
    	SumSalary();
    }

    이런 식으로 호출할 함수의 이름을 써주면 된다.

    이때 ()를 빠뜨리지 않도록 주의하자.

     

    함수를 사용하는 이유

    예를 들어 hello, world를 각각 프린터해야 된다고 하자.

    print("hello");
    print("world!");

    이런 식으로 해줄 수 있다.

    그런데 만약 이걸 백 번 해야된다면?

    심지어 코드가 2줄이 아니라 200줄이라면?

    이럴 때 함수가 필요하다.

    // 함수 생성
    void HelloWorld() {
    	print("hello");
        print("world!");
    }
    
    // 이제 필요한 만큼 함수만 호출해주면 된다.
    
    HelloWorld();
    HelloWorld();
    HelloWorld();

    이런 식으로 말이다.

     

     

     

    매개변수 (파라미터)

    함수가 반복된 코드를 작성하는 것을 막아주는 게 첫 번째 기능이라면 매개변수, 파라미터를 이용하면 같은 기능을 할 때는 하나의 함수만으로 모두 처리가 가능해진다.

     

    예를 들어 정수에 3를 곱해준 뒤 프린트해주는 함수를 만들었다고 하자.

    int a = 1;
    
    void ThreeMultiple () {
    	intValue = a * 3;
        print(intValue);
    }

    이제 이 함수를 호출하면 a에 3배가 곱해진 값이 프린터 될 것이다.

    그러니 같은 코드를 반복적으로 쓰지 않고 함수만 호출하면 된다.

     

    근데 b도 같은 처리를 하고 싶다면 어떻게 해야 될까?

    이럴 때 매개변수(파라미터)를 이용하면 또 함수를 만들지 않고 특정 변수가 아닌 내가 원하는 변수를 인 풋으로 넣고 원하는 결과를 아웃풋할 수 있다.

    int a = 1;
    int b = 2;
    
    // 함수 괄호 안에 매개변수 이름을 써준다.(자료형과 함께)
    void ThreeMultiple (int _parameter) 
    {
    	intValue = _parameter * 3;
        print(intValue);
    }
    
    // 이제 함수 호출할 때 괄호 안에 내가 원하는 변수를 넣으면 된다.
    
    ThreeMultiple(a);
    ThreeMultiple(b);

    이렇게 하면 만들어 놓은 하나의 함수로 여러 변수를 처리하는 기능을 이용할 수 있다.

     

    그리고 여기서 그치지 않고 매개변수를 여러 개 받을 수도 있다.

    예를 들어 파라미터 1, 2를 더해주는 함수를 만들어 쓸 수도 있다.

    int a = 1;
    int b = 2;
    
    // 매개변수 2개를 받을 때는 이렇게 작성한다. 콤마(,)로 구분
    void Sum (int _parameter, int _parameter2)
    {
    	intValue = _parameter + _parameter2;
        print(intValue);
    }
    
    // 호출할 때도 매개변수 2개를 입력해줘야 한다.
    Sum(a, b);

    파라미터는 2개뿐 아니라 더 여러 개도 가능하고 타입이 다른 것들도 하나의 함수에 파라미터로 받을 수 있다.

     

    매개변수 (파라미터)의 기본값 설정

    파라미터의 기본값을 설정할 수도 있다.

    위에서 함수에 파라미터 2개를 설정했으면 호출할 때도 2개를 써줘야 한다고 했는데 디폴트값을 설정하면 굳이 다 쓰지 않아도 호출할 수 있다.

    만약 매개변수를 채우지 않고 호출하면 그 디폴트값이 채워져서 호출되어 오는 것이다.

    int a = 1;
    int b = 2;
    
    // 매개변수 디폴트를 정해줄 때는 = 하고 원하는 값을 써주면 된다.
    void Sum (int _parameter, int _parameter2 = 3)
    {
    	intValue = _parameter + _parameter2;
        print(inValue);
    }
    
    // 디폴트로 호출하기
    Sum (a, b);
    Sum (a);
    
    // 위처럼 호출하면 1 + 2 = 3이 되겠지만 a만 쓰면 파라미터2가 디폴트인 3이 되므로 4가 프린터 된다.

    단 여기서 주의할 점이 있는데 디폴트가 있는 파라미터는 뒤 쪽이 와야 된다는 것이다.

    위 코드에서 파라미터2에 디폴트를 주지 않고 파라미터에 디폴트를 줄 수는 없다.

    제일 뒤에 파라미터2를 주고 나면 앞의 파라미터도 가능하다.

    즉 뒤에서부터 채워서 줄 수 있는 것으로 그렇게 해야 정확한 파라미터 위치가 정해지기 때문이다.

     

    반환값 (리턴)이 있는 함수

    void는 리턴이 없는 함수를 만들 때 쓰지만 만약 리턴이 있는 함수를 만든다면 자료형을 그냥 써주면 된다.

    대신 그런 경우 리턴값이 꼭 존재해야 한다.

     

    예를 들어 파라미터 a를 넣으면 5배 곱한 값을 리턴하는 함수가 있다고 가정해보자.

    int a = 1;
    
    int FiveMultiple (int _parameter) {
    	return (_parameter * 5);
    }
    
    intValue = FiveMultiple(a);
    print(intValue);

    위와 같이 함수를 실행했을 때 리턴 값으로 int가 남겨있기 때문에 그걸 프린트해줄 수가 있다.

    프린트 뿐 아니라 다른 함수에서 불러와서 쓸 수도 있다.

     

    주의사항이 함수 안에 return이 작성된 후 그 아래 코드는 실행되지 않는다.

     

    ※ 함께 읽으면 좋은 글

     

    C# 기본 자료형 클릭!

    C# print, 주석, 변수 클릭!