C <12>. 함수

오늘의 주제

  • 함수의 개념
  • 함수 만들고 사용하기

열 두번째 시간입니다.^^

지난 번에는 포인터라는 녀석에 대해 알아보았습니다.
사실 포인터라는 녀석과 함수는 절친사이랍니다~
모양이나 역할이 비슷한것이 아니라, 함수 때문에 포인터가 유용하다고나 할까요?ㅎㅎ
뭐 여튼 포인터든 함수든 중요합니다~

자 거두절미하고 시작합니다!
고고씽!!

함수?

함수란 무엇일까요?
함수에 대해 간략하게 이야기 해보자면,
함수라는 녀석들은 무엇인가를 수행하는 역할을 합니다.
쉽게 설명을 해서 전자레인지는 우리가 차가운 음식을 집어넣고 버튼을 누르면 데워서 뜨거운 음식으로 만들어 줍니다. 즉, 찬음식을 데워서 뜨거운 음식을 만드는 일련의 과정을 수행하는 역할을 하지요.
함수도 우리가 메서드에게 일할거리를 던져주면 함수의 고유한 역할들을 수행합니다.
감이 오시나요?ㅎ
함수라는 것은 인자값과 반환값이라는 것이 있습니다.
함수의 원형 하나를 선언해 본다고 생각해 봅시다.
자 이렇게 선언을 하는 것입니다.

