관리 메뉴

cyphen156

함수에 대한 대략적인 설명 방법 생각해보기 본문

잡생각 정리글

함수에 대한 대략적인 설명 방법 생각해보기

cyphen156 2025. 3. 6. 16:35

※ 뻘소리 정리글입니다. 이렇게 생각할 수도 있구나 정도로만 받아들여주세요 ※

수업중에 함수를 설명해보라는 요구를 받았다. 

맨처음 스스로에게 질문을 던져봤다.

함수란 뭘까?
 
의식의 흐름 대로 정리하면 다음과 같이 생각해보았다.
 
나는 택배상자라고 생각한다.
어떤 택배사에 주문을 넣는다 주문할 상품들을 넣고서 그러면 택배사는 이것저것 뭐 내부적으로 어덯게 하는지는 고객인 나는 알필요가 없고 결과로 택배 상자를 받아서 내가 주문한 상품을 전달받기만 하면 된다. 이 과정에서 주문자인 나는 기대한 주문 상품이라는 결과가 항상 보장되어야 한다 그래서 택배사는 맨 택배 상자에다가 태그를 붙여서 상자를 개봉했을 때 나올 상품을 적어놓는다. 이것을 반환형이라 볼 수 있다.
 

ChatGPT의 말:

비유가 정말 좋네요! 함수의 개념을 택배 시스템에 빗댄 게 직관적이고 이해하기 쉽습니다.
조금 확장해 보면 이렇게도 볼 수 있을 것 같아요.


📦 함수 = 택배 상자 시스템

1️⃣ 함수를 호출하는 것 = 택배 주문

  • 우리는 함수(택배사)에게 필요한 작업을 요청한다.
  • 예를 들어, int Add(int a, int b) 라는 함수가 있다면, Add(3, 5) 라고 호출하는 것은 3과 5를 더해주세요! 라고 주문하는 것.

2️⃣ 매개변수 = 주문할 상품

  • 택배사에 상품을 주문하듯이, 함수에도 필요한 값(매개변수)을 전달한다.
  • Add(3, 5)를 호출하면, 3과 5라는 상품을 택배 상자에 담는 것과 같다.

3️⃣ 함수 내부 = 택배사의 내부 처리 과정

  • 택배사가 내부적으로 물류창고에서 물건을 찾아 포장하는 것처럼, 함수는 매개변수를 처리하여 결과를 만든다.
  • 이 과정은 고객(함수를 호출한 쪽) 입장에서 볼 필요가 없다.

4️⃣ 반환형 = 택배 상자 겉에 붙어있는 태그

  • 택배 상자는 어떤 물건이 들어 있는지 표시가 되어 있어야 한다.
  • 함수도 반환형을 명시하여, 어떤 결과가 나올지 보장해야 한다.
  • 예를 들어, int Add(int a, int b)는 int를 반환한다고 명시되어 있으므로, 숫자가 반드시 나올 것이라고 예상할 수 있다.

5️⃣ 반환값 = 택배 상자를 열었을 때 실제 들어있는 물건

  • 택배 상자를 받아 열었을 때 안에 있는 상품이 바로 반환값이다.
  • Add(3, 5)를 호출하면, 내부적으로 계산된 8이라는 값이 반환된다.
  • 즉, 고객(함수 호출자)은 8이라는 택배 상품을 받아서 사용할 수 있다.

✅ 택배 시스템(함수)의 중요한 특징

  1. 주문한 것과 다른 상품이 오면 안 된다 → 함수의 반환형이 정확해야 한다.
    • int Add(int a, int b)는 int를 반환해야지, 갑자기 string이나 float을 반환하면 안 된다.
  2. 고객(사용자)은 내부 프로세스를 알 필요 없다 → 캡슐화, 추상화
    • 우리는 택배사의 내부 물류 시스템을 몰라도 주문하면 상품을 받을 수 있듯이, 함수가 내부적으로 어떻게 동작하는지는 몰라도 결과만 얻으면 된다.
  3. 입력(매개변수)에 따라 출력(반환값)이 결정된다 → 함수의 예측 가능성
    • 동일한 주문을 하면 동일한 상품을 받아야 한다.
    • 즉, Add(3, 5)를 호출하면 언제나 8이 나와야 한다.

이렇게 생각하면, 함수가 입력(매개변수)을 받아서 처리하고, 결과(반환값)를 돌려주는 하나의 독립적인 시스템이라는 점이 더 명확해지네요. 😊