C언어에서 가장 많이 접하는 용어 중 하나는 바로 함수 입니다.
그리고 함수를 항상 따라다니는 용어 매개변수와 리턴 값에 대해서 알아보려고 합니다.
C 프로그램은 함수(function)의 집합 입니다.
즉, 큰 프로그램 하나를 여러 개의 함수로 분할하여 구현하는 구조적 프로그래밍 (structured programming) 방식으로 작성합니다.
쉽게, 공장과 그 안에서 작동하는 기계를 예로 들어 설명해 볼게요.
한 공장 안에는 여러 기계들이 작동하고 있습니다. 그 기계들은 제조, 포장 등 각자 자기에게 주어진 독립적인 일을 수행하고 있습니다.
공장 = 프로그램 , 기계 = 함수 로 대입해 보면 구조적 프로그밍의 동작 방법을 이해할 수 있을 겁니다!
그럼 이제 함수에 대해 알아봅시다.
함수(funtion)란?
함수는 "특정한 작업을 하기 위해 독립적으로 만들어지는 하나의 기능 단위" 라고 할 수 있습니다.
함수의 장점
예를 들어 사칙연산을 하는 계산기 프로그램을 만든다 하면,
하나의 함수 안에 덧셈, 뺄셈, 나눗셈, 곱셈을 모두 처리할 수 있게 할 수 있지만 덧셈, 뺄셈, 나눗셈, 곱셈 각각의 기능을 함수로 나누어서 처리할 수도 있습니다.
무엇이 더 효율적일까요?
각각의 기능을 함수로 나누어 처리하는 것이 더 효율적입니다.
그 이유는
첫째.
코드의 가독성이 좋아집니다.
코드가 복잡해질수록 우리는 어느 기능이 어디에 있는지 한눈에 파악하기가 어려워집니다. 물론 내가 만든 코드라도 한눈에 파악하기 쉽지 않죠. 우리가 글을 쓸 때 단락을 나누어 쓰는 이유처럼 읽기 편하고 이해하기 쉽게 만들어 줍니다.
함수를 만들어 기능별로 나누는 것을 모듈화 라고 하는데, 이런 모듈화를 거칠수록 코드의 가독성은 더욱 좋아집니다.
둘째.
코드의 수정, 유지 보수, 확장이 용이해집니다.
프로그램에 문제가 생겨서 코드를 손봐야 할 때, 수정이 필요한 부분이 어느 부분인지 한눈에 알아볼 수 있도록 잘 정리된 코드는 좋은 코드라고 할 수 있습니다. 다른 사람이 봐도 이해하기 쉬운, 가독성 좋은 코드를 작성해보세요!
셋째.
반복되는 작업을 줄여주기 때문에 코딩 양이 감소합니다.
평균을 구하는 함수를 한번 만들어 놓으면 평균 구하는 코드가 만약 100줄이어도 함수를 호출하는 코드 1줄이면 100줄짜리 기능을 쉽게 호출해 사용할 수 있습니다.
여기까지 함수의 장점을 알아봤습니다.
이제 함수는 알겠는데 툭하면 같이 나오는 매개변수랑 리턴 값은 뭘까요?
매개변수 (parameter) 와 리턴 값 (return value) 의 의미와 관계
매개변수 (parameter) 는 인자 (argument) 라고도 합니다.
함수에 입력 시키는 것을 말합니다.
리턴 값 (return value) 은 반환 값 이라고도 합니다.
함수가 돌려주는 결과값 을 말합니다.
매개변수라는 재료를 함수에 넣어 가공시킨 다음 우리가 원하는, 즉, 결과값을 얻어내는 것이죠.
자판기를 예로 들어서 세 단어들의 관계를 쉽게 설명해 볼게요!
* TMI * 함수의 종류 (표준함수, 사용자 정의 함수) printf() 함수는 앞에서 다뤄봤지만 우리가 만든 함수가 아니에요. 우리가 정의하지 않은 함수라고 해요. 이 함수는 C언어에서 기본적으로 제공해주는 함수로, 표준함수 라고 불러요. 개발자들이 미리 사용하기 편하게 라이브러리화 시켰기 때문에 우리는 정의(=함수 만들기) 하지 않은 함수를 그냥 호출만 해서 쓸수 있는겁니다. 이러한 라이브러리화 된 함수를 쓰기위해 꼭 해야 할 일이 있습니다! 바로 프로그래밍 할때 맨 처음에 쓰는 #include<stdio.h> 이 코드 작성인데요. #include<stdio.h>는 stdio.h 라는 헤더 파일을 포함하겠다는 의미이고, 이 선언을 함으로써 헤더 파일 안에 이미 정의되어있는 printf()나 scanf() 같은 표준함수를 호출하여 쓸수 있는 겁니다. 하지만 내가 원하는 모든 기능이 표준함수에 다 들어있을리는 없겠죠? 그래서! 직접 정의하고 선언하고 호출해서 쓰는 함수가 바로 사용자 정의 함수 입니다. |
'💻 Programming > C' 카테고리의 다른 글
[C 언어] 서식문자 (변환문자) 의미 자료형 (0) | 2020.08.04 |
---|---|
[C 언어] 출력함수 Printf (0) | 2020.08.01 |