안녕하세요. 스마트팩토리입니다.
오늘은 사용자 정의 함수에 대해 알아보겠습니다. 배열과 함께 사용자 정의 함수는 c언어를 이해하는데 상당히 중요합니다. 사용자가 원하는 함수를 직접 만드는 것이기 때문에 기존에 우리가 알던 함수와 더불어 우리의 필요에 의해서 만들어서 사용하기 때문에 그 형식을 우선 이해하고 다음에 실질적으로 다양한 함수를 만들어 사용하면 됩니다.
사용자 정의 함수를 이해하기 전에 함수를 잠시 이야기 해 보면
함수는 이미 정해 놓은 프로그램으로 호출에 의해서 실행됩니다. 이는 다시 말해 미리 만들어 놓아야 하는 프로그램을 의미합니다. 이는 우리가 입력을 하면 그 함수에 의해서 자동으로 값이 나오게 실행해 주는 것과 같습니다.
수학적으로 함수를 보면 y=f(x)에서 x란 값을 넣으면 함수에 의해서 y 값이 나오는 것과 같습니다. 이는 우리가 함수를 미리 만들어 놓아서 그에 대해서 입력이 들어가면 출력을 하는 것과 같습니다.
다시 사용자 함수로 돌아와서 사용자 정의 함수란 사용자가 미리 정의해서 놓은 것을 main ()함수에서 불러서 호출하여 우리가 원하는 값을 출력하는 것입니다. 다시 말해 사용자 정의 함수는 main() 함수 앞에 작성되어야 합니다.
함수는 크게 2가지로 이미 정의된 함수(Predefined function) 와 사용자가 정의해서 사용하는 함수(User defined function)가 있습니다. 파이썬에서는 그래서 def 를 넣으면 사용자 정의 함수가 되기는 합니다.
물론 C언어에서는 다르기는 하지만 말이지요.
함수의 구조를 이해하는 것이 합니다. 이는 직접 코딩을 통해서 숙지하고 반복하는 것이 더 효율적입니다.
위 코딩을 잠시 보면
프로그램 진행 순서를 아는게 중요합니다. 일반적으로 #include<stdio.h>을 먼저 적고 c 언어 표준 입출력에 해당하는 헤더 파일을 통해서 시작을 알려줍니다. 그럼 컴퓨터는 c언어가 입출력된다는 것을 알게 그럼 이후에 입력되는 함수들의 의 순서에 맞게 실행을 하게 됩니다.
사용자 정의 함수가 먼저 나왔다는 것은 이는 필요에 의해서 만들어 졌다고 생각할 수 있습니다. 그리고 이후에
void main( )함수가 나옵니다. c언어의 시작은 앞에 있다고 먼저 실행되는 것이 아니라 main()함수가 먼저 실행됩니다.
그래서 위 코드를 실행하면
두수를 입력하라는 문구가 먼저 나타납니다. (1)
이후에 scanf 의 의해서 두 수를 입력 받게됩니다.
25 와 36을 입력하겠습니다.
그결과 25+36= 61을 출력합니다.
이는 두 수 즉 25와 36을 입력받고 (4) 번을 진행하려고 보니 pl(x,y)가 있어서 (3) 번의 사용자 정의 함수로 두 값을 가져가서 return 값 즉 두 수를 더한 값 즉 61을 가지고 와서 출력을 하게 됩니다.
지금은 단순하게 덧셈이어서 구지 사용자 정의 함수를 부를 이유가 없다 하겠지만 복잡한 수식이나 연산을 할때 미리 사용자 정의 함수를 만들어 놓고 함수만 호출하면 그 값이 나오니 말그대로 사용자 정의함수를 만들어 놓는 것이 중요하게 하겠습니다.
이는 객체 지향 언어로 가면 클래스 개념으로 이해할 수 있습니다. 그래서 c언어는 결과적으로 함수로 구성된 언어라고 할 수 있습닏.
#include<stdio.h>
int pl(int a, int b) {
int temp;
temp = a + b;
return(temp);
}
void main() {
int x, y;
puts("두수를 입력하세요");
scanf_s("%d%d", &x, &y);
printf("%d + %d=%d\n", x, y, pl(x, y));
}
사용자 정의 함수의 변수를 정할때는 그 연산의 의미에 부함 할수 있는 변수를 정하여 변수를 통해 연산을 유추할 수있도록 정하면 편리합니다. 그래서 대부분 프로그램밍 언어의 변수를 보면 변수에서 그 의미가 담겨 있는 경우가 많습니다.
저도 pl은 plus를 의미하는것이었습니다.
사용자 정의 함수로 더하기와 함께 곱하기도 넣어 보았습니다.
#include<stdio.h>
int pl(int a, int b) {
int temp;
temp = a + b;
return(temp);
}
int Multi(int a, int b) {
int temp;
temp = a*b;
return(temp);
}
void main() {
int x, y;
puts("두수를 입력하세요");
scanf_s("%d%d", &x, &y);
printf("%d + %d=%d\n", x, y, pl(x, y));
printf("%d * %d=%d\n", x, y, Multi(x, y));
}
진행 순서는 main() 함수에서 진행을 하면서 사용자함수가 있는 경우는 상황에 맞게 왔다 갔다하는 것을 알 수 있습니다.
'C 언어' 카테고리의 다른 글
c 언어[019] 배열 Array , 인덱스, 배열 주소값 , 배열크기, sizeof(arr) (0) | 2021.09.21 |
---|---|
c 언어[018] 비트연산자(1) <<,>>쉬프트연산자, &(and), |(or) (1) | 2021.02.24 |
c언어 실습 <a002> 이중 for 문을 이용한 다양한 모양 출력하기 (x모양) (0) | 2020.10.12 |
c 언어[016] 이중for문 2단부터 9단까지 출력하는 프로그램 (0) | 2020.10.11 |
c 언어[015] for반복문 if문, break, 1부터 100까지 합을 구하면서 중간에 합이 1000이 넘어갈 때의 값을 알아보는 프로그램, continue,1부터 100까지 홀수의 합 (0) | 2020.10.11 |
댓글