같은편
홍익대 게임소프트웨어전공의 프로그래밍 단련 공간
같은편
깃허브 주소
https://github.com/madongchan
GitHub 아이콘
  • 분류 전체보기 (85)
    • 게임 프로그래밍 패턴 (2)
    • C# 프로그래밍 (26)
    • C++ 프로그래밍 (32)
      • 함수 (8)
      • 클래스 (22)
    • 알고리즘 공부 (13)
      • 프로그래머스 사이트 문제(C++) (0)
      • codingame 사이트 문제(C#) (11)
    • 유니티엔진 - 게임 공부 (3)
    • 언리얼엔진 - 게임 공부 (4)
    • 쓸모 있을 수 있는 팁 (2)
    • 일상이야기 (3)

최근 댓글

태그

  • 객체
  • 스레드
  • task
  • 최단 경로
  • queue
  • 알고리즘
  • 언리얼엔진4
  • c++
  • 클래스
  • 언리얼
  • 람다식
  • 문제 풀이
  • 예외 처리
  • 비동기
  • 함수
  • C#
  • 복사 생성자
  • 언리얼엔진
  • DFS
  • 탐욕 알고리즘

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
같은편

홍익대 게임소프트웨어전공의 프로그래밍 단련 공간

라이브러리 함수와 사용자 정의 함수
C++ 프로그래밍/함수

라이브러리 함수와 사용자 정의 함수

2022. 6. 29. 14:22

#라이브러리 함수

미리 만들어져서 제공되는 함수

printf(), getch() 등이 대표적인 라이브러리 함수이다.

다음은 라이브러리 함수들의 예를 표로 보여준다.

함수 원형 헤더 파일  용도 및 사용 예
iny getch(); <conio.h> 키보드에서 하나의 문자를 읽어서
반환함
예)ch = getch();
double cos(
    double x
);
<math.h> x에 대한 코사인 값을 계산하여 반환함
예)val = cos(3.14);
double pow(
   double x, int y
);
<math.h> x의 y승을 계산하여 반환함
예)result = pow(x,10);
int printf(
   const char *format
   [, argument]...
);
<stdio.h> "format"에서 지정하는 형태로 화면에
출력함
매개변수는 없을 수도 있고 여러 개일 수도 있음
예)printf("game over!")
     printf("좌표(%d, %d)",x,y);
  • 라이브러리 함수를 프로그램에서 사용하기 위해서는 그 함수의 정보가 들어있는 헤더 파일을 #include 해줘야 합니다.
  • 대부분의 함수는 입력(매개변수)의 개수가 정해져 있습니다. 그렇기 때문에 그 함수의 매개변수의 개수에 맞게 argument를 전해줘야 합니다.
  • printf()와 같이 이들 함수는 매개변수가 고정되어 있지 않습니다. 그리고 예외적으로 매우 복잡한 함수이지만
    함수는 추상화 덕분에 사용하는 방법만 알면 사용하는데 문제가 없습니다.
  •  일부 함수는 값을 반환하지 않도록 설계되어있습니다. 예를 들어, 난수 생성기의 시작 값을 설정하는 srand()는 값을
    반환하지 않고 그렇기 때문에 반환형이 void입니다.
        void srand(unsigned int seed);

printf()와 같이 예외적인 함수를 제외하고는 함수를 사용하는 것은 매우 쉽습니다. 그리고 문제 해결 능력을 위해 사용할 수 있는 라이브러리 함수들을 잘 찾고 활용할 줄 아는 것은 프로그래밍에서 매우 중요한 능력중 하나입니다.

다음은 이미 라이브러리 함수로 구현되어 있을 가능성이 많은 기능들입니다.

  • 표준 입출력: 화면 출력, 키보드 입력, 파일 입출력 함수 등
  • 수학 연산: 다양한 수학 연산 함수들
  • 문자열 처리: 문자열의 길이, 복사, 연결 등 다양한 처리 함수
  • 시간 처리: 현재 시각이나 처리 시간을 계산하는 함수
  • 오류 처리: 오류 발생 검사 및 대처를 위한 함수들
  • 데이터 검색 및 정렬: 배열 등 많은 데이터에서 원하는 것을 찾거나 정렬하는 함수들

#사용자 정의 함수

라이브러리 함수만으로 모든 문제를 해결할 수 있으면 좋겠지만 현실적으로 그럴 수 없기 때문에

프로그래머가 함수를 만들어서 사용해야 합니다.

x의 y승을 구하기 위한 함수를 생각해 봅시다.

물론 <math.h>에 pow()가 정의 되어 있어 이것을 사용하면 되지만, 비교를 위해 보여드리겠습니다.

다음은 라이브러리 pow와 제가 구현한 myPow()를 보여줍니다.

#include <stdio.h>
#include <math.h>

//x의 y승을 매개변수로 받으면 결과값을 전달해주는 사용자 정의 함수
double myPow(double x, int y) {
	double result = 1.0;
	for (int i = 0; i < y; i++)
	{
		result = result * x;
	}
	return result;
}

int main()
{
	printf("라이브러리 pow(2.0,5) : %lf\n", pow(2.0, 5));
	printf("사용자 정의 함수 myPow(2.0,5) : %lf\n", myPow(2.0, 5));
	return 0;
}

결과 화면

함수를 만들 때 설계가 가장 중요하다.

적절한 이름과 함수에 전달할 값과 자료형, 그리고 함수에서 처리가 끝나면,
반환할 값과 자료형을 먼저 고민해서 결정해야 합니다.

함수에서 처리하는 절차, 즉 알고리즘은 그 다음이다.

대부분의 경우 함수 원형의 설계만 잘 하면 이것을 구현하는 것은 어렵지 않기 때문에,

함수를 신중하게 설계하는 습관을 들여야 합니다.

저작자표시 비영리 변경금지 (새창열림)

'C++ 프로그래밍 > 함수' 카테고리의 다른 글

C++의 Static을 알아보자  (0) 2022.07.11
변수의 가시 범위와 생존기간  (0) 2022.07.11
디폴트 매개변수  (0) 2022.06.30
parameter와 argument 차이점  (0) 2022.06.24
함수란?  (0) 2022.06.24
    같은편
    같은편
    책을 통해 이때까지 블로그나 유튜브에서 얻었던 지식의 파편들을 정립하고 합쳐 단단한 발판으로 만들기 위한 블로그

    티스토리툴바