함수란 무엇인가요?
함수는 쉽게 말해 코드 조각을 묶어서 이름을 붙여놓은 것이라고 할 수 있습니다. 여러분이 자주 하는 일을 미리 만들어 두고 필요할 때마다 호출해서 쓰는 것과 같아요. 예를 들어, 여러분이 매일 아침마다 "일어나기 → 씻기 → 아침 먹기 → 출근 준비"라는 루틴을 반복한다고 해볼게요. 이 루틴을 함수로 만든다면 이렇게 표현할 수 있겠죠:
void 아침준비() {
일어나기();
씻기();
아침먹기();
출근준비();
}
위와 같이 여러 작업을 묶어 하나의 이름(함수)으로 만든 것이 함수입니다.
왜 함수를 사용하나요?
함수를 쓰는 이유는 간단합니다:
- 코드의 재사용성: 같은 코드를 반복해서 작성할 필요가 없어요.
- 코드의 가독성: 어떤 작업을 하는지 한눈에 이해할 수 있어요.
- 유지보수의 편리함: 한 번만 수정하면 함수가 사용된 모든 곳에 자동으로 적용돼요.
함수의 구조
C++에서 함수를 만드는 방법은 크게 두 가지로 나눌 수 있어요:
- 함수 선언(함수 이름과 모양 정의)
- 함수 구현(실제로 무슨 일을 할지 작성)
반환형 함수이름(매개변수) {
함수가 실행할 코드;
return 반환값; // 반환값이 있을 경우
}
- 하나씩 뜯어볼게요:
- 반환형: 함수가 실행한 결과로 무엇을 돌려줄지 나타냅니다. (예: 숫자, 문자열, 아무것도 없음)
- 함수 이름: 함수에 붙이는 이름입니다.
- 매개변수: 함수가 처리할 데이터를 전달받는 공간입니다.
- return: 반환할 값을 지정합니다.
예시로 이해해보기: 더하기 계산 함수 - "두 숫자를 더해서 결과를 돌려주는 함수"를 만들어볼게요.
#include <iostream>
using namespace std;
// 함수 선언
int 더하기(int a, int b)
{
return a + b; // 두 숫자를 더한 결과를 반환
}
int main()
{
int x = 5, y = 3;
int 결과 = 더하기(x, y); // 함수 호출
cout << "두 숫자의 합은: " << 결과 << endl;
return 0;
}
두 숫자의 합은: 8
함수의 실무 활용: 캐릭터 체력 관리
게임에서는 캐릭터의 체력을 계산하는 일이 아주 흔해요. 함수를 사용해서 캐릭터가 공격받았을 때 체력을 줄이는 코드를 만들어볼까요?
#include <iostream>
using namespace std;
// 체력을 계산하는 함수
int 체력계산(int 현재체력, int 공격력) {
int 남은체력 = 현재체력 - 공격력;
if (남은체력 < 0) {
남은체력 = 0; // 체력은 0 이하로 떨어지지 않도록 처리
}
return 남은체력;
}
int main() {
int 캐릭터체력 = 100; // 캐릭터의 초기 체력
int 공격력 = 20; // 적의 공격력
cout << "공격받기 전 체력: " << 캐릭터체력 << endl;
// 함수를 호출해 체력을 계산
캐릭터체력 = 체력계산(캐릭터체력, 공격력);
cout << "공격받은 후 체력: " << 캐릭터체력 << endl;
return 0;
}
결과
공격받기 전 체력: 100
공격받은 후 체력: 80
이 코드에서는 다음과 같은 점이 실무적으로 유용합니다:
- 체력 계산의 로직을 함수로 분리했기 때문에 코드가 깔끔해집니다.
- 공격력과 현재 체력만 입력하면 체력을 계산할 수 있어 다양한 캐릭터에 쉽게 적용할 수 있습니다.
함수를 잘 쓰기 위한 팁
- 함수 이름은 어떤 일을 하는지 명확하게 짓는 것이 중요합니다. (예: 체력계산은 "체력을 계산한다"는 의미가 분명하죠.)
- 한 함수는 하나의 역할만 하도록 작성하세요. (예: 체력 계산 함수는 체력만 계산해야지, 동시에 공격력까지 바꾸지 않습니다.)
- 함수의 결과를 예측 가능하게 만드세요. 호출할 때마다 다른 결과가 나오면 안 됩니다!
이제 여러분도 함수를 사용해서 코드를 더 깔끔하고 효율적으로 작성할 수 있겠죠? 함수를 잘 활용하면 여러분의 프로그램이 훨씬 더 간결하고 이해하기 쉬워질 것입니다. 다음 시간에는 더 심화된 개념을 배워보도록 할게요! 😊
'개발이야기 > C++' 카테고리의 다른 글
C++기초 7강: 클래스의 멤버변수와 함수 (0) | 2025.01.06 |
---|---|
C++기초 6강: 클래스와 객체 (0) | 2024.12.13 |
C++기초 4강: 데이터타입과 기초문법 총정리 (1) | 2024.12.10 |
C++기초: 3강 - 첫번째 프로그램 만들기 (0) | 2024.12.03 |
C++기초: 2강-컴파일과 실행의 과정 이해 (0) | 2024.12.02 |