오늘은 프로그래밍 언어의 함수를 공부하자.
함수가 무엇인지 알아보고, 함수를 생성하는 방법과 예제 코드를 분석해보자.
학생 때 배웠던 함수와 프로그래밍 언어의 함수는 다를 수 있지만, 그 때 함수를 배웠다면 오늘 배울 함수를 이해하는 데에도 도움이 될 것이다.
함수란?
함수는 어떤 기능에 이름을 붙여 코드 작성 없이 불러올 수 있도록 하는 것이다.
물론 그 기능 구현을 위해서는 코드를 작성해야 하지만, 같은 코드를 여러 번 작성하지 않도록 하기 위해 사용하는 것이 함수이다.
우리가 학생 때 f(x)에 x를 넣으면 y라는 결과가 나온다고 배웠다.
마찬가지로 프로그래밍 언어의 함수도 x 값을 넣었을 때 y값을 반환한다고 이야기한다.
f(x)라는 함수에 이름을 붙이고, 이름으로 함수를 불러서 사용하게 하는 것이다.
함수 생성하기
함수 생성을 위해 간략한 틀을 보자.
반환형 함수명(데이터타입 인자)
{
실행 할 코드;
return 반환값;
}
이 틀에 맞춰 함수를 작성하고, 반환형, 인자, 반환값 등에 대한 개념을 학습하자.
int plus(int a, int b) // 반환형 int, 함수명 plus (인자의 데이터 타입 int, 인자명 a와 b)
{
int result = a + b; // a와 b의 합을 정수형 변수 result에 대입
return result; // 정수형 변수 result를 반환 (a + b 값을 반환)
}
인자로 정수 2개를 받아 합을 구하는 함수이다.
함수명은 plus이고, 인자로 정수 a와 b를 받는다.
그리고 a와 b의 합을 result에 대입하는데, 이 때 정수의 합을 대입하므로 변수 result 또한 정수형으로 생성한다.
이 값을 반환하기 위해 return이라는 코드를 작성해 result를 반환한다.
여기서 정수값을 반환하기 위해 반환형을 int로 생성한 것이다.
그럼, 이제 함수 호출 방법을 알아보자.
cout << plus(1, 2) << endl;
함수 호출은 plus(1, 2) 부분이다.
cout과 endl은 각각 데이터를 출력하고 다음 줄로 넘어가기 위한 코드이다.
plus 함수에 인자 1과 2를 넘겨 합을 구하고, 그 값을 반환한다.
반환된 값을 출력하기 위해 cout으로 위와 같이 출력하도록 한 것이다.
반환형
함수의 종료는 크게 두 가지 상황에 할수 있다.
첫 번째는 함수에 작성된 코드가 모두 실행되어 더 이상 실행할 코드가 없을 때, 두 번째는 return 코드가 실행될 때이다.
첫 번째 경우는 실행 할 코드가 모두 실행되어 다음 일을 처리해야 하므로 자연히 종료되는 것이고, 두 번째는 데이터를 반환하며 종료하는 경우이다.
return 코드는 그 자리에서 함수를 종료시키고 값을 반환하는 역할을 한다.
이 때 값을 반환하기 위해서는 반환할 값의 데이터 타입을 알아야 하는데, 이것을 미리 정하는 것이 바로 '반환형' 설정이다.
위에서 함수 생성 시 가장 먼저 작성한 것이 'int'라는 데이터 타입이다.
함수 앞에 데이터 타입을 작성하면 '반환형'을 설정한 것이 되며, 함수의 종료 시점에 반환 할 데이터 또한 이 데이터 타입과 일치해야 한다.
int square(int num)
{
return num*num;
}
어떤 수의 제곱을 구해주는 함수 square를 생성했다.
인자로 정수를 num에 대입하면 제곱을 return한다.
num의 곱은 정수의 곱이므로 정수가 되기 때문에 반환형은 정수형인 int로 설정한 것이다.
cout << square(3) << endl;
square 함수에 3을 전달해 3*3을 반환한다.
결과는 9이므로 cout으로 square(3)을 출력하면 아래와 같은 결과를 확인할 수 있다.
9
인자
함수에는 인자가 들어간다.
위에서 제곱을 구하는 함수에 3을 넣었듯이, 함수 내부에서 사용해야 할 값이 있으면 이것을 '인자'로써 넣는 것이다.
물론 인자가 필요없는 함수도 있다.
void enterMessage()
{
cout << "경영학과 25학번 단톡방에 오신 것을 환영합니다." << endl;
}
경영학과 단톡방에 신입생이 들어올 때마다 방장은 인사를 하기로 했다고 가정하자.
그런데 매번 "경영학과 25학번 단톡방에 오신 것을 환영합니다." 라는 문구를 치기가 귀찮았다.
열명까지는 치겠지만, 그 이상은 자리를 비울 수도 있고 바빠질 수도 있기 때문에 인사가 늦어질 것이다.
그래서 자동으로 인사를 해주는 함수를 구현하기로 했다.
그 함수가 바로 enterMessage()이다.
enterMassage();
신입생이 들어오면 자동으로 enterMessage() 함수가 실행된다.
반환형은 void로 반환할 값이 없음을 의미하므로 return 코드를 없다.
대신 함수를 호출 할 때마다 실행될 코드는 cout으로 작성한 인사문구이다.
함수 실행 결과는 아래와 같다.
경영학과 25학번 단톡방에 오신 것을 환영합니다.
그런데 이번에는 25학번이 아닌 다른 학번 친구들이 들어올 경우를 가정하자.
그럼 매번 25가 아닌 다른 수를 작성해야 한다.
단톡방 기능 중 들어오는 학생의 학번을 얻어 enterMessage 함수에 인자로 주고 이 함수를 호출하는 기능이 구현되어 있다고 가정하자.
그럼 enterMessage 함수는 아래와 같이 바꾸면 좋겠다.
void enterMessage(int class)
{
cout << "경영학과 " << class << "학번 학생을 환영합니다." << endl;
}
학생이 들어왔을 때 얻은 학번 정보를 class에 대입하는 것이다.
enterMessage(20);
경영학과 20학번 학생을 환영합니다.
class에 대입된 20이 함수 내부 코드에 적용되어 위와 같이 출력된다.
이렇게 함수에서 사용해야 하는 값이 매번 다를 때 인자를 활용할 수 있다.
함수 예제 코드
위에서 학습한 내용을 바탕으로 함수를 생성하고 호출해보자.
덧셈 함수 만들기
#include <iostream>
using namespace std;
int plus(int a, int b, int c)
{
return a + b + c;
}
int main()
{
cout << plus(1, 2, 3) << endl;
}
덧셈 함수 plus를 생성하여 cout으로 반환값을 출력했다.
plus의 경우 정수 값 a, b, c의 합을 return하므로 반환형을 정수로 설정한다.
6
실행 결과 1, 2, 3의 합인 6이 출력된다.
등급 구하기
#include <iostream>
using namespace std;
char grade(int score)
{
if(score >= 90)
return 'A';
else if(score >= 80)
return 'B';
else
return 'C';
}
int main()
{
cout << grade(95) << endl;
}
이번에는 점수를 받으면 등급을 반환하는 함수를 구현했다.
grade 함수는 char형을 반환한다.
정수 데이터 score에 학생의 점수를 넣으면 그 값이 90 이상, 80이상, 80미만 일 경우 각각 'A', 'B', 'C'를 반환한다.
등급 데이터가 문자이므로 반환형이 char가 된 것이다.
grade 함수에는 95가 들어갔기 때문에 아래와 같은 결과가 출력된다.
A
오늘은 함수가 무엇인지 알아보고 함수 생성 방법과 예제 코드를 공부해 보았다.
함수에는 반환형, 인자, 반환값 등의 개념이 있다.
오늘 공부한 것을 토대로 함수를 생성하고 호출하는 코드를 작성하면서 위의 개념에 대한 이해도를 향상하면 좋겠다.
'2025 C언어 강의' 카테고리의 다른 글
C++ for 반복문을 공부하자 (1) | 2025.01.13 |
---|---|
C++ 조건문 if, else if, else를 공부하자! (1) | 2025.01.12 |
C++ 배열을 공부하자 (배열의 개념, 문자열 저장하기) (2) | 2025.01.11 |
C++ 변수를 공부하자 (int, char, float 데이터 타입) (2) | 2025.01.09 |
C++ 메인 함수를 공부하자 (int main, void main, return) (6) | 2025.01.05 |