C 언어에서 프로시저란?
1. 프로시저의 정의
C 언어에서 "프로시저"는 특정 작업을 수행하는 코드 블록을 나타냅니다.
C 언어에서는 프로시저가 함수로 구현되며, 프로그램의 다양한 작업을 수행하는 데 사용됩니다.
프로시저는 입력값을 받아들이고, 결과를 반환하거나 특정 작업을 수행하는 독립적인 단위입니다.
프로시저는 특정 기능을 수행하는 명령어의 집합으로, 일반적으로 입력값을 받고 결과를 반환합니다.
프로시저는 프로그램의 논리를 모듈화*하여, 각 기능을 독립적으로 관리할 수 있게 해줍니다.
C 언어에서는 프로시저를 사용하여 프로그램을 구조화하고, 코드의 재사용성을 높이며, 가독성을 개선할 수 있습니다.
2. 프로시저의 구성 요소
C 언어에서 프로시저는 다음과 같은 구성 요소로 이루어져 있습니다:
반환형 (Return Type): 프로시저가 반환하는 값의 데이터 타입을 정의합니다. 반환형이 void인 경우, 반환값이 없음을 의미합니다.
함수 이름 (Function Name): 프로시저를 호출할 때 사용하는 이름입니다. 함수 이름은 의미 있게 지어져야 하며, 다른 함수와 중복되지 않아야 합니다.
매개변수* 목록 (Parameter List): 프로시저가 입력으로 받을 값의 목록입니다. 매개변수는 데이터 타입과 함께 정의되며, 여러 개일 수 있습니다. 매개변수가 없는 경우 빈 괄호로 표시합니다.
함수 본문 (Function Body): 프로시저가 수행할 작업을 정의하는 코드 블록입니다. 중괄호 {}로 감싸져 있습니다.
3. 프로시저의 형식
반환형 함수이름(매개변수 타입 매개변수이름, ...) {
// 함수 본문
}
4. 프로시저의 예
#include <stdio.h>
// 두 수를 더하는 함수
int add(int a, int b) {
return a + b; // a와 b를 더한 값을 반환
}
int main() {
int x = 5;
int y = 10;
int result = add(x, y); // add 함수를 호출
printf("결과: %d\n", result);
return 0;
}
위의 예제에서 add라는 함수가 프로시저의 역할을 합니다.
이 함수는 두 개의 정수 매개변수를 받아서 그 합을 반환합니다.
main 함수에서 add 함수를 호출하여 결과를 출력합니다.
5. 프로시저의 호출
프로시저는 다른 프로시저나 함수에서 호출할 수 있습니다.
함수를 호출할 때는 함수 이름과 괄호를 사용하여 매개변수를 전달합니다.
함수 호출은 프로그램의 흐름을 제어하고 특정 작업을 수행할 수 있게 해줍니다.
//여러개의 함수를 호출하는 예제
#include <stdio.h>
int multiply(int a, int b) {
return a * b;
}
int add(int a, int b) {
return a + b;
}
int main() {
int x = 5;
int y = 10;
int sum = add(x, y); // add 함수 호출
int product = multiply(x, y); // multiply 함수 호출
printf("합: %d\n", sum);
printf("곱: %d\n", product);
return 0;
}
6. 프로시저의 장점
코드의 재사용성: 한 번 정의된 프로시저는 여러 번 호출하여 사용할 수 있으므로, 코드의 중복을 줄일 수 있습니다.
모듈화: 프로그램을 여러 개의 독립적인 프로시저로 나눠서 관리할 수 있어, 프로그램의 구조를 명확하게 하고, 각 기능을 독립적으로 개발할 수 있습니다.
가독성 향상: 기능별로 나누어진 프로시저는 코드의 가독성을 높이고, 유지보수를 쉽게 만듭니다. 각 프로시저의 이름이 기능을 명확하게 나타내면 코드 이해가 쉬워집니다.
디버깅 용이: 프로시저 단위로 코드를 작성하면, 각 프로시저를 독립적으로 테스트하고 디버깅할 수 있습니다. 이는 오류를 찾고 수정하는 데 유리합니다.
변수 범위 관리: 프로시저 내부에서 선언된 변수는 해당 프로시저에서만 유효하므로, 다른 프로시저와의 변수 충돌을 방지할 수 있습니다.
7. 프로시저의 지역 변수와 전역 변수
지역 변수: 프로시저 내부에서 선언된 변수로, 해당 프로시저에서만 유효합니다. 프로시저가 종료되면 메모리에서 해제됩니다.
void example() {
int localVar = 10; // 지역 변수
printf("%d\n", localVar);
}
전역 변수: 프로시저 외부에서 선언된 변수로, 프로그램 전체에서 접근할 수 있습니다. 전역 변수는 모든 프로시저에서 사용 가능하지만, 여러 프로시저에서 수정할 경우 예기치 않은 결과를 초래할 수 있습니다.
int globalVar = 20; // 전역 변수
void example() {
printf("%d\n", globalVar); // 전역 변수에 접근
}
8. 프로시저의 반환 값
C 언어에서 프로시저는 값을 반환할 수 있습니다. 반환형이 있는 프로시저는 return 문을 사용하여 값을 반환합니다. 반환형이 void인 경우, 반환값이 없으므로 return 문 없이도 프로시저를 종료할 수 있습니다.
#include <stdio.h>
void greet() {
printf("Hello, World!\n");
}
int main() {
greet(); // greet 함수 호출
return 0;
}
9. 재귀 프로시저
C 언어에서 프로시저는 자기 자신을 호출할 수 있습니다. 이를 재귀(Recursive)라고 하며, 문제를 작은 하위 문제로 나누어 해결할 때 유용합니다. 재귀 프로시저는 종료 조건을 반드시 가져야 하며, 그렇지 않으면 무한 루프에 빠질 수 있습니다.
#include <stdio.h>
int factorial(int n) {
if (n <= 1) {
return 1; // 종료 조건
} else {
return n * factorial(n - 1); // 재귀 호출
}
}
int main() {
int num = 5;
printf("%d! = %d\n", num, factorial(num));
return 0;
}