programming/c

[Core C] Functions (함수)

Real World의 동작 표현하기

우리가 프로그래밍하는 이유는 일상생활 속에서의 문제 상황들을 해결하기 위함이라고 소개한 바 있습니다. 마찬가지로 함수를 배울 때 현실 세계의 인간과 연관 지으면 좀 더 쉽게 이해할 수 있습니다. 프로그래밍과 사람은 많이 닮은 점이 있는데, 프로그래밍 역시 사람이 만든 결과물이기 때문입니다. 사람이 먼저 아니겠습니까. 앞서 다룬 변수와 함수를 잘 이해한다면 나중에 배우게 될 구조체와 객체지향 패러다임에서 중요하게 다루는 클래스의 이해에 큰 도움이 될 것입니다.

 

사람을 어떤 물체 중 하나라고 생각해봅시다. 사람이라는 물체는 키, 몸무게, 시력 등 어떤 속성을 가질 수도 있으며 게임을 한다, 운동한다, 먹는다 등등 어떤 동작을 수행할 수 있습니다. 마찬가지로 코딩에서도 어떤 개체에 대해 특정한 속성과 동작을 가질 수 있는데 코딩에서 전자를 변수로 표현하고, 후자를 오늘 배우게 될 함수로 표현합니다.

 

함수의 정의

함수란 특정한 기능을 수행하는 코드 뭉치를 말합니다. 우리는 이미 함수를 사용한 적이 있습니다. 어떤 코드를 작성해도 항상 있던 main이라는 녀석 역시 함수입니다. 이외에도 printf, scanf, ... 등을 사용해 본 적이 있는데, 이 녀석들 역시 함수입니다. printf나 scanf와 같이 함수를 이렇게 사용하자라고 미리 약속하고 프로그램에서 바로 사용할 수 있는 함수들을 표준 라이브러리 함수라고 합니다.

 

함수의 선언 및 사용

맨 처음 변수를 배울 때 처럼, 함수도 마찬가지로 먼저 선언을 하고 사용하면 됩니다. 다만 함수는 좀 특별한 녀석이기 때문에 선언과 사용이라는 용어 대신 정의호출이라는 용어를 사용합니다.

 

함수를 만들 때 고려할 점

이 함수의 이름은 어떻게 지을까?

이 함수가 기능을 올바르게 동작하게 하려면 필요한 데이터는 어떤 것이 있을까?

함수가 실행되고 나면 결과 값은 무엇인가?

 

반환형 함수명(매개변수1, 매개변수2, ...)
{
	// 함수가 수행하는 명령
    // 여러 로직이 들어 있다.
}

 

  1. 반환할 것이 있고, 입력이 없는 경우
  2. 반환할 것이 있고, 입력도 있는 경우
  3. 반환할 것이 없고, 입력이 있는 경우
  4. 반환할 것이 없고, 입력도 없는 경우