최근 수정:
프로그램 소스 코드에서 일정한 동작을 수행하는 코드
수학에서 함수의 구성 3가지 (정의역, 공역, 치역)이 있고, 기능적인 구성 요소 3가지 ( x, f(x), y)가 있는것처럼 컴퓨터에서도 다음과 같이 생각하면 된다.
이 때, 수학에서 정의역이 공집합이고 치역이 공집합인 함수가 있는것처럼
컴퓨터에서도 매개변수가 없는 함수, return 시킬 자료가 없는 함수가 있다.
이 때 쓰는 자료형은 void(빈)로, void main(void) 가 흔히 쓰이는 예시이다.
이렇게 선언된 함수는 기능만 하는 함수라고 생각하기 쉬우나, 전역변수를 쓰는 경우를 주의 하자.
[return의 자료형] [함수이름] ([매개변수 자료형] [매개변수 이름]); - 선언.
(main문)
[return의 자료형] [함수이름] ([매개변수 자료형] [매개변수 이름]) {
[함수몸체] - 함수 몸체에는 반복되는 코드가 들어감.
}
+ 함수 안에 함수를 호출 시킬 수 있다 (예시 3)
만약 다음과 같은 코드가 있다고 하자.(예시 참조)
저걸 일일히 하나하나 다 친다고 한다면 CTRL+C/V가 있다 하더라도 매우 생산성 떨어지는 작업일 것이다.
하지만 함수 개념을 적용해서 아래 코드를 적용한다면 b1~b9에 대한 연산을 생략할 수가 있다.(예시 2 참조)
여기에서 더 줄인다면 배열 개념이 들어가므로 이하 생략.
#include < stdio.h >
int main()
{
/*int x,y;*/
/*scanf("%d",&x);*/
/*y = x*x + 3 * x + 4 * 4 * 4;*/
int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
int b1, b2, b3, b4, b5, b6, b7, b8, b9, b10;
scanf("%d %d %d %d %d %d %d %d %d %d",a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
b1 = a1*a1*a1 + 3 * a1 + 4;
b2 = a2*a2*a2 + 3 * a2 + 4;
b3 = a3*a3*a3 + 3 * a3 + 4;
b4 = a4*a4*a4 + 3 * a4 + 4;
b5 = a5*a5*a5 + 3 * a5 + 4;
b6 = a6*a6*a6 + 3 * a6 + 4;
b7 = a7*a7*a7 + 3 * a7 + 4;
b8 = a8*a8*a8 + 3 * a8 + 4;
b9 = a9*a9*a9 + 3 * a9 + 4;
printf("a1을 연산한 결과 %d", b1);
printf("a2을 연산한 결과 %d", b2);
printf("a3을 연산한 결과 %d", b3);
printf("a4을 연산한 결과 %d", b4);
printf("a5을 연산한 결과 %d", b5);
printf("a6을 연산한 결과 %d", b6);
printf("a7을 연산한 결과 %d", b7);
printf("a8을 연산한 결과 %d", b8);
printf("a9을 연산한 결과 %d", b9);
printf("a10을 연산한 결과 %d", b10);
printf("y = %d",y);
}
/* 기본 원형 코드. 타이핑 할것 많고 보기 귀찮음. 코드의 알고리즘이 귀찮아지면 같이 귀찮ㅇ아짐.*/
#include < stdio.h >
int sum(int a);
int main()
{
int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
int b1, b2, b3, b4, b5, b6, b7, b8, b9, b10;
scanf("%d %d %d %d %d %d %d %d %d %d", &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9, &a10);
b1 = sum(a1);
b2 = sum(a2);
b3 = sum(a3);
b4 = sum(a4);
b5 = sum(a5);
b6 = sum(a6);
b7 = sum(a7);
b8 = sum(a8);
b9 = sum(a9);
b10 = sum(a10);
printf("a1을 연산한 결과 %d", b1);
printf("a2을 연산한 결과 %d", b2);
printf("a3을 연산한 결과 %d", b3);
printf("a4을 연산한 결과 %d", b4);
printf("a5을 연산한 결과 %d", b5);
printf("a6을 연산한 결과 %d", b6);
printf("a7을 연산한 결과 %d", b7);
printf("a8을 연산한 결과 %d", b8);
printf("a9을 연산한 결과 %d", b9);
printf("a10을 연산한 결과 %d",b10);
}
int sum(int x)
{
int tmp;
tmp = x*x*x + 3 * x + 4;
return tmp;
}
#include < stdio.h >
int sum(int a);
void print(int a);
int main()
{
int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
/*int b1, b2, b3, b4, b5, b6, b7, b8, b9, b10;*/
scanf("%d %d %d %d %d %d %d %d %d %d", &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9, &a10);
print(a1);
print(a2);
print(a3);
print(a4);
print(a5);
print(a6);
print(a7);
print(a8);
print(a9);
print(a10);
}
int sum(int x)
{
int tmp;
tmp = x*x*x + 3 * x + 4;
return tmp;
}
void print(int a)
{
printf("an을 연산한 결과 %d", sum(a) );
}
/* 함수 내부에 함수를 중첩 시킬 수 있음.*/