본문 바로가기
C# 기초문법

[C#] (7) 함수의 문법과 특징 - 입출력 방법

by novices 2022. 9. 12.

함수란 특정 기능을 처리하기 위한 하나의 명령 묶음이라고 볼 수 있습니다. 이러한 명령 묶음은 보통 기능에 맞게 적당한 명령으로 쪼개서 작성합니다. 또한 함수를 구성할 때 입력이나 출력을 사용하는 등 여러 방법으로 작성이 가능합니다. 이번 포스팅에서는 함수의 문법과 작성할 때 어느 정도의 처리 단위로 구성해야 되는지 알아보겠습니다.

 

 

1. 함수의 기본 문법

함수를 선언할 때는 첫 번째 키워드는 출력이 있는지 없는지를 정합니다. 두 번째 키워드는 함수의 이름입니다. 세 번째는 () 표기로 되어있는데 이 괄호를 통해 입력이 있는지 없는지를 정합니다. 마지막으로 함수의 범위를 알리는 명령 블록으로 되어있습니다. 이러한 함수의 선언부는 기능의 뼈대라고 봐야 합니다. 선언한 함수는 사용 전에는 프로그램에 아무 작용도 하지 않습니다. 선언한 함수를 사용할 때는 첫 번째 키워드는 함수 이름이고 두 번째 () 괄호입니다. 만약 이 함수가 입력이 있을 경우 괄호 안에 값을 할당하여 함수 내부로 값을 전달합니다. 세 번째는 명령줄의 끝을 알리는 ;(세미콜론)을 입력합니다.

 

1-1. 입출력이 없는 함수 선언 예시

첫 번째 키워드에 void를 사용하면 출력이 없다는 뜻이고 데이터의 형태가 들어간다면 해당되는 데이터를 출력하는 함수라는 뜻을 가지고 있습니다. 아래는 출력이 없는 함수 선언의 예시입니다.

string myname = "John";

void PrintMyName()
{
    Console.WriteLine(myname);
}

 

1-2. 함수 이름에 대해서

필수는 아니지만 함수의 이름은 보통 대문자로 시작하고 단어가 바뀔 때마다 대문자로 표기합니다. 함수의 이름을 언급하는 이유는 함수의 이름으로 기능을 유추할 수 있어야 하기 때문입니다. 서문에서 이야기했듯이 함수의 기능 묶음의 단위는 함수 이름을 기준으로 나눌 수 있을 만큼 적당한 코드로 묶여 있어야 효율적으로 사용이 가능합니다.

 

1-3. 입출력이 모두 없는 함수 사용 예시

위에서 이야기했듯이 함수는 선언을 통해서 만들어도 사용하지 않으면 아무 일도 벌어지지 않습니다. 아래는 함수를 실행시키는 코드입니다. 코드를 실행하면 해당 함수 내부에 작성된 명령줄 Console.WriteLine(myname); 가 실행됩니다.

PrintMyName();

 

1-4. 출력이 있는 함수 선언 예시

아래는 문자열 출력이 있는 함수 예시입니다. 출력이 없을 때 사용하는 키워드 void 대신 문자열을 출력하기 때문에 string 대치하여 선언되었습니다. 또한 출력이 존재하는 함수는 return 키워드로 출력될 문자열을 지정해야 합니다.

string GetMessage()
{
	retrun "이번에 출시된 제품은 새로운 기술이 접목된....";
}

 

1-5. return 키워드

함수 내부에서 return을 만나면 해당되는 함수는 종료됩니다. 이것이 return의 기본 기능이며 위의 항목에서 이야기했듯이 추가로 출력이 있는 함수는 return키워드로 선언된 데이터 형태의 값을 함수 외부로 전달합니다. 다시 이야기하면 함수 내에서 return키워드를 만나면 return키워드 이하 코드는 실행되지 않습니다.

 

1-6. 출력이 있는 함수 사용 예시

아래 예시는 GetMessage 함수로 출력된 문자열을 string 변수에 저장하고 출력하는 내용입니다. GetMessage() 함수의 실행으로 출력된 문자열 값을 description변수에 대입하여 저장하고 출력합니다.

string description;

string GetMessage()
{
    retrun "이번에 출시된 제품은 새로운 기술이 접목된....";
}

description = GetMessage();

Console.WriteLine(description);

 

1.6 입력이 있는 함수 선언 예시

입력이 있는 함수는 선언할 때 () 괄호 안에 입력을 받을 수 있는 데이터 형태를 명시합니다. 입력받는 데이터의 개수는 콤마로 구분하여 여러 가지 값을  함수 내부로 전달할 수 있습니다. 매개변수(괄호 안에 입력을 받기 위해 선언된 변수)로 사용된 변수명은 함수 내에서만 유효합니다.

void PrintMessage(string newMessage)
{
    Console.WriteLine(newMessage);
}

 

1.7 입력이 있는 함수 사용 예시

실행 시 위에 선언된 PrintMessage() 괄호로 입력값을 전달합니다.

PrintMessage("이번에 출시된...");

 

1.8 입력이 여러 개 있는 함수 선언과 사용 예시

선언부 및 실행부 둘 다 여러 개의 데이터형 태나 값을 콤마로 분리합니다. 아래는 예시에서 선언된 함수는 정수 입력 2개를 받아서 곱한 뒤 결괏값을 화면 출력하도록 선언되었고 사용 시에는 콤마를 사용하여 () 안에 정수를 함수로 전달합니다. 

void multiplyNumber(int input1, int input2)
{
    Console.WriteLine(input1 * input2);
}

multiplyNumber(3,6);

 

1.9 입출력이 있는 함수 선언과 사용 예시

위의 MultiplyNumber 함수에 출력을 추가 선언 한 뒤 사용하는 코드입니다. 이 함수는 정수 값 2개를 입력받아 곱해서 정수로 돌려주는 기능을 수행합니다. 여기서는 함수 리턴 값을 number에 저장합니다.

int number;

int multiplyNumber(int input1, int input2)
{
    return input1 * input2;
}

number = multiplyNumber(3,6);

 

함수 문법 요점

  • 함수는 특정 기능을 처리하기 위한 명령어의 묶음입니다.
  • 함수는 선언과 실행을 별도로 처리합니다.
  • 함수는 입력과 출력을 통해서 함수의 외부 값을 함수 내부로 전달하거나 외부로 출력할 수 있습니다.
  • 출력이 있는 함수는 return 구문으로 선언한 데이터 형태에 해당되는 값을 외부로 전달합니다.
  • 함수는 return문을 만나면 즉시 해당 함수를 종료시킵니다. 

 

 

2. 배열과 반복문 그리고 함수 사용 예시 

부제목과 마찬가지로 하나의 예시를 만들어 보았습니다. 예시에는 문자열을 입력으로 받아 string배열에서 해당 문자열을 찾아 돌려주는 함수와 문자열을 입력받아서 출력하는 함수로 구성되어있습니다. FindChampion 함수의 실행 부분에서 입력 인자를 코드에서 입력하지 않고 Console.ReadLine() 함수를 통해 외부 터미널에서 키보드 입력을 받아 FindChampion의 입력으로 전달하여 함수를 실행합니다. 이전 시간에 배운 배열을 포함하여 지금까지 배운 내용들을 기준으로 아래 코드를 작성했습니다. 작성된 코드들을 조금씩 수정하면 함수 사용을 습득해 보시길 바랍니다.

using System;

namespace Program
{
    class Program
    {
        static void Main(string[] args)
        {
            string message;
            string[] championsPool = new String[] {"애니", "티모", "트리스타나", "룰루"};

            String FindChampion(string championName)
            {
                for(int i = 0; i < championsPool.Length; i++)
                {
                    if(championsPool[i] == championName)
                        return championName + "는 챔피언 풀에 존재합니다.";
                }

                return "챔피언풀에서 " + championName + "은 존재하지 않습니다.";
            }

            void PrintString(string newString)
            {
                Console.WriteLine(newString);
            }

            message = FindChampion(Console.ReadLine());
            PrintString(message);

            Console.ReadKey();
        }
    }
}

 

이번 포스팅에서는 함수의 문법이나 사용방법을 입출력 기준으로 자세히 알아보았습니다. 함수를 배우면 프로그래밍은 다 배운 거다 라는 말이 있을 정도로 많은 부분을 차지하고 개발하는 입장에서도 도움이 많이 되는 문법이라고 생각합니다. 다음 시간에는 코드의 본체를 이루고 있는 Class에 대해서 알아보겠습니다.

 

 

댓글