본문 바로가기

C Language/Programming Course

5장 함수(3부 함수의 사용) 첫번째 시간


 5장 함수

 3부 함수의 사용

 

이번시간에는 전 시간에 말했듯이 함수를 사용해야 되는 이유에 대해서 간단히
설명드리겠습니다. 먼저 여기에서 말하는 내용은 현재에는 해당 되지 않겠지만,
시간이 지나고 지금보다 C언어를 조금 더 능숙하게 사용하고, 그리고 서로 팀을
이루어 팀프로젝트를 할때 꼭 필요한 사항이니, 그냥 숙지만 해 두시고 계시면
나중에 시간이 지나게 되면 여기에 대한 내용을 자연 스럽게 이해 하시게 될것입니다.

그럼 함수의 사용에 대해서 설명을 하겠습니다.
먼저, 간단한 문제를 내 보겠습니다.
각기 다른 색깔의 구슬이 많이 들어 있는 포대가 있습니다. 이 포대를 가지고,
3명이서 작업을 해야 됩니다.
작업은 구슬을 색깔대로 분류하는 작업과, 이 구분한 구슬의 갯수를 구하는 작업과
이 구슬을 3개씩 모아서 봉지를 싸는 작업을 해야 합니다.
그럼 여기에서 가장 효과적인 방법은 한사람당 하나의 작업을 하는 것이 가장
효과적인 방법이겠죠!? 

즉, 첫번째 사람은 구슬을 색깔대로 분류하고 두번째 사람은 그 구슬들의 갯수를 구하고
세번째 사람은 3개씩 모아서 봉지에 다시 싸고, 이렇게 하면 일은 척척 될 것입니다.

그럼 이 문제를 함수로 생각해 보겠습니다.

여기에서 함수로 생각해 보겠다는 것은, 이런 현실에서 일어나는 작업들이,
함수로써의 표현과 동일하다는 것을 알기 위해서 입니다.

이 전체적인 구슬 작업을 main 이라고 생각하고,
작업 3개를 각 함수라고 생각하겠습니다.

그럼 간단한 형태는.

--------------------------------------------------------------------------
#include<stdio.h>

void Group();
void Count();
void Wrap();

int main()
{
    void Group();
    void Count();
    void Wrap();
}

void Group()
{
}

void Count()
{
}

void Wrap()
{
}
--------------------------------------------------------------------------

이런 형태가 나오게 될겁니다.

이 형태를 보면 일단 main부분은 그냥 함수 부분들을 불러 주는 역할만을 하게 됩니다.
즉 main은 이 프로그램을 돌려주는 역할만을 한다는 것입니다. 

그리고 각 사람들이 각자의 작업을 할 자리를 만들어 두었습니다.

그 자리가 위에서는 함수입니다.
이렇게 보면 어디가 분류하고, 어디서 갯수를 세려야 되고, 어디서 싸는지 보기
쉽겠죠!?

즉, 어디 부분이 틀렸다면 그 부분을 금방 찾아서 수정작업을 할 수 있을것입니다.

하지만, 만약에 위 작업들이 그냥 main문 안에 다 존재 한다면,
어디가 분류인지, 갯수를 세려야 되는지 싸야 되는지, 이 걸 작업 한 사람 말고는
모르게 됩니다. 그럼 나중에 업데이트가 어렵겠죠!?
그리고 각자 작업을 한 것을 다시 뭉칠 필요까지는 없겠죠!?
한 곳에 있으면 서로 불편 할 수 있기 때문이죠.

그리고 다르게 생각해서 이 3사람이 모두 작업을 하다가 급한 일로 작업을
못하게 되었습니다. 그럼 다른 3사람이서 이 작업을 해야 되는데, 앞에서
작업을 보기 좋게 나누지 않고 한곳에 모아서 같이 작업을 했으면, 다음사람이
그 작업을 이해 하는데 시간이 많이 걸리겠죠!?

 이런 문제들로 인하여 함수를 많이 사용한다고 생각하시면 됩니다.
그리고 함수를 사용하게 되면, 변수들과 상관 관계 같은 것을 정해야 되고,
공통으로 사용해야 될것을 정해야 되는데, 이는 팀원들 끼리 정해야 되는
부분입니다. 이 부분은 따로 설명을 안하더라도, 함수를 사용하게 되면,
자연스럽게 알게 되는 부분입니다.

말로써 이렇게 적을려고 하니, 많은 내용을 담지 못하겠는데, 이 부분은
말보다는 직접 겪어 보시는 것이 더 이해가 빠를 꺼 같습니다.
그래서 그냥 인지만 해 두시라고 한 것입니다.

 그럼 함수에 대한 간단한 설명은 이로써 넘어 가도록 하겠습니다.