6-1.함수의 구성원리

6-1-가.함수의 정의

흔히 C언어를 함수 위주의 언어라고 하는데 이 말의 의미에 대해 알아보자. 프로그램은 함수들로 구성되고 함수들이 순서대로 실행됨으로써 프로그램이 제 기능을 발휘한다. 즉, 함수는 프로그램을 구성하는 단위로서 프로그램의 부품 역할을 한다. 프로그램과 함수의 관계는 컴퓨터와 그 부속품들의 관계와 유사하다.

컴퓨터는 아주 많은 부품들로 구성되어 있다. 중앙 처리 장치(CPU)를 핵심으로 메모리, 하드 디스크, 모니터, 키보드, 비디오 카드 등등의 많은 부품들이 모여야 컴퓨터라는 하나의 완성된 기계가 된다. 각 부품들은 저마다 하는 일이 정해져 있고 CPU와 또는 다른 부품들과 정보를 주고 받으면서 동작하며 서로 돕기도 하고 통제하기도 한다. 이런 부품들 중 컴퓨터의 동작을 총지시하는 것이 CPU이고 나머지 부품들은 CPU가 하는 일을 보조하거나 또는 CPU가 지시하는 별개의 작업을 수행한다.

프로그램이란 것도 이러한 구성원리와 똑같은 체계로 짜여진다. 프로그램이 해야 할 일을 각 부품들(=함수)이 나누어 맡으며 그 중에서도 가장 핵심이 되는 함수(=main)의 통제 아래 모든 함수들이 체계적으로 실행되어 전체적으로 프로그램이라는 하나의 완성을 이루는 것이다. 컴퓨터 부품 중 하나가 고장나면 컴퓨터가 제 기능을 발휘할 수 없듯이 프로그램도 함수 하나를 잘못 작성하면 제대로 동작할 수 없다. 참고로 C++에서는 함수의 이런 부품 역할을 객체가 대신 한다.

함수는 크게 표준 함수와 사용자 정의 함수로 구분할 수 있다. 표준 함수는 C언어와 함께 작성되어 제공되는 것이며 컴파일러와 함께 배포된다. 이미 만들어져 있기 때문에 함수의 기능과 호출하는 방법만 알고 있으면 언제든지 불러서 사용할 수 있다. 지금까지의 실습에서 사용해 왔던 printf, scanf 등의 명령이 표준 함수들이며 이 함수들을 사용하면 입력과 출력 작업을 할 수 있다.

사용자 정의 함수는 개발자가 필요에 따라 만들어 쓰는 함수이다. 표준 함수들이 모든 기능을 다 제공해 주는 것은 아니므로 프로그램의 목적에 따라 적합한 함수를 만들어 쓸 수 있어야 한다. 표준 함수와 사용자 정의 함수는 누가 만들었는가만 다를 뿐 문법적으로는 똑같은 함수이며 사용하는 방법도 동일하다.