백발 청년 햄버거 메뉴

목차

    안녕하세요. 백발청년 입니다. 오늘도 역시나 동국대학교 홍정모 교수님의 명강의, 따배씨++의 강의노트를 포스팅합니다. 오늘의 주제는 함수와의 첫만남 입니다.

    포스팅에 앞서 지난 강의들을 살펴보겠습니다.

     

    7부 : 입출력 스트림과의 첫 만남 https://whiteheadyouth.tistory.com/211

    6부 : 변수와의 첫 만남 https://whiteheadyouth.tistory.com/208

    5부 : 주석을 잘 다는 방법 https://whiteheadyouth.tistory.com/183

    4부 : 프로그램의 구조 https://whiteheadyouth.tistory.com/181

    3부 : 코딩하다 막혔을 때는? https://whiteheadyouth.tistory.com/170

    2부 : 솔루션, 프로젝트 관리 https://whiteheadyouth.tistory.com/161

    1부 : 통합개발환경의 기본적인 사용법 - 윈도우 비주얼 스튜디오 https://whiteheadyouth.tistory.com/155

    0부 : 홍정모 교수님의 따배씨++ 무료로 인강 듣는 방법 https://whiteheadyouth.tistory.com/89 

     

     

    동국대학교 컴퓨터공학과 홍정모 교수님의 명강의. 따라하며 배우는 C++, 따배씨++

     

     

    함수 Function
    리턴값 return values
    매개변수 parameters
    인수 arguments

    복잡한 연산일경우 오타가 날 확률도 있고, 덧셈을 곱셈으로 수정하려고 할 때 하나 하나 다 수정하려면 번거롭기도 합니다.
    여기서 한가지 패턴이 여러번 나타난다면 함수로 분리해서 편하게 사용할 수 있습니다.

     

     

    위에 있는 코드에서 패턴은 어떤건가요? 숫자를 두개 더해서 하나의 더해진 결과를 출력하는 것 입니다.


     

    함수라는건 처음에 출력값의 데이터형을 입력해주어야 합니다.

    리턴을 할 때는 결과를 출력 하겠다고 return sum; 을 입력해주었습니다.

    물론 iostream으로 cout을 했기 때문에 출력이 되지만요.

     int addTwoNumbers와 int sum 의 타입이 같아야 합니다. 둘다 integer, 정수형입니다.

     

     

    아까 분석했던 패턴은 숫자 두개를 더해서 하나의 더해진 결과를 출력하는 것 입니다.

    그래서 int addTwoNumbers 라는 함수를 지정해주었고, 그 함수에는 int num_a와 int num_b라는 변수값이 들어갑니다. num_a와 num_b는 각각 정수입니다.

    int sum 에는 num_a + num_b의 값이 들어가네요. 

    그래서 cout << addTwoNumbers(1,2) << endl; 을 입력했을 때, 1+2의 값이 cout에 들어가서 출력이 되는 구조 입니다.

     

     

    그렇다면 나머지의 값도 모두 addTwonumbers로 바꾸어 볼까요?

    3+4를 (3,4)로, 8+13을 (8,13)으로 변경해줍니다. 결과 값은 예상대로 제대로 출력이 됩니다.



    자, 그렇다면 더하기 였던 함수를 곱하기로 바꾸려고 한다면 어떻게 해야 할까요?

    int sum 의 값을 num_a * num_b의 값으로 바꿔줍니다.

     

    그럼 1*2, 3*4, 8*13의 값이 출력 되겠습니다.

     

     

    명세기 곱하기 인데 이름은 add라니요. 이름을 바꿔보도록 하겠습니다.

    addTwoNumbers를 블록 지정해서 오른쪽 클릭, 이름바꾸기를 눌러 addTwoNumbers를 multiplyTwoNumbers로 변경해줍니다.

     

    그럼 위와 같이 함수의 이름이 변경됩니다.

     메모리 내부에서 어떻게 처리가 되는 것인지 살펴볼 것인데요. 행 번호에 마우스 왼쪽 클릭을 하면 위와 같이 빨간 동그라미가 생깁니다.

     

      로컬 windows 디버거를 누르면 디버거가 실행됩니다.

     빨간색 동그라미 친 버튼을 누르면 한단계씩 로드하며 결과를 산출 해 냅니다.


    cpu 메모리 구조로 보면, 함수를 실행시켜야 되는 때가 오면 함수도 메모리에 저장이 되어 있는데, 메모리에 있는 함수를 로드해서 가져오는것입니다.

    int multiplyTwoNumbers(int num_a, int num_b) 에서 num a b는 매개변수라고 불립니다.
    multiplyTwoNumbers(1,2) -> 1, 2 는 인수 

     

     

    이번에는 Hello World!를 출력해볼 건데요.

     

     

    printHelloworld라는 함수는 cout << "Hello World!" << endl; 의 코드를 담고 있습니다.

    그래서 main 함수 내에서 printHelloworld();를 실행시키면 Hello World!가 출력됩니다.

     

    함수 앞 void일 경우 리턴해줄 값이 없다는 것이기 때문에 return;을 쳐주어도 됩니다.
    리턴 밑에 있는 코드는 어떠한 경우에도 실행되지 않습니다. 위의 콘솔 값처럼 말이죠.
    (경우에 따라서는 if문 등으로 리턴을 실행하지 않는 경우도 있습니다. 차차 배워나가겠죠.)

     


     

    함수는 재사용이 가능합니다. 또한 함수가 함수를 호출 가능합니다. main() 이라는 함수가 addTwonumbers를 호출하는것 처럼요.
    그러나 함수 안에서 함수를 정의하지는 못합니다.

    이를테면 int addTwoNumbers(int_a, int_b) 의 안에 int multiplyTwonumbers(int_a, int_b) 같은 문법은 사용하지 못한다는 것입니다. 

     


    연습문제 
    숫자 두개를 입력받아서 더하기를 출력해보는 프로그램을 만들어보세요.

     

    이렇게 숙제를 완료하고... 나서 봤더니 밑에 숙제가 또???

     

     

    만들어낸 프로그램을 함수로 쪼개서 숫자 두개를 여러번 입력을 받고 더하기를 여러번 출력하는 프로그램을 만들어보세요.

     

    위에껀 다음에.;; 어우 왠 숙제가 또있어!! ㅎㅎ

    근데 숫자 두개를 여러번 입력을 받고 더하기를 여러번 출력하는건 cin이랑 cout을 상황에 맞춰 여러번 쓰면 끝날거 같은데,

    맞나요? 교수님???

     

     

     

     

     


    댓글
    위쪽 화살표
    도움이 되었다면 공감(하트)과 댓글을 부탁드려요.
    //스크립트는 script로 수정해주세요.//