int myFunction(int a, float b);
`

처음 쓰여있는 자료형은 이 함수의 반환값(리턴값)의 자료형을 의미합니다. 이 함수의 반환값은 int 자료형을 가지고 있군요. 자세한 설명은 아래에서 하겠습니다.
그 다음에 오는 것은 이 함수의 이름입니다. 이 함수의 이름은 myFunction 입니다. 정확히 말하자면 myFunction(int, float) 입니다.
그리고 괄호 안에 있는 녀석들은 이 함수에 들어가는 인자의 자료형과 이름을 뜻합니다. int자료형을 갖는 afloat자료형을 갖는 b라는 이름을 가진 두 개의 인자가 전달되어 들어오네요. 이 역시 자세한 설명은 요 아래.
자, 그럼 반환값과 인자가 무엇이냐?
우리가 밥을 먹는다고 생각해 봅시다. 밥도 먹고 국도 먹고 반찬도 먹습니다. 이것을 인자라고 생각합니다.
그리고 우리는 뱃속의 여러 장기들에서 이 음식들을 소화하고 분해하고 찌꺼기는 분류해서 대변(똥ㅋㅋㅋㅋㅋㅋㅋㅋㅋ)으로 변환하여 배출합니다.
조금 감이 오시나요?
함수 어떤 특정한 일을 하는 마술상자 같다고 표현합니다.
여러 인자들을 받아들여서 이것을 함수 고유의 특정한 방법을 거치고 가공하여 다시 뱉어냅니다. 이것이 함수의 역할입니다.
그래서 받아들이는 값들을 인자값, 그리고 뱉어내는 값들이 반환값입니다.
하지만, 사람과는 약간 다르게 함수라는 녀석은 먹지 않고도 뱉어낼 수 있고, 먹어도 뱉어내지 않을 수도 있습니다.
인자값이 없는 함수도 있고, 리턴값이 없는 함수도 있다는 말이죠..^^
또, 먹지도 뱉지도 않는 함수들도 있습니다.
먹는게 없는 함수는 인자없이 이렇게 () 괄호만 있구요, 뱉는게 없는 함수는 반환값 자료형의 종류가 void로 표기되어 있습니다.
이런 저런 함수들을 보다보면 자연스레 알게되실거예요~
자, 그럼 본격적으로 함수 구현을 해 봅시다.
그 전에.........
Xcode 말고 다른 개발툴로 한 번 진행해 보겠습니다.
MS사의 Visual Studio 2008입니다.

제가 회사에서 Xcode말고 Visual Studio 2008을 쓰게 되어서 그런건 절대 아닙니다. 네.....ㅋㅋㅋㅋㅋㅋㅋㅋ
일단 이녀석에는 솔루션이라는 개념과 프로젝트라는 개념이 있습니다.
프로젝트는 하나의 프로그램이라고 생각하시면 되고, 솔루션은 그 프로그램들을 관리하기 쉽게 관련 프로그램들을 모아 볼 수 있는 녀석이라고 생각하면 쉽습니다.
더 쉽게 말하자면 하나의 프로그램은 책이고, 솔루션은 책꽂이 입니다..ㅋㅋㅋ

함수 사용해 보기

자, 그럼 이제 솔루션과 함께 프로젝트를 생성해 봅니다!
File - New - Project를 선택합니다.
단축키는 친절하게 Ctrl + Shift + N 이라고 되어있네요~

자 Project types는 Visual C++, Templates는 Win32 Console Application으로 지정하고 
프로젝트 이름은 FuncExample, 솔루션 이름은 WithYagom으로 해줬습니다. 다른 옵션사항은 아래 그림과 같이 해주시면 되구요, OK누릅니다~

그럼 다음을 눌러주시구요~

여기서 Console application, Empty project로 지정해 주시고 Finish!!

자, 그럼 빈 프로젝트가 생성이 되었습니다.
그럼 이제 헤더파일을 만들어 봅시다.
Header Files에서 오른쪽 버튼 클릭! 
Add - New Item을 클릭.

Categories는 Code, Templates는 Header File(.h)입니다.
이름을 이쁘게 FuncExample.h로 해 주시고 Add

이제는 구현소스파일(.c)를 만들어 줍시다. 마찬가지로 Source Files에서 오른쪽 버튼 클릭 
Add - New Item...

C++ File(,cpp)를 선택하시고, 이름을 써줄때 확장자를 꼭 c로 써주세요~ 
안그러면 기본적으로 C++파일로 생성이 되어버립니다.

자, 그렇게 만들고 나서 컴파일을 한 번 해봅니다.
Build - Compile 클릭!
또는 컨트롤 + F7

에러가 안뜨죠? 당연힠ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
아무것도 안적었는데 ㅋㅋㅋ 에러가 안나죠~
이제 C의 기본인 메인 함수를 만들어 봅시다~
일단 헤더파일(FuncExample.h)에서 아래와 같이 코드를 작성합니다.
우리는 지금 main함수의 원형을 헤더파일에 쓰고 있는거예요~

그리고 소스파일(FuncExample.c)로 와서 아래와 같이 main함수를 구현해줍니다.

다시 컴파일을 하고 빌드를 해 봅시다~
빌드의 단축키는 F7

에러가 난다면 소스를 잘못 입력하신거니깐 찬찬히 다시 입력해 봅시다~
빌드를 성공했으면 이제 실행시켜 봅니다~
Debug - Start Debugging
또는 F5

컴퓨터 성능이 좋은 분이라면 아마 콘솔창(까만 도스창같은녀석)이 순식간에 떴다가 사라지실 거예요~
정상입니다~ㅋㅋㅋ
그럼 이제 myFirstFunction이라는 함수를 만들어 봅니다.
그리고 메인함수 안에서 그 함수를 세 번 호출해 줍니다.
아래 getchar()는 아직 무슨뜻인지 신경쓰지 않으셔도 됩니다~

자, F5키를 눌러서 실행을 시켜보면 이런 창이 뜨는데 디버깅 하기 전에 빌드하겠냐고 물어보는 거예요~ 당연히 해야죠 ㅎㅎ

제대로 잘 실행이 되었네요~
스페이스바 빼고 아무키나 누르시면 종료됩니다~

이렇게 간단한 함수 하나 순식간에 만들어 보았는데요~
이번엔 함수를 여러개 만들어 봅시다~
아래와 같이 코드를 작성해 주시고~ 실행을 시켜봅시다!
제가 주석을 달아놓지 않아서 처음엔 좀 헷갈리실 수도 있겠지만, 위에 함수에 대한 설명을 보면서 이해하시면 될거예요~

짜잔~ 이런 결과화면이 출력이 되네요~^^

어떠셨나요?
함수에 대해 조금 감이 오시나요?
조금 더 설명을 하고 싶기도 하지만...
지금 너무 졸려요 ㅠㅠ
궁금한 점이나 잘못된 점이 있다면 바로바로 댓글 남겨주세요~
물론 응원의 글이라면 더더욱 좋구요..ㅋㅋㅋㅋㅋㅋㅋ
댓글과 추천과 사랑이 저에게는 아주 큰 힘이 된답니다!!ㅋㅋ
그럼 다음에 또 봐요~^^

by yagom


p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기   

댓글 남기기

Close