이 문제는 함수의 정의만 만들어 제출해야 합니다.(C/ C++ 언어만 됩니다.)
함수를 여러분들이 사용할 때 대부분 영문자로 시작하고 괄호( )로 사용합니다.
쉽게 사용한 함수로는 printf(), scanf(), main() 입니다. 그러나 for(), if(), while() 는 함수가 아닙니다.
그러면 함수는 무엇일까요?
함수란 필요한 기능을 반복적으로 사용하기 위해 만들어 놓은 기능 단위의 명령어의 집합으로 생각할 수 있다.
말이 어렵죠 ^^;;
절대값을 이용해서 처리해야 할 경우가 많을 경우 절대값을 구하는 함수를 만들어 두면
필요할 때 이를 가져다 사용하면 프로그램 작성이 쉬울 것이다.
우리가 많이 사용한 printf()함수는 규칙에 따라 함수에 값을 전달하면 그 값을 콘솔(console)에 출력한다.
결국 출력이 필요할 때 그냥 막 누군가 만들어 놓은 것을 사용하는 것이다.
함수를 사용하기 위해서는
1. 함수정의 : 함수가 어떻게 동작하게 할 것인지 명령어 집합으로 작성하는 것이다.
2. 함수호출 : 함수가 필요한 곳에서 함수를 사용하는 것이다.
지금까지 우리가 알고 있는 함수인 printf, scanf는 함수 정의 부분이 아니라 함수를 호출해서 실제 사용하는 것이다.
그러면 함수 정의는 어디 있을까?
실제 printf(), scanf()함수의 정의가 있는 곳은 별도의 파일에 기록해 두었다.
그래서 #include<stdio.h>를 통해 추가하게 된다.
standard input/output 에 표준입출력에 관련된 함수의 정의들이 있게 된다.
따라서 함수 정의는 stdio.h에 있고 함수 호출만 사용하는 것이다.
그런데 main()함수는 함수의 호출이 없고 함수의 정의만 있다.
형태를 보면
int main(){
}
그러면 지금부터 함수를 사용자가 직접 정의하고 호출해 보자.
함수의 정의 예이다.
void fun(int a)
{
printf("%d", a);
return;
}
1. void : 함수의 반환타입
- 함수가 끝나고 나서 함수를 호출한 부분으로 돌려주고자 하는 데이터의 종류이다. return 명령 다음에 나오는 데이터형과 같아야 한다.
- 반환하는 값이 없을 경우는 void라고 적어준다. 정수면 int / long long int , 실수면 float / double
2. fun : 함수의 이름
-영문자로 시작해서 문자/숫자/_로 만들 수 있다. 사용자가 마음대로 만들면 됩니다
3. 괄호( int a) : 함수 호출시 전달되는 변수들로 보통 함수의 인수, 매개변수(parameter)를 적는다.
- 함수 정의에 사용할 때 형식매개변수, 함수호출에 사용되는 변수를 실매개변수라고 한다.
- 그러나 복잡하니 그냥 매개변수로 생각하자
- 매개변수는 사용하는 변수의 개수를 개별적으로 선언해 주어야 한다. int a, b ==> int a, int b
4. 중괄호{ printf("%d", a); } : 함수의 몸체
- 실제 함수가 작동하는 명령어를 작성하는 부분이다.
► void fun(int a) : 함수의 머리(header)
{
printf("%d",a);
return;
} 함수의 몸체(body)
이렇게 함수를 정의하고 사용하기 위해서는 정의가 호출보다 먼저 있어야 한다.
따라서 해당 함수를 사용하기 위해서는 반드시 사용하고자 함수의 정의가 먼저 정의 되어 있어야 한다.
따라서 다음과 같다.
#include<stdio.h>
void fun(int a){
printf("%d",a);
return;
}
int main(){
int k=7;
fun(k);
return 0;
}
결과는 7이 출력된다.
이때 main()함수의 fun(k)가 정의된 함수를 호출하는 것이다.
호출할 때에 함수이름(매개변수)로 실행하면 된다. 이때 변수의 이름은 같아도 되고 달라도 된다.
►main()함수에서 여러 함수를 사용할 경우 main()함수 위에 함수의 정의가 엄청 많이 나올수 있기 때문에
함수의 머리(header)만 분리하여 함수의 원형(prototype)만 먼저 작성하고 함수의 정의는 나중에 작성해도 된다.
► 함수의 원형은 함수의 반환타입형과 함수이름, 매개변수타입만 적어둔다.
아래의 함수코드를 보면 함수원형은 다음과 같다.
void fun();
원래는 함수를 정의하고 호출해야 하지만 함수를 만드는 문제이므로
함수의 호출은 이미 아래와 같이 미리 작성되어 있다.
따라서 호출에 맞게 여러분들은 함수의 정의를 만들어 제출해야 한다.
여러분들은 컴퓨터에서 확인할 때에는 함수호출 부분의 코드는 복사하고
함수 정의만 코드를 추가하여 프로그램을 실행한 후 결과가 정상적으로 잘 나오면
함수 정의만 복사해서 제출하면 됩니다.