본문 바로가기

Theory/Lecture

[C/C++] 함수 Function 下


본 자료는 국립 창원대학교 메카트로닉스 공학부 학생을 대상으로 한 컴퓨터 언어 응용 수업 자료입니다. 본 자료는 수업의 교재인 (핵심요약판) C++로 시작하는 객체지향 프로그래밍 (Y. Daniel Liang 저, 권기형 / 김응성 공역) 의 내용을 재구성한 것으로 수업보조 자료 이외의 목적이 없음을 알립니다.


다른 프로그램에서 함수의 재사용
이미 작성된 함수를 다른 프로그램에서 불러올수 있다면 여러가지로 편할 것입니다. 그 방법중 하나를 이야기해보겠습니다.

 
위에 보면 8번 9번행에서 isEven이라는 함수를 사용하고 있습니다. 짝수인지 아닌지를 확인하는 역활을 하는 함수인데요. 위에 2번행에 보면 MyLib.h라는 (확장명이 h이면 header화일이라는 뜻입니다.) 화일이 include되어있는것을 확인할 수 있습니다.

 
그 내용은 위와 같은데요. 짝수인지 아닌지만 확인 할 것이기 때문에 bool 데이터 유형을 return하도록 되어있네요.  위와 같이 하면 다른 프로그램에서도 isEven을 include시켜서용해주면 됩니다. 그러면 Dev C++에서는 어떻게 헤더화일을 추가하는지 보겠습니다.


프로젝트 관리창에서 프로젝트이름에서 마우스 오른쪽 버튼을 누르면 나타나는 팝업창에서 유닛추가를 선택합니다. 그러면 직접 화일을 작성할 수 있구요. 프로젝트에 추가를 하면 기존에 작성된 화일을 추가할 수 있습니다.


임의의 문자 생성
rand()라는 함수가 있는데, 임임의 수를 만들어주는 함수입니다. 이를 이용해서 임의의 문자를 만들 수 있는데요.

 
위 첫 줄은 0-9사이의 숫자를 생성하는 것입니다. (10으로 나눈 나머지만 취하니까) 두번째 줄은 50부터 99사이의 숫자를 랜덤하게 생성하는 것입니다. 이렇게 생각하면

 
어떤 범위 a부터 b까지의 숫자를 랜덤하게 생성하고 싶을 때는 위와같이 사용하면 되겠네요. 


아,.. rand()를 사용할때는 cstdlib을 꼭 include 시켜주시구요.
#include <cstdlib>
using namespace std;

// Generate a random character between ch1 and ch2
char getRandomCharacter(char ch1, char ch2)
{
  return static_cast<char>(ch1 + std::rand() % (ch2 - ch1 + 1));
}

// Generate a random lowercase letter
char getRandomLowerCaseLetter()
{
  return getRandomCharacter('a', 'z');
}

// Generate a random uppercase letter
char getRandomUpperCaseLetter()
{
  return getRandomCharacter('A', 'Z');
}

// Generate a random digit character
char getRandomDigitCharacter()
{
  return getRandomCharacter('0', '9');
}

// Generate a random character
char getRandomCharacter()
{
  return getRandomCharacter(0, 127);
}

위 예제는 그렇게 만들어진 것을 함수로 한번 꾸며본것입니다. 살짝 분석해보세요^^

변수의 범위


어떤 함수의 내부에서 사용한 변수는 그 함수의 사용이 종료되면 없어진다는 것을 알고있습니다. for문도 마찬가지 인데요. for 문 안에서 사용한 변수 i와 j의 사용범위를 위에서 표시했습니다.

 
그러므로 위의 그림처럼 연달아 사용한 for문이 같은 변수 i를 가져도 문제가 없는 것이지요. 그러나

 
위에서처럼 중북사용은 피해야합니다.  

정적 지역 변수
위에서 이야기했드시... 함수의 사용과 함께 소멸되는 함수내의 변수를 지역변수라고 하는 데요.

 
그와 같은 상황을 꼭 피하고 싶다면 정적지역변수(static)를 사용하면 됩니다.

 
그 실행결과를 보면 x의 저장된 값이 소멸되지 않고 업데이트 되었다는 것을 확인할 수 있습니다. 


마지막으로 함수는

 
위 그림처럼 직접사용자에게 그 내용은 그냥 BlackBox처럼 보이게 하겠다는 것인데요. 이처럼 함수를 사용한다는 것은

 
위와 같은 장점을 가집니다.

마지막으로 많이 쓰는 math함수를 열거합니다.



참고자료

[2009] 05-2.pdf



반응형